From 6846f033a995c183e7451cc15645ac285018decd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20S=CC=8Ckoda?= Date: Sat, 15 Dec 2012 12:55:36 +0100 Subject: [PATCH] MDL-37125 import latest YUI 3.8.0 --- lib/setup.php | 2 +- lib/thirdpartylibs.xml | 2 +- .../3.7.3/build/anim-base/anim-base-min.js | 7 - .../3.7.3/build/anim-curve/anim-curve-min.js | 7 - .../3.7.3/build/anim-shape/anim-shape-min.js | 7 - .../build/assets/skins/sam/resize-base.css | 7 - .../attribute-base/attribute-base-coverage.js | 158 - .../attribute-base/attribute-base-min.js | 7 - .../attribute-complex-coverage.js | 214 - .../attribute-complex-debug.js | 139 - .../attribute-complex-min.js | 7 - .../attribute-complex/attribute-complex.js | 139 - .../attribute-core/attribute-core-min.js | 7 - .../attribute-events-coverage.js | 275 - .../attribute-events/attribute-events-min.js | 7 - .../build/base-base/base-base-coverage.js | 437 - .../3.7.3/build/base-base/base-base-debug.js | 354 - .../3.7.3/build/base-base/base-base-min.js | 7 - lib/yuilib/3.7.3/build/base-base/base-base.js | 352 - .../build/base-build/base-build-coverage.js | 597 -- .../3.7.3/build/base-build/base-build-min.js | 7 - .../build/base-core/base-core-coverage.js | 808 -- .../3.7.3/build/base-core/base-core-min.js | 7 - .../calendar-base/calendar-base-coverage.js | 2082 ---- .../calendar-base/calendar-base-debug.js | 1639 --- .../build/calendar-base/calendar-base-min.js | 7 - .../build/calendar-base/calendar-base.js | 1639 --- .../3.7.3/build/calendar/calendar-coverage.js | 759 -- .../3.7.3/build/calendar/calendar-debug.js | 553 -- .../3.7.3/build/calendar/calendar-min.js | 7 - lib/yuilib/3.7.3/build/calendar/calendar.js | 553 -- .../calendarnavigator-min.js | 7 - .../3.7.3/build/cookie/cookie-coverage.js | 678 -- lib/yuilib/3.7.3/build/cookie/cookie-min.js | 7 - .../datatable-head/datatable-head-min.js | 7 - .../datatype-date-parse-debug.js | 55 - .../datatype-date-parse-min.js | 7 - .../build/dd-constrain/dd-constrain-min.js | 7 - .../build/dd-ddm-base/dd-ddm-base-min.js | 7 - .../build/dd-ddm-drop/dd-ddm-drop-min.js | 7 - .../3.7.3/build/dd-drag/dd-drag-coverage.js | 1639 --- lib/yuilib/3.7.3/build/dd-drag/dd-drag-min.js | 7 - .../3.7.3/build/dd-drop/dd-drop-coverage.js | 780 -- lib/yuilib/3.7.3/build/dd-drop/dd-drop-min.js | 7 - .../3.7.3/build/dd-proxy/dd-proxy-min.js | 7 - .../event-simulate/event-simulate-min.js | 7 - .../3.7.3/build/event-tap/event-tap-min.js | 7 - .../3.7.3/build/get-nodejs/get-coverage.js | 313 - .../3.7.3/build/get-nodejs/get-debug.js | 210 - lib/yuilib/3.7.3/build/get-nodejs/get-min.js | 7 - lib/yuilib/3.7.3/build/get-nodejs/get.js | 200 - .../3.7.3/build/graphics/graphics-coverage.js | 1309 --- .../build/loader-yui3/loader-yui3-coverage.js | 2602 ----- .../build/loader-yui3/loader-yui3-min.js | 7 - lib/yuilib/3.7.3/build/loader/loader-min.js | 7 - .../build/pjax-content/pjax-content-min.js | 7 - .../assets/skins/night/resize-base.css | 7 - .../assets/skins/sam/resize-base.css | 7 - .../assets/skins/night/resize-base-skin.css | 52 - .../assets/skins/sam/resize-base-skin.css | 52 - .../assets/skins/night/resize-base-skin.css | 52 - .../assets/skins/sam/resize-base-skin.css | 52 - .../3.7.3/build/router/router-coverage.js | 1743 ---- lib/yuilib/3.7.3/build/router/router-min.js | 7 - .../scrollview-paginator-min.js | 7 - .../scrollview-scrollbars-min.js | 7 - .../3.7.3/build/simpleyui/simpleyui-min.js | 7 - .../uploader-flash/uploader-flash-coverage.js | 1302 --- .../uploader-flash/uploader-flash-debug.js | 1041 -- .../uploader-flash/uploader-flash-min.js | 7 - .../build/uploader-flash/uploader-flash.js | 1041 -- .../uploader-html5/uploader-html5-coverage.js | 1218 --- .../uploader-html5/uploader-html5-debug.js | 989 -- .../uploader-html5/uploader-html5-min.js | 7 - .../build/uploader-html5/uploader-html5.js | 989 -- .../uploader-queue/uploader-queue-coverage.js | 859 -- .../uploader-queue/uploader-queue-debug.js | 661 -- .../uploader-queue/uploader-queue-min.js | 7 - .../build/uploader-queue/uploader-queue.js | 661 -- .../3.7.3/build/uploader/uploader-coverage.js | 100 - .../3.7.3/build/uploader/uploader-debug.js | 58 - lib/yuilib/3.7.3/build/uploader/uploader.js | 58 - .../widget-skin/assets/widget-base-core.css | 26 - .../assets/widget-base-core.css | 26 - .../3.7.3/build/yui-base/yui-base-coverage.js | 4795 --------- .../3.7.3/build/yui-base/yui-base-min.js | 7 - .../3.7.3/build/yui-core/yui-core-coverage.js | 4795 --------- .../3.7.3/build/yui-core/yui-core-min.js | 7 - .../build/yui-nodejs/yui-nodejs-coverage.js | 4795 --------- .../3.7.3/build/yui-nodejs/yui-nodejs-min.js | 7 - lib/yuilib/3.7.3/build/yui/yui-coverage.js | 4795 --------- lib/yuilib/3.7.3/build/yui/yui-min.js | 7 - .../align-plugin/align-plugin-coverage.js | 6 +- .../build/align-plugin/align-plugin-debug.js | 4 +- .../build/align-plugin/align-plugin-min.js | 4 +- .../build/align-plugin/align-plugin.js | 4 +- .../build/anim-base/anim-base-coverage.js | 266 +- .../build/anim-base/anim-base-debug.js | 77 +- .../3.8.0/build/anim-base/anim-base-min.js | 7 + .../build/anim-base/anim-base.js | 77 +- .../build/anim-color/anim-color-coverage.js | 16 +- .../build/anim-color/anim-color-debug.js | 14 +- .../build/anim-color/anim-color-min.js | 4 +- .../build/anim-color/anim-color.js | 14 +- .../build/anim-curve/anim-curve-coverage.js | 49 +- .../build/anim-curve/anim-curve-debug.js | 28 +- .../3.8.0/build/anim-curve/anim-curve-min.js | 7 + .../build/anim-curve/anim-curve.js | 28 +- .../build/anim-easing/anim-easing-coverage.js | 273 +- .../build/anim-easing/anim-easing-debug.js | 85 +- .../build/anim-easing/anim-easing-min.js | 4 +- .../build/anim-easing/anim-easing.js | 85 +- .../anim-node-plugin-coverage.js | 6 +- .../anim-node-plugin-debug.js | 4 +- .../anim-node-plugin/anim-node-plugin-min.js | 4 +- .../anim-node-plugin/anim-node-plugin.js | 4 +- .../build/anim-scroll/anim-scroll-coverage.js | 8 +- .../build/anim-scroll/anim-scroll-debug.js | 6 +- .../build/anim-scroll/anim-scroll-min.js | 4 +- .../build/anim-scroll/anim-scroll.js | 6 +- .../anim-shape-transform-coverage.js | 6 +- .../build/anim-shape/anim-shape-coverage.js | 184 +- .../build/anim-shape/anim-shape-debug.js | 40 +- .../3.8.0/build/anim-shape/anim-shape-min.js | 7 + .../build/anim-shape/anim-shape.js | 40 +- .../build/anim-xy/anim-xy-coverage.js | 8 +- .../build/anim-xy/anim-xy-debug.js | 6 +- .../build/anim-xy/anim-xy-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/anim-xy/anim-xy.js | 6 +- .../build/app-base/app-base-coverage.js | 6 +- .../build/app-base/app-base-debug.js | 4 +- .../build/app-base/app-base-min.js | 4 +- .../build/app-base/app-base.js | 4 +- .../build/app-content/app-content-coverage.js | 17 +- .../build/app-content/app-content-debug.js | 7 +- .../build/app-content/app-content-min.js | 4 +- .../build/app-content/app-content.js | 7 +- .../app-transitions-css-min.css | 2 +- .../app-transitions-css.css | 2 +- .../app-transitions-native-coverage.js | 6 +- .../app-transitions-native-debug.js | 4 +- .../app-transitions-native-min.js | 4 +- .../app-transitions-native.js | 4 +- .../app-transitions-coverage.js | 6 +- .../app-transitions/app-transitions-debug.js | 4 +- .../app-transitions/app-transitions-min.js | 4 +- .../build/app-transitions/app-transitions.js | 4 +- .../array-extras/array-extras-coverage.js | 6 +- .../build/array-extras/array-extras-debug.js | 4 +- .../build/array-extras/array-extras-min.js | 4 +- .../build/array-extras/array-extras.js | 4 +- .../array-invoke/array-invoke-coverage.js | 6 +- .../build/array-invoke/array-invoke-debug.js | 4 +- .../build/array-invoke/array-invoke-min.js | 4 +- .../build/array-invoke/array-invoke.js | 4 +- .../arraylist-add/arraylist-add-coverage.js | 6 +- .../arraylist-add/arraylist-add-debug.js | 4 +- .../build/arraylist-add/arraylist-add-min.js | 4 +- .../build/arraylist-add/arraylist-add.js | 4 +- .../arraylist-filter-coverage.js | 6 +- .../arraylist-filter-debug.js | 4 +- .../arraylist-filter/arraylist-filter-min.js | 4 +- .../arraylist-filter/arraylist-filter.js | 4 +- .../build/arraylist/arraylist-coverage.js | 6 +- .../build/arraylist/arraylist-debug.js | 4 +- .../build/arraylist/arraylist-min.js | 4 +- .../build/arraylist/arraylist.js | 4 +- .../build/arraysort/arraysort-coverage.js | 6 +- .../build/arraysort/arraysort-debug.js | 4 +- .../build/arraysort/arraysort-min.js | 4 +- .../build/arraysort/arraysort.js | 4 +- .../build/assets/skins/sam/arrows.png | Bin .../assets/skins/sam/autocomplete-list.css | 2 +- .../build/assets/skins/sam/bg.png | Bin .../build/assets/skins/sam/calendar-base.css | 2 +- .../build/assets/skins/sam/calendar.css | 2 +- .../assets/skins/sam/calendarnavigator.css | 2 +- .../assets/skins/sam/console-filters.css | 2 +- .../build}/assets/skins/sam/console.css | 2 +- .../skins/sam/datatable-base-deprecated.css | 2 +- .../build/assets/skins/sam/datatable-base.css | 2 +- .../assets/skins/sam/datatable-message.css | 2 +- .../assets/skins/sam/datatable-scroll.css | 2 +- .../build/assets/skins/sam/datatable-sort.css | 2 +- .../build/assets/skins/sam/dial.css | 2 +- .../build/assets/skins/sam/dt-arrow-dn.png | Bin .../build/assets/skins/sam/dt-arrow-up.png | Bin .../sam/horizontal-menu-submenu-indicator.png | Bin .../sam/horizontal-menu-submenu-toggle.png | Bin .../build}/assets/skins/sam/node-flick.css | 2 +- .../build/assets/skins/sam/node-menunav.css | 2 +- .../build}/assets/skins/sam/overlay.css | 2 +- .../build/assets/skins/sam/panel.css | 2 +- .../build/assets/skins/sam/rail-x-lines.png | Bin .../build/assets/skins/sam/rail-x.png | Bin .../build/assets/skins/sam/rail-y-lines.png | Bin .../build/assets/skins/sam/rail-y.png | Bin .../build/assets/skins/sam/resize-base.css | 7 + .../assets/skins/sam/scrollview-base.css | 2 +- .../assets/skins/sam/scrollview-list.css | 2 +- .../skins/sam/scrollview-scrollbars.css | 2 +- .../build/assets/skins/sam/skin.css | 4 +- .../build/assets/skins/sam/slider-base.css | 2 +- .../assets/skins/sam/sort-arrow-sprite-ie.png | Bin .../assets/skins/sam/sort-arrow-sprite.png | Bin .../build/assets/skins/sam/sprite.png | Bin .../build/assets/skins/sam/sprite_icons.gif | Bin .../build/assets/skins/sam/sprite_icons.png | Bin .../build/assets/skins/sam/tabview.css | 2 +- .../build/assets/skins/sam/test-console.css | 2 +- .../build/assets/skins/sam/thumb-x.png | Bin .../build/assets/skins/sam/thumb-y.png | Bin .../sam/vertical-menu-submenu-indicator.png | Bin .../build/assets/skins/sam/warn_error.png | Bin .../build/assets/skins/sam/widget-base.css | 2 +- .../build/assets/skins/sam/widget-buttons.css | 2 +- .../assets/skins/sam/widget-modality.css | 2 +- .../build/assets/skins/sam/widget-stack.css | 2 +- .../build/async-queue/async-queue-coverage.js | 6 +- .../build/async-queue/async-queue-debug.js | 4 +- .../build/async-queue/async-queue-min.js | 4 +- .../build/async-queue/async-queue.js | 4 +- .../attribute-base/attribute-base-coverage.js | 161 + .../attribute-base/attribute-base-debug.js | 56 +- .../attribute-base/attribute-base-min.js | 7 + .../build/attribute-base/attribute-base.js | 56 +- .../attribute-complex-coverage.js | 101 + .../attribute-complex-debug.js | 62 + .../attribute-complex-min.js | 7 + .../attribute-complex/attribute-complex.js | 62 + .../attribute-core/attribute-core-coverage.js | 685 +- .../attribute-core/attribute-core-debug.js | 271 +- .../attribute-core/attribute-core-min.js | 7 + .../build/attribute-core/attribute-core.js | 270 +- .../attribute-extras-coverage.js | 95 +- .../attribute-extras-debug.js | 19 +- .../attribute-extras/attribute-extras-min.js | 4 +- .../attribute-extras/attribute-extras.js | 19 +- .../attribute-observable-coverage.js | 290 + .../attribute-observable-debug.js} | 72 +- .../attribute-observable-min.js | 7 + .../attribute-observable.js} | 72 +- .../autocomplete-base-coverage.js | 17 +- .../autocomplete-base-debug.js | 15 +- .../autocomplete-base-min.js | 4 +- .../autocomplete-base/autocomplete-base.js | 15 +- ...utocomplete-filters-accentfold-coverage.js | 6 +- .../autocomplete-filters-accentfold-debug.js | 4 +- .../autocomplete-filters-accentfold-min.js | 4 +- .../autocomplete-filters-accentfold.js | 4 +- .../autocomplete-filters-coverage.js | 6 +- .../autocomplete-filters-debug.js | 4 +- .../autocomplete-filters-min.js | 4 +- .../autocomplete-filters.js | 4 +- ...mplete-highlighters-accentfold-coverage.js | 6 +- ...ocomplete-highlighters-accentfold-debug.js | 4 +- ...utocomplete-highlighters-accentfold-min.js | 4 +- .../autocomplete-highlighters-accentfold.js | 4 +- .../autocomplete-highlighters-coverage.js | 6 +- .../autocomplete-highlighters-debug.js | 4 +- .../autocomplete-highlighters-min.js | 4 +- .../autocomplete-highlighters.js | 4 +- .../autocomplete-list-keys-coverage.js | 6 +- .../autocomplete-list-keys-debug.js | 4 +- .../autocomplete-list-keys-min.js | 4 +- .../autocomplete-list-keys.js | 4 +- .../assets/autocomplete-list-core.css | 2 +- .../skins/night/autocomplete-list-skin.css | 2 +- .../assets/skins/night/autocomplete-list.css | 2 +- .../skins/sam/autocomplete-list-skin.css | 2 +- .../assets/skins/sam/autocomplete-list.css | 2 +- .../autocomplete-list-coverage.js | 21 +- .../autocomplete-list-debug.js | 19 +- .../autocomplete-list-min.js | 4 +- .../autocomplete-list/autocomplete-list.js | 19 +- .../lang/autocomplete-list.js | 4 +- .../lang/autocomplete-list_en.js | 4 +- .../autocomplete-plugin-coverage.js | 6 +- .../autocomplete-plugin-debug.js | 4 +- .../autocomplete-plugin-min.js | 4 +- .../autocomplete-plugin.js | 4 +- .../autocomplete-sources-coverage.js | 6 +- .../autocomplete-sources-debug.js | 4 +- .../autocomplete-sources-min.js | 4 +- .../autocomplete-sources.js | 4 +- .../build/base-base/base-base-coverage.js | 201 + .../3.8.0/build/base-base/base-base-debug.js | 151 + .../3.8.0/build/base-base/base-base-min.js | 7 + lib/yuilib/3.8.0/build/base-base/base-base.js | 151 + .../build/base-build/base-build-coverage.js | 642 ++ .../build/base-build/base-build-debug.js | 177 +- .../3.8.0/build/base-build/base-build-min.js | 7 + .../build/base-build/base-build.js | 177 +- .../build/base-core/base-core-coverage.js | 839 ++ .../build/base-core/base-core-debug.js | 164 +- .../3.8.0/build/base-core/base-core-min.js | 7 + .../build/base-core/base-core.js | 163 +- .../base-observable-coverage.js | 283 + .../base-observable/base-observable-debug.js | 209 + .../base-observable/base-observable-min.js | 7 + .../build/base-observable/base-observable.js | 208 + .../base-pluginhost-coverage.js | 12 +- .../base-pluginhost/base-pluginhost-debug.js | 10 +- .../base-pluginhost/base-pluginhost-min.js | 4 +- .../build/base-pluginhost/base-pluginhost.js | 10 +- .../build/button-core/button-core-coverage.js | 6 +- .../build/button-core/button-core-debug.js | 4 +- .../build/button-core/button-core-min.js | 4 +- .../build/button-core/button-core.js | 4 +- .../button-group/button-group-coverage.js | 6 +- .../build/button-group/button-group-debug.js | 4 +- .../build/button-group/button-group-min.js | 4 +- .../build/button-group/button-group.js | 4 +- .../button-plugin/button-plugin-coverage.js | 6 +- .../button-plugin/button-plugin-debug.js | 4 +- .../build/button-plugin/button-plugin-min.js | 4 +- .../build/button-plugin/button-plugin.js | 4 +- .../build/button/button-coverage.js | 6 +- .../build/button/button-debug.js | 4 +- .../build/button/button-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/button/button.js | 4 +- .../build/cache-base/cache-base-coverage.js | 6 +- .../build/cache-base/cache-base-debug.js | 4 +- .../build/cache-base/cache-base-min.js | 4 +- .../build/cache-base/cache-base.js | 4 +- .../cache-offline/cache-offline-coverage.js | 6 +- .../cache-offline/cache-offline-debug.js | 4 +- .../build/cache-offline/cache-offline-min.js | 4 +- .../build/cache-offline/cache-offline.js | 4 +- .../cache-plugin/cache-plugin-coverage.js | 6 +- .../build/cache-plugin/cache-plugin-debug.js | 4 +- .../build/cache-plugin/cache-plugin-min.js | 4 +- .../build/cache-plugin/cache-plugin.js | 4 +- .../assets/calendar-base-core.css | 2 +- .../assets/skins/night/calendar-base-skin.css | 2 +- .../assets/skins/night/calendar-base.css | 2 +- .../assets/skins/sam/calendar-base-skin.css | 2 +- .../assets/skins/sam/calendar-base.css | 2 +- .../calendar-base/calendar-base-coverage.js | 2133 ++++ .../calendar-base/calendar-base-debug.js | 1688 ++++ .../build/calendar-base/calendar-base-min.js | 7 + .../build/calendar-base/calendar-base.js | 1688 ++++ .../build/calendar-base/lang/calendar-base.js | 4 +- .../calendar-base/lang/calendar-base_de.js | 4 +- .../calendar-base/lang/calendar-base_en.js | 4 +- .../calendar-base/lang/calendar-base_es-AR.js | 7 + .../calendar-base/lang/calendar-base_es.js | 7 + .../calendar-base/lang/calendar-base_fr.js | 4 +- .../calendar-base/lang/calendar-base_it.js | 7 + .../calendar-base/lang/calendar-base_ja.js | 4 +- .../calendar-base/lang/calendar-base_nb-NO.js | 4 +- .../calendar-base/lang/calendar-base_nl.js | 7 + .../calendar-base/lang/calendar-base_pt-BR.js | 4 +- .../calendar-base/lang/calendar-base_ru.js | 4 +- .../lang/calendar-base_zh-HANT-TW.js | 4 +- .../build/calendar/assets/calendar-core.css | 2 +- .../assets/skins/night/calendar-skin.css | 2 +- .../calendar/assets/skins/night/calendar.css | 2 +- .../assets/skins/sam/calendar-skin.css | 2 +- .../calendar/assets/skins/sam/calendar.css | 2 +- .../3.8.0/build/calendar/calendar-coverage.js | 784 ++ .../3.8.0/build/calendar/calendar-debug.js | 573 ++ .../3.8.0/build/calendar/calendar-min.js | 7 + lib/yuilib/3.8.0/build/calendar/calendar.js | 573 ++ .../build/calendar/lang/calendar.js | 4 +- .../build/calendar/lang/calendar_de.js | 4 +- .../build/calendar/lang/calendar_en.js | 4 +- .../build/calendar/lang/calendar_es-AR.js | 7 + .../3.8.0/build/calendar/lang/calendar_es.js | 7 + .../build/calendar/lang/calendar_fr.js | 4 +- .../3.8.0/build/calendar/lang/calendar_it.js | 7 + .../build/calendar/lang/calendar_ja.js | 4 +- .../build/calendar/lang/calendar_nb-NO.js | 4 +- .../3.8.0/build/calendar/lang/calendar_nl.js | 7 + .../build/calendar/lang/calendar_pt-BR.js | 4 +- .../build/calendar/lang/calendar_ru.js | 4 +- .../calendar/lang/calendar_zh-HANT-TW.js | 4 +- .../assets/calendarnavigator-core.css | 2 +- .../skins/night/calendarnavigator-skin.css | 2 +- .../assets/skins/night/calendarnavigator.css | 2 +- .../skins/sam/calendarnavigator-skin.css | 2 +- .../assets/skins/sam/calendarnavigator.css | 2 +- .../calendarnavigator-coverage.js | 140 +- .../calendarnavigator-debug.js | 101 +- .../calendarnavigator-min.js | 7 + .../calendarnavigator/calendarnavigator.js | 101 +- .../build/charts-base/charts-base-coverage.js | 8780 +++++++++-------- .../build/charts-base/charts-base-debug.js | 1543 +-- .../build/charts-base/charts-base-min.js | 4 +- .../build/charts-base/charts-base.js | 1543 +-- .../charts-legend/charts-legend-coverage.js | 202 +- .../charts-legend/charts-legend-debug.js | 112 +- .../build/charts-legend/charts-legend-min.js | 4 +- .../build/charts-legend/charts-legend.js | 112 +- .../build/charts/charts-coverage.js | 6 +- .../build/charts/charts-debug.js | 4 +- .../build/charts/charts-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/charts/charts.js | 4 +- .../classnamemanager-coverage.js | 6 +- .../classnamemanager-debug.js | 4 +- .../classnamemanager/classnamemanager-min.js | 4 +- .../classnamemanager/classnamemanager.js | 4 +- .../assets/slider-base-core.css | 2 +- .../clickable-rail}/assets/slider-core.css | 2 +- .../assets/thumb-x-oblong-dark.png | Bin .../clickable-rail/assets/thumb-x-oblong.png | Bin .../assets/thumb-x-oblong2-dark.png | Bin .../clickable-rail/assets/thumb-x-oblong2.png | Bin .../assets/thumb-y-oblong-dark.png | Bin .../clickable-rail/assets/thumb-y-oblong.png | Bin .../assets/thumb-y-oblong2-dark.png | Bin .../clickable-rail/assets/thumb-y-oblong2.png | Bin .../clickable-rail/clickable-rail-coverage.js | 6 +- .../clickable-rail/clickable-rail-debug.js | 4 +- .../clickable-rail/clickable-rail-min.js | 4 +- .../build/clickable-rail/clickable-rail.js | 4 +- .../build/color-base/color-base-coverage.js | 588 ++ .../build/color-base/color-base-debug.js | 447 + .../3.8.0/build/color-base/color-base-min.js | 7 + .../3.8.0/build/color-base/color-base.js | 447 + .../color-harmony/color-harmony-coverage.js | 744 ++ .../color-harmony/color-harmony-debug.js | 560 ++ .../build/color-harmony/color-harmony-min.js | 7 + .../build/color-harmony/color-harmony.js | 559 ++ .../build/color-hsl/color-hsl-coverage.js | 318 + .../3.8.0/build/color-hsl/color-hsl-debug.js | 224 + .../3.8.0/build/color-hsl/color-hsl-min.js | 7 + lib/yuilib/3.8.0/build/color-hsl/color-hsl.js | 224 + .../build/color-hsv/color-hsv-coverage.js | 271 + .../3.8.0/build/color-hsv/color-hsv-debug.js | 188 + .../3.8.0/build/color-hsv/color-hsv-min.js | 7 + lib/yuilib/3.8.0/build/color-hsv/color-hsv.js | 188 + .../assets/console-filters-core.css | 2 +- .../assets/skins/sam/console-filters-skin.css | 2 +- .../assets/skins/sam/console-filters.css | 2 +- .../console-filters-coverage.js | 6 +- .../console-filters/console-filters-debug.js | 4 +- .../console-filters/console-filters-min.js | 4 +- .../build/console-filters/console-filters.js | 4 +- .../build/console/assets/console-core.css | 2 +- .../console/assets/console-filters-core.css | 2 +- .../build/console/assets/skins/sam/bg.png | Bin .../assets/skins/sam/console-filters-skin.css | 2 +- .../assets/skins/sam/console-filters.css | 2 +- .../console/assets/skins/sam/console-skin.css | 2 +- .../console}/assets/skins/sam/console.css | 2 +- .../console/assets/skins/sam/warn_error.png | Bin .../build/console/assets/warn_error.png | Bin .../build/console/console-coverage.js | 6 +- .../build/console/console-debug.js | 4 +- .../build/console/console-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/console/console.js | 4 +- .../build/console/lang/console.js | 4 +- .../build/console/lang/console_en.js | 4 +- .../build/console/lang/console_es.js | 4 +- .../build/console/lang/console_ja.js | 4 +- .../3.8.0/build/cookie/cookie-coverage.js | 691 ++ .../build/cookie/cookie-debug.js | 238 +- lib/yuilib/3.8.0/build/cookie/cookie-min.js | 7 + .../{3.7.3 => 3.8.0}/build/cookie/cookie.js | 238 +- .../createlink-base-coverage.js | 6 +- .../createlink-base/createlink-base-debug.js | 4 +- .../createlink-base/createlink-base-min.js | 4 +- .../build/createlink-base/createlink-base.js | 4 +- .../cssbase-context/base-context-min.css | 2 +- .../build/cssbase-context/base-context.css | 2 +- .../cssbase-context/cssbase-context-min.css | 2 +- .../build/cssbase-context/cssbase-context.css | 2 +- .../build/cssbase/base-min.css | 2 +- .../{3.7.3 => 3.8.0}/build/cssbase/base.css | 2 +- .../build/cssbase/cssbase-min.css | 2 +- .../build/cssbase/cssbase.css | 2 +- .../build/cssbutton/cssbutton-min.css | 2 +- .../build/cssbutton/cssbutton.css | 2 +- .../cssfonts-context/cssfonts-context-min.css | 2 +- .../cssfonts-context/cssfonts-context.css | 2 +- .../cssfonts-context/fonts-context-min.css | 2 +- .../build/cssfonts-context/fonts-context.css | 2 +- .../build/cssfonts/cssfonts-min.css | 2 +- .../build/cssfonts/cssfonts.css | 2 +- .../build/cssfonts/fonts-min.css | 2 +- .../{3.7.3 => 3.8.0}/build/cssfonts/fonts.css | 2 +- .../build/cssgrids-base/cssgrids-base-min.css | 2 +- .../build/cssgrids-base/cssgrids-base.css | 2 +- .../grids-context-min.css | 2 +- .../grids-context.css | 2 +- .../cssgrids-units/cssgrids-units-min.css | 2 +- .../build/cssgrids-units/cssgrids-units.css | 2 +- .../build/cssgrids/cssgrids-min.css | 2 +- .../build/cssgrids/cssgrids.css | 2 +- .../build/cssgrids/grids-min.css | 2 +- .../{3.7.3 => 3.8.0}/build/cssgrids/grids.css | 2 +- .../cssreset-context/cssreset-context-min.css | 2 +- .../cssreset-context/cssreset-context.css | 2 +- .../cssreset-context/reset-context-min.css | 2 +- .../build/cssreset-context/reset-context.css | 2 +- .../build/cssreset/cssreset-min.css | 2 +- .../build/cssreset/cssreset.css | 2 +- .../build/cssreset/reset-min.css | 2 +- .../{3.7.3 => 3.8.0}/build/cssreset/reset.css | 2 +- .../dataschema-array-coverage.js | 6 +- .../dataschema-array-debug.js | 4 +- .../dataschema-array/dataschema-array-min.js | 4 +- .../dataschema-array/dataschema-array.js | 4 +- .../dataschema-base-coverage.js | 6 +- .../dataschema-base/dataschema-base-debug.js | 4 +- .../dataschema-base/dataschema-base-min.js | 4 +- .../build/dataschema-base/dataschema-base.js | 4 +- .../dataschema-json-coverage.js | 6 +- .../dataschema-json/dataschema-json-debug.js | 4 +- .../dataschema-json/dataschema-json-min.js | 4 +- .../build/dataschema-json/dataschema-json.js | 4 +- .../dataschema-text-coverage.js | 6 +- .../dataschema-text/dataschema-text-debug.js | 4 +- .../dataschema-text/dataschema-text-min.js | 4 +- .../build/dataschema-text/dataschema-text.js | 4 +- .../dataschema-xml/dataschema-xml-coverage.js | 6 +- .../dataschema-xml/dataschema-xml-debug.js | 4 +- .../dataschema-xml/dataschema-xml-min.js | 4 +- .../build/dataschema-xml/dataschema-xml.js | 4 +- .../datasource-arrayschema-coverage.js | 6 +- .../datasource-arrayschema-debug.js | 4 +- .../datasource-arrayschema-min.js | 4 +- .../datasource-arrayschema.js | 4 +- .../datasource-cache-coverage.js | 6 +- .../datasource-cache-debug.js | 4 +- .../datasource-cache/datasource-cache-min.js | 4 +- .../datasource-cache/datasource-cache.js | 4 +- .../datasource-function-coverage.js | 6 +- .../datasource-function-debug.js | 4 +- .../datasource-function-min.js | 4 +- .../datasource-function.js | 4 +- .../datasource-get/datasource-get-coverage.js | 6 +- .../datasource-get/datasource-get-debug.js | 4 +- .../datasource-get/datasource-get-min.js | 4 +- .../build/datasource-get/datasource-get.js | 4 +- .../datasource-io/datasource-io-coverage.js | 6 +- .../datasource-io/datasource-io-debug.js | 4 +- .../build/datasource-io/datasource-io-min.js | 4 +- .../build/datasource-io/datasource-io.js | 4 +- .../datasource-jsonschema-coverage.js | 6 +- .../datasource-jsonschema-debug.js | 4 +- .../datasource-jsonschema-min.js | 4 +- .../datasource-jsonschema.js | 4 +- .../datasource-local-coverage.js | 6 +- .../datasource-local-debug.js | 4 +- .../datasource-local/datasource-local-min.js | 4 +- .../datasource-local/datasource-local.js | 4 +- .../datasource-polling-coverage.js | 6 +- .../datasource-polling-debug.js | 4 +- .../datasource-polling-min.js | 4 +- .../datasource-polling/datasource-polling.js | 4 +- .../datasource-textschema-coverage.js | 6 +- .../datasource-textschema-debug.js | 4 +- .../datasource-textschema-min.js | 4 +- .../datasource-textschema.js | 4 +- .../datasource-xmlschema-coverage.js | 6 +- .../datasource-xmlschema-debug.js | 4 +- .../datasource-xmlschema-min.js | 4 +- .../datasource-xmlschema.js | 4 +- .../assets/datatable-base-deprecated-core.css | 2 +- .../night/datatable-base-deprecated-skin.css | 2 +- .../skins/night/datatable-base-deprecated.css | 2 +- .../sam/datatable-base-deprecated-skin.css | 2 +- .../skins/sam/datatable-base-deprecated.css | 2 +- .../assets/skins/sam/dt-arrow-dn.png | Bin .../assets/skins/sam/dt-arrow-up.png | Bin .../datatable-base-deprecated-coverage.js | 6 +- .../datatable-base-deprecated-debug.js | 4 +- .../datatable-base-deprecated-min.js | 4 +- .../datatable-base-deprecated.js | 4 +- .../assets/datatable-base-core.css | 2 +- .../skins/night/datatable-base-skin.css | 2 +- .../assets/skins/night/datatable-base.css | 2 +- .../assets/skins/sam/datatable-base-skin.css | 2 +- .../assets/skins/sam/datatable-base.css | 2 +- .../datatable-base/datatable-base-coverage.js | 16 +- .../datatable-base/datatable-base-debug.js | 14 +- .../datatable-base/datatable-base-min.js | 4 +- .../build/datatable-base/datatable-base.js | 14 +- .../datatable-body/datatable-body-coverage.js | 6 +- .../datatable-body/datatable-body-debug.js | 4 +- .../datatable-body/datatable-body-min.js | 4 +- .../build/datatable-body/datatable-body.js | 4 +- .../datatable-column-widths-coverage.js | 6 +- .../datatable-column-widths-debug.js | 4 +- .../datatable-column-widths-min.js | 4 +- .../datatable-column-widths.js | 4 +- .../datatable-core/datatable-core-coverage.js | 6 +- .../datatable-core/datatable-core-debug.js | 4 +- .../datatable-core/datatable-core-min.js | 4 +- .../build/datatable-core/datatable-core.js | 4 +- ...atatable-datasource-deprecated-coverage.js | 6 +- .../datatable-datasource-deprecated-debug.js | 4 +- .../datatable-datasource-deprecated-min.js | 4 +- .../datatable-datasource-deprecated.js | 4 +- .../datatable-datasource-coverage.js | 6 +- .../datatable-datasource-debug.js | 4 +- .../datatable-datasource-min.js | 4 +- .../datatable-datasource.js | 4 +- .../datatable-head/datatable-head-coverage.js | 233 +- .../datatable-head/datatable-head-debug.js | 19 +- .../datatable-head/datatable-head-min.js | 7 + .../build/datatable-head/datatable-head.js | 19 +- .../assets/datatable-message-core.css | 2 +- .../skins/night/datatable-message-skin.css | 2 +- .../assets/skins/night/datatable-message.css | 2 +- .../skins/sam/datatable-message-skin.css | 2 +- .../assets/skins/sam/datatable-message.css | 2 +- .../datatable-message-coverage.js | 6 +- .../datatable-message-debug.js | 4 +- .../datatable-message-min.js | 4 +- .../datatable-message/datatable-message.js | 4 +- .../lang/datatable-message.js | 4 +- .../lang/datatable-message_en.js | 4 +- .../datatable-mutable-coverage.js | 6 +- .../datatable-mutable-debug.js | 4 +- .../datatable-mutable-min.js | 4 +- .../datatable-mutable/datatable-mutable.js | 4 +- .../datatable-scroll-deprecated-coverage.js | 6 +- .../datatable-scroll-deprecated-debug.js | 4 +- .../datatable-scroll-deprecated-min.js | 4 +- .../datatable-scroll-deprecated.js | 4 +- .../assets/datatable-scroll-core.css | 2 +- .../skins/night/datatable-scroll-skin.css | 2 +- .../assets/skins/night/datatable-scroll.css | 2 +- .../skins/sam/datatable-scroll-skin.css | 2 +- .../assets/skins/sam/datatable-scroll.css | 2 +- .../datatable-scroll-coverage.js | 6 +- .../datatable-scroll-debug.js | 4 +- .../datatable-scroll/datatable-scroll-min.js | 4 +- .../datatable-scroll/datatable-scroll.js | 4 +- .../datatable-sort-deprecated-coverage.js | 6 +- .../datatable-sort-deprecated-debug.js | 4 +- .../datatable-sort-deprecated-min.js | 4 +- .../datatable-sort-deprecated.js | 4 +- .../lang/datatable-sort-deprecated.js | 4 +- .../lang/datatable-sort-deprecated_en.js | 4 +- .../assets/datatable-sort-core.css | 2 +- .../skins/night/datatable-sort-skin.css | 2 +- .../assets/skins/night/datatable-sort.css | 2 +- .../skins/night/sort-arrow-sprite-ie.png | Bin .../assets/skins/night/sort-arrow-sprite.png | Bin .../assets/skins/sam/datatable-sort-skin.css | 2 +- .../assets/skins/sam/datatable-sort.css | 2 +- .../assets/skins/sam/sort-arrow-sprite-ie.png | Bin .../assets/skins/sam/sort-arrow-sprite.png | Bin .../datatable-sort/datatable-sort-coverage.js | 6 +- .../datatable-sort/datatable-sort-debug.js | 4 +- .../datatable-sort/datatable-sort-min.js | 4 +- .../build/datatable-sort/datatable-sort.js | 4 +- .../datatable-sort/lang/datatable-sort.js | 4 +- .../datatable-sort/lang/datatable-sort_en.js | 4 +- .../datatable-table-coverage.js | 6 +- .../datatable-table/datatable-table-debug.js | 4 +- .../datatable-table/datatable-table-min.js | 4 +- .../build/datatable-table/datatable-table.js | 4 +- .../datatype-date-format-coverage.js | 89 +- .../datatype-date-format-debug.js | 87 +- .../datatype-date-format-min.js | 4 +- .../datatype-date-format.js | 87 +- .../lang/datatype-date-format.js | 4 +- .../lang/datatype-date-format_ar-JO.js | 4 +- .../lang/datatype-date-format_ar.js | 4 +- .../lang/datatype-date-format_ca-ES.js | 4 +- .../lang/datatype-date-format_ca.js | 4 +- .../lang/datatype-date-format_da-DK.js | 4 +- .../lang/datatype-date-format_da.js | 4 +- .../lang/datatype-date-format_de-AT.js | 4 +- .../lang/datatype-date-format_de-DE.js | 4 +- .../lang/datatype-date-format_de.js | 4 +- .../lang/datatype-date-format_el-GR.js | 4 +- .../lang/datatype-date-format_el.js | 4 +- .../lang/datatype-date-format_en-AU.js | 4 +- .../lang/datatype-date-format_en-CA.js | 4 +- .../lang/datatype-date-format_en-GB.js | 4 +- .../lang/datatype-date-format_en-IE.js | 4 +- .../lang/datatype-date-format_en-IN.js | 4 +- .../lang/datatype-date-format_en-JO.js | 4 +- .../lang/datatype-date-format_en-MY.js | 4 +- .../lang/datatype-date-format_en-NZ.js | 4 +- .../lang/datatype-date-format_en-PH.js | 4 +- .../lang/datatype-date-format_en-SG.js | 4 +- .../lang/datatype-date-format_en-US.js | 4 +- .../lang/datatype-date-format_en.js | 4 +- .../lang/datatype-date-format_es-AR.js | 4 +- .../lang/datatype-date-format_es-BO.js | 4 +- .../lang/datatype-date-format_es-CL.js | 4 +- .../lang/datatype-date-format_es-CO.js | 4 +- .../lang/datatype-date-format_es-EC.js | 4 +- .../lang/datatype-date-format_es-ES.js | 4 +- .../lang/datatype-date-format_es-MX.js | 4 +- .../lang/datatype-date-format_es-PE.js | 4 +- .../lang/datatype-date-format_es-PY.js | 4 +- .../lang/datatype-date-format_es-US.js | 4 +- .../lang/datatype-date-format_es-UY.js | 4 +- .../lang/datatype-date-format_es-VE.js | 4 +- .../lang/datatype-date-format_es.js | 4 +- .../lang/datatype-date-format_fi-FI.js | 4 +- .../lang/datatype-date-format_fi.js | 4 +- .../lang/datatype-date-format_fr-BE.js | 4 +- .../lang/datatype-date-format_fr-CA.js | 4 +- .../lang/datatype-date-format_fr-FR.js | 4 +- .../lang/datatype-date-format_fr.js | 4 +- .../lang/datatype-date-format_hi-IN.js | 4 +- .../lang/datatype-date-format_hi.js | 4 +- .../lang/datatype-date-format_id-ID.js | 4 +- .../lang/datatype-date-format_id.js | 4 +- .../lang/datatype-date-format_it-IT.js | 4 +- .../lang/datatype-date-format_it.js | 4 +- .../lang/datatype-date-format_ja-JP.js | 4 +- .../lang/datatype-date-format_ja.js | 4 +- .../lang/datatype-date-format_ko-KR.js | 4 +- .../lang/datatype-date-format_ko.js | 4 +- .../lang/datatype-date-format_ms-MY.js | 4 +- .../lang/datatype-date-format_ms.js | 4 +- .../lang/datatype-date-format_nb-NO.js | 4 +- .../lang/datatype-date-format_nb.js | 4 +- .../lang/datatype-date-format_nl-BE.js | 4 +- .../lang/datatype-date-format_nl-NL.js | 4 +- .../lang/datatype-date-format_nl.js | 4 +- .../lang/datatype-date-format_pl-PL.js | 4 +- .../lang/datatype-date-format_pl.js | 4 +- .../lang/datatype-date-format_pt-BR.js | 4 +- .../lang/datatype-date-format_pt.js | 4 +- .../lang/datatype-date-format_ro-RO.js | 4 +- .../lang/datatype-date-format_ro.js | 4 +- .../lang/datatype-date-format_ru-RU.js | 4 +- .../lang/datatype-date-format_ru.js | 4 +- .../lang/datatype-date-format_sv-SE.js | 4 +- .../lang/datatype-date-format_sv.js | 4 +- .../lang/datatype-date-format_th-TH.js | 4 +- .../lang/datatype-date-format_th.js | 4 +- .../lang/datatype-date-format_tr-TR.js | 4 +- .../lang/datatype-date-format_tr.js | 4 +- .../lang/datatype-date-format_vi-VN.js | 4 +- .../lang/datatype-date-format_vi.js | 4 +- .../lang/datatype-date-format_zh-Hans-CN.js | 4 +- .../lang/datatype-date-format_zh-Hans.js | 4 +- .../lang/datatype-date-format_zh-Hant-HK.js | 4 +- .../lang/datatype-date-format_zh-Hant-TW.js | 4 +- .../lang/datatype-date-format_zh-Hant.js | 4 +- .../datatype-date-math-coverage.js | 6 +- .../datatype-date-math-debug.js | 4 +- .../datatype-date-math-min.js | 4 +- .../datatype-date-math/datatype-date-math.js | 4 +- .../datatype-date-parse-coverage.js | 57 +- .../datatype-date-parse-debug.js | 42 + .../datatype-date-parse-min.js | 7 + .../datatype-date-parse.js | 29 +- .../datatype-number-format-coverage.js | 6 +- .../datatype-number-format-debug.js | 4 +- .../datatype-number-format-min.js | 4 +- .../datatype-number-format.js | 4 +- .../datatype-number-parse-coverage.js | 6 +- .../datatype-number-parse-debug.js | 4 +- .../datatype-number-parse-min.js | 4 +- .../datatype-number-parse.js | 4 +- .../datatype-xml-format-coverage.js | 6 +- .../datatype-xml-format-debug.js | 4 +- .../datatype-xml-format-min.js | 4 +- .../datatype-xml-format.js | 4 +- .../datatype-xml-parse-coverage.js | 6 +- .../datatype-xml-parse-debug.js | 4 +- .../datatype-xml-parse-min.js | 4 +- .../datatype-xml-parse/datatype-xml-parse.js | 4 +- .../dd-constrain/dd-constrain-coverage.js | 88 +- .../build/dd-constrain/dd-constrain-debug.js | 86 +- .../build/dd-constrain/dd-constrain-min.js | 7 + .../build/dd-constrain/dd-constrain.js | 86 +- .../build/dd-ddm-base/dd-ddm-base-coverage.js | 62 +- .../build/dd-ddm-base/dd-ddm-base-debug.js | 60 +- .../build/dd-ddm-base/dd-ddm-base-min.js | 7 + .../build/dd-ddm-base/dd-ddm-base.js | 60 +- .../build/dd-ddm-drop/dd-ddm-drop-coverage.js | 106 +- .../build/dd-ddm-drop/dd-ddm-drop-debug.js | 104 +- .../build/dd-ddm-drop/dd-ddm-drop-min.js | 7 + .../build/dd-ddm-drop/dd-ddm-drop.js | 104 +- .../build/dd-ddm/dd-ddm-coverage.js | 18 +- .../build/dd-ddm/dd-ddm-debug.js | 16 +- .../build/dd-ddm/dd-ddm-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/dd-ddm/dd-ddm.js | 16 +- .../build/dd-delegate/dd-delegate-coverage.js | 58 +- .../build/dd-delegate/dd-delegate-debug.js | 56 +- .../build/dd-delegate/dd-delegate-min.js | 4 +- .../build/dd-delegate/dd-delegate.js | 56 +- .../3.8.0/build/dd-drag/dd-drag-coverage.js | 1637 +++ .../build/dd-drag/dd-drag-debug.js | 197 +- lib/yuilib/3.8.0/build/dd-drag/dd-drag-min.js | 7 + .../{3.7.3 => 3.8.0}/build/dd-drag/dd-drag.js | 197 +- .../dd-drop-plugin/dd-drop-plugin-coverage.js | 10 +- .../dd-drop-plugin/dd-drop-plugin-debug.js | 8 +- .../dd-drop-plugin/dd-drop-plugin-min.js | 4 +- .../build/dd-drop-plugin/dd-drop-plugin.js | 8 +- .../3.8.0/build/dd-drop/dd-drop-coverage.js | 769 ++ .../build/dd-drop/dd-drop-debug.js | 77 +- lib/yuilib/3.8.0/build/dd-drop/dd-drop-min.js | 7 + .../{3.7.3 => 3.8.0}/build/dd-drop/dd-drop.js | 77 +- .../build/dd-gestures/dd-gestures-coverage.js | 6 +- .../build/dd-gestures/dd-gestures-debug.js | 4 +- .../build/dd-gestures/dd-gestures-min.js | 4 +- .../build/dd-gestures/dd-gestures.js | 4 +- .../build/dd-plugin/dd-plugin-coverage.js | 10 +- .../build/dd-plugin/dd-plugin-debug.js | 8 +- .../build/dd-plugin/dd-plugin-min.js | 4 +- .../build/dd-plugin/dd-plugin.js | 8 +- .../build/dd-proxy/dd-proxy-coverage.js | 34 +- .../build/dd-proxy/dd-proxy-debug.js | 32 +- .../3.8.0/build/dd-proxy/dd-proxy-min.js | 7 + .../build/dd-proxy/dd-proxy.js | 32 +- .../build/dd-scroll/dd-scroll-coverage.js | 192 +- .../build/dd-scroll/dd-scroll-debug.js | 55 +- .../build/dd-scroll/dd-scroll-min.js | 4 +- .../build/dd-scroll/dd-scroll.js | 55 +- .../build/dial/assets/dial-core.css | 2 +- .../dial/assets/skins/night/dial-skin.css | 2 +- .../build/dial/assets/skins/night/dial.css | 2 +- .../build/dial/assets/skins/sam/dial-skin.css | 2 +- .../build/dial/assets/skins/sam/dial.css | 2 +- .../build/dial/dial-coverage.js | 21 +- .../{3.7.3 => 3.8.0}/build/dial/dial-debug.js | 19 +- .../{3.7.3 => 3.8.0}/build/dial/dial-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/dial/dial.js | 19 +- .../{3.7.3 => 3.8.0}/build/dial/lang/dial.js | 4 +- .../build/dial/lang/dial_en.js | 4 +- .../build/dial/lang/dial_es.js | 4 +- .../build/dom-attrs/dom-attrs-debug.js | 4 +- .../build/dom-attrs/dom-attrs-min.js | 4 +- .../build/dom-attrs/dom-attrs.js | 4 +- .../build/dom-base/dom-base-coverage.js | 6 +- .../build/dom-base/dom-base-debug.js | 4 +- .../build/dom-base/dom-base-min.js | 4 +- .../build/dom-base/dom-base.js | 4 +- .../build/dom-class/dom-class-debug.js | 4 +- .../build/dom-class/dom-class-min.js | 4 +- .../build/dom-class/dom-class.js | 4 +- .../build/dom-core/dom-core-coverage.js | 6 +- .../build/dom-core/dom-core-debug.js | 4 +- .../build/dom-core/dom-core-min.js | 4 +- .../build/dom-core/dom-core.js | 4 +- .../build/dom-create/dom-create-debug.js | 4 +- .../build/dom-create/dom-create-min.js | 4 +- .../build/dom-create/dom-create.js | 4 +- .../dom-deprecated/dom-deprecated-coverage.js | 6 +- .../dom-deprecated/dom-deprecated-debug.js | 4 +- .../dom-deprecated/dom-deprecated-min.js | 4 +- .../build/dom-deprecated/dom-deprecated.js | 4 +- .../build/dom-screen/dom-screen-coverage.js | 6 +- .../build/dom-screen/dom-screen-debug.js | 4 +- .../build/dom-screen/dom-screen-min.js | 4 +- .../build/dom-screen/dom-screen.js | 4 +- .../build/dom-size/dom-size-debug.js | 4 +- .../build/dom-size/dom-size-min.js | 4 +- .../build/dom-size/dom-size.js | 4 +- .../dom-style-ie/dom-style-ie-coverage.js | 6 +- .../build/dom-style-ie/dom-style-ie-debug.js | 4 +- .../build/dom-style-ie/dom-style-ie-min.js | 4 +- .../build/dom-style-ie/dom-style-ie.js | 4 +- .../build/dom-style/dom-style-coverage.js | 6 +- .../build/dom-style/dom-style-debug.js | 4 +- .../build/dom-style/dom-style-min.js | 4 +- .../build/dom-style/dom-style.js | 4 +- .../build/dump/dump-coverage.js | 6 +- .../{3.7.3 => 3.8.0}/build/dump/dump-debug.js | 4 +- .../{3.7.3 => 3.8.0}/build/dump/dump-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/dump/dump.js | 4 +- .../build/editor-base/editor-base-coverage.js | 6 +- .../build/editor-base/editor-base-debug.js | 4 +- .../build/editor-base/editor-base-min.js | 4 +- .../build/editor-base/editor-base.js | 4 +- .../build/editor-bidi/editor-bidi-coverage.js | 6 +- .../build/editor-bidi/editor-bidi-debug.js | 4 +- .../build/editor-bidi/editor-bidi-min.js | 4 +- .../build/editor-bidi/editor-bidi.js | 4 +- .../build/editor-br/editor-br-coverage.js | 6 +- .../build/editor-br/editor-br-debug.js | 4 +- .../build/editor-br/editor-br-min.js | 4 +- .../build/editor-br/editor-br.js | 4 +- .../editor-lists/editor-lists-coverage.js | 6 +- .../build/editor-lists/editor-lists-debug.js | 4 +- .../build/editor-lists/editor-lists-min.js | 4 +- .../build/editor-lists/editor-lists.js | 4 +- .../editor-para-base-coverage.js | 6 +- .../editor-para-base-debug.js | 4 +- .../editor-para-base/editor-para-base-min.js | 4 +- .../editor-para-base/editor-para-base.js | 4 +- .../editor-para-ie/editor-para-ie-coverage.js | 6 +- .../editor-para-ie/editor-para-ie-debug.js | 4 +- .../editor-para-ie/editor-para-ie-min.js | 4 +- .../build/editor-para-ie/editor-para-ie.js | 4 +- .../build/editor-para/editor-para-coverage.js | 6 +- .../build/editor-para/editor-para-debug.js | 4 +- .../build/editor-para/editor-para-min.js | 4 +- .../build/editor-para/editor-para.js | 4 +- .../editor-selection-coverage.js | 6 +- .../editor-selection-debug.js | 4 +- .../editor-selection/editor-selection-min.js | 4 +- .../editor-selection/editor-selection.js | 4 +- .../build/editor-tab/editor-tab-coverage.js | 6 +- .../build/editor-tab/editor-tab-debug.js | 4 +- .../build/editor-tab/editor-tab-min.js | 4 +- .../build/editor-tab/editor-tab.js | 4 +- .../build/escape/escape-coverage.js | 6 +- .../build/escape/escape-debug.js | 4 +- .../build/escape/escape-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/escape/escape.js | 4 +- .../event-base-ie/event-base-ie-coverage.js | 6 +- .../event-base-ie/event-base-ie-debug.js | 4 +- .../build/event-base-ie/event-base-ie-min.js | 4 +- .../build/event-base-ie/event-base-ie.js | 4 +- .../build/event-base/event-base-coverage.js | 6 +- .../build/event-base/event-base-debug.js | 4 +- .../build/event-base/event-base-min.js | 4 +- .../build/event-base/event-base.js | 4 +- .../event-contextmenu-coverage.js | 6 +- .../event-contextmenu-debug.js | 4 +- .../event-contextmenu-min.js | 4 +- .../event-contextmenu/event-contextmenu.js | 4 +- .../event-custom-base-coverage.js | 6 +- .../event-custom-base-debug.js | 4 +- .../event-custom-base-min.js | 4 +- .../event-custom-base/event-custom-base.js | 4 +- .../event-custom-complex-coverage.js | 6 +- .../event-custom-complex-debug.js | 4 +- .../event-custom-complex-min.js | 4 +- .../event-custom-complex.js | 4 +- .../event-delegate/event-delegate-coverage.js | 6 +- .../event-delegate/event-delegate-debug.js | 4 +- .../event-delegate/event-delegate-min.js | 4 +- .../build/event-delegate/event-delegate.js | 4 +- .../build/event-flick/event-flick-coverage.js | 6 +- .../build/event-flick/event-flick-debug.js | 4 +- .../build/event-flick/event-flick-min.js | 4 +- .../build/event-flick/event-flick.js | 4 +- .../build/event-focus/event-focus-coverage.js | 230 +- .../build/event-focus/event-focus-debug.js | 30 +- .../build/event-focus/event-focus-min.js | 4 +- .../build/event-focus/event-focus.js | 30 +- .../build/event-hover/event-hover-coverage.js | 6 +- .../build/event-hover/event-hover-debug.js | 4 +- .../build/event-hover/event-hover-min.js | 4 +- .../build/event-hover/event-hover.js | 4 +- .../build/event-key/event-key-coverage.js | 8 +- .../build/event-key/event-key-debug.js | 6 +- .../build/event-key/event-key-min.js | 4 +- .../build/event-key/event-key.js | 6 +- .../event-mouseenter-coverage.js | 6 +- .../event-mouseenter-debug.js | 4 +- .../event-mouseenter/event-mouseenter-min.js | 4 +- .../event-mouseenter/event-mouseenter.js | 4 +- .../event-mousewheel-coverage.js | 6 +- .../event-mousewheel-debug.js | 4 +- .../event-mousewheel/event-mousewheel-min.js | 4 +- .../event-mousewheel/event-mousewheel.js | 4 +- .../build/event-move/event-move-coverage.js | 6 +- .../build/event-move/event-move-debug.js | 4 +- .../build/event-move/event-move-min.js | 4 +- .../build/event-move/event-move.js | 4 +- .../event-outside/event-outside-coverage.js | 6 +- .../event-outside/event-outside-debug.js | 4 +- .../build/event-outside/event-outside-min.js | 4 +- .../build/event-outside/event-outside.js | 4 +- .../event-resize/event-resize-coverage.js | 6 +- .../build/event-resize/event-resize-debug.js | 4 +- .../build/event-resize/event-resize-min.js | 4 +- .../build/event-resize/event-resize.js | 4 +- .../event-simulate/event-simulate-coverage.js | 634 +- .../event-simulate/event-simulate-debug.js | 35 +- .../event-simulate/event-simulate-min.js | 7 + .../build/event-simulate/event-simulate.js | 35 +- .../event-synthetic-coverage.js | 6 +- .../event-synthetic/event-synthetic-debug.js | 4 +- .../event-synthetic/event-synthetic-min.js | 4 +- .../build/event-synthetic/event-synthetic.js | 4 +- .../build/event-tap/event-tap-coverage.js | 123 +- .../build/event-tap/event-tap-debug.js | 13 +- .../3.8.0/build/event-tap/event-tap-min.js | 7 + .../build/event-tap/event-tap.js | 13 +- .../build/event-touch/event-touch-coverage.js | 34 +- .../build/event-touch/event-touch-debug.js | 7 +- .../build/event-touch/event-touch-min.js | 4 +- .../build/event-touch/event-touch.js | 7 +- .../event-valuechange-coverage.js | 6 +- .../event-valuechange-debug.js | 4 +- .../event-valuechange-min.js | 4 +- .../event-valuechange/event-valuechange.js | 4 +- .../exec-command/exec-command-coverage.js | 6 +- .../build/exec-command/exec-command-debug.js | 4 +- .../build/exec-command/exec-command-min.js | 4 +- .../build/exec-command/exec-command.js | 4 +- .../build/features/features-coverage.js | 6 +- .../build/features/features-debug.js | 4 +- .../build/features/features-min.js | 4 +- .../build/features/features.js | 4 +- .../build/file-flash/file-flash-coverage.js | 6 +- .../build/file-flash/file-flash-debug.js | 4 +- .../build/file-flash/file-flash-min.js | 4 +- .../build/file-flash/file-flash.js | 4 +- .../build/file-html5/file-html5-coverage.js | 6 +- .../build/file-html5/file-html5-debug.js | 4 +- .../build/file-html5/file-html5-min.js | 4 +- .../build/file-html5/file-html5.js | 4 +- .../build/file/file-coverage.js | 6 +- .../{3.7.3 => 3.8.0}/build/file/file-debug.js | 4 +- .../{3.7.3 => 3.8.0}/build/file/file-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/file/file.js | 4 +- .../build/frame/frame-coverage.js | 6 +- .../build/frame/frame-debug.js | 4 +- .../{3.7.3 => 3.8.0}/build/frame/frame-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/frame/frame.js | 4 +- .../gesture-simulate-coverage.js | 6 +- .../gesture-simulate-debug.js | 4 +- .../gesture-simulate/gesture-simulate-min.js | 4 +- .../gesture-simulate/gesture-simulate.js | 4 +- .../build/get-nodejs/get-nodejs-coverage.js | 6 +- .../build/get-nodejs/get-nodejs-debug.js | 4 +- .../build/get-nodejs/get-nodejs-min.js | 4 +- .../build/get-nodejs/get-nodejs.js | 4 +- .../build/get/get-coverage.js | 6 +- .../{3.7.3 => 3.8.0}/build/get/get-debug.js | 4 +- .../{3.7.3 => 3.8.0}/build/get/get-min.js | 4 +- lib/yuilib/{3.7.3 => 3.8.0}/build/get/get.js | 4 +- .../graphics-canvas-default-coverage.js | 6 +- .../graphics-canvas-default-debug.js | 4 +- .../graphics-canvas-default-min.js | 4 +- .../graphics-canvas-default.js | 4 +- .../graphics-canvas-coverage.js | 2496 ++--- .../graphics-canvas/graphics-canvas-debug.js | 476 +- .../graphics-canvas/graphics-canvas-min.js | 4 +- .../build/graphics-canvas/graphics-canvas.js | 476 +- .../graphics-svg-default-coverage.js | 6 +- .../graphics-svg-default-debug.js | 4 +- .../graphics-svg-default-min.js | 4 +- .../graphics-svg-default.js | 4 +- .../graphics-svg/graphics-svg-coverage.js | 1809 ++-- .../build/graphics-svg/graphics-svg-debug.js | 441 +- .../build/graphics-svg/graphics-svg-min.js | 4 +- .../build/graphics-svg/graphics-svg.js | 441 +- .../graphics-vml-default-coverage.js | 6 +- .../graphics-vml-default-debug.js | 4 +- .../graphics-vml-default-min.js | 4 +- .../graphics-vml-default.js | 4 +- .../graphics-vml/graphics-vml-coverage.js | 2053 ++-- .../build/graphics-vml/graphics-vml-debug.js | 535 +- .../build/graphics-vml/graphics-vml-min.js | 4 +- .../build/graphics-vml/graphics-vml.js | 535 +- .../3.8.0/build/graphics/graphics-coverage.js | 1324 +++ .../build/graphics/graphics-debug.js | 221 +- .../build/graphics/graphics-min.js | 4 +- .../build/graphics/graphics.js | 221 +- .../handlebars-base-coverage.js | 21 +- .../handlebars-base/handlebars-base-debug.js | 13 +- .../handlebars-base/handlebars-base-min.js | 4 +- .../build/handlebars-base/handlebars-base.js | 13 +- .../handlebars-compiler-coverage.js | 6 +- .../handlebars-compiler-debug.js | 4 +- .../handlebars-compiler-min.js | 4 +- .../handlebars-compiler.js | 4 +- .../highlight-accentfold-coverage.js | 6 +- .../highlight-accentfold-debug.js | 4 +- .../highlight-accentfold-min.js | 4 +- .../highlight-accentfold.js | 4 +- .../highlight-base/highlight-base-coverage.js | 6 +- .../highlight-base/highlight-base-debug.js | 4 +- .../highlight-base/highlight-base-min.js | 4 +- .../build/highlight-base/highlight-base.js | 4 +- .../history-base/history-base-coverage.js | 6 +- .../build/history-base/history-base-debug.js | 4 +- .../build/history-base/history-base-min.js | 4 +- .../build/history-base/history-base.js | 4 +- .../history-hash-ie-coverage.js | 6 +- .../history-hash-ie/history-hash-ie-debug.js | 4 +- .../history-hash-ie/history-hash-ie-min.js | 4 +- .../build/history-hash-ie/history-hash-ie.js | 4 +- .../history-hash/history-hash-coverage.js | 6 +- .../build/history-hash/history-hash-debug.js | 4 +- .../build/history-hash/history-hash-min.js | 4 +- .../build/history-hash/history-hash.js | 4 +- .../history-html5/history-html5-coverage.js | 6 +- .../history-html5/history-html5-debug.js | 4 +- .../build/history-html5/history-html5-min.js | 4 +- .../build/history-html5/history-html5.js | 4 +- .../build/imageloader/imageloader-coverage.js | 6 +- .../build/imageloader/imageloader-debug.js | 4 +- .../build/imageloader/imageloader-min.js | 4 +- .../build/imageloader/imageloader.js | 4 +- .../build/intl-base/intl-base-coverage.js | 6 +- .../build/intl-base/intl-base-debug.js | 4 +- .../build/intl-base/intl-base-min.js | 4 +- .../build/intl-base/intl-base.js | 4 +- .../build/intl/intl-coverage.js | 6 +- .../{3.7.3 => 3.8.0}/build/intl/intl-debug.js | 4 +- .../{3.7.3 => 3.8.0}/build/intl/intl-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/intl/intl.js | 4 +- .../build/io-base/io-base-coverage.js | 6 +- .../build/io-base/io-base-debug.js | 4 +- .../build/io-base/io-base-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/io-base/io-base.js | 4 +- .../build/io-form/io-form-coverage.js | 6 +- .../build/io-form/io-form-debug.js | 4 +- .../build/io-form/io-form-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/io-form/io-form.js | 4 +- .../build/io-nodejs/io-nodejs-coverage.js | 6 +- .../build/io-nodejs/io-nodejs-debug.js | 4 +- .../build/io-nodejs/io-nodejs-min.js | 4 +- .../build/io-nodejs/io-nodejs.js | 4 +- .../build/io-queue/io-queue-coverage.js | 6 +- .../build/io-queue/io-queue-debug.js | 4 +- .../build/io-queue/io-queue-min.js | 4 +- .../build/io-queue/io-queue.js | 4 +- .../io-upload-iframe-coverage.js | 6 +- .../io-upload-iframe-debug.js | 4 +- .../io-upload-iframe/io-upload-iframe-min.js | 4 +- .../io-upload-iframe/io-upload-iframe.js | 4 +- .../build/io-xdr/io-xdr-coverage.js | 6 +- .../build/io-xdr/io-xdr-debug.js | 4 +- .../build/io-xdr/io-xdr-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/io-xdr/io-xdr.js | 4 +- .../{3.7.3 => 3.8.0}/build/io-xdr/io.swf | Bin .../build/json-parse/json-parse-coverage.js | 6 +- .../build/json-parse/json-parse-debug.js | 4 +- .../build/json-parse/json-parse-min.js | 4 +- .../build/json-parse/json-parse.js | 4 +- .../json-stringify/json-stringify-coverage.js | 6 +- .../json-stringify/json-stringify-debug.js | 4 +- .../json-stringify/json-stringify-min.js | 4 +- .../build/json-stringify/json-stringify.js | 4 +- .../build/jsonp-url/jsonp-url-coverage.js | 6 +- .../build/jsonp-url/jsonp-url-debug.js | 4 +- .../build/jsonp-url/jsonp-url-min.js | 4 +- .../build/jsonp-url/jsonp-url.js | 4 +- .../build/jsonp/jsonp-coverage.js | 6 +- .../build/jsonp/jsonp-debug.js | 4 +- .../{3.7.3 => 3.8.0}/build/jsonp/jsonp-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/jsonp/jsonp.js | 4 +- .../lazy-model-list-coverage.js | 6 +- .../lazy-model-list/lazy-model-list-debug.js | 4 +- .../lazy-model-list/lazy-model-list-min.js | 4 +- .../build/lazy-model-list/lazy-model-list.js | 4 +- .../build/loader-base/loader-base-coverage.js | 8 +- .../build/loader-base/loader-base-debug.js | 6 +- .../build/loader-base/loader-base-min.js | 4 +- .../build/loader-base/loader-base.js | 6 +- .../loader-rollup/loader-rollup-coverage.js | 6 +- .../loader-rollup/loader-rollup-debug.js | 4 +- .../build/loader-rollup/loader-rollup-min.js | 4 +- .../build/loader-rollup/loader-rollup.js | 4 +- .../build/loader-yui3/loader-yui3-coverage.js | 2661 +++++ .../build/loader-yui3/loader-yui3-debug.js | 79 +- .../build/loader-yui3/loader-yui3-min.js | 7 + .../build/loader-yui3/loader-yui3.js | 79 +- .../build/loader/loader-coverage.js | 12 +- .../build/loader/loader-debug.js | 87 +- lib/yuilib/3.8.0/build/loader/loader-min.js | 7 + .../{3.7.3 => 3.8.0}/build/loader/loader.js | 87 +- .../build/matrix/matrix-coverage.js | 64 +- .../build/matrix/matrix-debug.js | 62 +- .../build/matrix/matrix-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/matrix/matrix.js | 62 +- .../build/model-list/model-list-coverage.js | 6 +- .../build/model-list/model-list-debug.js | 4 +- .../build/model-list/model-list-min.js | 4 +- .../build/model-list/model-list.js | 4 +- .../model-sync-rest-coverage.js | 6 +- .../model-sync-rest/model-sync-rest-debug.js | 4 +- .../model-sync-rest/model-sync-rest-min.js | 4 +- .../build/model-sync-rest/model-sync-rest.js | 4 +- .../build/model/model-coverage.js | 6 +- .../build/model/model-debug.js | 4 +- .../{3.7.3 => 3.8.0}/build/model/model-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/model/model.js | 4 +- .../build/node-base/node-base-coverage.js | 6 +- .../build/node-base/node-base-debug.js | 4 +- .../build/node-base/node-base-min.js | 4 +- .../build/node-base/node-base.js | 4 +- .../build/node-core/node-core-coverage.js | 557 +- .../build/node-core/node-core-debug.js | 11 +- .../build/node-core/node-core-min.js | 4 +- .../build/node-core/node-core.js | 11 +- .../node-deprecated-coverage.js | 6 +- .../node-deprecated/node-deprecated-debug.js | 4 +- .../node-deprecated/node-deprecated-min.js | 4 +- .../build/node-deprecated/node-deprecated.js | 4 +- .../node-event-delegate-coverage.js | 6 +- .../node-event-delegate-debug.js | 4 +- .../node-event-delegate-min.js | 4 +- .../node-event-delegate.js | 4 +- .../node-event-html5-coverage.js | 6 +- .../node-event-html5-debug.js | 4 +- .../node-event-html5/node-event-html5-min.js | 4 +- .../node-event-html5/node-event-html5.js | 4 +- .../node-event-simulate-coverage.js | 6 +- .../node-event-simulate-debug.js | 4 +- .../node-event-simulate-min.js | 4 +- .../node-event-simulate.js | 4 +- .../node-flick/assets/node-flick-core.css | 2 +- .../assets/skins/sam/node-flick-skin.css | 2 +- .../assets/skins/sam/node-flick.css | 2 +- .../build/node-flick/node-flick-coverage.js | 6 +- .../build/node-flick/node-flick-debug.js | 4 +- .../build/node-flick/node-flick-min.js | 4 +- .../build/node-flick/node-flick.js | 4 +- .../node-focusmanager-coverage.js | 6 +- .../node-focusmanager-debug.js | 4 +- .../node-focusmanager-min.js | 4 +- .../node-focusmanager/node-focusmanager.js | 4 +- .../build/node-load/node-load-coverage.js | 6 +- .../build/node-load/node-load-debug.js | 4 +- .../build/node-load/node-load-min.js | 4 +- .../build/node-load/node-load.js | 4 +- .../node-menunav/assets/node-menunav-core.css | 2 +- .../horizontal-menu-submenu-indicator.png | Bin .../assets/skins/night/node-menunav-skin.css | 2 +- .../assets/skins/night/node-menunav.css | 2 +- .../night/vertical-menu-submenu-indicator.png | Bin .../sam/horizontal-menu-submenu-indicator.png | Bin .../sam/horizontal-menu-submenu-toggle.png | Bin .../assets/skins/sam/node-menunav-skin.css | 2 +- .../assets/skins/sam/node-menunav.css | 2 +- .../sam/vertical-menu-submenu-indicator.png | Bin .../node-menunav/node-menunav-coverage.js | 6 +- .../build/node-menunav/node-menunav-debug.js | 4 +- .../build/node-menunav/node-menunav-min.js | 4 +- .../build/node-menunav/node-menunav.js | 4 +- .../node-pluginhost-coverage.js | 6 +- .../node-pluginhost/node-pluginhost-debug.js | 4 +- .../node-pluginhost/node-pluginhost-min.js | 4 +- .../build/node-pluginhost/node-pluginhost.js | 4 +- .../build/node-screen/node-screen-coverage.js | 6 +- .../build/node-screen/node-screen-debug.js | 4 +- .../build/node-screen/node-screen-min.js | 4 +- .../build/node-screen/node-screen.js | 4 +- .../node-scroll-info-coverage.js | 6 +- .../node-scroll-info-debug.js | 4 +- .../node-scroll-info/node-scroll-info-min.js | 4 +- .../node-scroll-info/node-scroll-info.js | 4 +- .../build/node-style/node-style-coverage.js | 6 +- .../build/node-style/node-style-debug.js | 4 +- .../build/node-style/node-style-min.js | 4 +- .../build/node-style/node-style.js | 4 +- .../build/oop/oop-coverage.js | 6 +- .../{3.7.3 => 3.8.0}/build/oop/oop-debug.js | 4 +- .../{3.7.3 => 3.8.0}/build/oop/oop-min.js | 4 +- lib/yuilib/{3.7.3 => 3.8.0}/build/oop/oop.js | 4 +- .../build/overlay/assets/overlay-core.css | 2 +- .../assets/skins/night/overlay-skin.css | 2 +- .../overlay/assets/skins/night/overlay.css | 2 +- .../overlay/assets/skins/sam/overlay-skin.css | 2 +- .../overlay}/assets/skins/sam/overlay.css | 2 +- .../build/overlay/overlay-coverage.js | 16 +- .../build/overlay/overlay-debug.js | 14 +- .../build/overlay/overlay-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/overlay/overlay.js | 14 +- .../build/panel/assets/panel-core.css | 2 +- .../panel/assets/skins/night/panel-skin.css | 2 +- .../build/panel/assets/skins/night/panel.css | 2 +- .../panel/assets/skins/night/sprite_icons.png | Bin .../panel/assets/skins/sam/panel-skin.css | 2 +- .../build/panel/assets/skins/sam/panel.css | 2 +- .../panel/assets/skins/sam/sprite_icons.png | Bin .../build/panel/panel-coverage.js | 19 +- .../build/panel/panel-debug.js | 17 +- .../{3.7.3 => 3.8.0}/build/panel/panel-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/panel/panel.js | 17 +- .../build/parallel/parallel-coverage.js | 6 +- .../build/parallel/parallel-debug.js | 4 +- .../build/parallel/parallel-min.js | 4 +- .../build/parallel/parallel.js | 4 +- .../build/pjax-base/pjax-base-coverage.js | 163 +- .../build/pjax-base/pjax-base-debug.js | 24 +- .../build/pjax-base/pjax-base-min.js | 4 +- .../build/pjax-base/pjax-base.js | 24 +- .../pjax-content/pjax-content-coverage.js | 10 +- .../build/pjax-content/pjax-content-debug.js | 8 +- .../build/pjax-content/pjax-content-min.js | 7 + .../build/pjax-content/pjax-content.js | 8 +- .../build/pjax-plugin/pjax-plugin-coverage.js | 6 +- .../build/pjax-plugin/pjax-plugin-debug.js | 4 +- .../build/pjax-plugin/pjax-plugin-min.js | 4 +- .../build/pjax-plugin/pjax-plugin.js | 4 +- .../build/pjax/pjax-coverage.js | 6 +- .../{3.7.3 => 3.8.0}/build/pjax/pjax-debug.js | 4 +- .../{3.7.3 => 3.8.0}/build/pjax/pjax-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/pjax/pjax.js | 4 +- .../build/plugin/plugin-coverage.js | 6 +- .../build/plugin/plugin-debug.js | 4 +- .../build/plugin/plugin-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/plugin/plugin.js | 4 +- .../pluginhost-base-coverage.js | 6 +- .../pluginhost-base/pluginhost-base-debug.js | 4 +- .../pluginhost-base/pluginhost-base-min.js | 4 +- .../build/pluginhost-base/pluginhost-base.js | 4 +- .../pluginhost-config-coverage.js | 6 +- .../pluginhost-config-debug.js | 4 +- .../pluginhost-config-min.js | 4 +- .../pluginhost-config/pluginhost-config.js | 4 +- .../build/profiler/profiler-coverage.js | 6 +- .../build/profiler/profiler-debug.js | 4 +- .../build/profiler/profiler-min.js | 4 +- .../build/profiler/profiler.js | 4 +- .../querystring-parse-simple-coverage.js | 66 +- .../querystring-parse-simple-debug.js | 34 +- .../querystring-parse-simple-min.js | 4 +- .../querystring-parse-simple.js | 34 +- .../querystring-parse-coverage.js | 111 +- .../querystring-parse-debug.js | 23 +- .../querystring-parse-min.js | 4 +- .../querystring-parse/querystring-parse.js | 23 +- .../querystring-stringify-simple-coverage.js | 51 +- .../querystring-stringify-simple-debug.js | 23 +- .../querystring-stringify-simple-min.js | 4 +- .../querystring-stringify-simple.js | 23 +- .../querystring-stringify-coverage.js | 85 +- .../querystring-stringify-debug.js | 11 +- .../querystring-stringify-min.js | 4 +- .../querystring-stringify.js | 11 +- .../queue-promote/queue-promote-coverage.js | 6 +- .../queue-promote/queue-promote-debug.js | 4 +- .../build/queue-promote/queue-promote-min.js | 4 +- .../build/queue-promote/queue-promote.js | 4 +- .../range-slider}/assets/slider-base-core.css | 2 +- .../build/range-slider/assets/slider-core.css | 2 +- .../assets/thumb-x-oblong-dark.png | Bin .../range-slider/assets/thumb-x-oblong.png | Bin .../assets/thumb-x-oblong2-dark.png | Bin .../range-slider/assets/thumb-x-oblong2.png | Bin .../assets/thumb-y-oblong-dark.png | Bin .../range-slider/assets/thumb-y-oblong.png | Bin .../assets/thumb-y-oblong2-dark.png | Bin .../range-slider/assets/thumb-y-oblong2.png | Bin .../range-slider/range-slider-coverage.js | 6 +- .../build/range-slider/range-slider-debug.js | 4 +- .../build/range-slider/range-slider-min.js | 4 +- .../build/range-slider/range-slider.js | 4 +- .../recordset-base/recordset-base-coverage.js | 6 +- .../recordset-base/recordset-base-debug.js | 4 +- .../recordset-base/recordset-base-min.js | 4 +- .../build/recordset-base/recordset-base.js | 4 +- .../recordset-filter-coverage.js | 6 +- .../recordset-filter-debug.js | 4 +- .../recordset-filter/recordset-filter-min.js | 4 +- .../recordset-filter/recordset-filter.js | 4 +- .../recordset-indexer-coverage.js | 6 +- .../recordset-indexer-debug.js | 4 +- .../recordset-indexer-min.js | 4 +- .../recordset-indexer/recordset-indexer.js | 4 +- .../recordset-sort/recordset-sort-coverage.js | 6 +- .../recordset-sort/recordset-sort-debug.js | 4 +- .../recordset-sort/recordset-sort-min.js | 4 +- .../build/recordset-sort/recordset-sort.js | 4 +- .../resize-base/assets/resize-base-core.css | 2 +- .../resize-base/assets/skins/night/arrows.png | Bin .../assets/skins/night/resize-base-skin.css | 2 +- .../assets/skins/night/resize-base.css | 7 + .../resize-base/assets/skins/sam/arrows.png | Bin .../assets/skins/sam/resize-base-skin.css | 2 +- .../assets/skins/sam/resize-base.css | 7 + .../build/resize-base/resize-base-coverage.js | 6 +- .../build/resize-base/resize-base-debug.js | 4 +- .../build/resize-base/resize-base-min.js | 4 +- .../build/resize-base/resize-base.js | 4 +- .../assets/resize-base-core.css | 2 +- .../assets/skins/night/arrows.png | Bin .../assets/skins/night/resize-base-skin.css | 2 +- .../assets/skins/sam/arrows.png | Bin .../assets/skins/sam/resize-base-skin.css | 2 +- .../resize-constrain-coverage.js | 6 +- .../resize-constrain-debug.js | 4 +- .../resize-constrain/resize-constrain-min.js | 4 +- .../resize-constrain/resize-constrain.js | 4 +- .../resize-plugin/assets/resize-base-core.css | 2 +- .../assets/skins/night/arrows.png | Bin .../assets/skins/night/resize-base-skin.css | 52 + .../resize-plugin/assets/skins/sam/arrows.png | Bin .../assets/skins/sam/resize-base-skin.css | 52 + .../resize-plugin/resize-plugin-coverage.js | 6 +- .../resize-plugin/resize-plugin-debug.js | 4 +- .../build/resize-plugin/resize-plugin-min.js | 4 +- .../build/resize-plugin/resize-plugin.js | 4 +- .../resize-proxy}/assets/resize-base-core.css | 2 +- .../assets/skins/night/arrows.png | Bin .../assets/skins/night/resize-base-skin.css | 52 + .../resize-proxy/assets/skins/sam/arrows.png | Bin .../assets/skins/sam/resize-base-skin.css | 52 + .../resize-proxy/resize-proxy-coverage.js | 6 +- .../build/resize-proxy/resize-proxy-debug.js | 4 +- .../build/resize-proxy/resize-proxy-min.js | 4 +- .../build/resize-proxy/resize-proxy.js | 4 +- .../3.8.0/build/router/router-coverage.js | 1756 ++++ .../build/router/router-debug.js | 34 +- lib/yuilib/3.8.0/build/router/router-min.js | 7 + .../{3.7.3 => 3.8.0}/build/router/router.js | 34 +- .../scrollview-base-ie-coverage.js | 6 +- .../scrollview-base-ie-debug.js | 4 +- .../scrollview-base-ie-min.js | 4 +- .../scrollview-base-ie/scrollview-base-ie.js | 4 +- .../assets/scrollview-base-core.css | 2 +- .../skins/night/scrollview-base-skin.css | 2 +- .../assets/skins/night/scrollview-base.css | 2 +- .../assets/skins/sam/scrollview-base-skin.css | 2 +- .../assets/skins/sam/scrollview-base.css | 2 +- .../scrollview-base-coverage.js | 413 +- .../scrollview-base/scrollview-base-debug.js | 5 +- .../scrollview-base/scrollview-base-min.js | 4 +- .../build/scrollview-base/scrollview-base.js | 5 +- .../assets/scrollview-list-core.css | 2 +- .../skins/night/scrollview-list-skin.css | 2 +- .../assets/skins/night/scrollview-list.css | 2 +- .../assets/skins/sam/scrollview-list-skin.css | 2 +- .../assets/skins/sam/scrollview-list.css | 2 +- .../scrollview-list-coverage.js | 6 +- .../scrollview-list/scrollview-list-debug.js | 4 +- .../scrollview-list/scrollview-list-min.js | 4 +- .../build/scrollview-list/scrollview-list.js | 4 +- .../scrollview-paginator-coverage.js | 377 +- .../scrollview-paginator-debug.js | 135 +- .../scrollview-paginator-min.js | 7 + .../scrollview-paginator.js | 135 +- .../assets/scrollview-scrollbars-core.css | 2 +- .../night/scrollview-scrollbars-skin.css | 2 +- .../skins/night/scrollview-scrollbars.css | 2 +- .../skins/sam/scrollview-scrollbars-skin.css | 2 +- .../skins/sam/scrollview-scrollbars.css | 2 +- .../scrollview-scrollbars-coverage.js | 312 +- .../scrollview-scrollbars-debug.js | 25 +- .../scrollview-scrollbars-min.js | 7 + .../scrollview-scrollbars.js | 25 +- .../build/scrollview/scrollview-coverage.js | 6 +- .../build/scrollview/scrollview-debug.js | 4 +- .../build/scrollview/scrollview-min.js | 4 +- .../build/scrollview/scrollview.js | 4 +- .../selector-css2/selector-css2-coverage.js | 6 +- .../selector-css2/selector-css2-debug.js | 4 +- .../build/selector-css2/selector-css2-min.js | 4 +- .../build/selector-css2/selector-css2.js | 4 +- .../selector-css3/selector-css3-coverage.js | 6 +- .../selector-css3/selector-css3-debug.js | 4 +- .../build/selector-css3/selector-css3-min.js | 4 +- .../build/selector-css3/selector-css3.js | 4 +- .../selector-native-coverage.js | 6 +- .../selector-native/selector-native-debug.js | 4 +- .../selector-native/selector-native-min.js | 4 +- .../build/selector-native/selector-native.js | 4 +- .../build/selector/selector-coverage.js | 6 +- .../build/selector/selector-debug.js | 4 +- .../build/selector/selector-min.js | 4 +- .../build/selector/selector.js | 4 +- .../build/shim-plugin/shim-plugin-coverage.js | 6 +- .../build/shim-plugin/shim-plugin-debug.js | 4 +- .../build/shim-plugin/shim-plugin-min.js | 4 +- .../build/shim-plugin/shim-plugin.js | 4 +- .../build/simpleyui/simpleyui-debug.js | 1683 ++-- .../3.8.0/build/simpleyui/simpleyui-min.js | 7 + .../build/simpleyui/simpleyui.js | 1477 ++- .../assets/skins/audio-light/rail-x.png | Bin .../assets/skins/audio-light/rail-y.png | Bin .../skins/audio-light/slider-base-skin.css | 2 +- .../assets/skins/audio-light/slider-base.css | 2 +- .../assets/skins/audio-light/slider-skin.css | 2 +- .../assets/skins/audio-light/thumb-x.png | Bin .../assets/skins/audio-light/thumb-y.png | Bin .../slider-base/assets/skins/audio/rail-x.png | Bin .../slider-base/assets/skins/audio/rail-y.png | Bin .../assets/skins/audio/slider-base-skin.css | 2 +- .../assets/skins/audio/slider-base.css | 2 +- .../assets/skins/audio/slider-skin.css | 2 +- .../assets/skins/audio/thumb-x.png | Bin .../assets/skins/audio/thumb-y.png | Bin .../assets/skins/capsule-dark/rail-x-dots.png | Bin .../skins/capsule-dark/rail-x-lines.png | Bin .../assets/skins/capsule-dark/rail-x.png | Bin .../assets/skins/capsule-dark/rail-y-dots.png | Bin .../skins/capsule-dark/rail-y-lines.png | Bin .../assets/skins/capsule-dark/rail-y.png | Bin .../skins/capsule-dark/slider-base-skin.css | 2 +- .../assets/skins/capsule-dark/slider-base.css | 2 +- .../assets/skins/capsule-dark/slider-skin.css | 2 +- .../skins/capsule-dark/thumb-x-line.png | Bin .../assets/skins/capsule-dark/thumb-x.png | Bin .../skins/capsule-dark/thumb-y-line.png | Bin .../assets/skins/capsule-dark/thumb-y.png | Bin .../assets/skins/capsule/rail-x-dots.png | Bin .../assets/skins/capsule/rail-x-lines.png | Bin .../assets/skins/capsule/rail-x.png | Bin .../assets/skins/capsule/rail-y-dots.png | Bin .../assets/skins/capsule/rail-y-lines.png | Bin .../assets/skins/capsule/rail-y.png | Bin .../assets/skins/capsule/slider-base-skin.css | 2 +- .../assets/skins/capsule/slider-base.css | 2 +- .../assets/skins/capsule/slider-skin.css | 2 +- .../assets/skins/capsule/thumb-x-line.png | Bin .../assets/skins/capsule/thumb-x.png | Bin .../assets/skins/capsule/thumb-y-line.png | Bin .../assets/skins/capsule/thumb-y-lines.png | Bin .../assets/skins/capsule/thumb-y.png | Bin .../assets/skins/night/rail-x-lines.png | Bin .../slider-base/assets/skins/night/rail-x.png | Bin .../assets/skins/night/rail-y-lines.png | Bin .../slider-base/assets/skins/night/rail-y.png | Bin .../assets/skins/night/slider-base-skin.css | 2 +- .../assets/skins/night/slider-base.css | 2 +- .../assets/skins/night/slider-skin.css | 2 +- .../assets/skins/night/thumb-x.png | Bin .../assets/skins/night/thumb-y.png | Bin .../assets/skins/round-dark/rail-x.png | Bin .../assets/skins/round-dark/rail-y.png | Bin .../skins/round-dark/slider-base-skin.css | 2 +- .../assets/skins/round-dark/slider-base.css | 2 +- .../assets/skins/round-dark/slider-skin.css | 2 +- .../assets/skins/round-dark/thumb-x-grip.png | Bin .../assets/skins/round-dark/thumb-x.png | Bin .../assets/skins/round-dark/thumb-y-grip.png | Bin .../assets/skins/round-dark/thumb-y.png | Bin .../slider-base/assets/skins/round/rail-x.png | Bin .../slider-base/assets/skins/round/rail-y.png | Bin .../assets/skins/round/slider-base-skin.css | 2 +- .../assets/skins/round/slider-base.css | 2 +- .../assets/skins/round/slider-skin.css | 2 +- .../assets/skins/round/thumb-x-grip.png | Bin .../assets/skins/round/thumb-x.png | Bin .../assets/skins/round/thumb-y-grip.png | Bin .../assets/skins/round/thumb-y.png | Bin .../assets/skins/sam-dark/rail-x-lines.png | Bin .../assets/skins/sam-dark/rail-x.png | Bin .../assets/skins/sam-dark/rail-y-lines.png | Bin .../assets/skins/sam-dark/rail-y.png | Bin .../skins/sam-dark/slider-base-skin.css | 2 +- .../assets/skins/sam-dark/slider-base.css | 2 +- .../assets/skins/sam-dark/slider-skin.css | 2 +- .../assets/skins/sam-dark/thumb-x.png | Bin .../assets/skins/sam-dark/thumb-y.png | Bin .../assets/skins/sam/rail-x-lines.png | Bin .../slider-base/assets/skins/sam/rail-x.png | Bin .../assets/skins/sam/rail-y-lines.png | Bin .../slider-base/assets/skins/sam/rail-y.png | Bin .../assets/skins/sam/slider-base-skin.css | 2 +- .../assets/skins/sam/slider-base.css | 2 +- .../assets/skins/sam/slider-skin.css | 2 +- .../slider-base/assets/skins/sam/thumb-x.png | Bin .../slider-base/assets/skins/sam/thumb-y.png | Bin .../slider-base}/assets/slider-base-core.css | 2 +- .../build/slider-base}/assets/slider-core.css | 2 +- .../assets/thumb-x-oblong-dark.png | Bin .../slider-base/assets/thumb-x-oblong.png | Bin .../assets/thumb-x-oblong2-dark.png | Bin .../slider-base/assets/thumb-x-oblong2.png | Bin .../assets/thumb-y-oblong-dark.png | Bin .../slider-base/assets/thumb-y-oblong.png | Bin .../assets/thumb-y-oblong2-dark.png | Bin .../slider-base/assets/thumb-y-oblong2.png | Bin .../build/slider-base/slider-base-coverage.js | 6 +- .../build/slider-base/slider-base-debug.js | 4 +- .../build/slider-base/slider-base-min.js | 4 +- .../build/slider-base/slider-base.js | 4 +- .../assets/slider-base-core.css | 2 +- .../assets/slider-core.css | 2 +- .../assets/thumb-x-oblong-dark.png | Bin .../assets/thumb-x-oblong.png | Bin .../assets/thumb-x-oblong2-dark.png | Bin .../assets/thumb-x-oblong2.png | Bin .../assets/thumb-y-oblong-dark.png | Bin .../assets/thumb-y-oblong.png | Bin .../assets/thumb-y-oblong2-dark.png | Bin .../assets/thumb-y-oblong2.png | Bin .../slider-value-range-coverage.js | 6 +- .../slider-value-range-debug.js | 4 +- .../slider-value-range-min.js | 4 +- .../slider-value-range/slider-value-range.js | 4 +- .../sortable-scroll-coverage.js | 6 +- .../sortable-scroll/sortable-scroll-debug.js | 4 +- .../sortable-scroll/sortable-scroll-min.js | 4 +- .../build/sortable-scroll/sortable-scroll.js | 4 +- .../build/sortable/sortable-coverage.js | 6 +- .../build/sortable/sortable-debug.js | 4 +- .../build/sortable/sortable-min.js | 4 +- .../build/sortable/sortable.js | 4 +- .../build/stylesheet/stylesheet-coverage.js | 6 +- .../build/stylesheet/stylesheet-debug.js | 4 +- .../build/stylesheet/stylesheet-min.js | 4 +- .../build/stylesheet/stylesheet.js | 4 +- .../build/substitute/substitute-coverage.js | 6 +- .../build/substitute/substitute-debug.js | 4 +- .../build/substitute/substitute-min.js | 4 +- .../build/substitute/substitute.js | 4 +- .../build/swf/swf-coverage.js | 6 +- .../{3.7.3 => 3.8.0}/build/swf/swf-debug.js | 4 +- .../{3.7.3 => 3.8.0}/build/swf/swf-min.js | 4 +- lib/yuilib/{3.7.3 => 3.8.0}/build/swf/swf.js | 4 +- .../build/swfdetect/swfdetect-coverage.js | 6 +- .../build/swfdetect/swfdetect-debug.js | 4 +- .../build/swfdetect/swfdetect-min.js | 4 +- .../build/swfdetect/swfdetect.js | 4 +- .../tabview-base/assets/tabview-core.css | 2 +- .../build/tabview-base/assets/tabview.css | 2 +- .../tabview-base/tabview-base-coverage.js | 6 +- .../build/tabview-base/tabview-base-debug.js | 4 +- .../build/tabview-base/tabview-base-min.js | 4 +- .../build/tabview-base/tabview-base.js | 4 +- .../tabview-plugin/assets/tabview-core.css | 2 +- .../build/tabview-plugin/assets/tabview.css | 2 +- .../tabview-plugin/tabview-plugin-coverage.js | 6 +- .../tabview-plugin/tabview-plugin-debug.js | 4 +- .../tabview-plugin/tabview-plugin-min.js | 4 +- .../build/tabview-plugin/tabview-plugin.js | 4 +- .../assets/skins/night/tabview-skin.css | 2 +- .../tabview/assets/skins/night/tabview.css | 2 +- .../tabview/assets/skins/sam/tabview-skin.css | 2 +- .../tabview/assets/skins/sam/tabview.css | 2 +- .../build/tabview/assets/tabview-core.css | 2 +- .../build/tabview/assets/tabview.css | 2 +- .../build/tabview/tabview-coverage.js | 16 +- .../build/tabview/tabview-debug.js | 14 +- .../build/tabview/tabview-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/tabview/tabview.js | 14 +- .../template-base/template-base-coverage.js | 200 + .../template-base/template-base-debug.js | 148 + .../build/template-base/template-base-min.js | 7 + .../build/template-base/template-base.js | 148 + .../template-micro/template-micro-coverage.js | 294 + .../template-micro/template-micro-debug.js | 227 + .../template-micro/template-micro-min.js | 7 + .../build/template-micro/template-micro.js | 227 + .../assets/skins/sam/test-console-skin.css | 2 +- .../assets/skins/sam/test-console.css | 2 +- .../test-console/assets/test-console-core.css | 2 +- .../test-console/test-console-coverage.js | 6 +- .../build/test-console/test-console-debug.js | 4 +- .../build/test-console/test-console-min.js | 4 +- .../build/test-console/test-console.js | 4 +- .../build/test/test-coverage.js | 8 +- .../{3.7.3 => 3.8.0}/build/test/test-debug.js | 52 +- .../{3.7.3 => 3.8.0}/build/test/test-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/test/test.js | 52 +- .../text-accentfold-coverage.js | 6 +- .../text-accentfold/text-accentfold-debug.js | 4 +- .../text-accentfold/text-accentfold-min.js | 4 +- .../build/text-accentfold/text-accentfold.js | 4 +- .../text-data-accentfold-coverage.js | 6 +- .../text-data-accentfold-debug.js | 4 +- .../text-data-accentfold-min.js | 4 +- .../text-data-accentfold.js | 4 +- .../text-data-wordbreak-coverage.js | 6 +- .../text-data-wordbreak-debug.js | 4 +- .../text-data-wordbreak-min.js | 4 +- .../text-data-wordbreak.js | 4 +- .../text-wordbreak/text-wordbreak-coverage.js | 6 +- .../text-wordbreak/text-wordbreak-debug.js | 4 +- .../text-wordbreak/text-wordbreak-min.js | 4 +- .../build/text-wordbreak/text-wordbreak.js | 4 +- .../transition-timer-coverage.js | 6 +- .../transition-timer-debug.js | 4 +- .../transition-timer/transition-timer-min.js | 4 +- .../transition-timer/transition-timer.js | 4 +- .../build/transition/transition-coverage.js | 6 +- .../build/transition/transition-debug.js | 4 +- .../build/transition/transition-min.js | 4 +- .../build/transition/transition.js | 4 +- .../uploader-deprecated/assets/uploader.swf | Bin .../uploader-deprecated-coverage.js | 6 +- .../uploader-deprecated-debug.js | 4 +- .../uploader-deprecated-min.js | 4 +- .../uploader-deprecated.js | 4 +- .../assets/uploader-flash-core.css | 2 +- .../uploader-flash/uploader-flash-coverage.js | 1351 +++ .../uploader-flash/uploader-flash-debug.js | 1083 ++ .../uploader-flash/uploader-flash-min.js | 7 + .../build/uploader-flash/uploader-flash.js | 1083 ++ .../assets/uploader-flash-core.css | 2 +- .../uploader-html5/uploader-html5-coverage.js | 1233 +++ .../uploader-html5/uploader-html5-debug.js | 1003 ++ .../uploader-html5/uploader-html5-min.js | 7 + .../build/uploader-html5/uploader-html5.js | 1003 ++ .../assets/uploader-flash-core.css | 2 +- .../uploader-queue/uploader-queue-coverage.js | 857 ++ .../uploader-queue/uploader-queue-debug.js | 662 ++ .../uploader-queue/uploader-queue-min.js | 7 + .../build/uploader-queue/uploader-queue.js | 662 ++ .../build/uploader/assets/flashuploader.swf | Bin .../uploader/assets/uploader-flash-core.css | 2 +- .../3.8.0/build/uploader/uploader-coverage.js | 100 + .../3.8.0/build/uploader/uploader-debug.js | 58 + .../build/uploader/uploader-min.js | 4 +- lib/yuilib/3.8.0/build/uploader/uploader.js | 58 + .../view-node-map/view-node-map-coverage.js | 6 +- .../view-node-map/view-node-map-debug.js | 4 +- .../build/view-node-map/view-node-map-min.js | 4 +- .../build/view-node-map/view-node-map.js | 4 +- .../build/view/view-coverage.js | 6 +- .../{3.7.3 => 3.8.0}/build/view/view-debug.js | 4 +- .../{3.7.3 => 3.8.0}/build/view/view-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/view/view.js | 4 +- .../build/widget-anim/widget-anim-coverage.js | 6 +- .../build/widget-anim/widget-anim-debug.js | 4 +- .../build/widget-anim/widget-anim-min.js | 4 +- .../build/widget-anim/widget-anim.js | 4 +- .../widget-autohide-coverage.js | 6 +- .../widget-autohide/widget-autohide-debug.js | 4 +- .../widget-autohide/widget-autohide-min.js | 4 +- .../build/widget-autohide/widget-autohide.js | 4 +- .../assets/widget-base-core.css | 2 +- .../widget-base-ie/widget-base-ie-coverage.js | 6 +- .../widget-base-ie/widget-base-ie-debug.js | 4 +- .../widget-base-ie/widget-base-ie-min.js | 4 +- .../build/widget-base-ie/widget-base-ie.js | 4 +- .../assets/skins/night/widget-base-skin.css | 2 +- .../assets/skins/night/widget-base.css | 2 +- .../assets/skins/sam/widget-base-skin.css | 2 +- .../assets/skins/sam/widget-base.css | 2 +- .../widget-base}/assets/widget-base-core.css | 2 +- .../build/widget-base/widget-base-coverage.js | 17 +- .../build/widget-base/widget-base-debug.js | 15 +- .../build/widget-base/widget-base-min.js | 4 +- .../build/widget-base/widget-base.js | 15 +- .../assets/skins/night/sprite_icons.gif | Bin .../skins/night/widget-buttons-skin.css | 2 +- .../assets/skins/night/widget-buttons.css | 2 +- .../assets/skins/sam/sprite_icons.gif | Bin .../assets/skins/sam/widget-buttons-skin.css | 2 +- .../assets/skins/sam/widget-buttons.css | 2 +- .../assets/widget-buttons-core.css | 2 +- .../widget-buttons/widget-buttons-coverage.js | 6 +- .../widget-buttons/widget-buttons-debug.js | 4 +- .../widget-buttons/widget-buttons-min.js | 4 +- .../build/widget-buttons/widget-buttons.js | 4 +- .../widget-child/widget-child-coverage.js | 6 +- .../build/widget-child/widget-child-debug.js | 4 +- .../build/widget-child/widget-child-min.js | 4 +- .../build/widget-child/widget-child.js | 4 +- .../assets/widget-base-core.css | 2 +- .../widget-htmlparser-coverage.js | 6 +- .../widget-htmlparser-debug.js | 4 +- .../widget-htmlparser-min.js | 4 +- .../widget-htmlparser/widget-htmlparser.js | 4 +- .../widget-locale/assets/widget-base-core.css | 2 +- .../widget-locale/widget-locale-coverage.js | 6 +- .../widget-locale/widget-locale-debug.js | 4 +- .../build/widget-locale/widget-locale-min.js | 4 +- .../build/widget-locale/widget-locale.js | 4 +- .../skins/night/widget-modality-skin.css | 2 +- .../assets/skins/night/widget-modality.css | 2 +- .../assets/skins/sam/widget-modality-skin.css | 2 +- .../assets/skins/sam/widget-modality.css | 2 +- .../assets/widget-modality-core.css | 2 +- .../widget-modality-coverage.js | 6 +- .../widget-modality/widget-modality-debug.js | 4 +- .../widget-modality/widget-modality-min.js | 4 +- .../build/widget-modality/widget-modality.js | 4 +- .../widget-parent/widget-parent-coverage.js | 6 +- .../widget-parent/widget-parent-debug.js | 4 +- .../build/widget-parent/widget-parent-min.js | 4 +- .../build/widget-parent/widget-parent.js | 4 +- .../widget-position-align-coverage.js | 6 +- .../widget-position-align-debug.js | 4 +- .../widget-position-align-min.js | 4 +- .../widget-position-align.js | 4 +- .../widget-position-constrain-coverage.js | 6 +- .../widget-position-constrain-debug.js | 4 +- .../widget-position-constrain-min.js | 4 +- .../widget-position-constrain.js | 4 +- .../widget-position-coverage.js | 6 +- .../widget-position/widget-position-debug.js | 4 +- .../widget-position/widget-position-min.js | 4 +- .../build/widget-position/widget-position.js | 4 +- .../widget-skin/assets/widget-base-core.css | 26 + .../build/widget-skin/widget-skin-coverage.js | 6 +- .../build/widget-skin/widget-skin-debug.js | 4 +- .../build/widget-skin/widget-skin-min.js | 4 +- .../build/widget-skin/widget-skin.js | 4 +- .../assets/skins/night/widget-stack-skin.css | 2 +- .../assets/skins/night/widget-stack.css | 2 +- .../assets/skins/sam/widget-stack-skin.css | 2 +- .../assets/skins/sam/widget-stack.css | 2 +- .../widget-stack/assets/widget-stack-core.css | 2 +- .../widget-stack/widget-stack-coverage.js | 6 +- .../build/widget-stack/widget-stack-debug.js | 4 +- .../build/widget-stack/widget-stack-min.js | 4 +- .../build/widget-stack/widget-stack.js | 4 +- .../widget-stdmod/widget-stdmod-coverage.js | 6 +- .../widget-stdmod/widget-stdmod-debug.js | 4 +- .../build/widget-stdmod/widget-stdmod-min.js | 4 +- .../build/widget-stdmod/widget-stdmod.js | 4 +- .../assets/widget-base-core.css | 26 + .../widget-uievents-coverage.js | 6 +- .../widget-uievents/widget-uievents-debug.js | 4 +- .../widget-uievents/widget-uievents-min.js | 4 +- .../build/widget-uievents/widget-uievents.js | 4 +- .../build/yql-nodejs/yql-nodejs-coverage.js | 6 +- .../build/yql-nodejs/yql-nodejs-debug.js | 4 +- .../build/yql-nodejs/yql-nodejs-min.js | 4 +- .../build/yql-nodejs/yql-nodejs.js | 4 +- .../build/yql-winjs/yql-winjs-coverage.js | 6 +- .../build/yql-winjs/yql-winjs-debug.js | 4 +- .../build/yql-winjs/yql-winjs-min.js | 4 +- .../build/yql-winjs/yql-winjs.js | 4 +- .../build/yql/yql-coverage.js | 6 +- .../{3.7.3 => 3.8.0}/build/yql/yql-debug.js | 4 +- .../{3.7.3 => 3.8.0}/build/yql/yql-min.js | 4 +- lib/yuilib/{3.7.3 => 3.8.0}/build/yql/yql.js | 4 +- .../3.8.0/build/yui-base/yui-base-coverage.js | 4557 +++++++++ .../build/yui-base/yui-base-debug.js | 1574 +-- .../3.8.0/build/yui-base/yui-base-min.js | 7 + .../build/yui-base/yui-base.js | 1368 ++- .../3.8.0/build/yui-core/yui-core-coverage.js | 4557 +++++++++ .../build/yui-core/yui-core-debug.js | 1562 +-- .../3.8.0/build/yui-core/yui-core-min.js | 7 + .../build/yui-core/yui-core.js | 1356 ++- .../build/yui-later/yui-later-coverage.js | 6 +- .../build/yui-later/yui-later-debug.js | 4 +- .../build/yui-later/yui-later-min.js | 4 +- .../build/yui-later/yui-later.js | 4 +- .../yui-log-nodejs/yui-log-nodejs-coverage.js | 6 +- .../yui-log-nodejs/yui-log-nodejs-debug.js | 4 +- .../yui-log-nodejs/yui-log-nodejs-min.js | 4 +- .../build/yui-log-nodejs/yui-log-nodejs.js | 4 +- .../build/yui-log/yui-log-coverage.js | 6 +- .../build/yui-log/yui-log-debug.js | 4 +- .../build/yui-log/yui-log-min.js | 4 +- .../{3.7.3 => 3.8.0}/build/yui-log/yui-log.js | 4 +- .../build/yui-nodejs/yui-nodejs-coverage.js | 4570 +++++++++ .../build/yui-nodejs/yui-nodejs-debug.js | 1684 ++-- .../3.8.0/build/yui-nodejs/yui-nodejs-min.js | 7 + .../build/yui-nodejs/yui-nodejs.js | 1478 ++- .../yui-throttle/yui-throttle-coverage.js | 6 +- .../build/yui-throttle/yui-throttle-debug.js | 4 +- .../build/yui-throttle/yui-throttle-min.js | 4 +- .../build/yui-throttle/yui-throttle.js | 4 +- lib/yuilib/3.8.0/build/yui/yui-coverage.js | 4569 +++++++++ .../{3.7.3 => 3.8.0}/build/yui/yui-debug.js | 1681 ++-- lib/yuilib/3.8.0/build/yui/yui-min.js | 7 + lib/yuilib/{3.7.3 => 3.8.0}/build/yui/yui.js | 1475 ++- 1830 files changed, 81661 insertions(+), 75639 deletions(-) delete mode 100644 lib/yuilib/3.7.3/build/anim-base/anim-base-min.js delete mode 100644 lib/yuilib/3.7.3/build/anim-curve/anim-curve-min.js delete mode 100644 lib/yuilib/3.7.3/build/anim-shape/anim-shape-min.js delete mode 100644 lib/yuilib/3.7.3/build/assets/skins/sam/resize-base.css delete mode 100644 lib/yuilib/3.7.3/build/attribute-base/attribute-base-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/attribute-base/attribute-base-min.js delete mode 100644 lib/yuilib/3.7.3/build/attribute-complex/attribute-complex-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/attribute-complex/attribute-complex-debug.js delete mode 100644 lib/yuilib/3.7.3/build/attribute-complex/attribute-complex-min.js delete mode 100644 lib/yuilib/3.7.3/build/attribute-complex/attribute-complex.js delete mode 100644 lib/yuilib/3.7.3/build/attribute-core/attribute-core-min.js delete mode 100644 lib/yuilib/3.7.3/build/attribute-events/attribute-events-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/attribute-events/attribute-events-min.js delete mode 100644 lib/yuilib/3.7.3/build/base-base/base-base-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/base-base/base-base-debug.js delete mode 100644 lib/yuilib/3.7.3/build/base-base/base-base-min.js delete mode 100644 lib/yuilib/3.7.3/build/base-base/base-base.js delete mode 100644 lib/yuilib/3.7.3/build/base-build/base-build-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/base-build/base-build-min.js delete mode 100644 lib/yuilib/3.7.3/build/base-core/base-core-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/base-core/base-core-min.js delete mode 100644 lib/yuilib/3.7.3/build/calendar-base/calendar-base-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/calendar-base/calendar-base-debug.js delete mode 100644 lib/yuilib/3.7.3/build/calendar-base/calendar-base-min.js delete mode 100644 lib/yuilib/3.7.3/build/calendar-base/calendar-base.js delete mode 100644 lib/yuilib/3.7.3/build/calendar/calendar-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/calendar/calendar-debug.js delete mode 100644 lib/yuilib/3.7.3/build/calendar/calendar-min.js delete mode 100644 lib/yuilib/3.7.3/build/calendar/calendar.js delete mode 100644 lib/yuilib/3.7.3/build/calendarnavigator/calendarnavigator-min.js delete mode 100644 lib/yuilib/3.7.3/build/cookie/cookie-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/cookie/cookie-min.js delete mode 100644 lib/yuilib/3.7.3/build/datatable-head/datatable-head-min.js delete mode 100644 lib/yuilib/3.7.3/build/datatype-date-parse/datatype-date-parse-debug.js delete mode 100644 lib/yuilib/3.7.3/build/datatype-date-parse/datatype-date-parse-min.js delete mode 100644 lib/yuilib/3.7.3/build/dd-constrain/dd-constrain-min.js delete mode 100644 lib/yuilib/3.7.3/build/dd-ddm-base/dd-ddm-base-min.js delete mode 100644 lib/yuilib/3.7.3/build/dd-ddm-drop/dd-ddm-drop-min.js delete mode 100644 lib/yuilib/3.7.3/build/dd-drag/dd-drag-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/dd-drag/dd-drag-min.js delete mode 100644 lib/yuilib/3.7.3/build/dd-drop/dd-drop-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/dd-drop/dd-drop-min.js delete mode 100644 lib/yuilib/3.7.3/build/dd-proxy/dd-proxy-min.js delete mode 100644 lib/yuilib/3.7.3/build/event-simulate/event-simulate-min.js delete mode 100644 lib/yuilib/3.7.3/build/event-tap/event-tap-min.js delete mode 100644 lib/yuilib/3.7.3/build/get-nodejs/get-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/get-nodejs/get-debug.js delete mode 100644 lib/yuilib/3.7.3/build/get-nodejs/get-min.js delete mode 100644 lib/yuilib/3.7.3/build/get-nodejs/get.js delete mode 100644 lib/yuilib/3.7.3/build/graphics/graphics-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/loader-yui3/loader-yui3-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/loader-yui3/loader-yui3-min.js delete mode 100644 lib/yuilib/3.7.3/build/loader/loader-min.js delete mode 100644 lib/yuilib/3.7.3/build/pjax-content/pjax-content-min.js delete mode 100644 lib/yuilib/3.7.3/build/resize-base/assets/skins/night/resize-base.css delete mode 100644 lib/yuilib/3.7.3/build/resize-base/assets/skins/sam/resize-base.css delete mode 100644 lib/yuilib/3.7.3/build/resize-plugin/assets/skins/night/resize-base-skin.css delete mode 100644 lib/yuilib/3.7.3/build/resize-plugin/assets/skins/sam/resize-base-skin.css delete mode 100644 lib/yuilib/3.7.3/build/resize-proxy/assets/skins/night/resize-base-skin.css delete mode 100644 lib/yuilib/3.7.3/build/resize-proxy/assets/skins/sam/resize-base-skin.css delete mode 100644 lib/yuilib/3.7.3/build/router/router-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/router/router-min.js delete mode 100644 lib/yuilib/3.7.3/build/scrollview-paginator/scrollview-paginator-min.js delete mode 100644 lib/yuilib/3.7.3/build/scrollview-scrollbars/scrollview-scrollbars-min.js delete mode 100644 lib/yuilib/3.7.3/build/simpleyui/simpleyui-min.js delete mode 100644 lib/yuilib/3.7.3/build/uploader-flash/uploader-flash-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/uploader-flash/uploader-flash-debug.js delete mode 100644 lib/yuilib/3.7.3/build/uploader-flash/uploader-flash-min.js delete mode 100644 lib/yuilib/3.7.3/build/uploader-flash/uploader-flash.js delete mode 100644 lib/yuilib/3.7.3/build/uploader-html5/uploader-html5-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/uploader-html5/uploader-html5-debug.js delete mode 100644 lib/yuilib/3.7.3/build/uploader-html5/uploader-html5-min.js delete mode 100644 lib/yuilib/3.7.3/build/uploader-html5/uploader-html5.js delete mode 100644 lib/yuilib/3.7.3/build/uploader-queue/uploader-queue-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/uploader-queue/uploader-queue-debug.js delete mode 100644 lib/yuilib/3.7.3/build/uploader-queue/uploader-queue-min.js delete mode 100644 lib/yuilib/3.7.3/build/uploader-queue/uploader-queue.js delete mode 100644 lib/yuilib/3.7.3/build/uploader/uploader-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/uploader/uploader-debug.js delete mode 100644 lib/yuilib/3.7.3/build/uploader/uploader.js delete mode 100644 lib/yuilib/3.7.3/build/widget-skin/assets/widget-base-core.css delete mode 100644 lib/yuilib/3.7.3/build/widget-uievents/assets/widget-base-core.css delete mode 100644 lib/yuilib/3.7.3/build/yui-base/yui-base-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/yui-base/yui-base-min.js delete mode 100644 lib/yuilib/3.7.3/build/yui-core/yui-core-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/yui-core/yui-core-min.js delete mode 100644 lib/yuilib/3.7.3/build/yui-nodejs/yui-nodejs-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/yui-nodejs/yui-nodejs-min.js delete mode 100644 lib/yuilib/3.7.3/build/yui/yui-coverage.js delete mode 100644 lib/yuilib/3.7.3/build/yui/yui-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/align-plugin/align-plugin-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/align-plugin/align-plugin-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/align-plugin/align-plugin-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/align-plugin/align-plugin.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-base/anim-base-coverage.js (60%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-base/anim-base-debug.js (93%) create mode 100644 lib/yuilib/3.8.0/build/anim-base/anim-base-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-base/anim-base.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-color/anim-color-coverage.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-color/anim-color-debug.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-color/anim-color-min.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-color/anim-color.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-curve/anim-curve-coverage.js (59%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-curve/anim-curve-debug.js (79%) create mode 100644 lib/yuilib/3.8.0/build/anim-curve/anim-curve-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-curve/anim-curve.js (79%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-easing/anim-easing-coverage.js (50%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-easing/anim-easing-debug.js (87%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-easing/anim-easing-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-easing/anim-easing.js (87%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-node-plugin/anim-node-plugin-coverage.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-node-plugin/anim-node-plugin-debug.js (87%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-node-plugin/anim-node-plugin-min.js (79%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-node-plugin/anim-node-plugin.js (87%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-scroll/anim-scroll-coverage.js (82%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-scroll/anim-scroll-debug.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-scroll/anim-scroll-min.js (87%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-scroll/anim-scroll.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-shape-transform/anim-shape-transform-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-shape/anim-shape-coverage.js (55%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-shape/anim-shape-debug.js (89%) create mode 100644 lib/yuilib/3.8.0/build/anim-shape/anim-shape-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-shape/anim-shape.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-xy/anim-xy-coverage.js (77%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-xy/anim-xy-debug.js (88%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-xy/anim-xy-min.js (78%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/anim-xy/anim-xy.js (88%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/app-base/app-base-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/app-base/app-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/app-base/app-base-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/app-base/app-base.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/app-content/app-content-coverage.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/app-content/app-content-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/app-content/app-content-min.js (85%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/app-content/app-content.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/app-transitions-css/app-transitions-css-min.css (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/app-transitions-css/app-transitions-css.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/app-transitions-native/app-transitions-native-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/app-transitions-native/app-transitions-native-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/app-transitions-native/app-transitions-native-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/app-transitions-native/app-transitions-native.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/app-transitions/app-transitions-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/app-transitions/app-transitions-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/app-transitions/app-transitions-min.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/app-transitions/app-transitions.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/array-extras/array-extras-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/array-extras/array-extras-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/array-extras/array-extras-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/array-extras/array-extras.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/array-invoke/array-invoke-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/array-invoke/array-invoke-debug.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/array-invoke/array-invoke-min.js (81%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/array-invoke/array-invoke.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/arraylist-add/arraylist-add-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/arraylist-add/arraylist-add-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/arraylist-add/arraylist-add-min.js (84%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/arraylist-add/arraylist-add.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/arraylist-filter/arraylist-filter-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/arraylist-filter/arraylist-filter-debug.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/arraylist-filter/arraylist-filter-min.js (80%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/arraylist-filter/arraylist-filter.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/arraylist/arraylist-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/arraylist/arraylist-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/arraylist/arraylist-min.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/arraylist/arraylist.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/arraysort/arraysort-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/arraysort/arraysort-debug.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/arraysort/arraysort-min.js (78%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/arraysort/arraysort.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/arrows.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/autocomplete-list.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/bg.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/calendar-base.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/calendar.css (97%) rename lib/yuilib/{3.7.3/build/calendarnavigator => 3.8.0/build}/assets/skins/sam/calendarnavigator.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/console-filters.css (97%) rename lib/yuilib/{3.7.3/build/console => 3.8.0/build}/assets/skins/sam/console.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/datatable-base-deprecated.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/datatable-base.css (98%) rename lib/yuilib/{3.7.3/build/datatable-message => 3.8.0/build}/assets/skins/sam/datatable-message.css (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/datatable-scroll.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/datatable-sort.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/dial.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/dt-arrow-dn.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/dt-arrow-up.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/horizontal-menu-submenu-indicator.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/horizontal-menu-submenu-toggle.png (100%) rename lib/yuilib/{3.7.3/build/node-flick => 3.8.0/build}/assets/skins/sam/node-flick.css (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/node-menunav.css (99%) rename lib/yuilib/{3.7.3/build/overlay => 3.8.0/build}/assets/skins/sam/overlay.css (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/panel.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/rail-x-lines.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/rail-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/rail-y-lines.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/rail-y.png (100%) create mode 100644 lib/yuilib/3.8.0/build/assets/skins/sam/resize-base.css rename lib/yuilib/{3.7.3/build/scrollview-base => 3.8.0/build}/assets/skins/sam/scrollview-base.css (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/scrollview-list.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/scrollview-scrollbars.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/skin.css (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/slider-base.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/sort-arrow-sprite-ie.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/sort-arrow-sprite.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/sprite.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/sprite_icons.gif (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/sprite_icons.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/tabview.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/test-console.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/thumb-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/thumb-y.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/vertical-menu-submenu-indicator.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/warn_error.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/widget-base.css (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/widget-buttons.css (96%) rename lib/yuilib/{3.7.3/build/widget-modality => 3.8.0/build}/assets/skins/sam/widget-modality.css (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/assets/skins/sam/widget-stack.css (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/async-queue/async-queue-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/async-queue/async-queue-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/async-queue/async-queue-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/async-queue/async-queue.js (99%) create mode 100644 lib/yuilib/3.8.0/build/attribute-base/attribute-base-coverage.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/attribute-base/attribute-base-debug.js (78%) create mode 100644 lib/yuilib/3.8.0/build/attribute-base/attribute-base-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/attribute-base/attribute-base.js (78%) create mode 100644 lib/yuilib/3.8.0/build/attribute-complex/attribute-complex-coverage.js create mode 100644 lib/yuilib/3.8.0/build/attribute-complex/attribute-complex-debug.js create mode 100644 lib/yuilib/3.8.0/build/attribute-complex/attribute-complex-min.js create mode 100644 lib/yuilib/3.8.0/build/attribute-complex/attribute-complex.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/attribute-core/attribute-core-coverage.js (51%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/attribute-core/attribute-core-debug.js (86%) create mode 100644 lib/yuilib/3.8.0/build/attribute-core/attribute-core-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/attribute-core/attribute-core.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/attribute-extras/attribute-extras-coverage.js (55%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/attribute-extras/attribute-extras-debug.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/attribute-extras/attribute-extras-min.js (87%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/attribute-extras/attribute-extras.js (95%) create mode 100644 lib/yuilib/3.8.0/build/attribute-observable/attribute-observable-coverage.js rename lib/yuilib/{3.7.3/build/attribute-events/attribute-events-debug.js => 3.8.0/build/attribute-observable/attribute-observable-debug.js} (82%) create mode 100644 lib/yuilib/3.8.0/build/attribute-observable/attribute-observable-min.js rename lib/yuilib/{3.7.3/build/attribute-events/attribute-events.js => 3.8.0/build/attribute-observable/attribute-observable.js} (81%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-base/autocomplete-base-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-base/autocomplete-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-base/autocomplete-base-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-base/autocomplete-base.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-filters-accentfold/autocomplete-filters-accentfold-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-filters-accentfold/autocomplete-filters-accentfold-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-filters-accentfold/autocomplete-filters-accentfold-min.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-filters-accentfold/autocomplete-filters-accentfold.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-filters/autocomplete-filters-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-filters/autocomplete-filters-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-filters/autocomplete-filters-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-filters/autocomplete-filters.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-highlighters-accentfold/autocomplete-highlighters-accentfold-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-highlighters-accentfold/autocomplete-highlighters-accentfold-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-highlighters-accentfold/autocomplete-highlighters-accentfold-min.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-highlighters-accentfold/autocomplete-highlighters-accentfold.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-highlighters/autocomplete-highlighters-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-highlighters/autocomplete-highlighters-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-highlighters/autocomplete-highlighters-min.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-highlighters/autocomplete-highlighters.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-list-keys/autocomplete-list-keys-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-list-keys/autocomplete-list-keys-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-list-keys/autocomplete-list-keys-min.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-list-keys/autocomplete-list-keys.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-list/assets/autocomplete-list-core.css (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-list/assets/skins/night/autocomplete-list-skin.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-list/assets/skins/night/autocomplete-list.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-list/assets/skins/sam/autocomplete-list-skin.css (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-list/assets/skins/sam/autocomplete-list.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-list/autocomplete-list-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-list/autocomplete-list-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-list/autocomplete-list-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-list/autocomplete-list.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-list/lang/autocomplete-list.js (84%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-list/lang/autocomplete-list_en.js (88%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-plugin/autocomplete-plugin-coverage.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-plugin/autocomplete-plugin-debug.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-plugin/autocomplete-plugin-min.js (84%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-plugin/autocomplete-plugin.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-sources/autocomplete-sources-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-sources/autocomplete-sources-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-sources/autocomplete-sources-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/autocomplete-sources/autocomplete-sources.js (99%) create mode 100644 lib/yuilib/3.8.0/build/base-base/base-base-coverage.js create mode 100644 lib/yuilib/3.8.0/build/base-base/base-base-debug.js create mode 100644 lib/yuilib/3.8.0/build/base-base/base-base-min.js create mode 100644 lib/yuilib/3.8.0/build/base-base/base-base.js create mode 100644 lib/yuilib/3.8.0/build/base-build/base-build-coverage.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/base-build/base-build-debug.js (82%) create mode 100644 lib/yuilib/3.8.0/build/base-build/base-build-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/base-build/base-build.js (82%) create mode 100644 lib/yuilib/3.8.0/build/base-core/base-core-coverage.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/base-core/base-core-debug.js (88%) create mode 100644 lib/yuilib/3.8.0/build/base-core/base-core-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/base-core/base-core.js (88%) create mode 100644 lib/yuilib/3.8.0/build/base-observable/base-observable-coverage.js create mode 100644 lib/yuilib/3.8.0/build/base-observable/base-observable-debug.js create mode 100644 lib/yuilib/3.8.0/build/base-observable/base-observable-min.js create mode 100644 lib/yuilib/3.8.0/build/base-observable/base-observable.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/base-pluginhost/base-pluginhost-coverage.js (70%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/base-pluginhost/base-pluginhost-debug.js (83%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/base-pluginhost/base-pluginhost-min.js (58%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/base-pluginhost/base-pluginhost.js (83%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/button-core/button-core-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/button-core/button-core-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/button-core/button-core-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/button-core/button-core.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/button-group/button-group-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/button-group/button-group-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/button-group/button-group-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/button-group/button-group.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/button-plugin/button-plugin-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/button-plugin/button-plugin-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/button-plugin/button-plugin-min.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/button-plugin/button-plugin.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/button/button-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/button/button-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/button/button-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/button/button.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cache-base/cache-base-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cache-base/cache-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cache-base/cache-base-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cache-base/cache-base.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cache-offline/cache-offline-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cache-offline/cache-offline-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cache-offline/cache-offline-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cache-offline/cache-offline.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cache-plugin/cache-plugin-coverage.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cache-plugin/cache-plugin-debug.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cache-plugin/cache-plugin-min.js (79%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cache-plugin/cache-plugin.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar-base/assets/calendar-base-core.css (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar-base/assets/skins/night/calendar-base-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar-base/assets/skins/night/calendar-base.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar-base/assets/skins/sam/calendar-base-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar-base/assets/skins/sam/calendar-base.css (98%) create mode 100644 lib/yuilib/3.8.0/build/calendar-base/calendar-base-coverage.js create mode 100644 lib/yuilib/3.8.0/build/calendar-base/calendar-base-debug.js create mode 100644 lib/yuilib/3.8.0/build/calendar-base/calendar-base-min.js create mode 100644 lib/yuilib/3.8.0/build/calendar-base/calendar-base.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar-base/lang/calendar-base.js (82%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar-base/lang/calendar-base_de.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar-base/lang/calendar-base_en.js (81%) create mode 100644 lib/yuilib/3.8.0/build/calendar-base/lang/calendar-base_es-AR.js create mode 100644 lib/yuilib/3.8.0/build/calendar-base/lang/calendar-base_es.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar-base/lang/calendar-base_fr.js (82%) create mode 100644 lib/yuilib/3.8.0/build/calendar-base/lang/calendar-base_it.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar-base/lang/calendar-base_ja.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar-base/lang/calendar-base_nb-NO.js (88%) create mode 100644 lib/yuilib/3.8.0/build/calendar-base/lang/calendar-base_nl.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar-base/lang/calendar-base_pt-BR.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar-base/lang/calendar-base_ru.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar-base/lang/calendar-base_zh-HANT-TW.js (88%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar/assets/calendar-core.css (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar/assets/skins/night/calendar-skin.css (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar/assets/skins/night/calendar.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar/assets/skins/sam/calendar-skin.css (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar/assets/skins/sam/calendar.css (97%) create mode 100644 lib/yuilib/3.8.0/build/calendar/calendar-coverage.js create mode 100644 lib/yuilib/3.8.0/build/calendar/calendar-debug.js create mode 100644 lib/yuilib/3.8.0/build/calendar/calendar-min.js create mode 100644 lib/yuilib/3.8.0/build/calendar/calendar.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar/lang/calendar.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar/lang/calendar_de.js (78%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar/lang/calendar_en.js (89%) create mode 100644 lib/yuilib/3.8.0/build/calendar/lang/calendar_es-AR.js create mode 100644 lib/yuilib/3.8.0/build/calendar/lang/calendar_es.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar/lang/calendar_fr.js (84%) create mode 100644 lib/yuilib/3.8.0/build/calendar/lang/calendar_it.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar/lang/calendar_ja.js (85%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar/lang/calendar_nb-NO.js (90%) create mode 100644 lib/yuilib/3.8.0/build/calendar/lang/calendar_nl.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar/lang/calendar_pt-BR.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar/lang/calendar_ru.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendar/lang/calendar_zh-HANT-TW.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendarnavigator/assets/calendarnavigator-core.css (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendarnavigator/assets/skins/night/calendarnavigator-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendarnavigator/assets/skins/night/calendarnavigator.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendarnavigator/assets/skins/sam/calendarnavigator-skin.css (99%) rename lib/yuilib/{3.7.3/build => 3.8.0/build/calendarnavigator}/assets/skins/sam/calendarnavigator.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendarnavigator/calendarnavigator-coverage.js (52%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendarnavigator/calendarnavigator-debug.js (79%) create mode 100644 lib/yuilib/3.8.0/build/calendarnavigator/calendarnavigator-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/calendarnavigator/calendarnavigator.js (79%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/charts-base/charts-base-coverage.js (56%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/charts-base/charts-base-debug.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/charts-base/charts-base-min.js (76%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/charts-base/charts-base.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/charts-legend/charts-legend-coverage.js (60%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/charts-legend/charts-legend-debug.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/charts-legend/charts-legend-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/charts-legend/charts-legend.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/charts/charts-coverage.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/charts/charts-debug.js (87%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/charts/charts-min.js (70%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/charts/charts.js (87%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/classnamemanager/classnamemanager-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/classnamemanager/classnamemanager-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/classnamemanager/classnamemanager-min.js (81%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/classnamemanager/classnamemanager.js (97%) rename lib/yuilib/{3.7.3/build/range-slider => 3.8.0/build/clickable-rail}/assets/slider-base-core.css (96%) rename lib/yuilib/{3.7.3/build/slider-base => 3.8.0/build/clickable-rail}/assets/slider-core.css (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/clickable-rail/assets/thumb-x-oblong-dark.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/clickable-rail/assets/thumb-x-oblong.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/clickable-rail/assets/thumb-x-oblong2-dark.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/clickable-rail/assets/thumb-x-oblong2.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/clickable-rail/assets/thumb-y-oblong-dark.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/clickable-rail/assets/thumb-y-oblong.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/clickable-rail/assets/thumb-y-oblong2-dark.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/clickable-rail/assets/thumb-y-oblong2.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/clickable-rail/clickable-rail-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/clickable-rail/clickable-rail-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/clickable-rail/clickable-rail-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/clickable-rail/clickable-rail.js (99%) create mode 100644 lib/yuilib/3.8.0/build/color-base/color-base-coverage.js create mode 100644 lib/yuilib/3.8.0/build/color-base/color-base-debug.js create mode 100644 lib/yuilib/3.8.0/build/color-base/color-base-min.js create mode 100644 lib/yuilib/3.8.0/build/color-base/color-base.js create mode 100644 lib/yuilib/3.8.0/build/color-harmony/color-harmony-coverage.js create mode 100644 lib/yuilib/3.8.0/build/color-harmony/color-harmony-debug.js create mode 100644 lib/yuilib/3.8.0/build/color-harmony/color-harmony-min.js create mode 100644 lib/yuilib/3.8.0/build/color-harmony/color-harmony.js create mode 100644 lib/yuilib/3.8.0/build/color-hsl/color-hsl-coverage.js create mode 100644 lib/yuilib/3.8.0/build/color-hsl/color-hsl-debug.js create mode 100644 lib/yuilib/3.8.0/build/color-hsl/color-hsl-min.js create mode 100644 lib/yuilib/3.8.0/build/color-hsl/color-hsl.js create mode 100644 lib/yuilib/3.8.0/build/color-hsv/color-hsv-coverage.js create mode 100644 lib/yuilib/3.8.0/build/color-hsv/color-hsv-debug.js create mode 100644 lib/yuilib/3.8.0/build/color-hsv/color-hsv-min.js create mode 100644 lib/yuilib/3.8.0/build/color-hsv/color-hsv.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/console-filters/assets/console-filters-core.css (83%) rename lib/yuilib/{3.7.3/build/console => 3.8.0/build/console-filters}/assets/skins/sam/console-filters-skin.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console-filters/assets/skins/sam/console-filters.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console-filters/console-filters-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console-filters/console-filters-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console-filters/console-filters-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console-filters/console-filters.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console/assets/console-core.css (83%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console/assets/console-filters-core.css (83%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console/assets/skins/sam/bg.png (100%) rename lib/yuilib/{3.7.3/build/console-filters => 3.8.0/build/console}/assets/skins/sam/console-filters-skin.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console/assets/skins/sam/console-filters.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console/assets/skins/sam/console-skin.css (99%) rename lib/yuilib/{3.7.3/build => 3.8.0/build/console}/assets/skins/sam/console.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console/assets/skins/sam/warn_error.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console/assets/warn_error.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console/console-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console/console-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console/console-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console/console.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console/lang/console.js (82%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console/lang/console_en.js (81%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console/lang/console_es.js (77%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/console/lang/console_ja.js (81%) create mode 100644 lib/yuilib/3.8.0/build/cookie/cookie-coverage.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/cookie/cookie-debug.js (90%) create mode 100644 lib/yuilib/3.8.0/build/cookie/cookie-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/cookie/cookie.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/createlink-base/createlink-base-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/createlink-base/createlink-base-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/createlink-base/createlink-base-min.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/createlink-base/createlink-base.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssbase-context/base-context-min.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssbase-context/base-context.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssbase-context/cssbase-context-min.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssbase-context/cssbase-context.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssbase/base-min.css (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssbase/base.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssbase/cssbase-min.css (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssbase/cssbase.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssbutton/cssbutton-min.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssbutton/cssbutton.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssfonts-context/cssfonts-context-min.css (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssfonts-context/cssfonts-context.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssfonts-context/fonts-context-min.css (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssfonts-context/fonts-context.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssfonts/cssfonts-min.css (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssfonts/cssfonts.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssfonts/fonts-min.css (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssfonts/fonts.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssgrids-base/cssgrids-base-min.css (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssgrids-base/cssgrids-base.css (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssgrids-context-deprecated/grids-context-min.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssgrids-context-deprecated/grids-context.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssgrids-units/cssgrids-units-min.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssgrids-units/cssgrids-units.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssgrids/cssgrids-min.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssgrids/cssgrids.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssgrids/grids-min.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssgrids/grids.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssreset-context/cssreset-context-min.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssreset-context/cssreset-context.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssreset-context/reset-context-min.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssreset-context/reset-context.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssreset/cssreset-min.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssreset/cssreset.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssreset/reset-min.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/cssreset/reset.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-array/dataschema-array-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-array/dataschema-array-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-array/dataschema-array-min.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-array/dataschema-array.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-base/dataschema-base-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-base/dataschema-base-debug.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-base/dataschema-base-min.js (84%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-base/dataschema-base.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-json/dataschema-json-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-json/dataschema-json-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-json/dataschema-json-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-json/dataschema-json.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-text/dataschema-text-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-text/dataschema-text-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-text/dataschema-text-min.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-text/dataschema-text.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-xml/dataschema-xml-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-xml/dataschema-xml-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-xml/dataschema-xml-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dataschema-xml/dataschema-xml.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-arrayschema/datasource-arrayschema-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-arrayschema/datasource-arrayschema-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-arrayschema/datasource-arrayschema-min.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-arrayschema/datasource-arrayschema.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-cache/datasource-cache-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-cache/datasource-cache-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-cache/datasource-cache-min.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-cache/datasource-cache.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-function/datasource-function-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-function/datasource-function-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-function/datasource-function-min.js (88%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-function/datasource-function.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-get/datasource-get-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-get/datasource-get-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-get/datasource-get-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-get/datasource-get.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-io/datasource-io-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-io/datasource-io-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-io/datasource-io-min.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-io/datasource-io.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-jsonschema/datasource-jsonschema-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-jsonschema/datasource-jsonschema-debug.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-jsonschema/datasource-jsonschema-min.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-jsonschema/datasource-jsonschema.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-local/datasource-local-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-local/datasource-local-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-local/datasource-local-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-local/datasource-local.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-polling/datasource-polling-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-polling/datasource-polling-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-polling/datasource-polling-min.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-polling/datasource-polling.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-textschema/datasource-textschema-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-textschema/datasource-textschema-debug.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-textschema/datasource-textschema-min.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-textschema/datasource-textschema.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-xmlschema/datasource-xmlschema-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-xmlschema/datasource-xmlschema-debug.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-xmlschema/datasource-xmlschema-min.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datasource-xmlschema/datasource-xmlschema.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base-deprecated/assets/datatable-base-deprecated-core.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base-deprecated/assets/skins/night/datatable-base-deprecated-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base-deprecated/assets/skins/night/datatable-base-deprecated.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base-deprecated/assets/skins/sam/datatable-base-deprecated-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base-deprecated/assets/skins/sam/datatable-base-deprecated.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base-deprecated/assets/skins/sam/dt-arrow-dn.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base-deprecated/assets/skins/sam/dt-arrow-up.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base-deprecated/datatable-base-deprecated-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base-deprecated/datatable-base-deprecated-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base-deprecated/datatable-base-deprecated-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base-deprecated/datatable-base-deprecated.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base/assets/datatable-base-core.css (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base/assets/skins/night/datatable-base-skin.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base/assets/skins/night/datatable-base.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base/assets/skins/sam/datatable-base-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base/assets/skins/sam/datatable-base.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base/datatable-base-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base/datatable-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base/datatable-base-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-base/datatable-base.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-body/datatable-body-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-body/datatable-body-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-body/datatable-body-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-body/datatable-body.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-column-widths/datatable-column-widths-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-column-widths/datatable-column-widths-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-column-widths/datatable-column-widths-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-column-widths/datatable-column-widths.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-core/datatable-core-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-core/datatable-core-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-core/datatable-core-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-core/datatable-core.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-datasource-deprecated/datatable-datasource-deprecated-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-datasource-deprecated/datatable-datasource-deprecated-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-datasource-deprecated/datatable-datasource-deprecated-min.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-datasource-deprecated/datatable-datasource-deprecated.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-datasource/datatable-datasource-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-datasource/datatable-datasource-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-datasource/datatable-datasource-min.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-datasource/datatable-datasource.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-head/datatable-head-coverage.js (54%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-head/datatable-head-debug.js (96%) create mode 100644 lib/yuilib/3.8.0/build/datatable-head/datatable-head-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-head/datatable-head.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-message/assets/datatable-message-core.css (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-message/assets/skins/night/datatable-message-skin.css (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-message/assets/skins/night/datatable-message.css (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-message/assets/skins/sam/datatable-message-skin.css (91%) rename lib/yuilib/{3.7.3/build => 3.8.0/build/datatable-message}/assets/skins/sam/datatable-message.css (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-message/datatable-message-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-message/datatable-message-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-message/datatable-message-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-message/datatable-message.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-message/lang/datatable-message.js (83%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-message/lang/datatable-message_en.js (81%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-mutable/datatable-mutable-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-mutable/datatable-mutable-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-mutable/datatable-mutable-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-mutable/datatable-mutable.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-scroll-deprecated/datatable-scroll-deprecated-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-scroll-deprecated/datatable-scroll-deprecated-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-scroll-deprecated/datatable-scroll-deprecated-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-scroll-deprecated/datatable-scroll-deprecated.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-scroll/assets/datatable-scroll-core.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-scroll/assets/skins/night/datatable-scroll-skin.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-scroll/assets/skins/night/datatable-scroll.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-scroll/assets/skins/sam/datatable-scroll-skin.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-scroll/assets/skins/sam/datatable-scroll.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-scroll/datatable-scroll-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-scroll/datatable-scroll-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-scroll/datatable-scroll-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-scroll/datatable-scroll.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort-deprecated/datatable-sort-deprecated-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort-deprecated/datatable-sort-deprecated-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort-deprecated/datatable-sort-deprecated-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort-deprecated/datatable-sort-deprecated.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort-deprecated/lang/datatable-sort-deprecated.js (88%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort-deprecated/lang/datatable-sort-deprecated_en.js (87%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort/assets/datatable-sort-core.css (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort/assets/skins/night/datatable-sort-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort/assets/skins/night/datatable-sort.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort/assets/skins/night/sort-arrow-sprite-ie.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort/assets/skins/night/sort-arrow-sprite.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort/assets/skins/sam/datatable-sort-skin.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort/assets/skins/sam/datatable-sort.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort/assets/skins/sam/sort-arrow-sprite-ie.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort/datatable-sort-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort/datatable-sort-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort/datatable-sort-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort/datatable-sort.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort/lang/datatable-sort.js (74%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-sort/lang/datatable-sort_en.js (73%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-table/datatable-table-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-table/datatable-table-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-table/datatable-table-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatable-table/datatable-table.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/datatype-date-format-coverage.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/datatype-date-format-debug.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/datatype-date-format-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/datatype-date-format.js (88%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_ar-JO.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_ar.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_ca-ES.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_ca.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_da-DK.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_da.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_de-AT.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_de-DE.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_de.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_el-GR.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_el.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_en-AU.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_en-CA.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_en-GB.js (87%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_en-IE.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_en-IN.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_en-JO.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_en-MY.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_en-NZ.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_en-PH.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_en-SG.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_en-US.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_en.js (87%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_es-AR.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_es-BO.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_es-CL.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_es-CO.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_es-EC.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_es-ES.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_es-MX.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_es-PE.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_es-PY.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_es-US.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_es-UY.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_es-VE.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_es.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_fi-FI.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_fi.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_fr-BE.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_fr-CA.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_fr-FR.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_fr.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_hi-IN.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_hi.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_id-ID.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_id.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_it-IT.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_it.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_ja-JP.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_ja.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_ko-KR.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_ko.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_ms-MY.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_ms.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_nb-NO.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_nb.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_nl-BE.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_nl-NL.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_nl.js (87%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_pl-PL.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_pl.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_pt-BR.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_pt.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_ro-RO.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_ro.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_ru-RU.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_ru.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_sv-SE.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_sv.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_th-TH.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_th.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_tr-TR.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_tr.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_vi-VN.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_vi.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_zh-Hans-CN.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_zh-Hans.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_zh-Hant-HK.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_zh-Hant-TW.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-format/lang/datatype-date-format_zh-Hant.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-math/datatype-date-math-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-math/datatype-date-math-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-math/datatype-date-math-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-math/datatype-date-math.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-parse/datatype-date-parse-coverage.js (56%) create mode 100644 lib/yuilib/3.8.0/build/datatype-date-parse/datatype-date-parse-debug.js create mode 100644 lib/yuilib/3.8.0/build/datatype-date-parse/datatype-date-parse-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-date-parse/datatype-date-parse.js (50%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-number-format/datatype-number-format-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-number-format/datatype-number-format-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-number-format/datatype-number-format-min.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-number-format/datatype-number-format.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-number-parse/datatype-number-parse-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-number-parse/datatype-number-parse-debug.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-number-parse/datatype-number-parse-min.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-number-parse/datatype-number-parse.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-xml-format/datatype-xml-format-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-xml-format/datatype-xml-format-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-xml-format/datatype-xml-format-min.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-xml-format/datatype-xml-format.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-xml-parse/datatype-xml-parse-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-xml-parse/datatype-xml-parse-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-xml-parse/datatype-xml-parse-min.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/datatype-xml-parse/datatype-xml-parse.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-constrain/dd-constrain-coverage.js (59%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-constrain/dd-constrain-debug.js (84%) create mode 100644 lib/yuilib/3.8.0/build/dd-constrain/dd-constrain-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-constrain/dd-constrain.js (84%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-ddm-base/dd-ddm-base-coverage.js (56%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-ddm-base/dd-ddm-base-debug.js (78%) create mode 100644 lib/yuilib/3.8.0/build/dd-ddm-base/dd-ddm-base-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-ddm-base/dd-ddm-base.js (78%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-ddm-drop/dd-ddm-drop-coverage.js (57%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-ddm-drop/dd-ddm-drop-debug.js (72%) create mode 100644 lib/yuilib/3.8.0/build/dd-ddm-drop/dd-ddm-drop-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-ddm-drop/dd-ddm-drop.js (72%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-ddm/dd-ddm-coverage.js (63%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-ddm/dd-ddm-debug.js (87%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-ddm/dd-ddm-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-ddm/dd-ddm.js (87%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-delegate/dd-delegate-coverage.js (58%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-delegate/dd-delegate-debug.js (80%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-delegate/dd-delegate-min.js (76%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-delegate/dd-delegate.js (80%) create mode 100644 lib/yuilib/3.8.0/build/dd-drag/dd-drag-coverage.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-drag/dd-drag-debug.js (82%) create mode 100644 lib/yuilib/3.8.0/build/dd-drag/dd-drag-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-drag/dd-drag.js (82%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-drop-plugin/dd-drop-plugin-coverage.js (80%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-drop-plugin/dd-drop-plugin-debug.js (80%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-drop-plugin/dd-drop-plugin-min.js (79%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-drop-plugin/dd-drop-plugin.js (80%) create mode 100644 lib/yuilib/3.8.0/build/dd-drop/dd-drop-coverage.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-drop/dd-drop-debug.js (85%) create mode 100644 lib/yuilib/3.8.0/build/dd-drop/dd-drop-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-drop/dd-drop.js (85%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-gestures/dd-gestures-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-gestures/dd-gestures-debug.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-gestures/dd-gestures-min.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-gestures/dd-gestures.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-plugin/dd-plugin-coverage.js (65%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-plugin/dd-plugin-debug.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-plugin/dd-plugin-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-plugin/dd-plugin.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-proxy/dd-proxy-coverage.js (62%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-proxy/dd-proxy-debug.js (84%) create mode 100644 lib/yuilib/3.8.0/build/dd-proxy/dd-proxy-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-proxy/dd-proxy.js (84%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-scroll/dd-scroll-coverage.js (53%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-scroll/dd-scroll-debug.js (83%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-scroll/dd-scroll-min.js (52%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dd-scroll/dd-scroll.js (83%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dial/assets/dial-core.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dial/assets/skins/night/dial-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dial/assets/skins/night/dial.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dial/assets/skins/sam/dial-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dial/assets/skins/sam/dial.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dial/dial-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dial/dial-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dial/dial-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dial/dial.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dial/lang/dial.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dial/lang/dial_en.js (87%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dial/lang/dial_es.js (81%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-attrs/dom-attrs-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-attrs/dom-attrs-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-attrs/dom-attrs.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-base/dom-base-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-base/dom-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-base/dom-base-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-base/dom-base.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-class/dom-class-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-class/dom-class-min.js (88%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-class/dom-class.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-core/dom-core-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-core/dom-core-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-core/dom-core-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-core/dom-core.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-create/dom-create-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-create/dom-create-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-create/dom-create.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-deprecated/dom-deprecated-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-deprecated/dom-deprecated-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-deprecated/dom-deprecated-min.js (85%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-deprecated/dom-deprecated.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-screen/dom-screen-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-screen/dom-screen-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-screen/dom-screen-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-screen/dom-screen.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-size/dom-size-debug.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-size/dom-size-min.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-size/dom-size.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-style-ie/dom-style-ie-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-style-ie/dom-style-ie-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-style-ie/dom-style-ie-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-style-ie/dom-style-ie.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-style/dom-style-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-style/dom-style-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-style/dom-style-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dom-style/dom-style.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dump/dump-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dump/dump-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dump/dump-min.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/dump/dump.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-base/editor-base-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-base/editor-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-base/editor-base-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-base/editor-base.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-bidi/editor-bidi-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-bidi/editor-bidi-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-bidi/editor-bidi-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-bidi/editor-bidi.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-br/editor-br-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-br/editor-br-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-br/editor-br-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-br/editor-br.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-lists/editor-lists-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-lists/editor-lists-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-lists/editor-lists-min.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-lists/editor-lists.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-para-base/editor-para-base-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-para-base/editor-para-base-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-para-base/editor-para-base-min.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-para-base/editor-para-base.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-para-ie/editor-para-ie-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-para-ie/editor-para-ie-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-para-ie/editor-para-ie-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-para-ie/editor-para-ie.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-para/editor-para-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-para/editor-para-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-para/editor-para-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-para/editor-para.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-selection/editor-selection-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-selection/editor-selection-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-selection/editor-selection-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-selection/editor-selection.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-tab/editor-tab-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-tab/editor-tab-debug.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-tab/editor-tab-min.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/editor-tab/editor-tab.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/escape/escape-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/escape/escape-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/escape/escape-min.js (84%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/escape/escape.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-base-ie/event-base-ie-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-base-ie/event-base-ie-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-base-ie/event-base-ie-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-base-ie/event-base-ie.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-base/event-base-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-base/event-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-base/event-base-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-base/event-base.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-contextmenu/event-contextmenu-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-contextmenu/event-contextmenu-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-contextmenu/event-contextmenu-min.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-contextmenu/event-contextmenu.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-custom-base/event-custom-base-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-custom-base/event-custom-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-custom-base/event-custom-base-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-custom-base/event-custom-base.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-custom-complex/event-custom-complex-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-custom-complex/event-custom-complex-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-custom-complex/event-custom-complex-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-custom-complex/event-custom-complex.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-delegate/event-delegate-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-delegate/event-delegate-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-delegate/event-delegate-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-delegate/event-delegate.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-flick/event-flick-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-flick/event-flick-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-flick/event-flick-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-flick/event-flick.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-focus/event-focus-coverage.js (51%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-focus/event-focus-debug.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-focus/event-focus-min.js (83%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-focus/event-focus.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-hover/event-hover-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-hover/event-hover-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-hover/event-hover-min.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-hover/event-hover.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-key/event-key-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-key/event-key-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-key/event-key-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-key/event-key.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-mouseenter/event-mouseenter-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-mouseenter/event-mouseenter-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-mouseenter/event-mouseenter-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-mouseenter/event-mouseenter.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-mousewheel/event-mousewheel-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-mousewheel/event-mousewheel-debug.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-mousewheel/event-mousewheel-min.js (83%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-mousewheel/event-mousewheel.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-move/event-move-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-move/event-move-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-move/event-move-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-move/event-move.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-outside/event-outside-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-outside/event-outside-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-outside/event-outside-min.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-outside/event-outside.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-resize/event-resize-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-resize/event-resize-debug.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-resize/event-resize-min.js (85%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-resize/event-resize.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-simulate/event-simulate-coverage.js (54%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-simulate/event-simulate-debug.js (97%) create mode 100644 lib/yuilib/3.8.0/build/event-simulate/event-simulate-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-simulate/event-simulate.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-synthetic/event-synthetic-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-synthetic/event-synthetic-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-synthetic/event-synthetic-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-synthetic/event-synthetic.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-tap/event-tap-coverage.js (52%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-tap/event-tap-debug.js (96%) create mode 100644 lib/yuilib/3.8.0/build/event-tap/event-tap-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-tap/event-tap.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-touch/event-touch-coverage.js (87%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-touch/event-touch-debug.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-touch/event-touch-min.js (77%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-touch/event-touch.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-valuechange/event-valuechange-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-valuechange/event-valuechange-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-valuechange/event-valuechange-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/event-valuechange/event-valuechange.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/exec-command/exec-command-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/exec-command/exec-command-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/exec-command/exec-command-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/exec-command/exec-command.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/features/features-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/features/features-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/features/features-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/features/features.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/file-flash/file-flash-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/file-flash/file-flash-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/file-flash/file-flash-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/file-flash/file-flash.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/file-html5/file-html5-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/file-html5/file-html5-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/file-html5/file-html5-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/file-html5/file-html5.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/file/file-coverage.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/file/file-debug.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/file/file-min.js (77%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/file/file.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/frame/frame-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/frame/frame-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/frame/frame-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/frame/frame.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/gesture-simulate/gesture-simulate-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/gesture-simulate/gesture-simulate-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/gesture-simulate/gesture-simulate-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/gesture-simulate/gesture-simulate.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/get-nodejs/get-nodejs-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/get-nodejs/get-nodejs-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/get-nodejs/get-nodejs-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/get-nodejs/get-nodejs.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/get/get-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/get/get-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/get/get-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/get/get.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-canvas-default/graphics-canvas-default-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-canvas-default/graphics-canvas-default-debug.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-canvas-default/graphics-canvas-default-min.js (85%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-canvas-default/graphics-canvas-default.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-canvas/graphics-canvas-coverage.js (54%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-canvas/graphics-canvas-debug.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-canvas/graphics-canvas-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-canvas/graphics-canvas.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-svg-default/graphics-svg-default-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-svg-default/graphics-svg-default-debug.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-svg-default/graphics-svg-default-min.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-svg-default/graphics-svg-default.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-svg/graphics-svg-coverage.js (52%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-svg/graphics-svg-debug.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-svg/graphics-svg-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-svg/graphics-svg.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-vml-default/graphics-vml-default-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-vml-default/graphics-vml-default-debug.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-vml-default/graphics-vml-default-min.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-vml-default/graphics-vml-default.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-vml/graphics-vml-coverage.js (51%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-vml/graphics-vml-debug.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-vml/graphics-vml-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics-vml/graphics-vml.js (90%) create mode 100644 lib/yuilib/3.8.0/build/graphics/graphics-coverage.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics/graphics-debug.js (85%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics/graphics-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/graphics/graphics.js (85%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/handlebars-base/handlebars-base-coverage.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/handlebars-base/handlebars-base-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/handlebars-base/handlebars-base-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/handlebars-base/handlebars-base.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/handlebars-compiler/handlebars-compiler-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/handlebars-compiler/handlebars-compiler-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/handlebars-compiler/handlebars-compiler-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/handlebars-compiler/handlebars-compiler.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/highlight-accentfold/highlight-accentfold-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/highlight-accentfold/highlight-accentfold-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/highlight-accentfold/highlight-accentfold-min.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/highlight-accentfold/highlight-accentfold.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/highlight-base/highlight-base-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/highlight-base/highlight-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/highlight-base/highlight-base-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/highlight-base/highlight-base.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/history-base/history-base-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/history-base/history-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/history-base/history-base-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/history-base/history-base.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/history-hash-ie/history-hash-ie-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/history-hash-ie/history-hash-ie-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/history-hash-ie/history-hash-ie-min.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/history-hash-ie/history-hash-ie.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/history-hash/history-hash-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/history-hash/history-hash-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/history-hash/history-hash-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/history-hash/history-hash.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/history-html5/history-html5-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/history-html5/history-html5-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/history-html5/history-html5-min.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/history-html5/history-html5.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/imageloader/imageloader-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/imageloader/imageloader-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/imageloader/imageloader-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/imageloader/imageloader.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/intl-base/intl-base-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/intl-base/intl-base-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/intl-base/intl-base-min.js (88%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/intl-base/intl-base.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/intl/intl-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/intl/intl-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/intl/intl-min.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/intl/intl.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-base/io-base-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-base/io-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-base/io-base-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-base/io-base.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-form/io-form-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-form/io-form-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-form/io-form-min.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-form/io-form.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-nodejs/io-nodejs-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-nodejs/io-nodejs-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-nodejs/io-nodejs-min.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-nodejs/io-nodejs.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-queue/io-queue-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-queue/io-queue-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-queue/io-queue-min.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-queue/io-queue.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-upload-iframe/io-upload-iframe-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-upload-iframe/io-upload-iframe-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-upload-iframe/io-upload-iframe-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-upload-iframe/io-upload-iframe.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-xdr/io-xdr-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-xdr/io-xdr-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-xdr/io-xdr-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-xdr/io-xdr.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/io-xdr/io.swf (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/json-parse/json-parse-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/json-parse/json-parse-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/json-parse/json-parse-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/json-parse/json-parse.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/json-stringify/json-stringify-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/json-stringify/json-stringify-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/json-stringify/json-stringify-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/json-stringify/json-stringify.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/jsonp-url/jsonp-url-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/jsonp-url/jsonp-url-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/jsonp-url/jsonp-url-min.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/jsonp-url/jsonp-url.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/jsonp/jsonp-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/jsonp/jsonp-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/jsonp/jsonp-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/jsonp/jsonp.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/lazy-model-list/lazy-model-list-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/lazy-model-list/lazy-model-list-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/lazy-model-list/lazy-model-list-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/lazy-model-list/lazy-model-list.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/loader-base/loader-base-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/loader-base/loader-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/loader-base/loader-base-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/loader-base/loader-base.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/loader-rollup/loader-rollup-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/loader-rollup/loader-rollup-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/loader-rollup/loader-rollup-min.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/loader-rollup/loader-rollup.js (97%) create mode 100644 lib/yuilib/3.8.0/build/loader-yui3/loader-yui3-coverage.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/loader-yui3/loader-yui3-debug.js (97%) create mode 100644 lib/yuilib/3.8.0/build/loader-yui3/loader-yui3-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/loader-yui3/loader-yui3.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/loader/loader-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/loader/loader-debug.js (98%) create mode 100644 lib/yuilib/3.8.0/build/loader/loader-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/loader/loader.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/matrix/matrix-coverage.js (61%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/matrix/matrix-debug.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/matrix/matrix-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/matrix/matrix.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/model-list/model-list-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/model-list/model-list-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/model-list/model-list-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/model-list/model-list.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/model-sync-rest/model-sync-rest-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/model-sync-rest/model-sync-rest-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/model-sync-rest/model-sync-rest-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/model-sync-rest/model-sync-rest.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/model/model-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/model/model-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/model/model-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/model/model.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-base/node-base-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-base/node-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-base/node-base-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-base/node-base.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-core/node-core-coverage.js (67%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-core/node-core-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-core/node-core-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-core/node-core.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-deprecated/node-deprecated-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-deprecated/node-deprecated-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-deprecated/node-deprecated-min.js (85%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-deprecated/node-deprecated.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-event-delegate/node-event-delegate-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-event-delegate/node-event-delegate-debug.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-event-delegate/node-event-delegate-min.js (78%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-event-delegate/node-event-delegate.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-event-html5/node-event-html5-coverage.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-event-html5/node-event-html5-debug.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-event-html5/node-event-html5-min.js (82%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-event-html5/node-event-html5.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-event-simulate/node-event-simulate-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-event-simulate/node-event-simulate-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-event-simulate/node-event-simulate-min.js (79%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-event-simulate/node-event-simulate.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-flick/assets/node-flick-core.css (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-flick/assets/skins/sam/node-flick-skin.css (84%) rename lib/yuilib/{3.7.3/build => 3.8.0/build/node-flick}/assets/skins/sam/node-flick.css (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-flick/node-flick-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-flick/node-flick-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-flick/node-flick-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-flick/node-flick.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-focusmanager/node-focusmanager-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-focusmanager/node-focusmanager-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-focusmanager/node-focusmanager-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-focusmanager/node-focusmanager.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-load/node-load-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-load/node-load-debug.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-load/node-load-min.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-load/node-load.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-menunav/assets/node-menunav-core.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-menunav/assets/skins/night/horizontal-menu-submenu-indicator.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-menunav/assets/skins/night/node-menunav-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-menunav/assets/skins/night/node-menunav.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-menunav/assets/skins/night/vertical-menu-submenu-indicator.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-menunav/assets/skins/sam/horizontal-menu-submenu-indicator.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-menunav/assets/skins/sam/horizontal-menu-submenu-toggle.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-menunav/assets/skins/sam/node-menunav-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-menunav/assets/skins/sam/node-menunav.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-menunav/assets/skins/sam/vertical-menu-submenu-indicator.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-menunav/node-menunav-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-menunav/node-menunav-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-menunav/node-menunav-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-menunav/node-menunav.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-pluginhost/node-pluginhost-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-pluginhost/node-pluginhost-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-pluginhost/node-pluginhost-min.js (88%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-pluginhost/node-pluginhost.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-screen/node-screen-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-screen/node-screen-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-screen/node-screen-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-screen/node-screen.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-scroll-info/node-scroll-info-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-scroll-info/node-scroll-info-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-scroll-info/node-scroll-info-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-scroll-info/node-scroll-info.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-style/node-style-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-style/node-style-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-style/node-style-min.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/node-style/node-style.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/oop/oop-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/oop/oop-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/oop/oop-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/oop/oop.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/overlay/assets/overlay-core.css (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/overlay/assets/skins/night/overlay-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/overlay/assets/skins/night/overlay.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/overlay/assets/skins/sam/overlay-skin.css (83%) rename lib/yuilib/{3.7.3/build => 3.8.0/build/overlay}/assets/skins/sam/overlay.css (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/overlay/overlay-coverage.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/overlay/overlay-debug.js (81%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/overlay/overlay-min.js (81%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/overlay/overlay.js (81%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/panel/assets/panel-core.css (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/panel/assets/skins/night/panel-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/panel/assets/skins/night/panel.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/panel/assets/skins/night/sprite_icons.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/panel/assets/skins/sam/panel-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/panel/assets/skins/sam/panel.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/panel/assets/skins/sam/sprite_icons.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/panel/panel-coverage.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/panel/panel-debug.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/panel/panel-min.js (88%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/panel/panel.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/parallel/parallel-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/parallel/parallel-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/parallel/parallel-min.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/parallel/parallel.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pjax-base/pjax-base-coverage.js (59%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pjax-base/pjax-base-debug.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pjax-base/pjax-base-min.js (59%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pjax-base/pjax-base.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pjax-content/pjax-content-coverage.js (68%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pjax-content/pjax-content-debug.js (98%) create mode 100644 lib/yuilib/3.8.0/build/pjax-content/pjax-content-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/pjax-content/pjax-content.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pjax-plugin/pjax-plugin-coverage.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pjax-plugin/pjax-plugin-debug.js (88%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pjax-plugin/pjax-plugin-min.js (76%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pjax-plugin/pjax-plugin.js (88%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pjax/pjax-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pjax/pjax-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pjax/pjax-min.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pjax/pjax.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/plugin/plugin-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/plugin/plugin-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/plugin/plugin-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/plugin/plugin.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pluginhost-base/pluginhost-base-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pluginhost-base/pluginhost-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pluginhost-base/pluginhost-base-min.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pluginhost-base/pluginhost-base.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pluginhost-config/pluginhost-config-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pluginhost-config/pluginhost-config-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pluginhost-config/pluginhost-config-min.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/pluginhost-config/pluginhost-config.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/profiler/profiler-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/profiler/profiler-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/profiler/profiler-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/profiler/profiler.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/querystring-parse-simple/querystring-parse-simple-coverage.js (59%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/querystring-parse-simple/querystring-parse-simple-debug.js (60%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/querystring-parse-simple/querystring-parse-simple-min.js (85%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/querystring-parse-simple/querystring-parse-simple.js (60%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/querystring-parse/querystring-parse-coverage.js (68%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/querystring-parse/querystring-parse-debug.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/querystring-parse/querystring-parse-min.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/querystring-parse/querystring-parse.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/querystring-stringify-simple/querystring-stringify-simple-coverage.js (58%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/querystring-stringify-simple/querystring-stringify-simple-debug.js (65%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/querystring-stringify-simple/querystring-stringify-simple-min.js (84%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/querystring-stringify-simple/querystring-stringify-simple.js (65%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/querystring-stringify/querystring-stringify-coverage.js (62%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/querystring-stringify/querystring-stringify-debug.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/querystring-stringify/querystring-stringify-min.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/querystring-stringify/querystring-stringify.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/queue-promote/queue-promote-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/queue-promote/queue-promote-debug.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/queue-promote/queue-promote-min.js (82%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/queue-promote/queue-promote.js (95%) rename lib/yuilib/{3.7.3/build/slider-base => 3.8.0/build/range-slider}/assets/slider-base-core.css (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/range-slider/assets/slider-core.css (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/range-slider/assets/thumb-x-oblong-dark.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/range-slider/assets/thumb-x-oblong.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/range-slider/assets/thumb-x-oblong2-dark.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/range-slider/assets/thumb-x-oblong2.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/range-slider/assets/thumb-y-oblong-dark.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/range-slider/assets/thumb-y-oblong.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/range-slider/assets/thumb-y-oblong2-dark.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/range-slider/assets/thumb-y-oblong2.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/range-slider/range-slider-coverage.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/range-slider/range-slider-debug.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/range-slider/range-slider-min.js (74%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/range-slider/range-slider.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/recordset-base/recordset-base-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/recordset-base/recordset-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/recordset-base/recordset-base-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/recordset-base/recordset-base.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/recordset-filter/recordset-filter-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/recordset-filter/recordset-filter-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/recordset-filter/recordset-filter-min.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/recordset-filter/recordset-filter.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/recordset-indexer/recordset-indexer-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/recordset-indexer/recordset-indexer-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/recordset-indexer/recordset-indexer-min.js (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/recordset-indexer/recordset-indexer.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/recordset-sort/recordset-sort-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/recordset-sort/recordset-sort-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/recordset-sort/recordset-sort-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/recordset-sort/recordset-sort.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-base/assets/resize-base-core.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-base/assets/skins/night/arrows.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-base/assets/skins/night/resize-base-skin.css (97%) create mode 100644 lib/yuilib/3.8.0/build/resize-base/assets/skins/night/resize-base.css rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-base/assets/skins/sam/arrows.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-base/assets/skins/sam/resize-base-skin.css (97%) create mode 100644 lib/yuilib/3.8.0/build/resize-base/assets/skins/sam/resize-base.css rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-base/resize-base-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-base/resize-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-base/resize-base-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-base/resize-base.js (99%) rename lib/yuilib/{3.7.3/build/resize-proxy => 3.8.0/build/resize-constrain}/assets/resize-base-core.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-constrain/assets/skins/night/arrows.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-constrain/assets/skins/night/resize-base-skin.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-constrain/assets/skins/sam/arrows.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-constrain/assets/skins/sam/resize-base-skin.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-constrain/resize-constrain-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-constrain/resize-constrain-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-constrain/resize-constrain-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-constrain/resize-constrain.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-plugin/assets/resize-base-core.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-plugin/assets/skins/night/arrows.png (100%) create mode 100644 lib/yuilib/3.8.0/build/resize-plugin/assets/skins/night/resize-base-skin.css rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-plugin/assets/skins/sam/arrows.png (100%) create mode 100644 lib/yuilib/3.8.0/build/resize-plugin/assets/skins/sam/resize-base-skin.css rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-plugin/resize-plugin-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-plugin/resize-plugin-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-plugin/resize-plugin-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-plugin/resize-plugin.js (98%) rename lib/yuilib/{3.7.3/build/resize-constrain => 3.8.0/build/resize-proxy}/assets/resize-base-core.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-proxy/assets/skins/night/arrows.png (100%) create mode 100644 lib/yuilib/3.8.0/build/resize-proxy/assets/skins/night/resize-base-skin.css rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-proxy/assets/skins/sam/arrows.png (100%) create mode 100644 lib/yuilib/3.8.0/build/resize-proxy/assets/skins/sam/resize-base-skin.css rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-proxy/resize-proxy-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-proxy/resize-proxy-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-proxy/resize-proxy-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/resize-proxy/resize-proxy.js (98%) create mode 100644 lib/yuilib/3.8.0/build/router/router-coverage.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/router/router-debug.js (98%) create mode 100644 lib/yuilib/3.8.0/build/router/router-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/router/router.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-base-ie/scrollview-base-ie-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-base-ie/scrollview-base-ie-debug.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-base-ie/scrollview-base-ie-min.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-base-ie/scrollview-base-ie.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-base/assets/scrollview-base-core.css (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-base/assets/skins/night/scrollview-base-skin.css (83%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-base/assets/skins/night/scrollview-base.css (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-base/assets/skins/sam/scrollview-base-skin.css (90%) rename lib/yuilib/{3.7.3/build => 3.8.0/build/scrollview-base}/assets/skins/sam/scrollview-base.css (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-base/scrollview-base-coverage.js (62%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-base/scrollview-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-base/scrollview-base-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-base/scrollview-base.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-list/assets/scrollview-list-core.css (83%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-list/assets/skins/night/scrollview-list-skin.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-list/assets/skins/night/scrollview-list.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-list/assets/skins/sam/scrollview-list-skin.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-list/assets/skins/sam/scrollview-list.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-list/scrollview-list-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-list/scrollview-list-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-list/scrollview-list-min.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-list/scrollview-list.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-paginator/scrollview-paginator-coverage.js (59%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-paginator/scrollview-paginator-debug.js (84%) create mode 100644 lib/yuilib/3.8.0/build/scrollview-paginator/scrollview-paginator-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-paginator/scrollview-paginator.js (84%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-scrollbars/assets/scrollview-scrollbars-core.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-scrollbars/assets/skins/night/scrollview-scrollbars-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-scrollbars/assets/skins/night/scrollview-scrollbars.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-scrollbars/assets/skins/sam/scrollview-scrollbars-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-scrollbars/assets/skins/sam/scrollview-scrollbars.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-scrollbars/scrollview-scrollbars-coverage.js (63%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-scrollbars/scrollview-scrollbars-debug.js (96%) create mode 100644 lib/yuilib/3.8.0/build/scrollview-scrollbars/scrollview-scrollbars-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview-scrollbars/scrollview-scrollbars.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview/scrollview-coverage.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview/scrollview-debug.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview/scrollview-min.js (70%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/scrollview/scrollview.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/selector-css2/selector-css2-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/selector-css2/selector-css2-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/selector-css2/selector-css2-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/selector-css2/selector-css2.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/selector-css3/selector-css3-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/selector-css3/selector-css3-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/selector-css3/selector-css3-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/selector-css3/selector-css3.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/selector-native/selector-native-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/selector-native/selector-native-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/selector-native/selector-native-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/selector-native/selector-native.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/selector/selector-coverage.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/selector/selector-debug.js (69%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/selector/selector-min.js (59%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/selector/selector.js (69%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/shim-plugin/shim-plugin-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/shim-plugin/shim-plugin-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/shim-plugin/shim-plugin-min.js (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/shim-plugin/shim-plugin.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/simpleyui/simpleyui-debug.js (95%) create mode 100644 lib/yuilib/3.8.0/build/simpleyui/simpleyui-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/simpleyui/simpleyui.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/audio-light/rail-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/audio-light/rail-y.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/audio-light/slider-base-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/audio-light/slider-base.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/audio-light/slider-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/audio-light/thumb-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/audio-light/thumb-y.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/audio/rail-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/audio/rail-y.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/audio/slider-base-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/audio/slider-base.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/audio/slider-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/audio/thumb-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/audio/thumb-y.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule-dark/rail-x-dots.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule-dark/rail-x-lines.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule-dark/rail-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule-dark/rail-y-dots.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule-dark/rail-y-lines.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule-dark/rail-y.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule-dark/slider-base-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule-dark/slider-base.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule-dark/slider-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule-dark/thumb-x-line.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule-dark/thumb-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule-dark/thumb-y-line.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule-dark/thumb-y.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule/rail-x-dots.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule/rail-x-lines.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule/rail-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule/rail-y-dots.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule/rail-y-lines.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule/rail-y.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule/slider-base-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule/slider-base.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule/slider-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule/thumb-x-line.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule/thumb-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule/thumb-y-line.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule/thumb-y-lines.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/capsule/thumb-y.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/night/rail-x-lines.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/night/rail-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/night/rail-y-lines.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/night/rail-y.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/night/slider-base-skin.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/night/slider-base.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/night/slider-skin.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/night/thumb-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/night/thumb-y.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/round-dark/rail-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/round-dark/rail-y.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/round-dark/slider-base-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/round-dark/slider-base.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/round-dark/slider-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/round-dark/thumb-x-grip.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/round-dark/thumb-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/round-dark/thumb-y-grip.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/round-dark/thumb-y.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/round/rail-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/round/rail-y.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/round/slider-base-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/round/slider-base.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/round/slider-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/round/thumb-x-grip.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/round/thumb-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/round/thumb-y-grip.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/round/thumb-y.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/sam-dark/rail-x-lines.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/sam-dark/rail-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/sam-dark/rail-y-lines.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/sam-dark/rail-y.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/sam-dark/slider-base-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/sam-dark/slider-base.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/sam-dark/slider-skin.css (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/sam-dark/thumb-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/sam-dark/thumb-y.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/sam/rail-x-lines.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/sam/rail-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/sam/rail-y-lines.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/sam/rail-y.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/sam/slider-base-skin.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/sam/slider-base.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/sam/slider-skin.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/sam/thumb-x.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/skins/sam/thumb-y.png (100%) rename lib/yuilib/{3.7.3/build/clickable-rail => 3.8.0/build/slider-base}/assets/slider-base-core.css (96%) rename lib/yuilib/{3.7.3/build/slider-value-range => 3.8.0/build/slider-base}/assets/slider-core.css (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/thumb-x-oblong-dark.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/thumb-x-oblong.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/thumb-x-oblong2-dark.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/thumb-x-oblong2.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/thumb-y-oblong-dark.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/thumb-y-oblong.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/thumb-y-oblong2-dark.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/assets/thumb-y-oblong2.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/slider-base-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/slider-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/slider-base-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-base/slider-base.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-value-range/assets/slider-base-core.css (96%) rename lib/yuilib/{3.7.3/build/clickable-rail => 3.8.0/build/slider-value-range}/assets/slider-core.css (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-value-range/assets/thumb-x-oblong-dark.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-value-range/assets/thumb-x-oblong.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-value-range/assets/thumb-x-oblong2-dark.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-value-range/assets/thumb-x-oblong2.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-value-range/assets/thumb-y-oblong-dark.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-value-range/assets/thumb-y-oblong.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-value-range/assets/thumb-y-oblong2-dark.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-value-range/assets/thumb-y-oblong2.png (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-value-range/slider-value-range-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-value-range/slider-value-range-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-value-range/slider-value-range-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/slider-value-range/slider-value-range.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/sortable-scroll/sortable-scroll-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/sortable-scroll/sortable-scroll-debug.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/sortable-scroll/sortable-scroll-min.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/sortable-scroll/sortable-scroll.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/sortable/sortable-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/sortable/sortable-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/sortable/sortable-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/sortable/sortable.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/stylesheet/stylesheet-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/stylesheet/stylesheet-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/stylesheet/stylesheet-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/stylesheet/stylesheet.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/substitute/substitute-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/substitute/substitute-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/substitute/substitute-min.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/substitute/substitute.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/swf/swf-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/swf/swf-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/swf/swf-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/swf/swf.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/swfdetect/swfdetect-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/swfdetect/swfdetect-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/swfdetect/swfdetect-min.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/swfdetect/swfdetect.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview-base/assets/tabview-core.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview-base/assets/tabview.css (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview-base/tabview-base-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview-base/tabview-base-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview-base/tabview-base-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview-base/tabview-base.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview-plugin/assets/tabview-core.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview-plugin/assets/tabview.css (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview-plugin/tabview-plugin-coverage.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview-plugin/tabview-plugin-debug.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview-plugin/tabview-plugin-min.js (81%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview-plugin/tabview-plugin.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview/assets/skins/night/tabview-skin.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview/assets/skins/night/tabview.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview/assets/skins/sam/tabview-skin.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview/assets/skins/sam/tabview.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview/assets/tabview-core.css (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview/assets/tabview.css (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview/tabview-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview/tabview-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview/tabview-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/tabview/tabview.js (97%) create mode 100644 lib/yuilib/3.8.0/build/template-base/template-base-coverage.js create mode 100644 lib/yuilib/3.8.0/build/template-base/template-base-debug.js create mode 100644 lib/yuilib/3.8.0/build/template-base/template-base-min.js create mode 100644 lib/yuilib/3.8.0/build/template-base/template-base.js create mode 100644 lib/yuilib/3.8.0/build/template-micro/template-micro-coverage.js create mode 100644 lib/yuilib/3.8.0/build/template-micro/template-micro-debug.js create mode 100644 lib/yuilib/3.8.0/build/template-micro/template-micro-min.js create mode 100644 lib/yuilib/3.8.0/build/template-micro/template-micro.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/test-console/assets/skins/sam/test-console-skin.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/test-console/assets/skins/sam/test-console.css (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/test-console/assets/test-console-core.css (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/test-console/test-console-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/test-console/test-console-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/test-console/test-console-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/test-console/test-console.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/test/test-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/test/test-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/test/test-min.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/test/test.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/text-accentfold/text-accentfold-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/text-accentfold/text-accentfold-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/text-accentfold/text-accentfold-min.js (87%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/text-accentfold/text-accentfold.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/text-data-accentfold/text-data-accentfold-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/text-data-accentfold/text-data-accentfold-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/text-data-accentfold/text-data-accentfold-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/text-data-accentfold/text-data-accentfold.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/text-data-wordbreak/text-data-wordbreak-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/text-data-wordbreak/text-data-wordbreak-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/text-data-wordbreak/text-data-wordbreak-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/text-data-wordbreak/text-data-wordbreak.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/text-wordbreak/text-wordbreak-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/text-wordbreak/text-wordbreak-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/text-wordbreak/text-wordbreak-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/text-wordbreak/text-wordbreak.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/transition-timer/transition-timer-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/transition-timer/transition-timer-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/transition-timer/transition-timer-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/transition-timer/transition-timer.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/transition/transition-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/transition/transition-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/transition/transition-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/transition/transition.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/uploader-deprecated/assets/uploader.swf (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/uploader-deprecated/uploader-deprecated-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/uploader-deprecated/uploader-deprecated-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/uploader-deprecated/uploader-deprecated-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/uploader-deprecated/uploader-deprecated.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/uploader-flash/assets/uploader-flash-core.css (88%) create mode 100644 lib/yuilib/3.8.0/build/uploader-flash/uploader-flash-coverage.js create mode 100644 lib/yuilib/3.8.0/build/uploader-flash/uploader-flash-debug.js create mode 100644 lib/yuilib/3.8.0/build/uploader-flash/uploader-flash-min.js create mode 100644 lib/yuilib/3.8.0/build/uploader-flash/uploader-flash.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/uploader-html5/assets/uploader-flash-core.css (88%) create mode 100644 lib/yuilib/3.8.0/build/uploader-html5/uploader-html5-coverage.js create mode 100644 lib/yuilib/3.8.0/build/uploader-html5/uploader-html5-debug.js create mode 100644 lib/yuilib/3.8.0/build/uploader-html5/uploader-html5-min.js create mode 100644 lib/yuilib/3.8.0/build/uploader-html5/uploader-html5.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/uploader-queue/assets/uploader-flash-core.css (88%) create mode 100644 lib/yuilib/3.8.0/build/uploader-queue/uploader-queue-coverage.js create mode 100644 lib/yuilib/3.8.0/build/uploader-queue/uploader-queue-debug.js create mode 100644 lib/yuilib/3.8.0/build/uploader-queue/uploader-queue-min.js create mode 100644 lib/yuilib/3.8.0/build/uploader-queue/uploader-queue.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/uploader/assets/flashuploader.swf (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/uploader/assets/uploader-flash-core.css (88%) create mode 100644 lib/yuilib/3.8.0/build/uploader/uploader-coverage.js create mode 100644 lib/yuilib/3.8.0/build/uploader/uploader-debug.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/uploader/uploader-min.js (80%) create mode 100644 lib/yuilib/3.8.0/build/uploader/uploader.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/view-node-map/view-node-map-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/view-node-map/view-node-map-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/view-node-map/view-node-map-min.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/view-node-map/view-node-map.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/view/view-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/view/view-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/view/view-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/view/view.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-anim/widget-anim-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-anim/widget-anim-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-anim/widget-anim-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-anim/widget-anim.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-autohide/widget-autohide-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-autohide/widget-autohide-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-autohide/widget-autohide-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-autohide/widget-autohide.js (98%) rename lib/yuilib/{3.7.3/build/widget-base => 3.8.0/build/widget-base-ie}/assets/widget-base-core.css (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-base-ie/widget-base-ie-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-base-ie/widget-base-ie-debug.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-base-ie/widget-base-ie-min.js (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-base-ie/widget-base-ie.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-base/assets/skins/night/widget-base-skin.css (83%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-base/assets/skins/night/widget-base.css (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-base/assets/skins/sam/widget-base-skin.css (83%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-base/assets/skins/sam/widget-base.css (95%) rename lib/yuilib/{3.7.3/build/widget-base-ie => 3.8.0/build/widget-base}/assets/widget-base-core.css (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-base/widget-base-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-base/widget-base-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-base/widget-base-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-base/widget-base.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-buttons/assets/skins/night/sprite_icons.gif (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-buttons/assets/skins/night/widget-buttons-skin.css (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-buttons/assets/skins/night/widget-buttons.css (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-buttons/assets/skins/sam/sprite_icons.gif (100%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-buttons/assets/skins/sam/widget-buttons-skin.css (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-buttons/assets/skins/sam/widget-buttons.css (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-buttons/assets/widget-buttons-core.css (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-buttons/widget-buttons-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-buttons/widget-buttons-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-buttons/widget-buttons-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-buttons/widget-buttons.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-child/widget-child-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-child/widget-child-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-child/widget-child-min.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-child/widget-child.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-htmlparser/assets/widget-base-core.css (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-htmlparser/widget-htmlparser-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-htmlparser/widget-htmlparser-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-htmlparser/widget-htmlparser-min.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-htmlparser/widget-htmlparser.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-locale/assets/widget-base-core.css (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-locale/widget-locale-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-locale/widget-locale-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-locale/widget-locale-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-locale/widget-locale.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-modality/assets/skins/night/widget-modality-skin.css (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-modality/assets/skins/night/widget-modality.css (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-modality/assets/skins/sam/widget-modality-skin.css (93%) rename lib/yuilib/{3.7.3/build => 3.8.0/build/widget-modality}/assets/skins/sam/widget-modality.css (92%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-modality/assets/widget-modality-core.css (86%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-modality/widget-modality-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-modality/widget-modality-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-modality/widget-modality-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-modality/widget-modality.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-parent/widget-parent-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-parent/widget-parent-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-parent/widget-parent-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-parent/widget-parent.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-position-align/widget-position-align-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-position-align/widget-position-align-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-position-align/widget-position-align-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-position-align/widget-position-align.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-position-constrain/widget-position-constrain-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-position-constrain/widget-position-constrain-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-position-constrain/widget-position-constrain-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-position-constrain/widget-position-constrain.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-position/widget-position-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-position/widget-position-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-position/widget-position-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-position/widget-position.js (98%) create mode 100644 lib/yuilib/3.8.0/build/widget-skin/assets/widget-base-core.css rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-skin/widget-skin-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-skin/widget-skin-debug.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-skin/widget-skin-min.js (82%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-skin/widget-skin.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-stack/assets/skins/night/widget-stack-skin.css (83%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-stack/assets/skins/night/widget-stack.css (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-stack/assets/skins/sam/widget-stack-skin.css (83%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-stack/assets/skins/sam/widget-stack.css (93%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-stack/assets/widget-stack-core.css (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-stack/widget-stack-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-stack/widget-stack-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-stack/widget-stack-min.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-stack/widget-stack.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-stdmod/widget-stdmod-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-stdmod/widget-stdmod-debug.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-stdmod/widget-stdmod-min.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-stdmod/widget-stdmod.js (99%) create mode 100644 lib/yuilib/3.8.0/build/widget-uievents/assets/widget-base-core.css rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-uievents/widget-uievents-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-uievents/widget-uievents-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-uievents/widget-uievents-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/widget-uievents/widget-uievents.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yql-nodejs/yql-nodejs-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yql-nodejs/yql-nodejs-debug.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yql-nodejs/yql-nodejs-min.js (83%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yql-nodejs/yql-nodejs.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yql-winjs/yql-winjs-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yql-winjs/yql-winjs-debug.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yql-winjs/yql-winjs-min.js (91%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yql-winjs/yql-winjs.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yql/yql-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yql/yql-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yql/yql-min.js (94%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yql/yql.js (98%) create mode 100644 lib/yuilib/3.8.0/build/yui-base/yui-base-coverage.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-base/yui-base-debug.js (84%) create mode 100644 lib/yuilib/3.8.0/build/yui-base/yui-base-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-base/yui-base.js (85%) create mode 100644 lib/yuilib/3.8.0/build/yui-core/yui-core-coverage.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-core/yui-core-debug.js (77%) create mode 100644 lib/yuilib/3.8.0/build/yui-core/yui-core-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-core/yui-core.js (77%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-later/yui-later-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-later/yui-later-debug.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-later/yui-later-min.js (87%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-later/yui-later.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-log-nodejs/yui-log-nodejs-coverage.js (99%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-log-nodejs/yui-log-nodejs-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-log-nodejs/yui-log-nodejs-min.js (96%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-log-nodejs/yui-log-nodejs.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-log/yui-log-coverage.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-log/yui-log-debug.js (98%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-log/yui-log-min.js (89%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-log/yui-log.js (98%) create mode 100644 lib/yuilib/3.8.0/build/yui-nodejs/yui-nodejs-coverage.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-nodejs/yui-nodejs-debug.js (89%) create mode 100644 lib/yuilib/3.8.0/build/yui-nodejs/yui-nodejs-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-nodejs/yui-nodejs.js (90%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-throttle/yui-throttle-coverage.js (97%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-throttle/yui-throttle-debug.js (95%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-throttle/yui-throttle-min.js (85%) rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui-throttle/yui-throttle.js (95%) create mode 100644 lib/yuilib/3.8.0/build/yui/yui-coverage.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui/yui-debug.js (91%) create mode 100644 lib/yuilib/3.8.0/build/yui/yui-min.js rename lib/yuilib/{3.7.3 => 3.8.0}/build/yui/yui.js (91%) diff --git a/lib/setup.php b/lib/setup.php index 3037136f282..d68a6f40a47 100644 --- a/lib/setup.php +++ b/lib/setup.php @@ -239,7 +239,7 @@ umask(0000); // exact version of currently used yui2 and 3 library $CFG->yui2version = '2.9.0'; -$CFG->yui3version = '3.7.3'; +$CFG->yui3version = '3.8.0'; // special support for highly optimised scripts that do not need libraries and DB connection diff --git a/lib/thirdpartylibs.xml b/lib/thirdpartylibs.xml index 3c18f42b18f..c2c33a0c22d 100644 --- a/lib/thirdpartylibs.xml +++ b/lib/thirdpartylibs.xml @@ -193,7 +193,7 @@ yui YUI BSD - 3.7.3 + 3.8.0 diff --git a/lib/yuilib/3.7.3/build/anim-base/anim-base-min.js b/lib/yuilib/3.7.3/build/anim-base/anim-base-min.js deleted file mode 100644 index 4f556ed0683..00000000000 --- a/lib/yuilib/3.7.3/build/anim-base/anim-base-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("anim-base",function(e,t){var n="running",r="startTime",i="elapsedTime",s="start",o="tween",u="end",a="node",f="paused",l="reverse",c="iterationCount",h=Number,p={},d;e.Anim=function(){e.Anim.superclass.constructor.apply(this,arguments),e.Anim._instances[e.stamp(this)]=this},e.Anim.NAME="anim",e.Anim._instances={},e.Anim.RE_DEFAULT_UNIT=/^width|height|top|right|bottom|left|margin.*|padding.*|border.*$/i,e.Anim.DEFAULT_UNIT="px",e.Anim.DEFAULT_EASING=function(e,t,n,r){return n*e/r+t},e.Anim._intervalTime=20,e.Anim.behaviors={left:{get:function(e,t){return e._getOffset(t)}}},e.Anim.behaviors.top=e.Anim.behaviors.left,e.Anim.DEFAULT_SETTER=function(t,n,r,i,s,o,u,a){var f=t._node,l=f._node,c=u(s,h(r),h(i)-h(r),o);l?"style"in l&&(n in l.style||n in e.DOM.CUSTOM_STYLES)?(a=a||"",f.setStyle(n,c+a)):"attributes"in l&&n in l.attributes?f.setAttribute(n,c):n in l&&(l[n]=c):f.set?f.set(n,c):n in f&&(f[n]=c)},e.Anim.DEFAULT_GETTER=function(t,n){var r=t._node,i=r._node,s="";return i?"style"in i&&(n in i.style||n in e.DOM.CUSTOM_STYLES)?s=r.getComputedStyle(n):"attributes"in i&&n in i.attributes?s=r.getAttribute(n):n in i&&(s=i[n]):r.get?s=r.get(n):n in r&&(s=r[n]),s},e.Anim.ATTRS={node:{setter:function(t){return t&&(typeof t=="string"||t.nodeType)&&(t=e.one(t)),this._node=t,!t,t}},duration:{value:1},easing:{value:e.Anim.DEFAULT_EASING,setter:function(t){if(typeof t=="string"&&e.Easing)return e.Easing[t]}},from:{},to:{},startTime:{value:0,readOnly:!0},elapsedTime:{value:0,readOnly:!0},running:{getter:function(){return!!p[e.stamp(this)]},value:!1,readOnly:!0},iterations:{value:1},iterationCount:{value:0,readOnly:!0},direction:{value:"normal"},paused:{readOnly:!0,value:!1},reverse:{value:!1}},e.Anim.run=function(){var t=e.Anim._instances;for(var n in t)t[n].run&&t[n].run()},e.Anim.pause=function(){for(var t in p)p[t].pause&&p[t].pause();e.Anim._stopTimer()},e.Anim.stop=function(){for(var t in p)p[t].stop&&p[t].stop();e.Anim._stopTimer()},e.Anim._startTimer=function(){d||(d=setInterval(e.Anim._runFrame,e.Anim._intervalTime))},e.Anim._stopTimer=function(){clearInterval(d),d=0},e.Anim._runFrame=function(){var t=!0;for(var n in p)p[n]._runFrame&&(t=!1,p[n]._runFrame());t&&e.Anim._stopTimer()},e.Anim.RE_UNITS=/^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/;var v={run:function(){return this.get(f)?this._resume():this.get(n)||this._start(),this},pause:function(){return this.get(n)&&this._pause(),this},stop:function(e){return(this.get(n)||this.get(f))&&this._end(e),this},_added:!1,_start:function(){this._set(r,new Date-this.get(i)),this._actualFrames=0,this.get(f)||this._initAnimAttr(),p[e.stamp(this)]=this,e.Anim._startTimer(),this.fire(s)},_pause:function(){this._set(r,null),this._set(f,!0),delete p[e.stamp(this)],this.fire("pause")},_resume:function(){this._set(f,!1),p[e.stamp(this)]=this,this._set(r,new Date-this.get(i)),e.Anim._startTimer(),this.fire("resume")},_end:function(t){var n=this.get("duration")*1e3;t&&this._runAttrs(n,n,this.get(l)),this._set(r,null),this._set(i,0),this._set(f,!1),delete p[e.stamp(this)],this.fire(u,{elapsed:this.get(i)})},_runFrame:function(){var e=this._runtimeAttr.duration,t=new Date-this.get(r),n=this.get(l),s=t>=e,u,a;this._runAttrs(t,e,n),this._actualFrames+=1,this._set(i,t),this.fire(o),s&&this._lastFrame()},_runAttrs:function(t,n,r){var i=this._runtimeAttr,s=e.Anim.behaviors,o=i.easing,u=n,a=!1,f,l,c;t>=n&&(a=!0),r&&(t=n-t,u=0);for(c in i)i[c].to&&(f=i[c],l=c in s&&"set"in s[c]?s[c].set:e.Anim.DEFAULT_SETTER,a?l(this,c,f.from,f.to,u,n,o,f.unit):l(this,c,f.from,f.to,t,n,o,f.unit))},_lastFrame:function(){var e=this.get("iterations"),t=this.get(c);t+=1,e==="infinite"||t"," * Attribute provides configurable attribute support along with attribute change events. It is designed to be "," * augmented on to a host class, and provides the host with the ability to configure attributes to store and retrieve state, "," * along with attribute change events."," *

"," *

For example, attributes added to the host can be configured:

"," *
    "," *
  • As read only.
  • "," *
  • As write once.
  • "," *
  • With a setter function, which can be used to manipulate"," * values passed to Attribute's set method, before they are stored.
  • "," *
  • With a getter function, which can be used to manipulate stored values,"," * before they are returned by Attribute's get method.
  • "," *
  • With a validator function, to validate values before they are stored.
  • "," *
"," *"," *

See the addAttr method, for the complete set of configuration"," * options available for attributes.

"," *"," *

NOTE: Most implementations will be better off extending the Base class, "," * instead of augmenting Attribute directly. Base augments Attribute and will handle the initial configuration "," * of attributes for derived classes, accounting for values passed into the constructor.

"," *"," * @class Attribute"," * @param attrs {Object} The attributes to add during construction (passed through to addAttrs). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor."," * @param values {Object} The initial attribute values to apply (passed through to addAttrs). These are not merged/cloned. The caller is responsible for isolating user provided values if required."," * @param lazy {boolean} Whether or not to add attributes lazily (passed through to addAttrs)."," * @uses AttributeCore"," * @uses AttributeEvents"," * @uses EventTarget"," * @uses AttributeExtras"," */"," var Attribute = function() {",""," // Fix #2531929 "," // Complete hack, to make sure the first clone of a node value in IE doesn't doesn't hurt state - maintains 3.4.1 behavior."," // Too late in the release cycle to do anything about the core problem."," // The root issue is that cloning a Y.Node instance results in an object which barfs in IE, when you access it's properties (since 3.3.0)."," this._ATTR_E_FACADE = null;"," this._yuievt = null;",""," Y.AttributeCore.apply(this, arguments);"," Y.AttributeEvents.apply(this, arguments);"," Y.AttributeExtras.apply(this, arguments);"," };",""," Y.mix(Attribute, Y.AttributeCore, false, null, 1);"," Y.mix(Attribute, Y.AttributeExtras, false, null, 1);",""," // Needs to be \"true\", to overwrite methods from AttributeCore"," Y.mix(Attribute, Y.AttributeEvents, true, null, 1);",""," /**"," *

The value to return from an attribute setter in order to prevent the set from going through.

"," *"," *

You can return this value from your setter if you wish to combine validator and setter "," * functionality into a single setter function, which either returns the massaged value to be stored or "," * AttributeCore.INVALID_VALUE to prevent invalid values from being stored.

"," *"," * @property INVALID_VALUE"," * @type Object"," * @static"," * @final"," */"," Attribute.INVALID_VALUE = Y.AttributeCore.INVALID_VALUE;",""," /**"," * The list of properties which can be configured for "," * each attribute (e.g. setter, getter, writeOnce etc.)."," *"," * This property is used internally as a whitelist for faster"," * Y.mix operations."," *"," * @property _ATTR_CFG"," * @type Array"," * @static"," * @protected"," */"," Attribute._ATTR_CFG = Y.AttributeCore._ATTR_CFG.concat(Y.AttributeEvents._ATTR_CFG);",""," Y.Attribute = Attribute;","","}, '3.7.3', {\"requires\": [\"attribute-core\", \"attribute-events\", \"attribute-extras\"]});"]; -_yuitest_coverage["build/attribute-base/attribute-base.js"].lines = {"1":0,"54":0,"60":0,"61":0,"63":0,"64":0,"65":0,"68":0,"69":0,"72":0,"86":0,"100":0,"102":0}; -_yuitest_coverage["build/attribute-base/attribute-base.js"].functions = {"Attribute:54":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/attribute-base/attribute-base.js"].coveredLines = 13; -_yuitest_coverage["build/attribute-base/attribute-base.js"].coveredFunctions = 2; -_yuitest_coverline("build/attribute-base/attribute-base.js", 1); -YUI.add('attribute-base', function (Y, NAME) { - - /** - * The attribute module provides an augmentable Attribute implementation, which - * adds configurable attributes and attribute change events to the class being - * augmented. It also provides a State class, which is used internally by Attribute, - * but can also be used independently to provide a name/property/value data structure to - * store state. - * - * @module attribute - */ - - /** - * The attribute-base submodule provides core attribute handling support, with everything - * aside from complex attribute handling in the provider's constructor. - * - * @module attribute - * @submodule attribute-base - */ - - /** - *

- * Attribute provides configurable attribute support along with attribute change events. It is designed to be - * augmented on to a host class, and provides the host with the ability to configure attributes to store and retrieve state, - * along with attribute change events. - *

- *

For example, attributes added to the host can be configured:

- *
    - *
  • As read only.
  • - *
  • As write once.
  • - *
  • With a setter function, which can be used to manipulate - * values passed to Attribute's set method, before they are stored.
  • - *
  • With a getter function, which can be used to manipulate stored values, - * before they are returned by Attribute's get method.
  • - *
  • With a validator function, to validate values before they are stored.
  • - *
- * - *

See the addAttr method, for the complete set of configuration - * options available for attributes.

- * - *

NOTE: Most implementations will be better off extending the Base class, - * instead of augmenting Attribute directly. Base augments Attribute and will handle the initial configuration - * of attributes for derived classes, accounting for values passed into the constructor.

- * - * @class Attribute - * @param attrs {Object} The attributes to add during construction (passed through to addAttrs). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor. - * @param values {Object} The initial attribute values to apply (passed through to addAttrs). These are not merged/cloned. The caller is responsible for isolating user provided values if required. - * @param lazy {boolean} Whether or not to add attributes lazily (passed through to addAttrs). - * @uses AttributeCore - * @uses AttributeEvents - * @uses EventTarget - * @uses AttributeExtras - */ - _yuitest_coverfunc("build/attribute-base/attribute-base.js", "(anonymous 1)", 1); -_yuitest_coverline("build/attribute-base/attribute-base.js", 54); -var Attribute = function() { - - // Fix #2531929 - // Complete hack, to make sure the first clone of a node value in IE doesn't doesn't hurt state - maintains 3.4.1 behavior. - // Too late in the release cycle to do anything about the core problem. - // The root issue is that cloning a Y.Node instance results in an object which barfs in IE, when you access it's properties (since 3.3.0). - _yuitest_coverfunc("build/attribute-base/attribute-base.js", "Attribute", 54); -_yuitest_coverline("build/attribute-base/attribute-base.js", 60); -this._ATTR_E_FACADE = null; - _yuitest_coverline("build/attribute-base/attribute-base.js", 61); -this._yuievt = null; - - _yuitest_coverline("build/attribute-base/attribute-base.js", 63); -Y.AttributeCore.apply(this, arguments); - _yuitest_coverline("build/attribute-base/attribute-base.js", 64); -Y.AttributeEvents.apply(this, arguments); - _yuitest_coverline("build/attribute-base/attribute-base.js", 65); -Y.AttributeExtras.apply(this, arguments); - }; - - _yuitest_coverline("build/attribute-base/attribute-base.js", 68); -Y.mix(Attribute, Y.AttributeCore, false, null, 1); - _yuitest_coverline("build/attribute-base/attribute-base.js", 69); -Y.mix(Attribute, Y.AttributeExtras, false, null, 1); - - // Needs to be "true", to overwrite methods from AttributeCore - _yuitest_coverline("build/attribute-base/attribute-base.js", 72); -Y.mix(Attribute, Y.AttributeEvents, true, null, 1); - - /** - *

The value to return from an attribute setter in order to prevent the set from going through.

- * - *

You can return this value from your setter if you wish to combine validator and setter - * functionality into a single setter function, which either returns the massaged value to be stored or - * AttributeCore.INVALID_VALUE to prevent invalid values from being stored.

- * - * @property INVALID_VALUE - * @type Object - * @static - * @final - */ - _yuitest_coverline("build/attribute-base/attribute-base.js", 86); -Attribute.INVALID_VALUE = Y.AttributeCore.INVALID_VALUE; - - /** - * The list of properties which can be configured for - * each attribute (e.g. setter, getter, writeOnce etc.). - * - * This property is used internally as a whitelist for faster - * Y.mix operations. - * - * @property _ATTR_CFG - * @type Array - * @static - * @protected - */ - _yuitest_coverline("build/attribute-base/attribute-base.js", 100); -Attribute._ATTR_CFG = Y.AttributeCore._ATTR_CFG.concat(Y.AttributeEvents._ATTR_CFG); - - _yuitest_coverline("build/attribute-base/attribute-base.js", 102); -Y.Attribute = Attribute; - -}, '3.7.3', {"requires": ["attribute-core", "attribute-events", "attribute-extras"]}); diff --git a/lib/yuilib/3.7.3/build/attribute-base/attribute-base-min.js b/lib/yuilib/3.7.3/build/attribute-base/attribute-base-min.js deleted file mode 100644 index f02c1755b5e..00000000000 --- a/lib/yuilib/3.7.3/build/attribute-base/attribute-base-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("attribute-base",function(e,t){var n=function(){this._ATTR_E_FACADE=null,this._yuievt=null,e.AttributeCore.apply(this,arguments),e.AttributeEvents.apply(this,arguments),e.AttributeExtras.apply(this,arguments)};e.mix(n,e.AttributeCore,!1,null,1),e.mix(n,e.AttributeExtras,!1,null,1),e.mix(n,e.AttributeEvents,!0,null,1),n.INVALID_VALUE=e.AttributeCore.INVALID_VALUE,n._ATTR_CFG=e.AttributeCore._ATTR_CFG.concat(e.AttributeEvents._ATTR_CFG),e.Attribute=n},"3.7.3",{requires:["attribute-core","attribute-events","attribute-extras"]}); diff --git a/lib/yuilib/3.7.3/build/attribute-complex/attribute-complex-coverage.js b/lib/yuilib/3.7.3/build/attribute-complex/attribute-complex-coverage.js deleted file mode 100644 index ba757495241..00000000000 --- a/lib/yuilib/3.7.3/build/attribute-complex/attribute-complex-coverage.js +++ /dev/null @@ -1,214 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -if (typeof _yuitest_coverage == "undefined"){ - _yuitest_coverage = {}; - _yuitest_coverline = function(src, line){ - var coverage = _yuitest_coverage[src]; - if (!coverage.lines[line]){ - coverage.calledLines++; - } - coverage.lines[line]++; - }; - _yuitest_coverfunc = function(src, name, line){ - var coverage = _yuitest_coverage[src], - funcId = name + ":" + line; - if (!coverage.functions[funcId]){ - coverage.calledFunctions++; - } - coverage.functions[funcId]++; - }; -} -_yuitest_coverage["build/attribute-complex/attribute-complex.js"] = { - lines: {}, - functions: {}, - coveredLines: 0, - calledLines: 0, - coveredFunctions: 0, - calledFunctions: 0, - path: "build/attribute-complex/attribute-complex.js", - code: [] -}; -_yuitest_coverage["build/attribute-complex/attribute-complex.js"].code=["YUI.add('attribute-complex', function (Y, NAME) {",""," /**"," * Adds support for attribute providers to handle complex attributes in the constructor"," *"," * @module attribute"," * @submodule attribute-complex"," * @for Attribute"," */",""," var O = Y.Object,"," DOT = \".\";",""," Y.Attribute.Complex = function() {};"," Y.Attribute.Complex.prototype = {",""," /**"," * Utility method to split out simple attribute name/value pairs (\"x\") "," * from complex attribute name/value pairs (\"x.y.z\"), so that complex"," * attributes can be keyed by the top level attribute name."," *"," * @method _normAttrVals"," * @param {Object} valueHash An object with attribute name/value pairs"," *"," * @return {Object} An object literal with 2 properties - \"simple\" and \"complex\","," * containing simple and complex attribute values respectively keyed "," * by the top level attribute name, or null, if valueHash is falsey."," *"," * @private"," */"," _normAttrVals : function(valueHash) {"," var vals = {},"," subvals = {},"," path,"," attr,"," v, k;",""," if (valueHash) {"," for (k in valueHash) {"," if (valueHash.hasOwnProperty(k)) {"," if (k.indexOf(DOT) !== -1) {"," path = k.split(DOT);"," attr = path.shift();"," v = subvals[attr] = subvals[attr] || [];"," v[v.length] = {"," path : path,"," value: valueHash[k]"," };"," } else {"," vals[k] = valueHash[k];"," }"," }"," }"," return { simple:vals, complex:subvals };"," } else {"," return null;"," }"," },",""," /**"," * Returns the initial value of the given attribute from"," * either the default configuration provided, or the "," * over-ridden value if it exists in the set of initValues "," * provided and the attribute is not read-only."," *"," * @param {String} attr The name of the attribute"," * @param {Object} cfg The attribute configuration object"," * @param {Object} initValues The object with simple and complex attribute name/value pairs returned from _normAttrVals"," *"," * @return {Any} The initial value of the attribute."," *"," * @method _getAttrInitVal"," * @private"," */"," _getAttrInitVal : function(attr, cfg, initValues) {",""," var val = cfg.value,"," valFn = cfg.valueFn,"," tmpVal,"," initValSet = false,"," simple,"," complex,"," i,"," l,"," path,"," subval,"," subvals;",""," if (!cfg.readOnly && initValues) {"," // Simple Attributes"," simple = initValues.simple;"," if (simple && simple.hasOwnProperty(attr)) {"," val = simple[attr];"," initValSet = true;"," }"," }",""," if (valFn && !initValSet) {"," if (!valFn.call) {"," valFn = this[valFn];"," }"," if (valFn) {"," tmpVal = valFn.call(this, attr);"," val = tmpVal;"," }"," }",""," if (!cfg.readOnly && initValues) {",""," // Complex Attributes (complex values applied, after simple, in case both are set)"," complex = initValues.complex;",""," if (complex && complex.hasOwnProperty(attr) && (val !== undefined) && (val !== null)) {"," subvals = complex[attr];"," for (i = 0, l = subvals.length; i < l; ++i) {"," path = subvals[i].path;"," subval = subvals[i].value;"," O.setValue(val, path, subval);"," }"," }"," }",""," return val;"," }"," };",""," Y.mix(Y.Attribute, Y.Attribute.Complex, true, null, 1);",""," // Consistency with the rest of the Attribute addons for now. "," Y.AttributeComplex = Y.Attribute.Complex;","","","}, '3.7.3', {\"requires\": [\"attribute-base\"]});"]; -_yuitest_coverage["build/attribute-complex/attribute-complex.js"].lines = {"1":0,"11":0,"14":0,"15":0,"32":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"50":0,"54":0,"56":0,"77":0,"89":0,"91":0,"92":0,"93":0,"94":0,"98":0,"99":0,"100":0,"102":0,"103":0,"104":0,"108":0,"111":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"123":0,"127":0,"130":0}; -_yuitest_coverage["build/attribute-complex/attribute-complex.js"].functions = {"_normAttrVals:31":0,"_getAttrInitVal:75":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/attribute-complex/attribute-complex.js"].coveredLines = 39; -_yuitest_coverage["build/attribute-complex/attribute-complex.js"].coveredFunctions = 3; -_yuitest_coverline("build/attribute-complex/attribute-complex.js", 1); -YUI.add('attribute-complex', function (Y, NAME) { - - /** - * Adds support for attribute providers to handle complex attributes in the constructor - * - * @module attribute - * @submodule attribute-complex - * @for Attribute - */ - - _yuitest_coverfunc("build/attribute-complex/attribute-complex.js", "(anonymous 1)", 1); -_yuitest_coverline("build/attribute-complex/attribute-complex.js", 11); -var O = Y.Object, - DOT = "."; - - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 14); -Y.Attribute.Complex = function() {}; - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 15); -Y.Attribute.Complex.prototype = { - - /** - * Utility method to split out simple attribute name/value pairs ("x") - * from complex attribute name/value pairs ("x.y.z"), so that complex - * attributes can be keyed by the top level attribute name. - * - * @method _normAttrVals - * @param {Object} valueHash An object with attribute name/value pairs - * - * @return {Object} An object literal with 2 properties - "simple" and "complex", - * containing simple and complex attribute values respectively keyed - * by the top level attribute name, or null, if valueHash is falsey. - * - * @private - */ - _normAttrVals : function(valueHash) { - _yuitest_coverfunc("build/attribute-complex/attribute-complex.js", "_normAttrVals", 31); -_yuitest_coverline("build/attribute-complex/attribute-complex.js", 32); -var vals = {}, - subvals = {}, - path, - attr, - v, k; - - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 38); -if (valueHash) { - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 39); -for (k in valueHash) { - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 40); -if (valueHash.hasOwnProperty(k)) { - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 41); -if (k.indexOf(DOT) !== -1) { - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 42); -path = k.split(DOT); - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 43); -attr = path.shift(); - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 44); -v = subvals[attr] = subvals[attr] || []; - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 45); -v[v.length] = { - path : path, - value: valueHash[k] - }; - } else { - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 50); -vals[k] = valueHash[k]; - } - } - } - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 54); -return { simple:vals, complex:subvals }; - } else { - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 56); -return null; - } - }, - - /** - * Returns the initial value of the given attribute from - * either the default configuration provided, or the - * over-ridden value if it exists in the set of initValues - * provided and the attribute is not read-only. - * - * @param {String} attr The name of the attribute - * @param {Object} cfg The attribute configuration object - * @param {Object} initValues The object with simple and complex attribute name/value pairs returned from _normAttrVals - * - * @return {Any} The initial value of the attribute. - * - * @method _getAttrInitVal - * @private - */ - _getAttrInitVal : function(attr, cfg, initValues) { - - _yuitest_coverfunc("build/attribute-complex/attribute-complex.js", "_getAttrInitVal", 75); -_yuitest_coverline("build/attribute-complex/attribute-complex.js", 77); -var val = cfg.value, - valFn = cfg.valueFn, - tmpVal, - initValSet = false, - simple, - complex, - i, - l, - path, - subval, - subvals; - - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 89); -if (!cfg.readOnly && initValues) { - // Simple Attributes - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 91); -simple = initValues.simple; - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 92); -if (simple && simple.hasOwnProperty(attr)) { - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 93); -val = simple[attr]; - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 94); -initValSet = true; - } - } - - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 98); -if (valFn && !initValSet) { - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 99); -if (!valFn.call) { - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 100); -valFn = this[valFn]; - } - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 102); -if (valFn) { - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 103); -tmpVal = valFn.call(this, attr); - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 104); -val = tmpVal; - } - } - - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 108); -if (!cfg.readOnly && initValues) { - - // Complex Attributes (complex values applied, after simple, in case both are set) - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 111); -complex = initValues.complex; - - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 113); -if (complex && complex.hasOwnProperty(attr) && (val !== undefined) && (val !== null)) { - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 114); -subvals = complex[attr]; - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 115); -for (i = 0, l = subvals.length; i < l; ++i) { - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 116); -path = subvals[i].path; - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 117); -subval = subvals[i].value; - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 118); -O.setValue(val, path, subval); - } - } - } - - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 123); -return val; - } - }; - - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 127); -Y.mix(Y.Attribute, Y.Attribute.Complex, true, null, 1); - - // Consistency with the rest of the Attribute addons for now. - _yuitest_coverline("build/attribute-complex/attribute-complex.js", 130); -Y.AttributeComplex = Y.Attribute.Complex; - - -}, '3.7.3', {"requires": ["attribute-base"]}); diff --git a/lib/yuilib/3.7.3/build/attribute-complex/attribute-complex-debug.js b/lib/yuilib/3.7.3/build/attribute-complex/attribute-complex-debug.js deleted file mode 100644 index b25be6f42c4..00000000000 --- a/lib/yuilib/3.7.3/build/attribute-complex/attribute-complex-debug.js +++ /dev/null @@ -1,139 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add('attribute-complex', function (Y, NAME) { - - /** - * Adds support for attribute providers to handle complex attributes in the constructor - * - * @module attribute - * @submodule attribute-complex - * @for Attribute - */ - - var O = Y.Object, - DOT = "."; - - Y.Attribute.Complex = function() {}; - Y.Attribute.Complex.prototype = { - - /** - * Utility method to split out simple attribute name/value pairs ("x") - * from complex attribute name/value pairs ("x.y.z"), so that complex - * attributes can be keyed by the top level attribute name. - * - * @method _normAttrVals - * @param {Object} valueHash An object with attribute name/value pairs - * - * @return {Object} An object literal with 2 properties - "simple" and "complex", - * containing simple and complex attribute values respectively keyed - * by the top level attribute name, or null, if valueHash is falsey. - * - * @private - */ - _normAttrVals : function(valueHash) { - var vals = {}, - subvals = {}, - path, - attr, - v, k; - - if (valueHash) { - for (k in valueHash) { - if (valueHash.hasOwnProperty(k)) { - if (k.indexOf(DOT) !== -1) { - path = k.split(DOT); - attr = path.shift(); - v = subvals[attr] = subvals[attr] || []; - v[v.length] = { - path : path, - value: valueHash[k] - }; - } else { - vals[k] = valueHash[k]; - } - } - } - return { simple:vals, complex:subvals }; - } else { - return null; - } - }, - - /** - * Returns the initial value of the given attribute from - * either the default configuration provided, or the - * over-ridden value if it exists in the set of initValues - * provided and the attribute is not read-only. - * - * @param {String} attr The name of the attribute - * @param {Object} cfg The attribute configuration object - * @param {Object} initValues The object with simple and complex attribute name/value pairs returned from _normAttrVals - * - * @return {Any} The initial value of the attribute. - * - * @method _getAttrInitVal - * @private - */ - _getAttrInitVal : function(attr, cfg, initValues) { - - var val = cfg.value, - valFn = cfg.valueFn, - tmpVal, - initValSet = false, - simple, - complex, - i, - l, - path, - subval, - subvals; - - if (!cfg.readOnly && initValues) { - // Simple Attributes - simple = initValues.simple; - if (simple && simple.hasOwnProperty(attr)) { - val = simple[attr]; - initValSet = true; - } - } - - if (valFn && !initValSet) { - if (!valFn.call) { - valFn = this[valFn]; - } - if (valFn) { - tmpVal = valFn.call(this, attr); - val = tmpVal; - } - } - - if (!cfg.readOnly && initValues) { - - // Complex Attributes (complex values applied, after simple, in case both are set) - complex = initValues.complex; - - if (complex && complex.hasOwnProperty(attr) && (val !== undefined) && (val !== null)) { - subvals = complex[attr]; - for (i = 0, l = subvals.length; i < l; ++i) { - path = subvals[i].path; - subval = subvals[i].value; - O.setValue(val, path, subval); - } - } - } - - return val; - } - }; - - Y.mix(Y.Attribute, Y.Attribute.Complex, true, null, 1); - - // Consistency with the rest of the Attribute addons for now. - Y.AttributeComplex = Y.Attribute.Complex; - - -}, '3.7.3', {"requires": ["attribute-base"]}); diff --git a/lib/yuilib/3.7.3/build/attribute-complex/attribute-complex-min.js b/lib/yuilib/3.7.3/build/attribute-complex/attribute-complex-min.js deleted file mode 100644 index e8b036679e9..00000000000 --- a/lib/yuilib/3.7.3/build/attribute-complex/attribute-complex-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("attribute-complex",function(e,t){var n=e.Object,r=".";e.Attribute.Complex=function(){},e.Attribute.Complex.prototype={_normAttrVals:function(e){var t={},n={},i,s,o,u;if(e){for(u in e)e.hasOwnProperty(u)&&(u.indexOf(r)!==-1?(i=u.split(r),s=i.shift(),o=n[s]=n[s]||[],o[o.length]={path:i,value:e[u]}):t[u]=e[u]);return{simple:t,complex:n}}return null},_getAttrInitVal:function(e,t,r){var i=t.value,s=t.valueFn,o,u=!1,a,f,l,c,h,p,d;!t.readOnly&&r&&(a=r.simple,a&&a.hasOwnProperty(e)&&(i=a[e],u=!0)),s&&!u&&(s.call||(s=this[s]),s&&(o=s.call(this,e),i=o));if(!t.readOnly&&r){f=r.complex;if(f&&f.hasOwnProperty(e)&&i!==undefined&&i!==null){d=f[e];for(l=0,c=d.length;lset(\"x.y.z\", 5))."," *"," * @param {Any} value The value to set the attribute to."," *"," * @param {Object} opts (Optional) Optional event data to be mixed into"," * the event facade passed to subscribers of the attribute's change event. This "," * can be used as a flexible way to identify the source of a call to set, allowing "," * the developer to distinguish between set called internally by the host, vs. "," * set called externally by the application developer."," *"," * @return {Object} A reference to the host object."," */"," set : function(name, val, opts) {"," return this._setAttr(name, val, opts);"," },",""," /**"," * Allows setting of readOnly/writeOnce attributes. See set for argument details."," *"," * @method _set"," * @protected"," * @chainable"," * "," * @param {String} name The name of the attribute."," * @param {Any} val The value to set the attribute to."," * @param {Object} opts (Optional) Optional event data to be mixed into"," * the event facade passed to subscribers of the attribute's change event."," * @return {Object} A reference to the host object."," */"," _set : function(name, val, opts) {"," return this._setAttr(name, val, opts, true);"," },",""," /**"," * Sets multiple attribute values."," *"," * @method setAttrs"," * @param {Object} attrs An object with attributes name/value pairs."," * @param {Object} opts Properties to mix into the event payload. These are shared and mixed into each set "," * @return {Object} A reference to the host object."," * @chainable"," */"," setAttrs : function(attrs, opts) {"," return this._setAttrs(attrs, opts);"," },",""," /**"," * Implementation behind the public setAttrs method, to set multiple attribute values."," *"," * @method _setAttrs"," * @protected"," * @param {Object} attrs An object with attributes name/value pairs."," * @param {Object} opts Properties to mix into the event payload. These are shared and mixed into each set "," * @return {Object} A reference to the host object."," * @chainable"," */"," _setAttrs : function(attrs, opts) {"," var attr;"," for (attr in attrs) {"," if ( attrs.hasOwnProperty(attr) ) {"," this.set(attr, attrs[attr], opts);"," }"," }"," return this;"," },",""," /**"," * Utility method to help setup the event payload and fire the attribute change event."," * "," * @method _fireAttrChange"," * @private"," * @param {String} attrName The name of the attribute"," * @param {String} subAttrName The full path of the property being changed, "," * if this is a sub-attribute value being change. Otherwise null."," * @param {Any} currVal The current value of the attribute"," * @param {Any} newVal The new value of the attribute"," * @param {Object} opts Any additional event data to mix into the attribute change event's event facade."," */"," _fireAttrChange : function(attrName, subAttrName, currVal, newVal, opts) {"," var host = this,"," eventName = attrName + CHANGE,"," state = host._state,"," facade,"," broadcast,"," evtCfg;",""," if (!state.get(attrName, PUBLISHED)) {"," "," evtCfg = {"," queuable:false,"," defaultTargetOnly: true, "," defaultFn:host._defAttrChangeFn, "," silent:true"," };",""," broadcast = state.get(attrName, BROADCAST);"," if (broadcast !== undefined) {"," evtCfg.broadcast = broadcast;"," }",""," host.publish(eventName, evtCfg);"," "," state.add(attrName, PUBLISHED, true);"," }",""," facade = (opts) ? Y.merge(opts) : host._ATTR_E_FACADE;",""," // Not using the single object signature for fire({type:..., newVal:...}), since "," // we don't want to override type. Changed to the fire(type, {newVal:...}) signature.",""," // facade.type = eventName;"," facade.attrName = attrName;"," facade.subAttrName = subAttrName;"," facade.prevVal = currVal;"," facade.newVal = newVal;",""," // host.fire(facade);"," host.fire(eventName, facade);"," },",""," /**"," * Default function for attribute change events."," *"," * @private"," * @method _defAttrChangeFn"," * @param {EventFacade} e The event object for attribute change events."," */"," _defAttrChangeFn : function(e) {"," if (!this._setAttrVal(e.attrName, e.subAttrName, e.prevVal, e.newVal)) {"," // Prevent \"after\" listeners from being invoked since nothing changed."," e.stopImmediatePropagation();"," } else {"," e.newVal = this.get(e.attrName);"," }"," }"," };",""," // Basic prototype augment - no lazy constructor invocation."," Y.mix(AttributeEvents, EventTarget, false, null, 1);",""," Y.AttributeEvents = AttributeEvents;","","","}, '3.7.3', {\"requires\": [\"event-custom\"]});"]; -_yuitest_coverage["build/attribute-events/attribute-events.js"].lines = {"1":0,"20":0,"33":0,"35":0,"36":0,"39":0,"41":0,"64":0,"81":0,"94":0,"108":0,"109":0,"110":0,"111":0,"114":0,"130":0,"137":0,"139":0,"146":0,"147":0,"148":0,"151":0,"153":0,"156":0,"162":0,"163":0,"164":0,"165":0,"168":0,"179":0,"181":0,"183":0,"189":0,"191":0}; -_yuitest_coverage["build/attribute-events/attribute-events.js"].functions = {"AttributeEvents:33":0,"set:63":0,"_set:80":0,"setAttrs:93":0,"_setAttrs:107":0,"_fireAttrChange:129":0,"_defAttrChangeFn:178":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/attribute-events/attribute-events.js"].coveredLines = 34; -_yuitest_coverage["build/attribute-events/attribute-events.js"].coveredFunctions = 8; -_yuitest_coverline("build/attribute-events/attribute-events.js", 1); -YUI.add('attribute-events', function (Y, NAME) { - - /** - * The attribute module provides an augmentable Attribute implementation, which - * adds configurable attributes and attribute change events to the class being - * augmented. It also provides a State class, which is used internally by Attribute, - * but can also be used independently to provide a name/property/value data structure to - * store state. - * - * @module attribute - */ - - /** - * The attribute-events submodule provides augmentable attribute change event support - * for AttributeCore based implementations. - * - * @module attribute - * @submodule attribute-events - */ - _yuitest_coverfunc("build/attribute-events/attribute-events.js", "(anonymous 1)", 1); -_yuitest_coverline("build/attribute-events/attribute-events.js", 20); -var EventTarget = Y.EventTarget, - - CHANGE = "Change", - BROADCAST = "broadcast", - PUBLISHED = "published"; - - /** - * Provides an augmentable implementation of attribute change events for - * AttributeCore. - * - * @class AttributeEvents - * @uses EventTarget - */ - _yuitest_coverline("build/attribute-events/attribute-events.js", 33); -function AttributeEvents() { - // Perf tweak - avoid creating event literals if not required. - _yuitest_coverfunc("build/attribute-events/attribute-events.js", "AttributeEvents", 33); -_yuitest_coverline("build/attribute-events/attribute-events.js", 35); -this._ATTR_E_FACADE = {}; - _yuitest_coverline("build/attribute-events/attribute-events.js", 36); -EventTarget.call(this, {emitFacade:true}); - } - - _yuitest_coverline("build/attribute-events/attribute-events.js", 39); -AttributeEvents._ATTR_CFG = [BROADCAST]; - - _yuitest_coverline("build/attribute-events/attribute-events.js", 41); -AttributeEvents.prototype = { - - /** - * Sets the value of an attribute. - * - * @method set - * @chainable - * - * @param {String} name The name of the attribute. If the - * current value of the attribute is an Object, dot notation can be used - * to set the value of a property within the object (e.g. set("x.y.z", 5)). - * - * @param {Any} value The value to set the attribute to. - * - * @param {Object} opts (Optional) Optional event data to be mixed into - * the event facade passed to subscribers of the attribute's change event. This - * can be used as a flexible way to identify the source of a call to set, allowing - * the developer to distinguish between set called internally by the host, vs. - * set called externally by the application developer. - * - * @return {Object} A reference to the host object. - */ - set : function(name, val, opts) { - _yuitest_coverfunc("build/attribute-events/attribute-events.js", "set", 63); -_yuitest_coverline("build/attribute-events/attribute-events.js", 64); -return this._setAttr(name, val, opts); - }, - - /** - * Allows setting of readOnly/writeOnce attributes. See set for argument details. - * - * @method _set - * @protected - * @chainable - * - * @param {String} name The name of the attribute. - * @param {Any} val The value to set the attribute to. - * @param {Object} opts (Optional) Optional event data to be mixed into - * the event facade passed to subscribers of the attribute's change event. - * @return {Object} A reference to the host object. - */ - _set : function(name, val, opts) { - _yuitest_coverfunc("build/attribute-events/attribute-events.js", "_set", 80); -_yuitest_coverline("build/attribute-events/attribute-events.js", 81); -return this._setAttr(name, val, opts, true); - }, - - /** - * Sets multiple attribute values. - * - * @method setAttrs - * @param {Object} attrs An object with attributes name/value pairs. - * @param {Object} opts Properties to mix into the event payload. These are shared and mixed into each set - * @return {Object} A reference to the host object. - * @chainable - */ - setAttrs : function(attrs, opts) { - _yuitest_coverfunc("build/attribute-events/attribute-events.js", "setAttrs", 93); -_yuitest_coverline("build/attribute-events/attribute-events.js", 94); -return this._setAttrs(attrs, opts); - }, - - /** - * Implementation behind the public setAttrs method, to set multiple attribute values. - * - * @method _setAttrs - * @protected - * @param {Object} attrs An object with attributes name/value pairs. - * @param {Object} opts Properties to mix into the event payload. These are shared and mixed into each set - * @return {Object} A reference to the host object. - * @chainable - */ - _setAttrs : function(attrs, opts) { - _yuitest_coverfunc("build/attribute-events/attribute-events.js", "_setAttrs", 107); -_yuitest_coverline("build/attribute-events/attribute-events.js", 108); -var attr; - _yuitest_coverline("build/attribute-events/attribute-events.js", 109); -for (attr in attrs) { - _yuitest_coverline("build/attribute-events/attribute-events.js", 110); -if ( attrs.hasOwnProperty(attr) ) { - _yuitest_coverline("build/attribute-events/attribute-events.js", 111); -this.set(attr, attrs[attr], opts); - } - } - _yuitest_coverline("build/attribute-events/attribute-events.js", 114); -return this; - }, - - /** - * Utility method to help setup the event payload and fire the attribute change event. - * - * @method _fireAttrChange - * @private - * @param {String} attrName The name of the attribute - * @param {String} subAttrName The full path of the property being changed, - * if this is a sub-attribute value being change. Otherwise null. - * @param {Any} currVal The current value of the attribute - * @param {Any} newVal The new value of the attribute - * @param {Object} opts Any additional event data to mix into the attribute change event's event facade. - */ - _fireAttrChange : function(attrName, subAttrName, currVal, newVal, opts) { - _yuitest_coverfunc("build/attribute-events/attribute-events.js", "_fireAttrChange", 129); -_yuitest_coverline("build/attribute-events/attribute-events.js", 130); -var host = this, - eventName = attrName + CHANGE, - state = host._state, - facade, - broadcast, - evtCfg; - - _yuitest_coverline("build/attribute-events/attribute-events.js", 137); -if (!state.get(attrName, PUBLISHED)) { - - _yuitest_coverline("build/attribute-events/attribute-events.js", 139); -evtCfg = { - queuable:false, - defaultTargetOnly: true, - defaultFn:host._defAttrChangeFn, - silent:true - }; - - _yuitest_coverline("build/attribute-events/attribute-events.js", 146); -broadcast = state.get(attrName, BROADCAST); - _yuitest_coverline("build/attribute-events/attribute-events.js", 147); -if (broadcast !== undefined) { - _yuitest_coverline("build/attribute-events/attribute-events.js", 148); -evtCfg.broadcast = broadcast; - } - - _yuitest_coverline("build/attribute-events/attribute-events.js", 151); -host.publish(eventName, evtCfg); - - _yuitest_coverline("build/attribute-events/attribute-events.js", 153); -state.add(attrName, PUBLISHED, true); - } - - _yuitest_coverline("build/attribute-events/attribute-events.js", 156); -facade = (opts) ? Y.merge(opts) : host._ATTR_E_FACADE; - - // Not using the single object signature for fire({type:..., newVal:...}), since - // we don't want to override type. Changed to the fire(type, {newVal:...}) signature. - - // facade.type = eventName; - _yuitest_coverline("build/attribute-events/attribute-events.js", 162); -facade.attrName = attrName; - _yuitest_coverline("build/attribute-events/attribute-events.js", 163); -facade.subAttrName = subAttrName; - _yuitest_coverline("build/attribute-events/attribute-events.js", 164); -facade.prevVal = currVal; - _yuitest_coverline("build/attribute-events/attribute-events.js", 165); -facade.newVal = newVal; - - // host.fire(facade); - _yuitest_coverline("build/attribute-events/attribute-events.js", 168); -host.fire(eventName, facade); - }, - - /** - * Default function for attribute change events. - * - * @private - * @method _defAttrChangeFn - * @param {EventFacade} e The event object for attribute change events. - */ - _defAttrChangeFn : function(e) { - _yuitest_coverfunc("build/attribute-events/attribute-events.js", "_defAttrChangeFn", 178); -_yuitest_coverline("build/attribute-events/attribute-events.js", 179); -if (!this._setAttrVal(e.attrName, e.subAttrName, e.prevVal, e.newVal)) { - // Prevent "after" listeners from being invoked since nothing changed. - _yuitest_coverline("build/attribute-events/attribute-events.js", 181); -e.stopImmediatePropagation(); - } else { - _yuitest_coverline("build/attribute-events/attribute-events.js", 183); -e.newVal = this.get(e.attrName); - } - } - }; - - // Basic prototype augment - no lazy constructor invocation. - _yuitest_coverline("build/attribute-events/attribute-events.js", 189); -Y.mix(AttributeEvents, EventTarget, false, null, 1); - - _yuitest_coverline("build/attribute-events/attribute-events.js", 191); -Y.AttributeEvents = AttributeEvents; - - -}, '3.7.3', {"requires": ["event-custom"]}); diff --git a/lib/yuilib/3.7.3/build/attribute-events/attribute-events-min.js b/lib/yuilib/3.7.3/build/attribute-events/attribute-events-min.js deleted file mode 100644 index 916bd7856b7..00000000000 --- a/lib/yuilib/3.7.3/build/attribute-events/attribute-events-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("attribute-events",function(e,t){function o(){this._ATTR_E_FACADE={},n.call(this,{emitFacade:!0})}var n=e.EventTarget,r="Change",i="broadcast",s="published";o._ATTR_CFG=[i],o.prototype={set:function(e,t,n){return this._setAttr(e,t,n)},_set:function(e,t,n){return this._setAttr(e,t,n,!0)},setAttrs:function(e,t){return this._setAttrs(e,t)},_setAttrs:function(e,t){var n;for(n in e)e.hasOwnProperty(n)&&this.set(n,e[n],t);return this},_fireAttrChange:function(t,n,o,u,a){var f=this,l=t+r,c=f._state,h,p,d;c.get(t,s)||(d={queuable:!1,defaultTargetOnly:!0,defaultFn:f._defAttrChangeFn,silent:!0},p=c.get(t,i),p!==undefined&&(d.broadcast=p),f.publish(l,d),c.add(t,s,!0)),h=a?e.merge(a):f._ATTR_E_FACADE,h.attrName=t,h.subAttrName=n,h.prevVal=o,h.newVal=u,f.fire(l,h)},_defAttrChangeFn:function(e){this._setAttrVal(e.attrName,e.subAttrName,e.prevVal,e.newVal)?e.newVal=this.get(e.attrName):e.stopImmediatePropagation()}},e.mix(o,n,!1,null,1),e.AttributeEvents=o},"3.7.3",{requires:["event-custom"]}); diff --git a/lib/yuilib/3.7.3/build/base-base/base-base-coverage.js b/lib/yuilib/3.7.3/build/base-base/base-base-coverage.js deleted file mode 100644 index a06ecbb5f07..00000000000 --- a/lib/yuilib/3.7.3/build/base-base/base-base-coverage.js +++ /dev/null @@ -1,437 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -if (typeof _yuitest_coverage == "undefined"){ - _yuitest_coverage = {}; - _yuitest_coverline = function(src, line){ - var coverage = _yuitest_coverage[src]; - if (!coverage.lines[line]){ - coverage.calledLines++; - } - coverage.lines[line]++; - }; - _yuitest_coverfunc = function(src, name, line){ - var coverage = _yuitest_coverage[src], - funcId = name + ":" + line; - if (!coverage.functions[funcId]){ - coverage.calledFunctions++; - } - coverage.functions[funcId]++; - }; -} -_yuitest_coverage["build/base-base/base-base.js"] = { - lines: {}, - functions: {}, - coveredLines: 0, - calledLines: 0, - coveredFunctions: 0, - calledFunctions: 0, - path: "build/base-base/base-base.js", - code: [] -}; -_yuitest_coverage["build/base-base/base-base.js"].code=["YUI.add('base-base', function (Y, NAME) {",""," /**"," * The base module provides the Base class, which objects requiring attribute and custom event support can extend. "," * The module also provides two ways to reuse code - It augments Base with the Plugin.Host interface which provides "," * plugin support and also provides the BaseCore.build method which provides a way to build custom classes using extensions."," *"," * @module base"," */",""," /**"," * The base-base submodule provides the Base class without the Plugin support, provided by Plugin.Host, "," * and without the extension support provided by BaseCore.build."," *"," * @module base"," * @submodule base-base"," */",""," /**"," * The base module provides the Base class, which objects requiring attribute and custom event support can extend. "," * The module also provides two ways to reuse code - It augments Base with the Plugin.Host interface which provides "," * plugin support and also provides the Base.build method which provides a way to build custom classes using extensions."," *"," * @module base"," */",""," /**"," * The base-base submodule provides the Base class without the Plugin support, provided by Plugin.Host, "," * and without the extension support provided by Base.build."," *"," * @module base"," * @submodule base-base"," */"," var L = Y.Lang,",""," DESTROY = \"destroy\","," INIT = \"init\",",""," BUBBLETARGETS = \"bubbleTargets\","," _BUBBLETARGETS = \"_bubbleTargets\",",""," BaseCore = Y.BaseCore,"," AttributeCore = Y.AttributeCore,"," Attribute = Y.Attribute;",""," /**"," *

"," * A base class which objects requiring attributes and custom event support can "," * extend. Base also handles the chaining of initializer and destructor methods across "," * the hierarchy as part of object construction and destruction. Additionally, attributes configured "," * through the static ATTRS property for each class "," * in the hierarchy will be initialized by Base."," *

"," *"," *

"," * The static NAME property of each class extending "," * from Base will be used as the identifier for the class, and is used by Base to prefix "," * all events fired by instances of that class."," *

"," *"," * @class Base"," * @constructor"," * @uses BaseCore"," * @uses Attribute"," * @uses AttributeCore"," * @uses AttributeEvents"," * @uses AttributeExtras"," * @uses EventTarget"," *"," * @param {Object} config Object with configuration property name/value pairs. The object can be "," * used to provide default values for the objects published attributes."," *"," *

"," * The config object can also contain the following non-attribute properties, providing a convenient "," * way to configure events listeners and plugins for the instance, as part of the constructor call:"," *

"," *"," *
"," *
on
"," *
An event name to listener function map, to register event listeners for the \"on\" moment of the event. A constructor convenience property for the on method.
"," *
after
"," *
An event name to listener function map, to register event listeners for the \"after\" moment of the event. A constructor convenience property for the after method.
"," *
bubbleTargets
"," *
An object, or array of objects, to register as bubble targets for bubbled events fired by this instance. A constructor convenience property for the addTarget method.
"," *
plugins
"," *
A plugin, or array of plugins to be plugged into the instance (see PluginHost's plug method for signature details). A constructor convenience property for the plug method.
"," *
"," */"," function Base() {"," BaseCore.apply(this, arguments);"," }",""," /**"," * The list of properties which can be configured for "," * each attribute (e.g. setter, getter, writeOnce, readOnly etc.)"," *"," * @property _ATTR_CFG"," * @type Array"," * @static"," * @private"," */"," Base._ATTR_CFG = Attribute._ATTR_CFG.concat(\"cloneDefaultValue\");"," Base._ATTR_CFG_HASH = Y.Array.hash(Base._ATTR_CFG);",""," /**"," * The array of non-attribute configuration properties supported by this class. "," * "," * `Base` supports \"on\", \"after\", \"plugins\" and \"bubbleTargets\" properties, "," * which are not set up as attributes. "," *"," * This property is primarily required so that when "," * `_allowAdHocAttrs` is enabled by"," * a class, non-attribute configurations don't get added as ad-hoc attributes. "," *"," * @property _NON_ATTRS_CFG"," * @type Array"," * @static"," * @private"," */"," Base._NON_ATTRS_CFG = BaseCore._NON_ATTRS_CFG.concat([\"on\", \"after\", \"bubbleTargets\"]);",""," /**"," *

"," * The string to be used to identify instances of "," * this class, for example in prefixing events."," *

"," *

"," * Classes extending Base, should define their own"," * static NAME property, which should be camelCase by"," * convention (e.g. MyClass.NAME = \"myClass\";)."," *

"," * @property NAME"," * @type String"," * @static"," */"," Base.NAME = \"base\";",""," /**"," * The default set of attributes which will be available for instances of this class, and "," * their configuration. In addition to the configuration properties listed by "," * Attribute's addAttr method, the attribute "," * can also be configured with a \"cloneDefaultValue\" property, which defines how the statically"," * defined value field should be protected (\"shallow\", \"deep\" and false are supported values). "," *"," * By default if the value is an object literal or an array it will be \"shallow\" cloned, to "," * protect the default value."," *"," * @property ATTRS"," * @type Object"," * @static"," */"," Base.ATTRS = AttributeCore.prototype._protectAttrs(BaseCore.ATTRS);",""," Base.prototype = {",""," /**"," * Internal construction logic for Base."," *"," * @method _initBase"," * @param {Object} config The constructor configuration object"," * @private"," */"," _initBase: function(cfg) {",""," this._eventPrefix = this.constructor.EVENT_PREFIX || this.constructor.NAME;",""," Y.BaseCore.prototype._initBase.call(this, cfg);"," },",""," /**"," * Initializes Attribute "," * "," * @method _initAttribute"," * @private"," */"," _initAttribute: function(cfg) {"," Attribute.call(this);"," this._yuievt.config.prefix = this._eventPrefix;"," },",""," /**"," * Utility method to define the attribute hash used to filter/whitelist property mixes for "," * this class. "," * "," * @method _attrCfgHash"," * @private"," */"," _attrCfgHash: function() {"," return Base._ATTR_CFG_HASH;"," },",""," /**"," * Init lifecycle method, invoked during construction."," * Fires the init event prior to setting up attributes and "," * invoking initializers for the class hierarchy."," *"," * @method init"," * @chainable"," * @param {Object} config Object with configuration property name/value pairs"," * @return {Base} A reference to this object"," */"," init: function(config) {"," /**"," *

"," * Lifecycle event for the init phase, fired prior to initialization. "," * Invoking the preventDefault() method on the event object provided "," * to subscribers will prevent initialization from occuring."," *

"," *

"," * Subscribers to the \"after\" momemt of this event, will be notified"," * after initialization of the object is complete (and therefore"," * cannot prevent initialization)."," *

"," *"," * @event init"," * @preventable _defInitFn"," * @param {EventFacade} e Event object, with a cfg property which "," * refers to the configuration object passed to the constructor."," */"," this.publish(INIT, {"," queuable:false,"," fireOnce:true,"," defaultTargetOnly:true,"," defaultFn:this._defInitFn"," });",""," this._preInitEventCfg(config);",""," this.fire(INIT, {cfg: config});",""," return this;"," },",""," /**"," * Handles the special on, after and target properties which allow the user to"," * easily configure on and after listeners as well as bubble targets during "," * construction, prior to init."," *"," * @private"," * @method _preInitEventCfg"," * @param {Object} config The user configuration object"," */"," _preInitEventCfg : function(config) {"," if (config) {"," if (config.on) {"," this.on(config.on);"," }"," if (config.after) {"," this.after(config.after);"," }"," }",""," var i, l, target,"," userTargets = (config && BUBBLETARGETS in config);",""," if (userTargets || _BUBBLETARGETS in this) {"," target = userTargets ? (config && config.bubbleTargets) : this._bubbleTargets;"," if (L.isArray(target)) {"," for (i = 0, l = target.length; i < l; i++) { "," this.addTarget(target[i]);"," }"," } else if (target) {"," this.addTarget(target);"," }"," }"," },",""," /**"," *

"," * Destroy lifecycle method. Fires the destroy"," * event, prior to invoking destructors for the"," * class hierarchy."," *

"," *

"," * Subscribers to the destroy"," * event can invoke preventDefault on the event object, to prevent destruction"," * from proceeding."," *

"," * @method destroy"," * @return {Base} A reference to this object"," * @chainable"," */"," destroy: function() {",""," /**"," *

"," * Lifecycle event for the destroy phase, "," * fired prior to destruction. Invoking the preventDefault "," * method on the event object provided to subscribers will "," * prevent destruction from proceeding."," *

"," *

"," * Subscribers to the \"after\" moment of this event, will be notified"," * after destruction is complete (and as a result cannot prevent"," * destruction)."," *

"," * @event destroy"," * @preventable _defDestroyFn"," * @param {EventFacade} e Event object"," */"," this.publish(DESTROY, {"," queuable:false,"," fireOnce:true,"," defaultTargetOnly:true,"," defaultFn: this._defDestroyFn"," });"," this.fire(DESTROY);",""," this.detachAll();"," return this;"," },",""," /**"," * Default init event handler"," *"," * @method _defInitFn"," * @param {EventFacade} e Event object, with a cfg property which "," * refers to the configuration object passed to the constructor."," * @protected"," */"," _defInitFn : function(e) {"," this._baseInit(e.cfg);"," },",""," /**"," * Default destroy event handler"," *"," * @method _defDestroyFn"," * @param {EventFacade} e Event object"," * @protected"," */"," _defDestroyFn : function(e) {"," this._baseDestroy(e.cfg);"," }"," };",""," Y.mix(Base, Attribute, false, null, 1);"," Y.mix(Base, BaseCore, false, null, 1);",""," // Fix constructor"," Base.prototype.constructor = Base;",""," Y.Base = Base;","","","}, '3.7.3', {\"requires\": [\"base-core\", \"attribute-base\"]});"]; -_yuitest_coverage["build/base-base/base-base.js"].lines = {"1":0,"34":0,"89":0,"90":0,"102":0,"103":0,"120":0,"136":0,"152":0,"154":0,"165":0,"167":0,"177":0,"178":0,"189":0,"220":0,"227":0,"229":0,"231":0,"244":0,"245":0,"246":0,"248":0,"249":0,"253":0,"256":0,"257":0,"258":0,"259":0,"260":0,"262":0,"263":0,"301":0,"307":0,"309":0,"310":0,"322":0,"333":0,"337":0,"338":0,"341":0,"343":0}; -_yuitest_coverage["build/base-base/base-base.js"].functions = {"Base:89":0,"_initBase:163":0,"_initAttribute:176":0,"_attrCfgHash:188":0,"init:202":0,"_preInitEventCfg:243":0,"destroy:283":0,"_defInitFn:321":0,"_defDestroyFn:332":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/base-base/base-base.js"].coveredLines = 42; -_yuitest_coverage["build/base-base/base-base.js"].coveredFunctions = 10; -_yuitest_coverline("build/base-base/base-base.js", 1); -YUI.add('base-base', function (Y, NAME) { - - /** - * The base module provides the Base class, which objects requiring attribute and custom event support can extend. - * The module also provides two ways to reuse code - It augments Base with the Plugin.Host interface which provides - * plugin support and also provides the BaseCore.build method which provides a way to build custom classes using extensions. - * - * @module base - */ - - /** - * The base-base submodule provides the Base class without the Plugin support, provided by Plugin.Host, - * and without the extension support provided by BaseCore.build. - * - * @module base - * @submodule base-base - */ - - /** - * The base module provides the Base class, which objects requiring attribute and custom event support can extend. - * The module also provides two ways to reuse code - It augments Base with the Plugin.Host interface which provides - * plugin support and also provides the Base.build method which provides a way to build custom classes using extensions. - * - * @module base - */ - - /** - * The base-base submodule provides the Base class without the Plugin support, provided by Plugin.Host, - * and without the extension support provided by Base.build. - * - * @module base - * @submodule base-base - */ - _yuitest_coverfunc("build/base-base/base-base.js", "(anonymous 1)", 1); -_yuitest_coverline("build/base-base/base-base.js", 34); -var L = Y.Lang, - - DESTROY = "destroy", - INIT = "init", - - BUBBLETARGETS = "bubbleTargets", - _BUBBLETARGETS = "_bubbleTargets", - - BaseCore = Y.BaseCore, - AttributeCore = Y.AttributeCore, - Attribute = Y.Attribute; - - /** - *

- * A base class which objects requiring attributes and custom event support can - * extend. Base also handles the chaining of initializer and destructor methods across - * the hierarchy as part of object construction and destruction. Additionally, attributes configured - * through the static ATTRS property for each class - * in the hierarchy will be initialized by Base. - *

- * - *

- * The static NAME property of each class extending - * from Base will be used as the identifier for the class, and is used by Base to prefix - * all events fired by instances of that class. - *

- * - * @class Base - * @constructor - * @uses BaseCore - * @uses Attribute - * @uses AttributeCore - * @uses AttributeEvents - * @uses AttributeExtras - * @uses EventTarget - * - * @param {Object} config Object with configuration property name/value pairs. The object can be - * used to provide default values for the objects published attributes. - * - *

- * The config object can also contain the following non-attribute properties, providing a convenient - * way to configure events listeners and plugins for the instance, as part of the constructor call: - *

- * - *
- *
on
- *
An event name to listener function map, to register event listeners for the "on" moment of the event. A constructor convenience property for the on method.
- *
after
- *
An event name to listener function map, to register event listeners for the "after" moment of the event. A constructor convenience property for the after method.
- *
bubbleTargets
- *
An object, or array of objects, to register as bubble targets for bubbled events fired by this instance. A constructor convenience property for the addTarget method.
- *
plugins
- *
A plugin, or array of plugins to be plugged into the instance (see PluginHost's plug method for signature details). A constructor convenience property for the plug method.
- *
- */ - _yuitest_coverline("build/base-base/base-base.js", 89); -function Base() { - _yuitest_coverfunc("build/base-base/base-base.js", "Base", 89); -_yuitest_coverline("build/base-base/base-base.js", 90); -BaseCore.apply(this, arguments); - } - - /** - * The list of properties which can be configured for - * each attribute (e.g. setter, getter, writeOnce, readOnly etc.) - * - * @property _ATTR_CFG - * @type Array - * @static - * @private - */ - _yuitest_coverline("build/base-base/base-base.js", 102); -Base._ATTR_CFG = Attribute._ATTR_CFG.concat("cloneDefaultValue"); - _yuitest_coverline("build/base-base/base-base.js", 103); -Base._ATTR_CFG_HASH = Y.Array.hash(Base._ATTR_CFG); - - /** - * The array of non-attribute configuration properties supported by this class. - * - * `Base` supports "on", "after", "plugins" and "bubbleTargets" properties, - * which are not set up as attributes. - * - * This property is primarily required so that when - * `_allowAdHocAttrs` is enabled by - * a class, non-attribute configurations don't get added as ad-hoc attributes. - * - * @property _NON_ATTRS_CFG - * @type Array - * @static - * @private - */ - _yuitest_coverline("build/base-base/base-base.js", 120); -Base._NON_ATTRS_CFG = BaseCore._NON_ATTRS_CFG.concat(["on", "after", "bubbleTargets"]); - - /** - *

- * The string to be used to identify instances of - * this class, for example in prefixing events. - *

- *

- * Classes extending Base, should define their own - * static NAME property, which should be camelCase by - * convention (e.g. MyClass.NAME = "myClass";). - *

- * @property NAME - * @type String - * @static - */ - _yuitest_coverline("build/base-base/base-base.js", 136); -Base.NAME = "base"; - - /** - * The default set of attributes which will be available for instances of this class, and - * their configuration. In addition to the configuration properties listed by - * Attribute's addAttr method, the attribute - * can also be configured with a "cloneDefaultValue" property, which defines how the statically - * defined value field should be protected ("shallow", "deep" and false are supported values). - * - * By default if the value is an object literal or an array it will be "shallow" cloned, to - * protect the default value. - * - * @property ATTRS - * @type Object - * @static - */ - _yuitest_coverline("build/base-base/base-base.js", 152); -Base.ATTRS = AttributeCore.prototype._protectAttrs(BaseCore.ATTRS); - - _yuitest_coverline("build/base-base/base-base.js", 154); -Base.prototype = { - - /** - * Internal construction logic for Base. - * - * @method _initBase - * @param {Object} config The constructor configuration object - * @private - */ - _initBase: function(cfg) { - - _yuitest_coverfunc("build/base-base/base-base.js", "_initBase", 163); -_yuitest_coverline("build/base-base/base-base.js", 165); -this._eventPrefix = this.constructor.EVENT_PREFIX || this.constructor.NAME; - - _yuitest_coverline("build/base-base/base-base.js", 167); -Y.BaseCore.prototype._initBase.call(this, cfg); - }, - - /** - * Initializes Attribute - * - * @method _initAttribute - * @private - */ - _initAttribute: function(cfg) { - _yuitest_coverfunc("build/base-base/base-base.js", "_initAttribute", 176); -_yuitest_coverline("build/base-base/base-base.js", 177); -Attribute.call(this); - _yuitest_coverline("build/base-base/base-base.js", 178); -this._yuievt.config.prefix = this._eventPrefix; - }, - - /** - * Utility method to define the attribute hash used to filter/whitelist property mixes for - * this class. - * - * @method _attrCfgHash - * @private - */ - _attrCfgHash: function() { - _yuitest_coverfunc("build/base-base/base-base.js", "_attrCfgHash", 188); -_yuitest_coverline("build/base-base/base-base.js", 189); -return Base._ATTR_CFG_HASH; - }, - - /** - * Init lifecycle method, invoked during construction. - * Fires the init event prior to setting up attributes and - * invoking initializers for the class hierarchy. - * - * @method init - * @chainable - * @param {Object} config Object with configuration property name/value pairs - * @return {Base} A reference to this object - */ - init: function(config) { - /** - *

- * Lifecycle event for the init phase, fired prior to initialization. - * Invoking the preventDefault() method on the event object provided - * to subscribers will prevent initialization from occuring. - *

- *

- * Subscribers to the "after" momemt of this event, will be notified - * after initialization of the object is complete (and therefore - * cannot prevent initialization). - *

- * - * @event init - * @preventable _defInitFn - * @param {EventFacade} e Event object, with a cfg property which - * refers to the configuration object passed to the constructor. - */ - _yuitest_coverfunc("build/base-base/base-base.js", "init", 202); -_yuitest_coverline("build/base-base/base-base.js", 220); -this.publish(INIT, { - queuable:false, - fireOnce:true, - defaultTargetOnly:true, - defaultFn:this._defInitFn - }); - - _yuitest_coverline("build/base-base/base-base.js", 227); -this._preInitEventCfg(config); - - _yuitest_coverline("build/base-base/base-base.js", 229); -this.fire(INIT, {cfg: config}); - - _yuitest_coverline("build/base-base/base-base.js", 231); -return this; - }, - - /** - * Handles the special on, after and target properties which allow the user to - * easily configure on and after listeners as well as bubble targets during - * construction, prior to init. - * - * @private - * @method _preInitEventCfg - * @param {Object} config The user configuration object - */ - _preInitEventCfg : function(config) { - _yuitest_coverfunc("build/base-base/base-base.js", "_preInitEventCfg", 243); -_yuitest_coverline("build/base-base/base-base.js", 244); -if (config) { - _yuitest_coverline("build/base-base/base-base.js", 245); -if (config.on) { - _yuitest_coverline("build/base-base/base-base.js", 246); -this.on(config.on); - } - _yuitest_coverline("build/base-base/base-base.js", 248); -if (config.after) { - _yuitest_coverline("build/base-base/base-base.js", 249); -this.after(config.after); - } - } - - _yuitest_coverline("build/base-base/base-base.js", 253); -var i, l, target, - userTargets = (config && BUBBLETARGETS in config); - - _yuitest_coverline("build/base-base/base-base.js", 256); -if (userTargets || _BUBBLETARGETS in this) { - _yuitest_coverline("build/base-base/base-base.js", 257); -target = userTargets ? (config && config.bubbleTargets) : this._bubbleTargets; - _yuitest_coverline("build/base-base/base-base.js", 258); -if (L.isArray(target)) { - _yuitest_coverline("build/base-base/base-base.js", 259); -for (i = 0, l = target.length; i < l; i++) { - _yuitest_coverline("build/base-base/base-base.js", 260); -this.addTarget(target[i]); - } - } else {_yuitest_coverline("build/base-base/base-base.js", 262); -if (target) { - _yuitest_coverline("build/base-base/base-base.js", 263); -this.addTarget(target); - }} - } - }, - - /** - *

- * Destroy lifecycle method. Fires the destroy - * event, prior to invoking destructors for the - * class hierarchy. - *

- *

- * Subscribers to the destroy - * event can invoke preventDefault on the event object, to prevent destruction - * from proceeding. - *

- * @method destroy - * @return {Base} A reference to this object - * @chainable - */ - destroy: function() { - - /** - *

- * Lifecycle event for the destroy phase, - * fired prior to destruction. Invoking the preventDefault - * method on the event object provided to subscribers will - * prevent destruction from proceeding. - *

- *

- * Subscribers to the "after" moment of this event, will be notified - * after destruction is complete (and as a result cannot prevent - * destruction). - *

- * @event destroy - * @preventable _defDestroyFn - * @param {EventFacade} e Event object - */ - _yuitest_coverfunc("build/base-base/base-base.js", "destroy", 283); -_yuitest_coverline("build/base-base/base-base.js", 301); -this.publish(DESTROY, { - queuable:false, - fireOnce:true, - defaultTargetOnly:true, - defaultFn: this._defDestroyFn - }); - _yuitest_coverline("build/base-base/base-base.js", 307); -this.fire(DESTROY); - - _yuitest_coverline("build/base-base/base-base.js", 309); -this.detachAll(); - _yuitest_coverline("build/base-base/base-base.js", 310); -return this; - }, - - /** - * Default init event handler - * - * @method _defInitFn - * @param {EventFacade} e Event object, with a cfg property which - * refers to the configuration object passed to the constructor. - * @protected - */ - _defInitFn : function(e) { - _yuitest_coverfunc("build/base-base/base-base.js", "_defInitFn", 321); -_yuitest_coverline("build/base-base/base-base.js", 322); -this._baseInit(e.cfg); - }, - - /** - * Default destroy event handler - * - * @method _defDestroyFn - * @param {EventFacade} e Event object - * @protected - */ - _defDestroyFn : function(e) { - _yuitest_coverfunc("build/base-base/base-base.js", "_defDestroyFn", 332); -_yuitest_coverline("build/base-base/base-base.js", 333); -this._baseDestroy(e.cfg); - } - }; - - _yuitest_coverline("build/base-base/base-base.js", 337); -Y.mix(Base, Attribute, false, null, 1); - _yuitest_coverline("build/base-base/base-base.js", 338); -Y.mix(Base, BaseCore, false, null, 1); - - // Fix constructor - _yuitest_coverline("build/base-base/base-base.js", 341); -Base.prototype.constructor = Base; - - _yuitest_coverline("build/base-base/base-base.js", 343); -Y.Base = Base; - - -}, '3.7.3', {"requires": ["base-core", "attribute-base"]}); diff --git a/lib/yuilib/3.7.3/build/base-base/base-base-debug.js b/lib/yuilib/3.7.3/build/base-base/base-base-debug.js deleted file mode 100644 index a44a22e07c1..00000000000 --- a/lib/yuilib/3.7.3/build/base-base/base-base-debug.js +++ /dev/null @@ -1,354 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add('base-base', function (Y, NAME) { - - /** - * The base module provides the Base class, which objects requiring attribute and custom event support can extend. - * The module also provides two ways to reuse code - It augments Base with the Plugin.Host interface which provides - * plugin support and also provides the BaseCore.build method which provides a way to build custom classes using extensions. - * - * @module base - */ - - /** - * The base-base submodule provides the Base class without the Plugin support, provided by Plugin.Host, - * and without the extension support provided by BaseCore.build. - * - * @module base - * @submodule base-base - */ - - /** - * The base module provides the Base class, which objects requiring attribute and custom event support can extend. - * The module also provides two ways to reuse code - It augments Base with the Plugin.Host interface which provides - * plugin support and also provides the Base.build method which provides a way to build custom classes using extensions. - * - * @module base - */ - - /** - * The base-base submodule provides the Base class without the Plugin support, provided by Plugin.Host, - * and without the extension support provided by Base.build. - * - * @module base - * @submodule base-base - */ - var L = Y.Lang, - - DESTROY = "destroy", - INIT = "init", - - BUBBLETARGETS = "bubbleTargets", - _BUBBLETARGETS = "_bubbleTargets", - - BaseCore = Y.BaseCore, - AttributeCore = Y.AttributeCore, - Attribute = Y.Attribute; - - /** - *

- * A base class which objects requiring attributes and custom event support can - * extend. Base also handles the chaining of initializer and destructor methods across - * the hierarchy as part of object construction and destruction. Additionally, attributes configured - * through the static ATTRS property for each class - * in the hierarchy will be initialized by Base. - *

- * - *

- * The static NAME property of each class extending - * from Base will be used as the identifier for the class, and is used by Base to prefix - * all events fired by instances of that class. - *

- * - * @class Base - * @constructor - * @uses BaseCore - * @uses Attribute - * @uses AttributeCore - * @uses AttributeEvents - * @uses AttributeExtras - * @uses EventTarget - * - * @param {Object} config Object with configuration property name/value pairs. The object can be - * used to provide default values for the objects published attributes. - * - *

- * The config object can also contain the following non-attribute properties, providing a convenient - * way to configure events listeners and plugins for the instance, as part of the constructor call: - *

- * - *
- *
on
- *
An event name to listener function map, to register event listeners for the "on" moment of the event. A constructor convenience property for the on method.
- *
after
- *
An event name to listener function map, to register event listeners for the "after" moment of the event. A constructor convenience property for the after method.
- *
bubbleTargets
- *
An object, or array of objects, to register as bubble targets for bubbled events fired by this instance. A constructor convenience property for the addTarget method.
- *
plugins
- *
A plugin, or array of plugins to be plugged into the instance (see PluginHost's plug method for signature details). A constructor convenience property for the plug method.
- *
- */ - function Base() { - BaseCore.apply(this, arguments); - } - - /** - * The list of properties which can be configured for - * each attribute (e.g. setter, getter, writeOnce, readOnly etc.) - * - * @property _ATTR_CFG - * @type Array - * @static - * @private - */ - Base._ATTR_CFG = Attribute._ATTR_CFG.concat("cloneDefaultValue"); - Base._ATTR_CFG_HASH = Y.Array.hash(Base._ATTR_CFG); - - /** - * The array of non-attribute configuration properties supported by this class. - * - * `Base` supports "on", "after", "plugins" and "bubbleTargets" properties, - * which are not set up as attributes. - * - * This property is primarily required so that when - * `_allowAdHocAttrs` is enabled by - * a class, non-attribute configurations don't get added as ad-hoc attributes. - * - * @property _NON_ATTRS_CFG - * @type Array - * @static - * @private - */ - Base._NON_ATTRS_CFG = BaseCore._NON_ATTRS_CFG.concat(["on", "after", "bubbleTargets"]); - - /** - *

- * The string to be used to identify instances of - * this class, for example in prefixing events. - *

- *

- * Classes extending Base, should define their own - * static NAME property, which should be camelCase by - * convention (e.g. MyClass.NAME = "myClass";). - *

- * @property NAME - * @type String - * @static - */ - Base.NAME = "base"; - - /** - * The default set of attributes which will be available for instances of this class, and - * their configuration. In addition to the configuration properties listed by - * Attribute's addAttr method, the attribute - * can also be configured with a "cloneDefaultValue" property, which defines how the statically - * defined value field should be protected ("shallow", "deep" and false are supported values). - * - * By default if the value is an object literal or an array it will be "shallow" cloned, to - * protect the default value. - * - * @property ATTRS - * @type Object - * @static - */ - Base.ATTRS = AttributeCore.prototype._protectAttrs(BaseCore.ATTRS); - - Base.prototype = { - - /** - * Internal construction logic for Base. - * - * @method _initBase - * @param {Object} config The constructor configuration object - * @private - */ - _initBase: function(cfg) { - Y.log('init called', 'life', 'base'); - - this._eventPrefix = this.constructor.EVENT_PREFIX || this.constructor.NAME; - - Y.BaseCore.prototype._initBase.call(this, cfg); - }, - - /** - * Initializes Attribute - * - * @method _initAttribute - * @private - */ - _initAttribute: function(cfg) { - Attribute.call(this); - this._yuievt.config.prefix = this._eventPrefix; - }, - - /** - * Utility method to define the attribute hash used to filter/whitelist property mixes for - * this class. - * - * @method _attrCfgHash - * @private - */ - _attrCfgHash: function() { - return Base._ATTR_CFG_HASH; - }, - - /** - * Init lifecycle method, invoked during construction. - * Fires the init event prior to setting up attributes and - * invoking initializers for the class hierarchy. - * - * @method init - * @chainable - * @param {Object} config Object with configuration property name/value pairs - * @return {Base} A reference to this object - */ - init: function(config) { - /** - *

- * Lifecycle event for the init phase, fired prior to initialization. - * Invoking the preventDefault() method on the event object provided - * to subscribers will prevent initialization from occuring. - *

- *

- * Subscribers to the "after" momemt of this event, will be notified - * after initialization of the object is complete (and therefore - * cannot prevent initialization). - *

- * - * @event init - * @preventable _defInitFn - * @param {EventFacade} e Event object, with a cfg property which - * refers to the configuration object passed to the constructor. - */ - this.publish(INIT, { - queuable:false, - fireOnce:true, - defaultTargetOnly:true, - defaultFn:this._defInitFn - }); - - this._preInitEventCfg(config); - - this.fire(INIT, {cfg: config}); - - return this; - }, - - /** - * Handles the special on, after and target properties which allow the user to - * easily configure on and after listeners as well as bubble targets during - * construction, prior to init. - * - * @private - * @method _preInitEventCfg - * @param {Object} config The user configuration object - */ - _preInitEventCfg : function(config) { - if (config) { - if (config.on) { - this.on(config.on); - } - if (config.after) { - this.after(config.after); - } - } - - var i, l, target, - userTargets = (config && BUBBLETARGETS in config); - - if (userTargets || _BUBBLETARGETS in this) { - target = userTargets ? (config && config.bubbleTargets) : this._bubbleTargets; - if (L.isArray(target)) { - for (i = 0, l = target.length; i < l; i++) { - this.addTarget(target[i]); - } - } else if (target) { - this.addTarget(target); - } - } - }, - - /** - *

- * Destroy lifecycle method. Fires the destroy - * event, prior to invoking destructors for the - * class hierarchy. - *

- *

- * Subscribers to the destroy - * event can invoke preventDefault on the event object, to prevent destruction - * from proceeding. - *

- * @method destroy - * @return {Base} A reference to this object - * @chainable - */ - destroy: function() { - Y.log('destroy called', 'life', 'base'); - - /** - *

- * Lifecycle event for the destroy phase, - * fired prior to destruction. Invoking the preventDefault - * method on the event object provided to subscribers will - * prevent destruction from proceeding. - *

- *

- * Subscribers to the "after" moment of this event, will be notified - * after destruction is complete (and as a result cannot prevent - * destruction). - *

- * @event destroy - * @preventable _defDestroyFn - * @param {EventFacade} e Event object - */ - this.publish(DESTROY, { - queuable:false, - fireOnce:true, - defaultTargetOnly:true, - defaultFn: this._defDestroyFn - }); - this.fire(DESTROY); - - this.detachAll(); - return this; - }, - - /** - * Default init event handler - * - * @method _defInitFn - * @param {EventFacade} e Event object, with a cfg property which - * refers to the configuration object passed to the constructor. - * @protected - */ - _defInitFn : function(e) { - this._baseInit(e.cfg); - }, - - /** - * Default destroy event handler - * - * @method _defDestroyFn - * @param {EventFacade} e Event object - * @protected - */ - _defDestroyFn : function(e) { - this._baseDestroy(e.cfg); - } - }; - - Y.mix(Base, Attribute, false, null, 1); - Y.mix(Base, BaseCore, false, null, 1); - - // Fix constructor - Base.prototype.constructor = Base; - - Y.Base = Base; - - -}, '3.7.3', {"requires": ["base-core", "attribute-base"]}); diff --git a/lib/yuilib/3.7.3/build/base-base/base-base-min.js b/lib/yuilib/3.7.3/build/base-base/base-base-min.js deleted file mode 100644 index e49331d4480..00000000000 --- a/lib/yuilib/3.7.3/build/base-base/base-base-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("base-base",function(e,t){function l(){u.apply(this,arguments)}var n=e.Lang,r="destroy",i="init",s="bubbleTargets",o="_bubbleTargets",u=e.BaseCore,a=e.AttributeCore,f=e.Attribute;l._ATTR_CFG=f._ATTR_CFG.concat("cloneDefaultValue"),l._ATTR_CFG_HASH=e.Array.hash(l._ATTR_CFG),l._NON_ATTRS_CFG=u._NON_ATTRS_CFG.concat(["on","after","bubbleTargets"]),l.NAME="base",l.ATTRS=a.prototype._protectAttrs(u.ATTRS),l.prototype={_initBase:function(t){this._eventPrefix=this.constructor.EVENT_PREFIX||this.constructor.NAME,e.BaseCore.prototype._initBase.call(this,t)},_initAttribute:function(e){f.call(this),this._yuievt.config.prefix=this._eventPrefix},_attrCfgHash:function(){return l._ATTR_CFG_HASH},init:function(e){return this.publish(i,{queuable:!1,fireOnce:!0,defaultTargetOnly:!0,defaultFn:this._defInitFn}),this._preInitEventCfg(e),this.fire(i,{cfg:e}),this},_preInitEventCfg:function(e){e&&(e.on&&this.on(e.on),e.after&&this.after(e.after));var t,r,i,u=e&&s in e;if(u||o in this){i=u?e&&e.bubbleTargets:this._bubbleTargets;if(n.isArray(i))for(t=0,r=i.length;t - * A base class which objects requiring attributes and custom event support can - * extend. Base also handles the chaining of initializer and destructor methods across - * the hierarchy as part of object construction and destruction. Additionally, attributes configured - * through the static ATTRS property for each class - * in the hierarchy will be initialized by Base. - *

- * - *

- * The static NAME property of each class extending - * from Base will be used as the identifier for the class, and is used by Base to prefix - * all events fired by instances of that class. - *

- * - * @class Base - * @constructor - * @uses BaseCore - * @uses Attribute - * @uses AttributeCore - * @uses AttributeEvents - * @uses AttributeExtras - * @uses EventTarget - * - * @param {Object} config Object with configuration property name/value pairs. The object can be - * used to provide default values for the objects published attributes. - * - *

- * The config object can also contain the following non-attribute properties, providing a convenient - * way to configure events listeners and plugins for the instance, as part of the constructor call: - *

- * - *
- *
on
- *
An event name to listener function map, to register event listeners for the "on" moment of the event. A constructor convenience property for the on method.
- *
after
- *
An event name to listener function map, to register event listeners for the "after" moment of the event. A constructor convenience property for the after method.
- *
bubbleTargets
- *
An object, or array of objects, to register as bubble targets for bubbled events fired by this instance. A constructor convenience property for the addTarget method.
- *
plugins
- *
A plugin, or array of plugins to be plugged into the instance (see PluginHost's plug method for signature details). A constructor convenience property for the plug method.
- *
- */ - function Base() { - BaseCore.apply(this, arguments); - } - - /** - * The list of properties which can be configured for - * each attribute (e.g. setter, getter, writeOnce, readOnly etc.) - * - * @property _ATTR_CFG - * @type Array - * @static - * @private - */ - Base._ATTR_CFG = Attribute._ATTR_CFG.concat("cloneDefaultValue"); - Base._ATTR_CFG_HASH = Y.Array.hash(Base._ATTR_CFG); - - /** - * The array of non-attribute configuration properties supported by this class. - * - * `Base` supports "on", "after", "plugins" and "bubbleTargets" properties, - * which are not set up as attributes. - * - * This property is primarily required so that when - * `_allowAdHocAttrs` is enabled by - * a class, non-attribute configurations don't get added as ad-hoc attributes. - * - * @property _NON_ATTRS_CFG - * @type Array - * @static - * @private - */ - Base._NON_ATTRS_CFG = BaseCore._NON_ATTRS_CFG.concat(["on", "after", "bubbleTargets"]); - - /** - *

- * The string to be used to identify instances of - * this class, for example in prefixing events. - *

- *

- * Classes extending Base, should define their own - * static NAME property, which should be camelCase by - * convention (e.g. MyClass.NAME = "myClass";). - *

- * @property NAME - * @type String - * @static - */ - Base.NAME = "base"; - - /** - * The default set of attributes which will be available for instances of this class, and - * their configuration. In addition to the configuration properties listed by - * Attribute's addAttr method, the attribute - * can also be configured with a "cloneDefaultValue" property, which defines how the statically - * defined value field should be protected ("shallow", "deep" and false are supported values). - * - * By default if the value is an object literal or an array it will be "shallow" cloned, to - * protect the default value. - * - * @property ATTRS - * @type Object - * @static - */ - Base.ATTRS = AttributeCore.prototype._protectAttrs(BaseCore.ATTRS); - - Base.prototype = { - - /** - * Internal construction logic for Base. - * - * @method _initBase - * @param {Object} config The constructor configuration object - * @private - */ - _initBase: function(cfg) { - - this._eventPrefix = this.constructor.EVENT_PREFIX || this.constructor.NAME; - - Y.BaseCore.prototype._initBase.call(this, cfg); - }, - - /** - * Initializes Attribute - * - * @method _initAttribute - * @private - */ - _initAttribute: function(cfg) { - Attribute.call(this); - this._yuievt.config.prefix = this._eventPrefix; - }, - - /** - * Utility method to define the attribute hash used to filter/whitelist property mixes for - * this class. - * - * @method _attrCfgHash - * @private - */ - _attrCfgHash: function() { - return Base._ATTR_CFG_HASH; - }, - - /** - * Init lifecycle method, invoked during construction. - * Fires the init event prior to setting up attributes and - * invoking initializers for the class hierarchy. - * - * @method init - * @chainable - * @param {Object} config Object with configuration property name/value pairs - * @return {Base} A reference to this object - */ - init: function(config) { - /** - *

- * Lifecycle event for the init phase, fired prior to initialization. - * Invoking the preventDefault() method on the event object provided - * to subscribers will prevent initialization from occuring. - *

- *

- * Subscribers to the "after" momemt of this event, will be notified - * after initialization of the object is complete (and therefore - * cannot prevent initialization). - *

- * - * @event init - * @preventable _defInitFn - * @param {EventFacade} e Event object, with a cfg property which - * refers to the configuration object passed to the constructor. - */ - this.publish(INIT, { - queuable:false, - fireOnce:true, - defaultTargetOnly:true, - defaultFn:this._defInitFn - }); - - this._preInitEventCfg(config); - - this.fire(INIT, {cfg: config}); - - return this; - }, - - /** - * Handles the special on, after and target properties which allow the user to - * easily configure on and after listeners as well as bubble targets during - * construction, prior to init. - * - * @private - * @method _preInitEventCfg - * @param {Object} config The user configuration object - */ - _preInitEventCfg : function(config) { - if (config) { - if (config.on) { - this.on(config.on); - } - if (config.after) { - this.after(config.after); - } - } - - var i, l, target, - userTargets = (config && BUBBLETARGETS in config); - - if (userTargets || _BUBBLETARGETS in this) { - target = userTargets ? (config && config.bubbleTargets) : this._bubbleTargets; - if (L.isArray(target)) { - for (i = 0, l = target.length; i < l; i++) { - this.addTarget(target[i]); - } - } else if (target) { - this.addTarget(target); - } - } - }, - - /** - *

- * Destroy lifecycle method. Fires the destroy - * event, prior to invoking destructors for the - * class hierarchy. - *

- *

- * Subscribers to the destroy - * event can invoke preventDefault on the event object, to prevent destruction - * from proceeding. - *

- * @method destroy - * @return {Base} A reference to this object - * @chainable - */ - destroy: function() { - - /** - *

- * Lifecycle event for the destroy phase, - * fired prior to destruction. Invoking the preventDefault - * method on the event object provided to subscribers will - * prevent destruction from proceeding. - *

- *

- * Subscribers to the "after" moment of this event, will be notified - * after destruction is complete (and as a result cannot prevent - * destruction). - *

- * @event destroy - * @preventable _defDestroyFn - * @param {EventFacade} e Event object - */ - this.publish(DESTROY, { - queuable:false, - fireOnce:true, - defaultTargetOnly:true, - defaultFn: this._defDestroyFn - }); - this.fire(DESTROY); - - this.detachAll(); - return this; - }, - - /** - * Default init event handler - * - * @method _defInitFn - * @param {EventFacade} e Event object, with a cfg property which - * refers to the configuration object passed to the constructor. - * @protected - */ - _defInitFn : function(e) { - this._baseInit(e.cfg); - }, - - /** - * Default destroy event handler - * - * @method _defDestroyFn - * @param {EventFacade} e Event object - * @protected - */ - _defDestroyFn : function(e) { - this._baseDestroy(e.cfg); - } - }; - - Y.mix(Base, Attribute, false, null, 1); - Y.mix(Base, BaseCore, false, null, 1); - - // Fix constructor - Base.prototype.constructor = Base; - - Y.Base = Base; - - -}, '3.7.3', {"requires": ["base-core", "attribute-base"]}); diff --git a/lib/yuilib/3.7.3/build/base-build/base-build-coverage.js b/lib/yuilib/3.7.3/build/base-build/base-build-coverage.js deleted file mode 100644 index e30807fa87e..00000000000 --- a/lib/yuilib/3.7.3/build/base-build/base-build-coverage.js +++ /dev/null @@ -1,597 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -if (typeof _yuitest_coverage == "undefined"){ - _yuitest_coverage = {}; - _yuitest_coverline = function(src, line){ - var coverage = _yuitest_coverage[src]; - if (!coverage.lines[line]){ - coverage.calledLines++; - } - coverage.lines[line]++; - }; - _yuitest_coverfunc = function(src, name, line){ - var coverage = _yuitest_coverage[src], - funcId = name + ":" + line; - if (!coverage.functions[funcId]){ - coverage.calledFunctions++; - } - coverage.functions[funcId]++; - }; -} -_yuitest_coverage["build/base-build/base-build.js"] = { - lines: {}, - functions: {}, - coveredLines: 0, - calledLines: 0, - coveredFunctions: 0, - calledFunctions: 0, - path: "build/base-build/base-build.js", - code: [] -}; -_yuitest_coverage["build/base-build/base-build.js"].code=["YUI.add('base-build', function (Y, NAME) {",""," /**"," * The base-build submodule provides Base.build functionality, which"," * can be used to create custom classes, by aggregating extensions onto "," * a main class."," *"," * @module base"," * @submodule base-build"," * @for Base"," */"," var Base = Y.Base,"," L = Y.Lang,"," INITIALIZER = \"initializer\","," DESTRUCTOR = \"destructor\","," build,"," arrayAggregator = function (prop, r, s) {"," if (s[prop]) {"," r[prop] = (r[prop] || []).concat(s[prop]);"," } "," };",""," Base._build = function(name, main, extensions, px, sx, cfg) {",""," var build = Base._build,",""," builtClass = build._ctor(main, cfg),"," buildCfg = build._cfg(main, cfg, extensions),",""," _mixCust = build._mixCust,",""," dynamic = builtClass._yuibuild.dynamic,",""," i, l, extClass, extProto,"," initializer,"," destructor;",""," // Augment/Aggregate"," for (i = 0, l = extensions.length; i < l; i++) {"," extClass = extensions[i];",""," extProto = extClass.prototype;"," "," initializer = extProto[INITIALIZER];"," destructor = extProto[DESTRUCTOR];"," delete extProto[INITIALIZER];"," delete extProto[DESTRUCTOR];",""," // Prototype, old non-displacing augment"," Y.mix(builtClass, extClass, true, null, 1);",""," // Custom Statics"," _mixCust(builtClass, extClass, buildCfg);",""," if (initializer) { "," extProto[INITIALIZER] = initializer;"," }",""," if (destructor) {"," extProto[DESTRUCTOR] = destructor;"," }",""," builtClass._yuibuild.exts.push(extClass);"," }",""," if (px) {"," Y.mix(builtClass.prototype, px, true);"," }",""," if (sx) {"," Y.mix(builtClass, build._clean(sx, buildCfg), true);"," _mixCust(builtClass, sx, buildCfg);"," }",""," builtClass.prototype.hasImpl = build._impl;",""," if (dynamic) {"," builtClass.NAME = name;"," builtClass.prototype.constructor = builtClass;"," }",""," return builtClass;"," };",""," build = Base._build;",""," Y.mix(build, {",""," _mixCust: function(r, s, cfg) {"," "," var aggregates, "," custom, "," statics,"," aggr,"," l,"," i;"," "," if (cfg) {"," aggregates = cfg.aggregates;"," custom = cfg.custom;"," statics = cfg.statics;"," }",""," if (statics) {"," Y.mix(r, s, true, statics);"," }",""," if (aggregates) {"," for (i = 0, l = aggregates.length; i < l; i++) {"," aggr = aggregates[i];"," if (!r.hasOwnProperty(aggr) && s.hasOwnProperty(aggr)) {"," r[aggr] = L.isArray(s[aggr]) ? [] : {};"," }"," Y.aggregate(r, s, true, [aggr]);"," }"," }",""," if (custom) {"," for (i in custom) {"," if (custom.hasOwnProperty(i)) {"," custom[i](i, r, s);"," }"," }"," }"," "," },",""," _tmpl: function(main) {",""," function BuiltClass() {"," BuiltClass.superclass.constructor.apply(this, arguments);"," }"," Y.extend(BuiltClass, main);",""," return BuiltClass;"," },",""," _impl : function(extClass) {"," var classes = this._getClasses(), i, l, cls, exts, ll, j;"," for (i = 0, l = classes.length; i < l; i++) {"," cls = classes[i];"," if (cls._yuibuild) {"," exts = cls._yuibuild.exts;"," ll = exts.length;"," "," for (j = 0; j < ll; j++) {"," if (exts[j] === extClass) {"," return true;"," }"," }"," }"," }"," return false;"," },",""," _ctor : function(main, cfg) {",""," var dynamic = (cfg && false === cfg.dynamic) ? false : true,"," builtClass = (dynamic) ? build._tmpl(main) : main,"," buildCfg = builtClass._yuibuild;",""," if (!buildCfg) {"," buildCfg = builtClass._yuibuild = {};"," }",""," buildCfg.id = buildCfg.id || null;"," buildCfg.exts = buildCfg.exts || [];"," buildCfg.dynamic = dynamic;",""," return builtClass;"," },",""," _cfg : function(main, cfg, exts) {"," var aggr = [], "," cust = {},"," statics = [],"," buildCfg,"," cfgAggr = (cfg && cfg.aggregates),"," cfgCustBuild = (cfg && cfg.custom),"," cfgStatics = (cfg && cfg.statics),"," c = main,"," i, "," l;",""," // Prototype Chain"," while (c && c.prototype) {"," buildCfg = c._buildCfg;"," if (buildCfg) {"," if (buildCfg.aggregates) {"," aggr = aggr.concat(buildCfg.aggregates);"," }"," if (buildCfg.custom) {"," Y.mix(cust, buildCfg.custom, true);"," }"," if (buildCfg.statics) {"," statics = statics.concat(buildCfg.statics);"," }"," }"," c = c.superclass ? c.superclass.constructor : null;"," }",""," // Exts"," if (exts) {"," for (i = 0, l = exts.length; i < l; i++) {"," c = exts[i];"," buildCfg = c._buildCfg;"," if (buildCfg) {"," if (buildCfg.aggregates) {"," aggr = aggr.concat(buildCfg.aggregates);"," }"," if (buildCfg.custom) {"," Y.mix(cust, buildCfg.custom, true);"," }"," if (buildCfg.statics) {"," statics = statics.concat(buildCfg.statics);"," }"," } "," }"," }",""," if (cfgAggr) {"," aggr = aggr.concat(cfgAggr);"," }",""," if (cfgCustBuild) {"," Y.mix(cust, cfg.cfgBuild, true);"," }",""," if (cfgStatics) {"," statics = statics.concat(cfgStatics);"," }",""," return {"," aggregates: aggr,"," custom: cust,"," statics: statics"," };"," },",""," _clean : function(sx, cfg) {"," var prop, i, l, sxclone = Y.merge(sx),"," aggregates = cfg.aggregates,"," custom = cfg.custom;",""," for (prop in custom) {"," if (sxclone.hasOwnProperty(prop)) {"," delete sxclone[prop];"," }"," }",""," for (i = 0, l = aggregates.length; i < l; i++) {"," prop = aggregates[i];"," if (sxclone.hasOwnProperty(prop)) {"," delete sxclone[prop];"," }"," }",""," return sxclone;"," }"," });",""," /**"," *

"," * Builds a custom constructor function (class) from the"," * main function, and array of extension functions (classes)"," * provided. The NAME field for the constructor function is "," * defined by the first argument passed in."," *

"," *

"," * The cfg object supports the following properties"," *

"," *
"," *
dynamic <boolean>
"," *
"," *

If true (default), a completely new class"," * is created which extends the main class, and acts as the "," * host on which the extension classes are augmented.

"," *

If false, the extensions classes are augmented directly to"," * the main class, modifying the main class' prototype.

"," *
"," *
aggregates <String[]>
"," *
An array of static property names, which will get aggregated"," * on to the built class, in addition to the default properties build "," * will always aggregate as defined by the main class' static _buildCfg"," * property."," *
"," *
"," *"," * @method build"," * @deprecated Use the more convenient Base.create and Base.mix methods instead"," * @static"," * @param {Function} name The name of the new class. Used to define the NAME property for the new class."," * @param {Function} main The main class on which to base the built class"," * @param {Function[]} extensions The set of extension classes which will be"," * augmented/aggregated to the built class."," * @param {Object} cfg Optional. Build configuration for the class (see description)."," * @return {Function} A custom class, created from the provided main and extension classes"," */"," Base.build = function(name, main, extensions, cfg) {"," return build(name, main, extensions, null, null, cfg);"," };",""," /**"," * Creates a new class (constructor function) which extends the base class passed in as the second argument, "," * and mixes in the array of extensions provided."," * "," * Prototype properties or methods can be added to the new class, using the px argument (similar to Y.extend)."," * "," * Static properties or methods can be added to the new class, using the sx argument (similar to Y.extend)."," * "," * **NOTE FOR COMPONENT DEVELOPERS**: Both the `base` class, and `extensions` can define static a `_buildCfg` "," * property, which acts as class creation meta-data, and drives how special static properties from the base "," * class, or extensions should be copied, aggregated or (custom) mixed into the newly created class."," * "," * The `_buildCfg` property is a hash with 3 supported properties: `statics`, `aggregates` and `custom`, e.g:"," * "," * // If the Base/Main class is the thing introducing the property:"," * "," * MyBaseClass._buildCfg = {"," * "," * // Static properties/methods to copy (Alias) to the built class."," * statics: [\"CopyThisMethod\", \"CopyThisProperty\"],"," * "," * // Static props to aggregate onto the built class."," * aggregates: [\"AggregateThisProperty\"],"," * "," * // Static properties which need custom handling (e.g. deep merge etc.)"," * custom: {"," * \"CustomProperty\" : function(property, Receiver, Supplier) {"," * ..."," * var triggers = Receiver.CustomProperty.triggers; "," Receiver.CustomProperty.triggers = triggers.concat(Supplier.CustomProperty.triggers);"," * ..."," * }"," * }"," * };"," * "," * MyBaseClass.CopyThisMethod = function() {...}; "," * MyBaseClass.CopyThisProperty = \"foo\";"," * MyBaseClass.AggregateThisProperty = {...};"," * MyBaseClass.CustomProperty = {"," * triggers: [...]"," * }"," *"," * // Or, if the Extension is the thing introducing the property:"," * "," * MyExtension._buildCfg = {"," * statics : ..."," * aggregates : ..."," * custom : ... "," * } "," * "," * This way, when users pass your base or extension class to `Y.Base.create` or `Y.Base.mix`, they don't need to"," * know which properties need special handling. `Y.Base` has a buildCfg which defines `ATTRS` for custom mix handling"," * (to protect the static config objects), and `Y.Widget` has a buildCfg which specifies `HTML_PARSER` for "," * straight up aggregation."," *"," * @method create"," * @static"," * @param {Function} name The name of the newly created class. Used to define the NAME property for the new class."," * @param {Function} main The base class which the new class should extend. This class needs to be Base or a class derived from base (e.g. Widget)."," * @param {Function[]} extensions The list of extensions which will be mixed into the built class."," * @param {Object} px The set of prototype properties/methods to add to the built class."," * @param {Object} sx The set of static properties/methods to add to the built class."," * @return {Function} The newly created class."," */"," Base.create = function(name, base, extensions, px, sx) {"," return build(name, base, extensions, px, sx);"," };",""," /**"," *

Mixes in a list of extensions to an existing class.

"," * @method mix"," * @static"," * @param {Function} main The existing class into which the extensions should be mixed. The class needs to be Base or a class derived from Base (e.g. Widget)"," * @param {Function[]} extensions The set of extension classes which will mixed into the existing main class."," * @return {Function} The modified main class, with extensions mixed in."," */"," Base.mix = function(main, extensions) {"," return build(null, main, extensions, null, null, {dynamic:false});"," };",""," /**"," * The build configuration for the Base class."," *"," * Defines the static fields which need to be aggregated"," * when the Base class is used as the main class passed to"," * the Base.build method."," *"," * @property _buildCfg"," * @type Object"," * @static"," * @final"," * @private"," */"," Base._buildCfg = {"," custom : {"," ATTRS : function(prop, r, s) {",""," r.ATTRS = r.ATTRS || {};",""," if (s.ATTRS) {",""," var sAttrs = s.ATTRS,"," rAttrs = r.ATTRS,"," a;",""," for (a in sAttrs) {"," if (sAttrs.hasOwnProperty(a)) {"," rAttrs[a] = rAttrs[a] || {};"," Y.mix(rAttrs[a], sAttrs[a], true);"," }"," }"," }"," },"," _NON_ATTRS_CFG : arrayAggregator"," },"," aggregates : [\"_PLUG\", \"_UNPLUG\"]"," };","","","}, '3.7.3', {\"requires\": [\"base-base\"]});"]; -_yuitest_coverage["build/base-build/base-build.js"].lines = {"1":0,"12":0,"18":0,"19":0,"23":0,"25":0,"39":0,"40":0,"42":0,"44":0,"45":0,"46":0,"47":0,"50":0,"53":0,"55":0,"56":0,"59":0,"60":0,"63":0,"66":0,"67":0,"70":0,"71":0,"72":0,"75":0,"77":0,"78":0,"79":0,"82":0,"85":0,"87":0,"91":0,"98":0,"99":0,"100":0,"101":0,"104":0,"105":0,"108":0,"109":0,"110":0,"111":0,"112":0,"114":0,"118":0,"119":0,"120":0,"121":0,"130":0,"131":0,"133":0,"135":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"146":0,"147":0,"148":0,"153":0,"158":0,"162":0,"163":0,"166":0,"167":0,"168":0,"170":0,"174":0,"186":0,"187":0,"188":0,"189":0,"190":0,"192":0,"193":0,"195":0,"196":0,"199":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"211":0,"212":0,"214":0,"215":0,"221":0,"222":0,"225":0,"226":0,"229":0,"230":0,"233":0,"241":0,"245":0,"246":0,"247":0,"251":0,"252":0,"253":0,"254":0,"258":0,"299":0,"300":0,"367":0,"368":0,"379":0,"380":0,"396":0,"400":0,"402":0,"404":0,"408":0,"409":0,"410":0,"411":0}; -_yuitest_coverage["build/base-build/base-build.js"].functions = {"arrayAggregator:17":0,"_build:23":0,"_mixCust:89":0,"BuiltClass:130":0,"_tmpl:128":0,"_impl:138":0,"_ctor:156":0,"_cfg:173":0,"_clean:240":0,"build:299":0,"create:367":0,"mix:379":0,"ATTRS:398":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/base-build/base-build.js"].coveredLines = 122; -_yuitest_coverage["build/base-build/base-build.js"].coveredFunctions = 14; -_yuitest_coverline("build/base-build/base-build.js", 1); -YUI.add('base-build', function (Y, NAME) { - - /** - * The base-build submodule provides Base.build functionality, which - * can be used to create custom classes, by aggregating extensions onto - * a main class. - * - * @module base - * @submodule base-build - * @for Base - */ - _yuitest_coverfunc("build/base-build/base-build.js", "(anonymous 1)", 1); -_yuitest_coverline("build/base-build/base-build.js", 12); -var Base = Y.Base, - L = Y.Lang, - INITIALIZER = "initializer", - DESTRUCTOR = "destructor", - build, - arrayAggregator = function (prop, r, s) { - _yuitest_coverfunc("build/base-build/base-build.js", "arrayAggregator", 17); -_yuitest_coverline("build/base-build/base-build.js", 18); -if (s[prop]) { - _yuitest_coverline("build/base-build/base-build.js", 19); -r[prop] = (r[prop] || []).concat(s[prop]); - } - }; - - _yuitest_coverline("build/base-build/base-build.js", 23); -Base._build = function(name, main, extensions, px, sx, cfg) { - - _yuitest_coverfunc("build/base-build/base-build.js", "_build", 23); -_yuitest_coverline("build/base-build/base-build.js", 25); -var build = Base._build, - - builtClass = build._ctor(main, cfg), - buildCfg = build._cfg(main, cfg, extensions), - - _mixCust = build._mixCust, - - dynamic = builtClass._yuibuild.dynamic, - - i, l, extClass, extProto, - initializer, - destructor; - - // Augment/Aggregate - _yuitest_coverline("build/base-build/base-build.js", 39); -for (i = 0, l = extensions.length; i < l; i++) { - _yuitest_coverline("build/base-build/base-build.js", 40); -extClass = extensions[i]; - - _yuitest_coverline("build/base-build/base-build.js", 42); -extProto = extClass.prototype; - - _yuitest_coverline("build/base-build/base-build.js", 44); -initializer = extProto[INITIALIZER]; - _yuitest_coverline("build/base-build/base-build.js", 45); -destructor = extProto[DESTRUCTOR]; - _yuitest_coverline("build/base-build/base-build.js", 46); -delete extProto[INITIALIZER]; - _yuitest_coverline("build/base-build/base-build.js", 47); -delete extProto[DESTRUCTOR]; - - // Prototype, old non-displacing augment - _yuitest_coverline("build/base-build/base-build.js", 50); -Y.mix(builtClass, extClass, true, null, 1); - - // Custom Statics - _yuitest_coverline("build/base-build/base-build.js", 53); -_mixCust(builtClass, extClass, buildCfg); - - _yuitest_coverline("build/base-build/base-build.js", 55); -if (initializer) { - _yuitest_coverline("build/base-build/base-build.js", 56); -extProto[INITIALIZER] = initializer; - } - - _yuitest_coverline("build/base-build/base-build.js", 59); -if (destructor) { - _yuitest_coverline("build/base-build/base-build.js", 60); -extProto[DESTRUCTOR] = destructor; - } - - _yuitest_coverline("build/base-build/base-build.js", 63); -builtClass._yuibuild.exts.push(extClass); - } - - _yuitest_coverline("build/base-build/base-build.js", 66); -if (px) { - _yuitest_coverline("build/base-build/base-build.js", 67); -Y.mix(builtClass.prototype, px, true); - } - - _yuitest_coverline("build/base-build/base-build.js", 70); -if (sx) { - _yuitest_coverline("build/base-build/base-build.js", 71); -Y.mix(builtClass, build._clean(sx, buildCfg), true); - _yuitest_coverline("build/base-build/base-build.js", 72); -_mixCust(builtClass, sx, buildCfg); - } - - _yuitest_coverline("build/base-build/base-build.js", 75); -builtClass.prototype.hasImpl = build._impl; - - _yuitest_coverline("build/base-build/base-build.js", 77); -if (dynamic) { - _yuitest_coverline("build/base-build/base-build.js", 78); -builtClass.NAME = name; - _yuitest_coverline("build/base-build/base-build.js", 79); -builtClass.prototype.constructor = builtClass; - } - - _yuitest_coverline("build/base-build/base-build.js", 82); -return builtClass; - }; - - _yuitest_coverline("build/base-build/base-build.js", 85); -build = Base._build; - - _yuitest_coverline("build/base-build/base-build.js", 87); -Y.mix(build, { - - _mixCust: function(r, s, cfg) { - - _yuitest_coverfunc("build/base-build/base-build.js", "_mixCust", 89); -_yuitest_coverline("build/base-build/base-build.js", 91); -var aggregates, - custom, - statics, - aggr, - l, - i; - - _yuitest_coverline("build/base-build/base-build.js", 98); -if (cfg) { - _yuitest_coverline("build/base-build/base-build.js", 99); -aggregates = cfg.aggregates; - _yuitest_coverline("build/base-build/base-build.js", 100); -custom = cfg.custom; - _yuitest_coverline("build/base-build/base-build.js", 101); -statics = cfg.statics; - } - - _yuitest_coverline("build/base-build/base-build.js", 104); -if (statics) { - _yuitest_coverline("build/base-build/base-build.js", 105); -Y.mix(r, s, true, statics); - } - - _yuitest_coverline("build/base-build/base-build.js", 108); -if (aggregates) { - _yuitest_coverline("build/base-build/base-build.js", 109); -for (i = 0, l = aggregates.length; i < l; i++) { - _yuitest_coverline("build/base-build/base-build.js", 110); -aggr = aggregates[i]; - _yuitest_coverline("build/base-build/base-build.js", 111); -if (!r.hasOwnProperty(aggr) && s.hasOwnProperty(aggr)) { - _yuitest_coverline("build/base-build/base-build.js", 112); -r[aggr] = L.isArray(s[aggr]) ? [] : {}; - } - _yuitest_coverline("build/base-build/base-build.js", 114); -Y.aggregate(r, s, true, [aggr]); - } - } - - _yuitest_coverline("build/base-build/base-build.js", 118); -if (custom) { - _yuitest_coverline("build/base-build/base-build.js", 119); -for (i in custom) { - _yuitest_coverline("build/base-build/base-build.js", 120); -if (custom.hasOwnProperty(i)) { - _yuitest_coverline("build/base-build/base-build.js", 121); -custom[i](i, r, s); - } - } - } - - }, - - _tmpl: function(main) { - - _yuitest_coverfunc("build/base-build/base-build.js", "_tmpl", 128); -_yuitest_coverline("build/base-build/base-build.js", 130); -function BuiltClass() { - _yuitest_coverfunc("build/base-build/base-build.js", "BuiltClass", 130); -_yuitest_coverline("build/base-build/base-build.js", 131); -BuiltClass.superclass.constructor.apply(this, arguments); - } - _yuitest_coverline("build/base-build/base-build.js", 133); -Y.extend(BuiltClass, main); - - _yuitest_coverline("build/base-build/base-build.js", 135); -return BuiltClass; - }, - - _impl : function(extClass) { - _yuitest_coverfunc("build/base-build/base-build.js", "_impl", 138); -_yuitest_coverline("build/base-build/base-build.js", 139); -var classes = this._getClasses(), i, l, cls, exts, ll, j; - _yuitest_coverline("build/base-build/base-build.js", 140); -for (i = 0, l = classes.length; i < l; i++) { - _yuitest_coverline("build/base-build/base-build.js", 141); -cls = classes[i]; - _yuitest_coverline("build/base-build/base-build.js", 142); -if (cls._yuibuild) { - _yuitest_coverline("build/base-build/base-build.js", 143); -exts = cls._yuibuild.exts; - _yuitest_coverline("build/base-build/base-build.js", 144); -ll = exts.length; - - _yuitest_coverline("build/base-build/base-build.js", 146); -for (j = 0; j < ll; j++) { - _yuitest_coverline("build/base-build/base-build.js", 147); -if (exts[j] === extClass) { - _yuitest_coverline("build/base-build/base-build.js", 148); -return true; - } - } - } - } - _yuitest_coverline("build/base-build/base-build.js", 153); -return false; - }, - - _ctor : function(main, cfg) { - - _yuitest_coverfunc("build/base-build/base-build.js", "_ctor", 156); -_yuitest_coverline("build/base-build/base-build.js", 158); -var dynamic = (cfg && false === cfg.dynamic) ? false : true, - builtClass = (dynamic) ? build._tmpl(main) : main, - buildCfg = builtClass._yuibuild; - - _yuitest_coverline("build/base-build/base-build.js", 162); -if (!buildCfg) { - _yuitest_coverline("build/base-build/base-build.js", 163); -buildCfg = builtClass._yuibuild = {}; - } - - _yuitest_coverline("build/base-build/base-build.js", 166); -buildCfg.id = buildCfg.id || null; - _yuitest_coverline("build/base-build/base-build.js", 167); -buildCfg.exts = buildCfg.exts || []; - _yuitest_coverline("build/base-build/base-build.js", 168); -buildCfg.dynamic = dynamic; - - _yuitest_coverline("build/base-build/base-build.js", 170); -return builtClass; - }, - - _cfg : function(main, cfg, exts) { - _yuitest_coverfunc("build/base-build/base-build.js", "_cfg", 173); -_yuitest_coverline("build/base-build/base-build.js", 174); -var aggr = [], - cust = {}, - statics = [], - buildCfg, - cfgAggr = (cfg && cfg.aggregates), - cfgCustBuild = (cfg && cfg.custom), - cfgStatics = (cfg && cfg.statics), - c = main, - i, - l; - - // Prototype Chain - _yuitest_coverline("build/base-build/base-build.js", 186); -while (c && c.prototype) { - _yuitest_coverline("build/base-build/base-build.js", 187); -buildCfg = c._buildCfg; - _yuitest_coverline("build/base-build/base-build.js", 188); -if (buildCfg) { - _yuitest_coverline("build/base-build/base-build.js", 189); -if (buildCfg.aggregates) { - _yuitest_coverline("build/base-build/base-build.js", 190); -aggr = aggr.concat(buildCfg.aggregates); - } - _yuitest_coverline("build/base-build/base-build.js", 192); -if (buildCfg.custom) { - _yuitest_coverline("build/base-build/base-build.js", 193); -Y.mix(cust, buildCfg.custom, true); - } - _yuitest_coverline("build/base-build/base-build.js", 195); -if (buildCfg.statics) { - _yuitest_coverline("build/base-build/base-build.js", 196); -statics = statics.concat(buildCfg.statics); - } - } - _yuitest_coverline("build/base-build/base-build.js", 199); -c = c.superclass ? c.superclass.constructor : null; - } - - // Exts - _yuitest_coverline("build/base-build/base-build.js", 203); -if (exts) { - _yuitest_coverline("build/base-build/base-build.js", 204); -for (i = 0, l = exts.length; i < l; i++) { - _yuitest_coverline("build/base-build/base-build.js", 205); -c = exts[i]; - _yuitest_coverline("build/base-build/base-build.js", 206); -buildCfg = c._buildCfg; - _yuitest_coverline("build/base-build/base-build.js", 207); -if (buildCfg) { - _yuitest_coverline("build/base-build/base-build.js", 208); -if (buildCfg.aggregates) { - _yuitest_coverline("build/base-build/base-build.js", 209); -aggr = aggr.concat(buildCfg.aggregates); - } - _yuitest_coverline("build/base-build/base-build.js", 211); -if (buildCfg.custom) { - _yuitest_coverline("build/base-build/base-build.js", 212); -Y.mix(cust, buildCfg.custom, true); - } - _yuitest_coverline("build/base-build/base-build.js", 214); -if (buildCfg.statics) { - _yuitest_coverline("build/base-build/base-build.js", 215); -statics = statics.concat(buildCfg.statics); - } - } - } - } - - _yuitest_coverline("build/base-build/base-build.js", 221); -if (cfgAggr) { - _yuitest_coverline("build/base-build/base-build.js", 222); -aggr = aggr.concat(cfgAggr); - } - - _yuitest_coverline("build/base-build/base-build.js", 225); -if (cfgCustBuild) { - _yuitest_coverline("build/base-build/base-build.js", 226); -Y.mix(cust, cfg.cfgBuild, true); - } - - _yuitest_coverline("build/base-build/base-build.js", 229); -if (cfgStatics) { - _yuitest_coverline("build/base-build/base-build.js", 230); -statics = statics.concat(cfgStatics); - } - - _yuitest_coverline("build/base-build/base-build.js", 233); -return { - aggregates: aggr, - custom: cust, - statics: statics - }; - }, - - _clean : function(sx, cfg) { - _yuitest_coverfunc("build/base-build/base-build.js", "_clean", 240); -_yuitest_coverline("build/base-build/base-build.js", 241); -var prop, i, l, sxclone = Y.merge(sx), - aggregates = cfg.aggregates, - custom = cfg.custom; - - _yuitest_coverline("build/base-build/base-build.js", 245); -for (prop in custom) { - _yuitest_coverline("build/base-build/base-build.js", 246); -if (sxclone.hasOwnProperty(prop)) { - _yuitest_coverline("build/base-build/base-build.js", 247); -delete sxclone[prop]; - } - } - - _yuitest_coverline("build/base-build/base-build.js", 251); -for (i = 0, l = aggregates.length; i < l; i++) { - _yuitest_coverline("build/base-build/base-build.js", 252); -prop = aggregates[i]; - _yuitest_coverline("build/base-build/base-build.js", 253); -if (sxclone.hasOwnProperty(prop)) { - _yuitest_coverline("build/base-build/base-build.js", 254); -delete sxclone[prop]; - } - } - - _yuitest_coverline("build/base-build/base-build.js", 258); -return sxclone; - } - }); - - /** - *

- * Builds a custom constructor function (class) from the - * main function, and array of extension functions (classes) - * provided. The NAME field for the constructor function is - * defined by the first argument passed in. - *

- *

- * The cfg object supports the following properties - *

- *
- *
dynamic <boolean>
- *
- *

If true (default), a completely new class - * is created which extends the main class, and acts as the - * host on which the extension classes are augmented.

- *

If false, the extensions classes are augmented directly to - * the main class, modifying the main class' prototype.

- *
- *
aggregates <String[]>
- *
An array of static property names, which will get aggregated - * on to the built class, in addition to the default properties build - * will always aggregate as defined by the main class' static _buildCfg - * property. - *
- *
- * - * @method build - * @deprecated Use the more convenient Base.create and Base.mix methods instead - * @static - * @param {Function} name The name of the new class. Used to define the NAME property for the new class. - * @param {Function} main The main class on which to base the built class - * @param {Function[]} extensions The set of extension classes which will be - * augmented/aggregated to the built class. - * @param {Object} cfg Optional. Build configuration for the class (see description). - * @return {Function} A custom class, created from the provided main and extension classes - */ - _yuitest_coverline("build/base-build/base-build.js", 299); -Base.build = function(name, main, extensions, cfg) { - _yuitest_coverfunc("build/base-build/base-build.js", "build", 299); -_yuitest_coverline("build/base-build/base-build.js", 300); -return build(name, main, extensions, null, null, cfg); - }; - - /** - * Creates a new class (constructor function) which extends the base class passed in as the second argument, - * and mixes in the array of extensions provided. - * - * Prototype properties or methods can be added to the new class, using the px argument (similar to Y.extend). - * - * Static properties or methods can be added to the new class, using the sx argument (similar to Y.extend). - * - * **NOTE FOR COMPONENT DEVELOPERS**: Both the `base` class, and `extensions` can define static a `_buildCfg` - * property, which acts as class creation meta-data, and drives how special static properties from the base - * class, or extensions should be copied, aggregated or (custom) mixed into the newly created class. - * - * The `_buildCfg` property is a hash with 3 supported properties: `statics`, `aggregates` and `custom`, e.g: - * - * // If the Base/Main class is the thing introducing the property: - * - * MyBaseClass._buildCfg = { - * - * // Static properties/methods to copy (Alias) to the built class. - * statics: ["CopyThisMethod", "CopyThisProperty"], - * - * // Static props to aggregate onto the built class. - * aggregates: ["AggregateThisProperty"], - * - * // Static properties which need custom handling (e.g. deep merge etc.) - * custom: { - * "CustomProperty" : function(property, Receiver, Supplier) { - * ... - * var triggers = Receiver.CustomProperty.triggers; - Receiver.CustomProperty.triggers = triggers.concat(Supplier.CustomProperty.triggers); - * ... - * } - * } - * }; - * - * MyBaseClass.CopyThisMethod = function() {...}; - * MyBaseClass.CopyThisProperty = "foo"; - * MyBaseClass.AggregateThisProperty = {...}; - * MyBaseClass.CustomProperty = { - * triggers: [...] - * } - * - * // Or, if the Extension is the thing introducing the property: - * - * MyExtension._buildCfg = { - * statics : ... - * aggregates : ... - * custom : ... - * } - * - * This way, when users pass your base or extension class to `Y.Base.create` or `Y.Base.mix`, they don't need to - * know which properties need special handling. `Y.Base` has a buildCfg which defines `ATTRS` for custom mix handling - * (to protect the static config objects), and `Y.Widget` has a buildCfg which specifies `HTML_PARSER` for - * straight up aggregation. - * - * @method create - * @static - * @param {Function} name The name of the newly created class. Used to define the NAME property for the new class. - * @param {Function} main The base class which the new class should extend. This class needs to be Base or a class derived from base (e.g. Widget). - * @param {Function[]} extensions The list of extensions which will be mixed into the built class. - * @param {Object} px The set of prototype properties/methods to add to the built class. - * @param {Object} sx The set of static properties/methods to add to the built class. - * @return {Function} The newly created class. - */ - _yuitest_coverline("build/base-build/base-build.js", 367); -Base.create = function(name, base, extensions, px, sx) { - _yuitest_coverfunc("build/base-build/base-build.js", "create", 367); -_yuitest_coverline("build/base-build/base-build.js", 368); -return build(name, base, extensions, px, sx); - }; - - /** - *

Mixes in a list of extensions to an existing class.

- * @method mix - * @static - * @param {Function} main The existing class into which the extensions should be mixed. The class needs to be Base or a class derived from Base (e.g. Widget) - * @param {Function[]} extensions The set of extension classes which will mixed into the existing main class. - * @return {Function} The modified main class, with extensions mixed in. - */ - _yuitest_coverline("build/base-build/base-build.js", 379); -Base.mix = function(main, extensions) { - _yuitest_coverfunc("build/base-build/base-build.js", "mix", 379); -_yuitest_coverline("build/base-build/base-build.js", 380); -return build(null, main, extensions, null, null, {dynamic:false}); - }; - - /** - * The build configuration for the Base class. - * - * Defines the static fields which need to be aggregated - * when the Base class is used as the main class passed to - * the Base.build method. - * - * @property _buildCfg - * @type Object - * @static - * @final - * @private - */ - _yuitest_coverline("build/base-build/base-build.js", 396); -Base._buildCfg = { - custom : { - ATTRS : function(prop, r, s) { - - _yuitest_coverfunc("build/base-build/base-build.js", "ATTRS", 398); -_yuitest_coverline("build/base-build/base-build.js", 400); -r.ATTRS = r.ATTRS || {}; - - _yuitest_coverline("build/base-build/base-build.js", 402); -if (s.ATTRS) { - - _yuitest_coverline("build/base-build/base-build.js", 404); -var sAttrs = s.ATTRS, - rAttrs = r.ATTRS, - a; - - _yuitest_coverline("build/base-build/base-build.js", 408); -for (a in sAttrs) { - _yuitest_coverline("build/base-build/base-build.js", 409); -if (sAttrs.hasOwnProperty(a)) { - _yuitest_coverline("build/base-build/base-build.js", 410); -rAttrs[a] = rAttrs[a] || {}; - _yuitest_coverline("build/base-build/base-build.js", 411); -Y.mix(rAttrs[a], sAttrs[a], true); - } - } - } - }, - _NON_ATTRS_CFG : arrayAggregator - }, - aggregates : ["_PLUG", "_UNPLUG"] - }; - - -}, '3.7.3', {"requires": ["base-base"]}); diff --git a/lib/yuilib/3.7.3/build/base-build/base-build-min.js b/lib/yuilib/3.7.3/build/base-build/base-build-min.js deleted file mode 100644 index 1d959d27edf..00000000000 --- a/lib/yuilib/3.7.3/build/base-build/base-build-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("base-build",function(e,t){var n=e.Base,r=e.Lang,i="initializer",s="destructor",o,u=function(e,t,n){n[e]&&(t[e]=(t[e]||[]).concat(n[e]))};n._build=function(t,r,o,u,a,f){var l=n._build,c=l._ctor(r,f),h=l._cfg(r,f,o),p=l._mixCust,d=c._yuibuild.dynamic,v,m,g,y,b,w;for(v=0,m=o.length;vThe base-core module provides the BaseCore class, the lightest version of Base, "," * which provides Base's basic lifecycle management and ATTRS construction support, "," * but doesn't fire init/destroy or attribute change events.

"," * "," *

It mixes in AttributeCore, which is the lightest version of Attribute

"," *"," * @module base"," * @submodule base-core"," */"," var O = Y.Object,"," L = Y.Lang,"," DOT = \".\","," INITIALIZED = \"initialized\","," DESTROYED = \"destroyed\","," INITIALIZER = \"initializer\","," VALUE = \"value\","," OBJECT_CONSTRUCTOR = Object.prototype.constructor,"," DEEP = \"deep\","," SHALLOW = \"shallow\","," DESTRUCTOR = \"destructor\",",""," AttributeCore = Y.AttributeCore,",""," _wlmix = function(r, s, wlhash) {"," var p;"," for (p in s) {"," if(wlhash[p]) { "," r[p] = s[p];"," }"," }"," return r;"," };",""," /**"," * The BaseCore class, is the lightest version of Base, and provides Base's "," * basic lifecycle management and ATTRS construction support, but doesn't "," * fire init/destroy or attribute change events."," *"," * BaseCore also handles the chaining of initializer and destructor methods across "," * the hierarchy as part of object construction and destruction. Additionally, attributes "," * configured through the static ATTRS "," * property for each class in the hierarchy will be initialized by BaseCore."," *"," * Classes which require attribute support, but don't intend to use/expose attribute "," * change events can extend BaseCore instead of Base for optimal kweight and "," * runtime performance."," * "," * @class BaseCore"," * @constructor"," * @uses AttributeCore"," * @param {Object} cfg Object with configuration property name/value pairs. "," * The object can be used to provide initial values for the objects published "," * attributes."," */"," function BaseCore(cfg) {"," if (!this._BaseInvoked) {"," this._BaseInvoked = true;",""," this._initBase(cfg);"," }"," }",""," /**"," * The list of properties which can be configured for each attribute "," * (e.g. setter, getter, writeOnce, readOnly etc.)"," *"," * @property _ATTR_CFG"," * @type Array"," * @static"," * @private"," */"," BaseCore._ATTR_CFG = AttributeCore._ATTR_CFG.concat(\"cloneDefaultValue\");"," BaseCore._ATTR_CFG_HASH = Y.Array.hash(BaseCore._ATTR_CFG);",""," /**"," * The array of non-attribute configuration properties supported by this class. "," * "," * For example `BaseCore` defines a \"plugins\" configuration property which "," * should not be set up as an attribute. This property is primarily required so "," * that when `_allowAdHocAttrs` is enabled by a class, "," * non-attribute configuration properties don't get added as ad-hoc attributes. "," *"," * @property _NON_ATTRS_CFG"," * @type Array"," * @static"," * @private"," */"," BaseCore._NON_ATTRS_CFG = [\"plugins\"];",""," /**"," * This property controls whether or not instances of this class should"," * allow users to add ad-hoc attributes through the constructor configuration "," * hash."," *"," * AdHoc attributes are attributes which are not defined by the class, and are "," * not handled by the MyClass._NON_ATTRS_CFG "," * "," * @property _allowAdHocAttrs"," * @type boolean"," * @default undefined (false)"," * @protected"," */",""," /**"," * The string to be used to identify instances of this class."," * "," * Classes extending BaseCore, should define their own"," * static NAME property, which should be camelCase by"," * convention (e.g. MyClass.NAME = \"myClass\";)."," *"," * @property NAME"," * @type String"," * @static"," */"," BaseCore.NAME = \"baseCore\";",""," /**"," * The default set of attributes which will be available for instances of this class, and "," * their configuration. In addition to the configuration properties listed by "," * AttributeCore's addAttr method, "," * the attribute can also be configured with a \"cloneDefaultValue\" property, which "," * defines how the statically defined value field should be protected "," * (\"shallow\", \"deep\" and false are supported values). "," *"," * By default if the value is an object literal or an array it will be \"shallow\" "," * cloned, to protect the default value."," *"," * @property ATTRS"," * @type Object"," * @static"," */"," BaseCore.ATTRS = {"," /**"," * Flag indicating whether or not this object"," * has been through the init lifecycle phase."," *"," * @attribute initialized"," * @readonly"," * @default false"," * @type boolean"," */"," initialized: {"," readOnly:true,"," value:false"," },",""," /**"," * Flag indicating whether or not this object"," * has been through the destroy lifecycle phase."," *"," * @attribute destroyed"," * @readonly"," * @default false"," * @type boolean"," */"," destroyed: {"," readOnly:true,"," value:false"," }"," };",""," BaseCore.prototype = {",""," /**"," * Internal construction logic for BaseCore."," *"," * @method _initBase"," * @param {Object} config The constructor configuration object"," * @private"," */"," _initBase : function(config) {",""," Y.stamp(this);",""," this._initAttribute(config);",""," // If Plugin.Host has been augmented [ through base-pluginhost ], setup it's"," // initial state, but don't initialize Plugins yet. That's done after initialization."," var PluginHost = Y.Plugin && Y.Plugin.Host;"," if (this._initPlugins && PluginHost) {"," PluginHost.call(this);"," }",""," if (this._lazyAddAttrs !== false) { this._lazyAddAttrs = true; }",""," /**"," * The string used to identify the class of this object."," *"," * @deprecated Use this.constructor.NAME"," * @property name"," * @type String"," */"," this.name = this.constructor.NAME;"," "," this.init.apply(this, arguments);"," },",""," /**"," * Initializes AttributeCore "," * "," * @method _initAttribute"," * @private"," */"," _initAttribute: function() {"," AttributeCore.apply(this);"," },",""," /**"," * Init lifecycle method, invoked during construction. Sets up attributes "," * and invokes initializers for the class hierarchy."," *"," * @method init"," * @chainable"," * @param {Object} cfg Object with configuration property name/value pairs"," * @return {BaseCore} A reference to this object"," */"," init: function(cfg) {",""," this._baseInit(cfg);",""," return this;"," },",""," /**"," * Internal initialization implementation for BaseCore"," *"," * @method _baseInit"," * @private"," */"," _baseInit: function(cfg) {"," this._initHierarchy(cfg);",""," if (this._initPlugins) {"," // Need to initPlugins manually, to handle constructor parsing, static Plug parsing"," this._initPlugins(cfg);"," }"," this._set(INITIALIZED, true);"," },",""," /**"," * Destroy lifecycle method. Invokes destructors for the class hierarchy."," *"," * @method destroy"," * @return {BaseCore} A reference to this object"," * @chainable"," */"," destroy: function() {"," this._baseDestroy();"," return this;"," },",""," /**"," * Internal destroy implementation for BaseCore"," *"," * @method _baseDestroy"," * @private"," */"," _baseDestroy : function() {"," if (this._destroyPlugins) {"," this._destroyPlugins();"," }"," this._destroyHierarchy();"," this._set(DESTROYED, true);"," },",""," /**"," * Returns the class hierarchy for this object, with BaseCore being the last class in the array."," *"," * @method _getClasses"," * @protected"," * @return {Function[]} An array of classes (constructor functions), making up the class hierarchy for this object."," * This value is cached the first time the method, or _getAttrCfgs, is invoked. Subsequent invocations return the "," * cached value."," */"," _getClasses : function() {"," if (!this._classes) {"," this._initHierarchyData();"," }"," return this._classes;"," },",""," /**"," * Returns an aggregated set of attribute configurations, by traversing "," * the class hierarchy."," *"," * @method _getAttrCfgs"," * @protected"," * @return {Object} The hash of attribute configurations, aggregated across classes in the hierarchy"," * This value is cached the first time the method, or _getClasses, is invoked. Subsequent invocations return"," * the cached value."," */"," _getAttrCfgs : function() {"," if (!this._attrs) {"," this._initHierarchyData();"," }"," return this._attrs;"," },",""," /**"," * A helper method used when processing ATTRS across the class hierarchy during "," * initialization. Returns a disposable object with the attributes defined for "," * the provided class, extracted from the set of all attributes passed in."," *"," * @method _filterAttrCfs"," * @private"," *"," * @param {Function} clazz The class for which the desired attributes are required."," * @param {Object} allCfgs The set of all attribute configurations for this instance. "," * Attributes will be removed from this set, if they belong to the filtered class, so"," * that by the time all classes are processed, allCfgs will be empty."," * "," * @return {Object} The set of attributes belonging to the class passed in, in the form"," * of an object with attribute name/configuration pairs."," */"," _filterAttrCfgs : function(clazz, allCfgs) {"," var cfgs = null, attr, attrs = clazz.ATTRS;",""," if (attrs) {"," for (attr in attrs) {"," if (allCfgs[attr]) {"," cfgs = cfgs || {};"," cfgs[attr] = allCfgs[attr];"," allCfgs[attr] = null;"," }"," }"," }",""," return cfgs;"," },",""," /**"," * @method _filterAdHocAttrs"," * @private"," *"," * @param {Object} allAttrs The set of all attribute configurations for this instance. "," * Attributes will be removed from this set, if they belong to the filtered class, so"," * that by the time all classes are processed, allCfgs will be empty."," * @param {Object} userVals The config object passed in by the user, from which adhoc attrs are to be filtered."," * @return {Object} The set of adhoc attributes passed in, in the form"," * of an object with attribute name/configuration pairs."," */"," _filterAdHocAttrs : function(allAttrs, userVals) {"," var adHocs,"," nonAttrs = this._nonAttrs,"," attr;",""," if (userVals) {"," adHocs = {};"," for (attr in userVals) {"," if (!allAttrs[attr] && !nonAttrs[attr] && userVals.hasOwnProperty(attr)) {"," adHocs[attr] = {"," value:userVals[attr]"," };"," }"," }"," }",""," return adHocs;"," },",""," /**"," * A helper method used by _getClasses and _getAttrCfgs, which determines both"," * the array of classes and aggregate set of attribute configurations"," * across the class hierarchy for the instance."," *"," * @method _initHierarchyData"," * @private"," */"," _initHierarchyData : function() {"," var c = this.constructor,"," i,"," l,"," nonAttrsCfg,"," nonAttrs = (this._allowAdHocAttrs) ? {} : null,"," classes = [],"," attrs = [];",""," while (c) {"," // Add to classes"," classes[classes.length] = c;",""," // Add to attributes"," if (c.ATTRS) {"," attrs[attrs.length] = c.ATTRS;"," }",""," if (this._allowAdHocAttrs) {"," nonAttrsCfg = c._NON_ATTRS_CFG; "," if (nonAttrsCfg) {"," for (i = 0, l = nonAttrsCfg.length; i < l; i++) {"," nonAttrs[nonAttrsCfg[i]] = true;"," }"," }"," }",""," c = c.superclass ? c.superclass.constructor : null;"," }",""," this._classes = classes;"," this._nonAttrs = nonAttrs;"," this._attrs = this._aggregateAttrs(attrs);"," },",""," /**"," * Utility method to define the attribute hash used to filter/whitelist property mixes for "," * this class. "," * "," * @method _attrCfgHash"," * @private"," */"," _attrCfgHash: function() {"," return BaseCore._ATTR_CFG_HASH;"," },",""," /**"," * A helper method, used by _initHierarchyData to aggregate "," * attribute configuration across the instances class hierarchy."," *"," * The method will protect the attribute configuration value to protect the statically defined "," * default value in ATTRS if required (if the value is an object literal, array or the "," * attribute configuration has cloneDefaultValue set to shallow or deep)."," *"," * @method _aggregateAttrs"," * @private"," * @param {Array} allAttrs An array of ATTRS definitions across classes in the hierarchy "," * (subclass first, Base last)"," * @return {Object} The aggregate set of ATTRS definitions for the instance"," */"," _aggregateAttrs : function(allAttrs) {"," var attr,"," attrs,"," cfg,"," val,"," path,"," i,"," clone,"," cfgPropsHash = this._attrCfgHash(),"," aggAttr,"," aggAttrs = {};",""," if (allAttrs) {"," for (i = allAttrs.length-1; i >= 0; --i) {"," attrs = allAttrs[i];",""," for (attr in attrs) {"," if (attrs.hasOwnProperty(attr)) {",""," // Protect config passed in"," cfg = _wlmix({}, attrs[attr], cfgPropsHash);",""," val = cfg.value;"," clone = cfg.cloneDefaultValue;",""," if (val) {"," if ( (clone === undefined && (OBJECT_CONSTRUCTOR === val.constructor || L.isArray(val))) || clone === DEEP || clone === true) {"," cfg.value = Y.clone(val);"," } else if (clone === SHALLOW) {"," cfg.value = Y.merge(val);"," }"," // else if (clone === false), don't clone the static default value. "," // It's intended to be used by reference."," }",""," path = null;"," if (attr.indexOf(DOT) !== -1) {"," path = attr.split(DOT);"," attr = path.shift();"," }",""," aggAttr = aggAttrs[attr];"," if (path && aggAttr && aggAttr.value) {"," O.setValue(aggAttr.value, path, val);"," } else if (!path) {"," if (!aggAttr) {"," aggAttrs[attr] = cfg;"," } else {"," if (aggAttr.valueFn && VALUE in cfg) {"," aggAttr.valueFn = null; "," }"," _wlmix(aggAttr, cfg, cfgPropsHash);"," }"," }"," }"," }"," }"," }",""," return aggAttrs;"," },",""," /**"," * Initializes the class hierarchy for the instance, which includes "," * initializing attributes for each class defined in the class's "," * static ATTRS property and "," * invoking the initializer method on the prototype of each class in the hierarchy."," *"," * @method _initHierarchy"," * @param {Object} userVals Object with configuration property name/value pairs"," * @private"," */"," _initHierarchy : function(userVals) {"," var lazy = this._lazyAddAttrs,"," constr,"," constrProto,"," ci,"," ei,"," el,"," extProto,"," exts,"," classes = this._getClasses(),"," attrCfgs = this._getAttrCfgs(),"," cl = classes.length - 1;",""," for (ci = cl; ci >= 0; ci--) {",""," constr = classes[ci];"," constrProto = constr.prototype;"," exts = constr._yuibuild && constr._yuibuild.exts; ",""," if (exts) {"," for (ei = 0, el = exts.length; ei < el; ei++) {"," exts[ei].apply(this, arguments);"," }"," }",""," this.addAttrs(this._filterAttrCfgs(constr, attrCfgs), userVals, lazy);",""," if (this._allowAdHocAttrs && ci === cl) { "," this.addAttrs(this._filterAdHocAttrs(attrCfgs, userVals), userVals, lazy);"," }",""," // Using INITIALIZER in hasOwnProperty check, for performance reasons (helps IE6 avoid GC thresholds when"," // referencing string literals). Not using it in apply, again, for performance \".\" is faster. "," if (constrProto.hasOwnProperty(INITIALIZER)) {"," constrProto.initializer.apply(this, arguments);"," }",""," if (exts) {"," for (ei = 0; ei < el; ei++) {"," extProto = exts[ei].prototype;"," if (extProto.hasOwnProperty(INITIALIZER)) {"," extProto.initializer.apply(this, arguments);"," }"," }"," }"," }"," },",""," /**"," * Destroys the class hierarchy for this instance by invoking"," * the destructor method on the prototype of each class in the hierarchy."," *"," * @method _destroyHierarchy"," * @private"," */"," _destroyHierarchy : function() {"," var constr,"," constrProto,"," ci, cl, ei, el, exts, extProto,"," classes = this._getClasses();",""," for (ci = 0, cl = classes.length; ci < cl; ci++) {"," constr = classes[ci];"," constrProto = constr.prototype;"," exts = constr._yuibuild && constr._yuibuild.exts; ",""," if (exts) {"," for (ei = 0, el = exts.length; ei < el; ei++) {"," extProto = exts[ei].prototype;"," if (extProto.hasOwnProperty(DESTRUCTOR)) {"," extProto.destructor.apply(this, arguments);"," }"," }"," }",""," if (constrProto.hasOwnProperty(DESTRUCTOR)) {"," constrProto.destructor.apply(this, arguments);"," }"," }"," },",""," /**"," * Default toString implementation. Provides the constructor NAME"," * and the instance guid, if set."," *"," * @method toString"," * @return {String} String representation for this object"," */"," toString: function() {"," return this.name + \"[\" + Y.stamp(this, true) + \"]\";"," }"," };",""," // Straightup augment, no wrapper functions"," Y.mix(BaseCore, AttributeCore, false, null, 1);",""," // Fix constructor"," BaseCore.prototype.constructor = BaseCore;",""," Y.BaseCore = BaseCore;","","","}, '3.7.3', {\"requires\": [\"attribute-core\"]});"]; -_yuitest_coverage["build/base-core/base-core.js"].lines = {"1":0,"21":0,"36":0,"37":0,"38":0,"39":0,"42":0,"66":0,"67":0,"68":0,"70":0,"83":0,"84":0,"99":0,"126":0,"143":0,"173":0,"184":0,"186":0,"190":0,"191":0,"192":0,"195":0,"204":0,"206":0,"216":0,"230":0,"232":0,"242":0,"244":0,"246":0,"248":0,"259":0,"260":0,"270":0,"271":0,"273":0,"274":0,"287":0,"288":0,"290":0,"304":0,"305":0,"307":0,"327":0,"329":0,"330":0,"331":0,"332":0,"333":0,"334":0,"339":0,"354":0,"358":0,"359":0,"360":0,"361":0,"362":0,"369":0,"381":0,"389":0,"391":0,"394":0,"395":0,"398":0,"399":0,"400":0,"401":0,"402":0,"407":0,"410":0,"411":0,"412":0,"423":0,"441":0,"452":0,"453":0,"454":0,"456":0,"457":0,"460":0,"462":0,"463":0,"465":0,"466":0,"467":0,"468":0,"469":0,"475":0,"476":0,"477":0,"478":0,"481":0,"482":0,"483":0,"484":0,"485":0,"486":0,"488":0,"489":0,"491":0,"499":0,"513":0,"525":0,"527":0,"528":0,"529":0,"531":0,"532":0,"533":0,"537":0,"539":0,"540":0,"545":0,"546":0,"549":0,"550":0,"551":0,"552":0,"553":0,"568":0,"573":0,"574":0,"575":0,"576":0,"578":0,"579":0,"580":0,"581":0,"582":0,"587":0,"588":0,"601":0,"606":0,"609":0,"611":0}; -_yuitest_coverage["build/base-core/base-core.js"].functions = {"_wlmix:35":0,"BaseCore:66":0,"_initBase:182":0,"_initAttribute:215":0,"init:228":0,"_baseInit:241":0,"destroy:258":0,"_baseDestroy:269":0,"_getClasses:286":0,"_getAttrCfgs:303":0,"_filterAttrCfgs:326":0,"_filterAdHocAttrs:353":0,"_initHierarchyData:380":0,"_attrCfgHash:422":0,"_aggregateAttrs:440":0,"_initHierarchy:512":0,"_destroyHierarchy:567":0,"toString:600":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/base-core/base-core.js"].coveredLines = 136; -_yuitest_coverage["build/base-core/base-core.js"].coveredFunctions = 19; -_yuitest_coverline("build/base-core/base-core.js", 1); -YUI.add('base-core', function (Y, NAME) { - - /** - * The base module provides the Base class, which objects requiring attribute and custom event support can extend. - * The module also provides two ways to reuse code - It augments Base with the Plugin.Host interface which provides - * plugin support and also provides the BaseCore.build method which provides a way to build custom classes using extensions. - * - * @module base - */ - - /** - *

The base-core module provides the BaseCore class, the lightest version of Base, - * which provides Base's basic lifecycle management and ATTRS construction support, - * but doesn't fire init/destroy or attribute change events.

- * - *

It mixes in AttributeCore, which is the lightest version of Attribute

- * - * @module base - * @submodule base-core - */ - _yuitest_coverfunc("build/base-core/base-core.js", "(anonymous 1)", 1); -_yuitest_coverline("build/base-core/base-core.js", 21); -var O = Y.Object, - L = Y.Lang, - DOT = ".", - INITIALIZED = "initialized", - DESTROYED = "destroyed", - INITIALIZER = "initializer", - VALUE = "value", - OBJECT_CONSTRUCTOR = Object.prototype.constructor, - DEEP = "deep", - SHALLOW = "shallow", - DESTRUCTOR = "destructor", - - AttributeCore = Y.AttributeCore, - - _wlmix = function(r, s, wlhash) { - _yuitest_coverfunc("build/base-core/base-core.js", "_wlmix", 35); -_yuitest_coverline("build/base-core/base-core.js", 36); -var p; - _yuitest_coverline("build/base-core/base-core.js", 37); -for (p in s) { - _yuitest_coverline("build/base-core/base-core.js", 38); -if(wlhash[p]) { - _yuitest_coverline("build/base-core/base-core.js", 39); -r[p] = s[p]; - } - } - _yuitest_coverline("build/base-core/base-core.js", 42); -return r; - }; - - /** - * The BaseCore class, is the lightest version of Base, and provides Base's - * basic lifecycle management and ATTRS construction support, but doesn't - * fire init/destroy or attribute change events. - * - * BaseCore also handles the chaining of initializer and destructor methods across - * the hierarchy as part of object construction and destruction. Additionally, attributes - * configured through the static ATTRS - * property for each class in the hierarchy will be initialized by BaseCore. - * - * Classes which require attribute support, but don't intend to use/expose attribute - * change events can extend BaseCore instead of Base for optimal kweight and - * runtime performance. - * - * @class BaseCore - * @constructor - * @uses AttributeCore - * @param {Object} cfg Object with configuration property name/value pairs. - * The object can be used to provide initial values for the objects published - * attributes. - */ - _yuitest_coverline("build/base-core/base-core.js", 66); -function BaseCore(cfg) { - _yuitest_coverfunc("build/base-core/base-core.js", "BaseCore", 66); -_yuitest_coverline("build/base-core/base-core.js", 67); -if (!this._BaseInvoked) { - _yuitest_coverline("build/base-core/base-core.js", 68); -this._BaseInvoked = true; - - _yuitest_coverline("build/base-core/base-core.js", 70); -this._initBase(cfg); - } - } - - /** - * The list of properties which can be configured for each attribute - * (e.g. setter, getter, writeOnce, readOnly etc.) - * - * @property _ATTR_CFG - * @type Array - * @static - * @private - */ - _yuitest_coverline("build/base-core/base-core.js", 83); -BaseCore._ATTR_CFG = AttributeCore._ATTR_CFG.concat("cloneDefaultValue"); - _yuitest_coverline("build/base-core/base-core.js", 84); -BaseCore._ATTR_CFG_HASH = Y.Array.hash(BaseCore._ATTR_CFG); - - /** - * The array of non-attribute configuration properties supported by this class. - * - * For example `BaseCore` defines a "plugins" configuration property which - * should not be set up as an attribute. This property is primarily required so - * that when `_allowAdHocAttrs` is enabled by a class, - * non-attribute configuration properties don't get added as ad-hoc attributes. - * - * @property _NON_ATTRS_CFG - * @type Array - * @static - * @private - */ - _yuitest_coverline("build/base-core/base-core.js", 99); -BaseCore._NON_ATTRS_CFG = ["plugins"]; - - /** - * This property controls whether or not instances of this class should - * allow users to add ad-hoc attributes through the constructor configuration - * hash. - * - * AdHoc attributes are attributes which are not defined by the class, and are - * not handled by the MyClass._NON_ATTRS_CFG - * - * @property _allowAdHocAttrs - * @type boolean - * @default undefined (false) - * @protected - */ - - /** - * The string to be used to identify instances of this class. - * - * Classes extending BaseCore, should define their own - * static NAME property, which should be camelCase by - * convention (e.g. MyClass.NAME = "myClass";). - * - * @property NAME - * @type String - * @static - */ - _yuitest_coverline("build/base-core/base-core.js", 126); -BaseCore.NAME = "baseCore"; - - /** - * The default set of attributes which will be available for instances of this class, and - * their configuration. In addition to the configuration properties listed by - * AttributeCore's addAttr method, - * the attribute can also be configured with a "cloneDefaultValue" property, which - * defines how the statically defined value field should be protected - * ("shallow", "deep" and false are supported values). - * - * By default if the value is an object literal or an array it will be "shallow" - * cloned, to protect the default value. - * - * @property ATTRS - * @type Object - * @static - */ - _yuitest_coverline("build/base-core/base-core.js", 143); -BaseCore.ATTRS = { - /** - * Flag indicating whether or not this object - * has been through the init lifecycle phase. - * - * @attribute initialized - * @readonly - * @default false - * @type boolean - */ - initialized: { - readOnly:true, - value:false - }, - - /** - * Flag indicating whether or not this object - * has been through the destroy lifecycle phase. - * - * @attribute destroyed - * @readonly - * @default false - * @type boolean - */ - destroyed: { - readOnly:true, - value:false - } - }; - - _yuitest_coverline("build/base-core/base-core.js", 173); -BaseCore.prototype = { - - /** - * Internal construction logic for BaseCore. - * - * @method _initBase - * @param {Object} config The constructor configuration object - * @private - */ - _initBase : function(config) { - - _yuitest_coverfunc("build/base-core/base-core.js", "_initBase", 182); -_yuitest_coverline("build/base-core/base-core.js", 184); -Y.stamp(this); - - _yuitest_coverline("build/base-core/base-core.js", 186); -this._initAttribute(config); - - // If Plugin.Host has been augmented [ through base-pluginhost ], setup it's - // initial state, but don't initialize Plugins yet. That's done after initialization. - _yuitest_coverline("build/base-core/base-core.js", 190); -var PluginHost = Y.Plugin && Y.Plugin.Host; - _yuitest_coverline("build/base-core/base-core.js", 191); -if (this._initPlugins && PluginHost) { - _yuitest_coverline("build/base-core/base-core.js", 192); -PluginHost.call(this); - } - - _yuitest_coverline("build/base-core/base-core.js", 195); -if (this._lazyAddAttrs !== false) { this._lazyAddAttrs = true; } - - /** - * The string used to identify the class of this object. - * - * @deprecated Use this.constructor.NAME - * @property name - * @type String - */ - _yuitest_coverline("build/base-core/base-core.js", 204); -this.name = this.constructor.NAME; - - _yuitest_coverline("build/base-core/base-core.js", 206); -this.init.apply(this, arguments); - }, - - /** - * Initializes AttributeCore - * - * @method _initAttribute - * @private - */ - _initAttribute: function() { - _yuitest_coverfunc("build/base-core/base-core.js", "_initAttribute", 215); -_yuitest_coverline("build/base-core/base-core.js", 216); -AttributeCore.apply(this); - }, - - /** - * Init lifecycle method, invoked during construction. Sets up attributes - * and invokes initializers for the class hierarchy. - * - * @method init - * @chainable - * @param {Object} cfg Object with configuration property name/value pairs - * @return {BaseCore} A reference to this object - */ - init: function(cfg) { - - _yuitest_coverfunc("build/base-core/base-core.js", "init", 228); -_yuitest_coverline("build/base-core/base-core.js", 230); -this._baseInit(cfg); - - _yuitest_coverline("build/base-core/base-core.js", 232); -return this; - }, - - /** - * Internal initialization implementation for BaseCore - * - * @method _baseInit - * @private - */ - _baseInit: function(cfg) { - _yuitest_coverfunc("build/base-core/base-core.js", "_baseInit", 241); -_yuitest_coverline("build/base-core/base-core.js", 242); -this._initHierarchy(cfg); - - _yuitest_coverline("build/base-core/base-core.js", 244); -if (this._initPlugins) { - // Need to initPlugins manually, to handle constructor parsing, static Plug parsing - _yuitest_coverline("build/base-core/base-core.js", 246); -this._initPlugins(cfg); - } - _yuitest_coverline("build/base-core/base-core.js", 248); -this._set(INITIALIZED, true); - }, - - /** - * Destroy lifecycle method. Invokes destructors for the class hierarchy. - * - * @method destroy - * @return {BaseCore} A reference to this object - * @chainable - */ - destroy: function() { - _yuitest_coverfunc("build/base-core/base-core.js", "destroy", 258); -_yuitest_coverline("build/base-core/base-core.js", 259); -this._baseDestroy(); - _yuitest_coverline("build/base-core/base-core.js", 260); -return this; - }, - - /** - * Internal destroy implementation for BaseCore - * - * @method _baseDestroy - * @private - */ - _baseDestroy : function() { - _yuitest_coverfunc("build/base-core/base-core.js", "_baseDestroy", 269); -_yuitest_coverline("build/base-core/base-core.js", 270); -if (this._destroyPlugins) { - _yuitest_coverline("build/base-core/base-core.js", 271); -this._destroyPlugins(); - } - _yuitest_coverline("build/base-core/base-core.js", 273); -this._destroyHierarchy(); - _yuitest_coverline("build/base-core/base-core.js", 274); -this._set(DESTROYED, true); - }, - - /** - * Returns the class hierarchy for this object, with BaseCore being the last class in the array. - * - * @method _getClasses - * @protected - * @return {Function[]} An array of classes (constructor functions), making up the class hierarchy for this object. - * This value is cached the first time the method, or _getAttrCfgs, is invoked. Subsequent invocations return the - * cached value. - */ - _getClasses : function() { - _yuitest_coverfunc("build/base-core/base-core.js", "_getClasses", 286); -_yuitest_coverline("build/base-core/base-core.js", 287); -if (!this._classes) { - _yuitest_coverline("build/base-core/base-core.js", 288); -this._initHierarchyData(); - } - _yuitest_coverline("build/base-core/base-core.js", 290); -return this._classes; - }, - - /** - * Returns an aggregated set of attribute configurations, by traversing - * the class hierarchy. - * - * @method _getAttrCfgs - * @protected - * @return {Object} The hash of attribute configurations, aggregated across classes in the hierarchy - * This value is cached the first time the method, or _getClasses, is invoked. Subsequent invocations return - * the cached value. - */ - _getAttrCfgs : function() { - _yuitest_coverfunc("build/base-core/base-core.js", "_getAttrCfgs", 303); -_yuitest_coverline("build/base-core/base-core.js", 304); -if (!this._attrs) { - _yuitest_coverline("build/base-core/base-core.js", 305); -this._initHierarchyData(); - } - _yuitest_coverline("build/base-core/base-core.js", 307); -return this._attrs; - }, - - /** - * A helper method used when processing ATTRS across the class hierarchy during - * initialization. Returns a disposable object with the attributes defined for - * the provided class, extracted from the set of all attributes passed in. - * - * @method _filterAttrCfs - * @private - * - * @param {Function} clazz The class for which the desired attributes are required. - * @param {Object} allCfgs The set of all attribute configurations for this instance. - * Attributes will be removed from this set, if they belong to the filtered class, so - * that by the time all classes are processed, allCfgs will be empty. - * - * @return {Object} The set of attributes belonging to the class passed in, in the form - * of an object with attribute name/configuration pairs. - */ - _filterAttrCfgs : function(clazz, allCfgs) { - _yuitest_coverfunc("build/base-core/base-core.js", "_filterAttrCfgs", 326); -_yuitest_coverline("build/base-core/base-core.js", 327); -var cfgs = null, attr, attrs = clazz.ATTRS; - - _yuitest_coverline("build/base-core/base-core.js", 329); -if (attrs) { - _yuitest_coverline("build/base-core/base-core.js", 330); -for (attr in attrs) { - _yuitest_coverline("build/base-core/base-core.js", 331); -if (allCfgs[attr]) { - _yuitest_coverline("build/base-core/base-core.js", 332); -cfgs = cfgs || {}; - _yuitest_coverline("build/base-core/base-core.js", 333); -cfgs[attr] = allCfgs[attr]; - _yuitest_coverline("build/base-core/base-core.js", 334); -allCfgs[attr] = null; - } - } - } - - _yuitest_coverline("build/base-core/base-core.js", 339); -return cfgs; - }, - - /** - * @method _filterAdHocAttrs - * @private - * - * @param {Object} allAttrs The set of all attribute configurations for this instance. - * Attributes will be removed from this set, if they belong to the filtered class, so - * that by the time all classes are processed, allCfgs will be empty. - * @param {Object} userVals The config object passed in by the user, from which adhoc attrs are to be filtered. - * @return {Object} The set of adhoc attributes passed in, in the form - * of an object with attribute name/configuration pairs. - */ - _filterAdHocAttrs : function(allAttrs, userVals) { - _yuitest_coverfunc("build/base-core/base-core.js", "_filterAdHocAttrs", 353); -_yuitest_coverline("build/base-core/base-core.js", 354); -var adHocs, - nonAttrs = this._nonAttrs, - attr; - - _yuitest_coverline("build/base-core/base-core.js", 358); -if (userVals) { - _yuitest_coverline("build/base-core/base-core.js", 359); -adHocs = {}; - _yuitest_coverline("build/base-core/base-core.js", 360); -for (attr in userVals) { - _yuitest_coverline("build/base-core/base-core.js", 361); -if (!allAttrs[attr] && !nonAttrs[attr] && userVals.hasOwnProperty(attr)) { - _yuitest_coverline("build/base-core/base-core.js", 362); -adHocs[attr] = { - value:userVals[attr] - }; - } - } - } - - _yuitest_coverline("build/base-core/base-core.js", 369); -return adHocs; - }, - - /** - * A helper method used by _getClasses and _getAttrCfgs, which determines both - * the array of classes and aggregate set of attribute configurations - * across the class hierarchy for the instance. - * - * @method _initHierarchyData - * @private - */ - _initHierarchyData : function() { - _yuitest_coverfunc("build/base-core/base-core.js", "_initHierarchyData", 380); -_yuitest_coverline("build/base-core/base-core.js", 381); -var c = this.constructor, - i, - l, - nonAttrsCfg, - nonAttrs = (this._allowAdHocAttrs) ? {} : null, - classes = [], - attrs = []; - - _yuitest_coverline("build/base-core/base-core.js", 389); -while (c) { - // Add to classes - _yuitest_coverline("build/base-core/base-core.js", 391); -classes[classes.length] = c; - - // Add to attributes - _yuitest_coverline("build/base-core/base-core.js", 394); -if (c.ATTRS) { - _yuitest_coverline("build/base-core/base-core.js", 395); -attrs[attrs.length] = c.ATTRS; - } - - _yuitest_coverline("build/base-core/base-core.js", 398); -if (this._allowAdHocAttrs) { - _yuitest_coverline("build/base-core/base-core.js", 399); -nonAttrsCfg = c._NON_ATTRS_CFG; - _yuitest_coverline("build/base-core/base-core.js", 400); -if (nonAttrsCfg) { - _yuitest_coverline("build/base-core/base-core.js", 401); -for (i = 0, l = nonAttrsCfg.length; i < l; i++) { - _yuitest_coverline("build/base-core/base-core.js", 402); -nonAttrs[nonAttrsCfg[i]] = true; - } - } - } - - _yuitest_coverline("build/base-core/base-core.js", 407); -c = c.superclass ? c.superclass.constructor : null; - } - - _yuitest_coverline("build/base-core/base-core.js", 410); -this._classes = classes; - _yuitest_coverline("build/base-core/base-core.js", 411); -this._nonAttrs = nonAttrs; - _yuitest_coverline("build/base-core/base-core.js", 412); -this._attrs = this._aggregateAttrs(attrs); - }, - - /** - * Utility method to define the attribute hash used to filter/whitelist property mixes for - * this class. - * - * @method _attrCfgHash - * @private - */ - _attrCfgHash: function() { - _yuitest_coverfunc("build/base-core/base-core.js", "_attrCfgHash", 422); -_yuitest_coverline("build/base-core/base-core.js", 423); -return BaseCore._ATTR_CFG_HASH; - }, - - /** - * A helper method, used by _initHierarchyData to aggregate - * attribute configuration across the instances class hierarchy. - * - * The method will protect the attribute configuration value to protect the statically defined - * default value in ATTRS if required (if the value is an object literal, array or the - * attribute configuration has cloneDefaultValue set to shallow or deep). - * - * @method _aggregateAttrs - * @private - * @param {Array} allAttrs An array of ATTRS definitions across classes in the hierarchy - * (subclass first, Base last) - * @return {Object} The aggregate set of ATTRS definitions for the instance - */ - _aggregateAttrs : function(allAttrs) { - _yuitest_coverfunc("build/base-core/base-core.js", "_aggregateAttrs", 440); -_yuitest_coverline("build/base-core/base-core.js", 441); -var attr, - attrs, - cfg, - val, - path, - i, - clone, - cfgPropsHash = this._attrCfgHash(), - aggAttr, - aggAttrs = {}; - - _yuitest_coverline("build/base-core/base-core.js", 452); -if (allAttrs) { - _yuitest_coverline("build/base-core/base-core.js", 453); -for (i = allAttrs.length-1; i >= 0; --i) { - _yuitest_coverline("build/base-core/base-core.js", 454); -attrs = allAttrs[i]; - - _yuitest_coverline("build/base-core/base-core.js", 456); -for (attr in attrs) { - _yuitest_coverline("build/base-core/base-core.js", 457); -if (attrs.hasOwnProperty(attr)) { - - // Protect config passed in - _yuitest_coverline("build/base-core/base-core.js", 460); -cfg = _wlmix({}, attrs[attr], cfgPropsHash); - - _yuitest_coverline("build/base-core/base-core.js", 462); -val = cfg.value; - _yuitest_coverline("build/base-core/base-core.js", 463); -clone = cfg.cloneDefaultValue; - - _yuitest_coverline("build/base-core/base-core.js", 465); -if (val) { - _yuitest_coverline("build/base-core/base-core.js", 466); -if ( (clone === undefined && (OBJECT_CONSTRUCTOR === val.constructor || L.isArray(val))) || clone === DEEP || clone === true) { - _yuitest_coverline("build/base-core/base-core.js", 467); -cfg.value = Y.clone(val); - } else {_yuitest_coverline("build/base-core/base-core.js", 468); -if (clone === SHALLOW) { - _yuitest_coverline("build/base-core/base-core.js", 469); -cfg.value = Y.merge(val); - }} - // else if (clone === false), don't clone the static default value. - // It's intended to be used by reference. - } - - _yuitest_coverline("build/base-core/base-core.js", 475); -path = null; - _yuitest_coverline("build/base-core/base-core.js", 476); -if (attr.indexOf(DOT) !== -1) { - _yuitest_coverline("build/base-core/base-core.js", 477); -path = attr.split(DOT); - _yuitest_coverline("build/base-core/base-core.js", 478); -attr = path.shift(); - } - - _yuitest_coverline("build/base-core/base-core.js", 481); -aggAttr = aggAttrs[attr]; - _yuitest_coverline("build/base-core/base-core.js", 482); -if (path && aggAttr && aggAttr.value) { - _yuitest_coverline("build/base-core/base-core.js", 483); -O.setValue(aggAttr.value, path, val); - } else {_yuitest_coverline("build/base-core/base-core.js", 484); -if (!path) { - _yuitest_coverline("build/base-core/base-core.js", 485); -if (!aggAttr) { - _yuitest_coverline("build/base-core/base-core.js", 486); -aggAttrs[attr] = cfg; - } else { - _yuitest_coverline("build/base-core/base-core.js", 488); -if (aggAttr.valueFn && VALUE in cfg) { - _yuitest_coverline("build/base-core/base-core.js", 489); -aggAttr.valueFn = null; - } - _yuitest_coverline("build/base-core/base-core.js", 491); -_wlmix(aggAttr, cfg, cfgPropsHash); - } - }} - } - } - } - } - - _yuitest_coverline("build/base-core/base-core.js", 499); -return aggAttrs; - }, - - /** - * Initializes the class hierarchy for the instance, which includes - * initializing attributes for each class defined in the class's - * static ATTRS property and - * invoking the initializer method on the prototype of each class in the hierarchy. - * - * @method _initHierarchy - * @param {Object} userVals Object with configuration property name/value pairs - * @private - */ - _initHierarchy : function(userVals) { - _yuitest_coverfunc("build/base-core/base-core.js", "_initHierarchy", 512); -_yuitest_coverline("build/base-core/base-core.js", 513); -var lazy = this._lazyAddAttrs, - constr, - constrProto, - ci, - ei, - el, - extProto, - exts, - classes = this._getClasses(), - attrCfgs = this._getAttrCfgs(), - cl = classes.length - 1; - - _yuitest_coverline("build/base-core/base-core.js", 525); -for (ci = cl; ci >= 0; ci--) { - - _yuitest_coverline("build/base-core/base-core.js", 527); -constr = classes[ci]; - _yuitest_coverline("build/base-core/base-core.js", 528); -constrProto = constr.prototype; - _yuitest_coverline("build/base-core/base-core.js", 529); -exts = constr._yuibuild && constr._yuibuild.exts; - - _yuitest_coverline("build/base-core/base-core.js", 531); -if (exts) { - _yuitest_coverline("build/base-core/base-core.js", 532); -for (ei = 0, el = exts.length; ei < el; ei++) { - _yuitest_coverline("build/base-core/base-core.js", 533); -exts[ei].apply(this, arguments); - } - } - - _yuitest_coverline("build/base-core/base-core.js", 537); -this.addAttrs(this._filterAttrCfgs(constr, attrCfgs), userVals, lazy); - - _yuitest_coverline("build/base-core/base-core.js", 539); -if (this._allowAdHocAttrs && ci === cl) { - _yuitest_coverline("build/base-core/base-core.js", 540); -this.addAttrs(this._filterAdHocAttrs(attrCfgs, userVals), userVals, lazy); - } - - // Using INITIALIZER in hasOwnProperty check, for performance reasons (helps IE6 avoid GC thresholds when - // referencing string literals). Not using it in apply, again, for performance "." is faster. - _yuitest_coverline("build/base-core/base-core.js", 545); -if (constrProto.hasOwnProperty(INITIALIZER)) { - _yuitest_coverline("build/base-core/base-core.js", 546); -constrProto.initializer.apply(this, arguments); - } - - _yuitest_coverline("build/base-core/base-core.js", 549); -if (exts) { - _yuitest_coverline("build/base-core/base-core.js", 550); -for (ei = 0; ei < el; ei++) { - _yuitest_coverline("build/base-core/base-core.js", 551); -extProto = exts[ei].prototype; - _yuitest_coverline("build/base-core/base-core.js", 552); -if (extProto.hasOwnProperty(INITIALIZER)) { - _yuitest_coverline("build/base-core/base-core.js", 553); -extProto.initializer.apply(this, arguments); - } - } - } - } - }, - - /** - * Destroys the class hierarchy for this instance by invoking - * the destructor method on the prototype of each class in the hierarchy. - * - * @method _destroyHierarchy - * @private - */ - _destroyHierarchy : function() { - _yuitest_coverfunc("build/base-core/base-core.js", "_destroyHierarchy", 567); -_yuitest_coverline("build/base-core/base-core.js", 568); -var constr, - constrProto, - ci, cl, ei, el, exts, extProto, - classes = this._getClasses(); - - _yuitest_coverline("build/base-core/base-core.js", 573); -for (ci = 0, cl = classes.length; ci < cl; ci++) { - _yuitest_coverline("build/base-core/base-core.js", 574); -constr = classes[ci]; - _yuitest_coverline("build/base-core/base-core.js", 575); -constrProto = constr.prototype; - _yuitest_coverline("build/base-core/base-core.js", 576); -exts = constr._yuibuild && constr._yuibuild.exts; - - _yuitest_coverline("build/base-core/base-core.js", 578); -if (exts) { - _yuitest_coverline("build/base-core/base-core.js", 579); -for (ei = 0, el = exts.length; ei < el; ei++) { - _yuitest_coverline("build/base-core/base-core.js", 580); -extProto = exts[ei].prototype; - _yuitest_coverline("build/base-core/base-core.js", 581); -if (extProto.hasOwnProperty(DESTRUCTOR)) { - _yuitest_coverline("build/base-core/base-core.js", 582); -extProto.destructor.apply(this, arguments); - } - } - } - - _yuitest_coverline("build/base-core/base-core.js", 587); -if (constrProto.hasOwnProperty(DESTRUCTOR)) { - _yuitest_coverline("build/base-core/base-core.js", 588); -constrProto.destructor.apply(this, arguments); - } - } - }, - - /** - * Default toString implementation. Provides the constructor NAME - * and the instance guid, if set. - * - * @method toString - * @return {String} String representation for this object - */ - toString: function() { - _yuitest_coverfunc("build/base-core/base-core.js", "toString", 600); -_yuitest_coverline("build/base-core/base-core.js", 601); -return this.name + "[" + Y.stamp(this, true) + "]"; - } - }; - - // Straightup augment, no wrapper functions - _yuitest_coverline("build/base-core/base-core.js", 606); -Y.mix(BaseCore, AttributeCore, false, null, 1); - - // Fix constructor - _yuitest_coverline("build/base-core/base-core.js", 609); -BaseCore.prototype.constructor = BaseCore; - - _yuitest_coverline("build/base-core/base-core.js", 611); -Y.BaseCore = BaseCore; - - -}, '3.7.3', {"requires": ["attribute-core"]}); diff --git a/lib/yuilib/3.7.3/build/base-core/base-core-min.js b/lib/yuilib/3.7.3/build/base-core/base-core-min.js deleted file mode 100644 index 84f4b8aca26..00000000000 --- a/lib/yuilib/3.7.3/build/base-core/base-core-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("base-core",function(e,t){function v(e){this._BaseInvoked||(this._BaseInvoked=!0,this._initBase(e))}var n=e.Object,r=e.Lang,i=".",s="initialized",o="destroyed",u="initializer",a="value",f=Object.prototype.constructor,l="deep",c="shallow",h="destructor",p=e.AttributeCore,d=function(e,t,n){var r;for(r in t)n[r]&&(e[r]=t[r]);return e};v._ATTR_CFG=p._ATTR_CFG.concat("cloneDefaultValue"),v._ATTR_CFG_HASH=e.Array.hash(v._ATTR_CFG),v._NON_ATTRS_CFG=["plugins"],v.NAME="baseCore",v.ATTRS={initialized:{readOnly:!0,value:!1},destroyed:{readOnly:!0,value:!1}},v.prototype={_initBase:function(t){e.stamp(this),this._initAttribute(t);var n=e.Plugin&&e.Plugin.Host;this._initPlugins&&n&&n.call(this),this._lazyAddAttrs!==!1&&(this._lazyAddAttrs=!0),this.name=this.constructor.NAME,this.init.apply(this,arguments)},_initAttribute:function(){p.apply(this)},init:function(e){return this._baseInit(e),this},_baseInit:function(e){this._initHierarchy(e),this._initPlugins&&this._initPlugins(e),this._set(s,!0)},destroy:function(){return this._baseDestroy(),this},_baseDestroy:function(){this._destroyPlugins&&this._destroyPlugins(),this._destroyHierarchy(),this._set(o,!0)},_getClasses:function(){return this._classes||this._initHierarchyData(),this._classes},_getAttrCfgs:function(){return this._attrs||this._initHierarchyData(),this._attrs},_filterAttrCfgs:function(e,t){var n=null,r,i=e.ATTRS;if(i)for(r in i)t[r]&&(n=n||{},n[r]=t[r],t[r]=null);return n},_filterAdHocAttrs:function(e,t){var n,r=this._nonAttrs,i;if(t){n={};for(i in t)!e[i]&&!r[i]&&t.hasOwnProperty(i)&&(n[i]={value:t[i]})}return n},_initHierarchyData:function(){var e=this.constructor,t,n,r,i=this._allowAdHocAttrs?{}:null,s=[],o=[];while(e){s[s.length]=e,e.ATTRS&&(o[o.length]=e.ATTRS);if(this._allowAdHocAttrs){r=e._NON_ATTRS_CFG;if(r)for(t=0,n=r.length;t=0;--v){o=t[v];for(s in o)o.hasOwnProperty(s)&&(u=d({},o[s],g),h=u.value,m=u.cloneDefaultValue,h&&(m===undefined&&(f===h.constructor||r.isArray(h))||m===l||m===!0?u.value=e.clone(h):m===c&&(u.value=e.merge(h))),p=null,s.indexOf(i)!==-1&&(p=s.split(i),s=p.shift()),y=b[s],p&&y&&y.value?n.setValue(y.value,p,h):p||(y?(y.valueFn&&a in u&&(y.valueFn=null),d(y,u,g)):b[s]=u))}return b},_initHierarchy:function(e){var t=this._lazyAddAttrs,n,r,i,s,o,a,f,l=this._getClasses(),c=this._getAttrCfgs(),h=l.length-1;for(i=h;i>=0;i--){n=l[i],r=n.prototype,f=n._yuibuild&&n._yuibuild.exts;if(f)for(s=0,o=f.length;s= parseInt(range[0], 10) && num <= parseInt(range[1], 10)) {"," return true;"," }"," else if (range.length == 1 && (parseInt(elements[i], 10) == num)) {"," return true;"," }"," }"," return false; "," }"," },",""," /**"," * Given a specific date, returns an array of rules (from the customRenderer rule set)"," * that the given date matches."," *"," * @method _getRulesForDate"," * @param {Date} oDate The date for which an array of rules is needed"," * @private"," * @return {Array} Returns an array of `String`s, each containg the name of"," * a rule that the given date matches."," */"," _getRulesForDate : function (oDate) {"," var year = oDate.getFullYear(),"," month = oDate.getMonth(),"," date = oDate.getDate(),"," wday = oDate.getDay(),"," rules = this._rules, "," outputRules = [],"," years, months, dates, days;",""," for (years in rules) {"," if (this._isNumInList(year, years)) {"," if (L.isString(rules[years])) {"," outputRules.push(rules[years]);"," }"," else {"," for (months in rules[years]) {"," if (this._isNumInList(month, months)) {"," if (L.isString(rules[years][months])) {"," outputRules.push(rules[years][months]);"," }"," else {"," for (dates in rules[years][months]) {"," if (this._isNumInList(date, dates)) {"," if (L.isString(rules[years][months][dates])) {"," outputRules.push(rules[years][months][dates]);"," }"," else {"," for (days in rules[years][months][dates]) {"," if (this._isNumInList(wday, days)) {"," if (L.isString(rules[years][months][dates][days])) {"," outputRules.push(rules[years][months][dates][days]);"," }"," }"," }"," }"," }"," }"," }"," }"," } "," }"," }"," }"," return outputRules;"," },",""," /**"," * A utility method which, given a specific date and a name of the rule,"," * checks whether the date matches the given rule."," *"," * @method _matchesRule"," * @param {Date} oDate The date to check"," * @param {String} rule The name of the rule that the date should match."," * @private"," * @return {boolean} Returns true if the date matches the given rule."," *"," */"," _matchesRule : function (oDate, rule) {"," return (iOf(this._getRulesForDate(oDate), rule) >= 0);"," },",""," /**"," * A utility method which checks whether a given date matches the `enabledDatesRule`"," * or does not match the `disabledDatesRule` and therefore whether it can be selected."," * @method _canBeSelected"," * @param {Date} oDate The date to check"," * @private"," * @return {boolean} Returns true if the date can be selected; false otherwise."," */"," _canBeSelected : function (oDate) {"," "," var enabledDatesRule = this.get(\"enabledDatesRule\"),"," disabledDatesRule = this.get(\"disabledDatesRule\");",""," if (enabledDatesRule) {"," return this._matchesRule(oDate, enabledDatesRule);"," }"," else if (disabledDatesRule) {"," return !this._matchesRule(oDate, disabledDatesRule);"," }"," else {"," return true;"," }"," },",""," /**"," * Selects a given date or array of dates."," * @method selectDates"," * @param {Date|Array} dates A `Date` or `Array` of `Date`s."," */"," selectDates : function (dates) {"," if (ydate.isValidDate(dates)) {"," this._addDateToSelection(dates);"," }"," else if (L.isArray(dates)) {"," this._addDatesToSelection(dates);"," }"," },",""," /**"," * Deselects a given date or array of dates, or deselects"," * all dates if no argument is specified."," * @method deselectDates"," * @param {Date|Array} [dates] A `Date` or `Array` of `Date`s, or no"," * argument if all dates should be deselected."," */"," deselectDates : function (dates) {"," if (!dates) {"," this._clearSelection();"," }"," else if (ydate.isValidDate(dates)) {"," this._removeDateFromSelection(dates);"," }"," else if (L.isArray(dates)) {"," this._removeDatesFromSelection(dates);"," }"," },",""," /**"," * A utility method that adds a given date to selection.."," * @method _addDateToSelection"," * @param {Date} oDate The date to add to selection."," * @param {Number} [index] An optional parameter that is used"," * to differentiate between individual date selections and multiple"," * date selections."," * @private"," */"," _addDateToSelection : function (oDate, index) {",""," if (this._canBeSelected(oDate)) {",""," var year = oDate.getFullYear(),"," month = oDate.getMonth(),"," day = oDate.getDate();"," "," if (hasKey(this._selectedDates, year)) {"," if (hasKey(this._selectedDates[year], month)) {"," this._selectedDates[year][month][day] = oDate;"," }"," else {"," this._selectedDates[year][month] = {};"," this._selectedDates[year][month][day] = oDate;"," }"," }"," else {"," this._selectedDates[year] = {};"," this._selectedDates[year][month] = {};"," this._selectedDates[year][month][day] = oDate;"," }",""," this._selectedDates = setVal(this._selectedDates, [year, month, day], oDate);",""," if (!index) {"," this._fireSelectionChange();"," }"," }"," },",""," /**"," * A utility method that adds a given list of dates to selection."," * @method _addDatesToSelection"," * @param {Array} datesArray The list of dates to add to selection."," * @private"," */"," _addDatesToSelection : function (datesArray) {"," each(datesArray, this._addDateToSelection, this);"," this._fireSelectionChange();"," },",""," /**"," * A utility method that adds a given range of dates to selection."," * @method _addDateRangeToSelection"," * @param {Date} startDate The first date of the given range."," * @param {Date} endDate The last date of the given range."," * @private"," */"," _addDateRangeToSelection : function (startDate, endDate) {",""," var timezoneDifference = (endDate.getTimezoneOffset() - startDate.getTimezoneOffset())*60000,"," startTime = startDate.getTime(),"," endTime = endDate.getTime();"," "," if (startTime > endTime) {"," var tempTime = startTime;"," startTime = endTime;"," endTime = tempTime + timezoneDifference;"," }"," else {"," endTime = endTime - timezoneDifference;"," }","",""," for (var time = startTime; time <= endTime; time += 86400000) {"," var addedDate = new Date(time);"," addedDate.setHours(12);"," this._addDateToSelection(addedDate, time);"," }"," this._fireSelectionChange();"," },",""," /**"," * A utility method that removes a given date from selection.."," * @method _removeDateFromSelection"," * @param {Date} oDate The date to remove from selection."," * @param {Number} [index] An optional parameter that is used"," * to differentiate between individual date selections and multiple"," * date selections."," * @private"," */"," _removeDateFromSelection : function (oDate, index) {"," var year = oDate.getFullYear(),"," month = oDate.getMonth(),"," day = oDate.getDate();"," if (hasKey(this._selectedDates, year) && "," hasKey(this._selectedDates[year], month) && "," hasKey(this._selectedDates[year][month], day)) {"," delete this._selectedDates[year][month][day];"," if (!index) {"," this._fireSelectionChange();"," }"," }"," },",""," /**"," * A utility method that removes a given list of dates from selection."," * @method _removeDatesFromSelection"," * @param {Array} datesArray The list of dates to remove from selection."," * @private"," */"," _removeDatesFromSelection : function (datesArray) {"," each(datesArray, this._removeDateFromSelection, this);"," this._fireSelectionChange();"," },",""," /**"," * A utility method that removes a given range of dates from selection."," * @method _removeDateRangeFromSelection"," * @param {Date} startDate The first date of the given range."," * @param {Date} endDate The last date of the given range."," * @private"," */"," _removeDateRangeFromSelection : function (startDate, endDate) {"," var startTime = startDate.getTime(),"," endTime = endDate.getTime();"," "," for (var time = startTime; time <= endTime; time += 86400000) {"," this._removeDateFromSelection(new Date(time), time);"," }",""," this._fireSelectionChange(); "," },",""," /**"," * A utility method that removes all dates from selection."," * @method _clearSelection"," * @param {boolean} noevent A Boolean specifying whether a selectionChange"," * event should be fired. If true, the event is not fired."," * @private"," */"," _clearSelection : function (noevent) {"," this._selectedDates = {};"," this.get(\"contentBox\").all(\".\" + CAL_DAY_SELECTED).removeClass(CAL_DAY_SELECTED).setAttribute(\"aria-selected\", false);"," if (!noevent) {"," this._fireSelectionChange();"," }"," },",""," /**"," * A utility method that fires a selectionChange event."," * @method _fireSelectionChange"," * @private"," */"," _fireSelectionChange : function () {",""," /**"," * Fired when the set of selected dates changes. Contains a payload with"," * a `newSelection` property with an array of selected dates."," *"," * @event selectionChange"," */"," this.fire(\"selectionChange\", {newSelection: this._getSelectedDatesList()});"," },",""," /**"," * A utility method that restores cells modified by custom formatting."," * @method _restoreModifiedCells"," * @private"," */"," _restoreModifiedCells : function () {"," var contentbox = this.get(\"contentBox\"),"," id;"," for (id in this._storedDateCells) {"," contentbox.one(\"#\" + id).replace(this._storedDateCells[id]);"," delete this._storedDateCells[id];"," }"," },",""," /**"," * A rendering assist method that renders all cells modified by the customRenderer"," * rules, as well as the enabledDatesRule and disabledDatesRule."," * @method _renderCustomRules"," * @private"," */"," _renderCustomRules : function () {",""," this.get(\"contentBox\").all(\".\" + CAL_DAY + \",.\" + CAL_NEXTMONTH_DAY).removeClass(SELECTION_DISABLED).setAttribute(\"aria-disabled\", false);",""," if (!isEmpty(this._rules)) {"," var enRule = this.get(\"enabledDatesRule\"),"," disRule = this.get(\"disabledDatesRule\");",""," for (var paneNum = 0; paneNum < this._paneNumber; paneNum++) {"," var paneDate = ydate.addMonths(this.get(\"date\"), paneNum);"," var dateArray = ydate.listOfDatesInMonth(paneDate);"," each(dateArray, function (date) {"," var matchingRules = this._getRulesForDate(date);"," if (matchingRules.length > 0) {"," var dateNode = this._dateToNode(date);"," if ((enRule && iOf(matchingRules, enRule) < 0) || (!enRule && disRule && iOf(matchingRules, disRule) >= 0)) {"," dateNode.addClass(SELECTION_DISABLED).setAttribute(\"aria-disabled\", true);"," }"," "," if (L.isFunction(this._filterFunction)) {"," this._storedDateCells[dateNode.get(\"id\")] = dateNode.cloneNode(true);"," this._filterFunction (date, dateNode, matchingRules);"," }"," }"," else if (enRule) {"," var dateNode = this._dateToNode(date);"," dateNode.addClass(SELECTION_DISABLED).setAttribute(\"aria-disabled\", true);"," }"," },"," this);"," }"," } "," },",""," /**"," * A rendering assist method that renders all cells that are currently selected."," * @method _renderSelectedDates"," * @private"," */"," _renderSelectedDates : function () {"," this.get(\"contentBox\").all(\".\" + CAL_DAY_SELECTED).removeClass(CAL_DAY_SELECTED).setAttribute(\"aria-selected\", false);"," "," for (var paneNum = 0; paneNum < this._paneNumber; paneNum++) {"," var paneDate = ydate.addMonths(this.get(\"date\"), paneNum);"," var dateArray = this._getSelectedDatesInMonth(paneDate);"," each(dateArray, function (date) {"," this._dateToNode(date).addClass(CAL_DAY_SELECTED).setAttribute(\"aria-selected\", true);"," },"," this);"," }"," },",""," /**"," * A utility method that converts a date to the node wrapping the calendar cell"," * the date corresponds to.."," * @method _dateToNode"," * @param {Date} oDate The date to convert to Node"," * @protected"," * @return {Node} The node wrapping the DOM element of the cell the date "," * corresponds to."," */"," _dateToNode : function (oDate) {"," var day = oDate.getDate(),"," col = 0,"," daymod = day%7,"," paneNum = (12 + oDate.getMonth() - this.get(\"date\").getMonth()) % 12,"," paneId = this._calendarId + \"_pane_\" + paneNum,"," cutoffCol = this._paneProperties[paneId].cutoffCol;",""," switch (daymod) {"," case (0):"," if (cutoffCol >= 6) {"," col = 12;"," }"," else {"," col = 5;"," }"," break;"," case (1):"," col = 6;"," break;"," case (2):"," if (cutoffCol > 0) {"," col = 7;"," }"," else {"," col = 0;"," }"," break;"," case (3):"," if (cutoffCol > 1) {"," col = 8;"," }"," else {"," col = 1;"," }"," break;"," case (4):"," if (cutoffCol > 2) {"," col = 9;"," }"," else {"," col = 2;"," }"," break;"," case (5):"," if (cutoffCol > 3) {"," col = 10;"," }"," else {"," col = 3;"," }"," break;"," case (6):"," if (cutoffCol > 4) {"," col = 11;"," }"," else {"," col = 4;"," }"," break;"," }"," return(this.get(\"contentBox\").one(\"#\" + this._calendarId + \"_pane_\" + paneNum + \"_\" + col + \"_\" + day)); ",""," },",""," /**"," * A utility method that converts a node corresponding to the DOM element of"," * the cell for a particular date to that date."," * @method _nodeToDate"," * @param {Node} oNode The Node wrapping the DOM element of a particular date cell."," * @protected"," * @return {Date} The date corresponding to the DOM element that the given node wraps."," */"," _nodeToDate : function (oNode) {"," "," var idParts = oNode.get(\"id\").split(\"_\").reverse(),"," paneNum = parseInt(idParts[2], 10),"," day = parseInt(idParts[0], 10);",""," var shiftedDate = ydate.addMonths(this.get(\"date\"), paneNum),"," year = shiftedDate.getFullYear(),"," month = shiftedDate.getMonth();",""," return new Date(year, month, day, 12, 0, 0, 0);"," },",""," /**"," * A placeholder method, called from bindUI, to bind the Calendar events."," * @method _bindCalendarEvents"," * @protected"," */"," _bindCalendarEvents : function () {"," "," },",""," /**"," * A utility method that normalizes a given date by converting it to the 1st"," * day of the month the date is in, with the time set to noon."," * @method _normalizeDate"," * @param {Date} oDate The date to normalize"," * @protected"," * @return {Date} The normalized date, set to the first of the month, with time"," * set to noon."," */"," _normalizeDate : function (date) {"," if (date) {"," return new Date(date.getFullYear(), date.getMonth(), 1, 12, 0, 0, 0);"," }"," else {"," return null;"," } "," },","",""," /**"," * A render assist utility method that computes the cutoff column for the calendar "," * rendering mask."," * @method _getCutoffColumn"," * @param {Date} date The date of the month grid to compute the cutoff column for."," * @param {Number} firstday The first day of the week (modified by internationalized calendars)"," * @private"," * @return {Number} The number of the cutoff column."," */"," _getCutoffColumn : function (date, firstday) {",""," var distance = this._normalizeDate(date).getDay() - firstday;"," var cutOffColumn = 6 - (distance + 7)%7;"," return cutOffColumn;",""," },",""," /**"," * A render assist method that turns on the view of the previous month's dates "," * in a given calendar pane."," * @method _turnPrevMonthOn"," * @param {Node} pane The calendar pane that needs its previous month's dates view"," * modified."," * @protected"," */"," _turnPrevMonthOn : function (pane) {"," "," var pane_id = pane.get(\"id\"),"," pane_date = this._paneProperties[pane_id].paneDate,"," daysInPrevMonth = ydate.daysInMonth(ydate.addMonths(pane_date, -1));",""," if (!this._paneProperties[pane_id].hasOwnProperty(\"daysInPrevMonth\")) {"," this._paneProperties[pane_id].daysInPrevMonth = 0;"," }",""," if (daysInPrevMonth != this._paneProperties[pane_id].daysInPrevMonth) {"," "," this._paneProperties[pane_id].daysInPrevMonth = daysInPrevMonth;",""," for (var cell = 5; cell >= 0; cell--) "," {"," pane.one(\"#\" + pane_id + \"_\" + cell + \"_\" + (cell-5)).set('text', daysInPrevMonth--);"," }",""," }","",""," },",""," /**"," * A render assist method that turns off the view of the previous month's dates "," * in a given calendar pane."," * @method _turnPrevMonthOff"," * @param {Node} pane The calendar pane that needs its previous month's dates view"," * modified."," * @protected"," */"," _turnPrevMonthOff : function (pane) {"," var pane_id = pane.get(\"id\");"," this._paneProperties[pane_id].daysInPrevMonth = 0;",""," for (var cell = 5; cell >= 0; cell--) "," {"," pane.one(\"#\" + pane_id + \"_\" + cell + \"_\" + (cell-5)).setContent(\" \");"," } "," },",""," /**"," * A render assist method that cleans up the last few cells in the month grid"," * when the number of days in the month changes."," * @method _cleanUpNextMonthCells"," * @param {Node} pane The calendar pane that needs the last date cells cleaned up."," * @private"," */"," _cleanUpNextMonthCells : function (pane) {"," var pane_id = pane.get(\"id\");"," pane.one(\"#\" + pane_id + \"_6_29\").removeClass(CAL_NEXTMONTH_DAY);"," pane.one(\"#\" + pane_id + \"_7_30\").removeClass(CAL_NEXTMONTH_DAY);"," pane.one(\"#\" + pane_id + \"_8_31\").removeClass(CAL_NEXTMONTH_DAY);"," pane.one(\"#\" + pane_id + \"_0_30\").removeClass(CAL_NEXTMONTH_DAY);"," pane.one(\"#\" + pane_id + \"_1_31\").removeClass(CAL_NEXTMONTH_DAY); "," },",""," /**"," * A render assist method that turns on the view of the next month's dates "," * in a given calendar pane."," * @method _turnNextMonthOn"," * @param {Node} pane The calendar pane that needs its next month's dates view"," * modified."," * @protected"," */"," _turnNextMonthOn : function (pane) { "," var dayCounter = 1,"," pane_id = pane.get(\"id\"),"," daysInMonth = this._paneProperties[pane_id].daysInMonth,"," cutoffCol = this._paneProperties[pane_id].cutoffCol;",""," for (var cell = daysInMonth - 22; cell < cutoffCol + 7; cell++) "," {"," pane.one(\"#\" + pane_id + \"_\" + cell + \"_\" + (cell+23)).set(\"text\", dayCounter++).addClass(CAL_NEXTMONTH_DAY);"," }",""," var startingCell = cutoffCol;"," if (daysInMonth == 31 && (cutoffCol <= 1)) {"," startingCell = 2;"," }"," else if (daysInMonth == 30 && cutoffCol === 0) {"," startingCell = 1;"," }"," "," for (var cell = startingCell ; cell < cutoffCol + 7; cell++) {"," pane.one(\"#\" + pane_id + \"_\" + cell + \"_\" + (cell+30)).set(\"text\", dayCounter++).addClass(CAL_NEXTMONTH_DAY); "," }"," },",""," /**"," * A render assist method that turns off the view of the next month's dates "," * in a given calendar pane."," * @method _turnNextMonthOff"," * @param {Node} pane The calendar pane that needs its next month's dates view"," * modified."," * @protected"," */"," _turnNextMonthOff : function (pane) {"," var pane_id = pane.get(\"id\"),"," daysInMonth = this._paneProperties[pane_id].daysInMonth,"," cutoffCol = this._paneProperties[pane_id].cutoffCol;",""," for (var cell = daysInMonth - 22; cell <= 12; cell++) "," {"," pane.one(\"#\" + pane_id + \"_\" + cell + \"_\" + (cell+23)).setContent(\" \").addClass(CAL_NEXTMONTH_DAY);"," }",""," var startingCell = 0;"," if (daysInMonth == 31 && (cutoffCol <= 1)) {"," startingCell = 2;"," }"," else if (daysInMonth == 30 && cutoffCol === 0) {"," startingCell = 1;"," }"," "," for (var cell = startingCell ; cell <= 12; cell++) {"," pane.one(\"#\" + pane_id + \"_\" + cell + \"_\" + (cell+30)).setContent(\" \").addClass(CAL_NEXTMONTH_DAY); "," } "," },",""," /**"," * The handler for the change in the showNextMonth attribute."," * @method _afterShowNextMonthChange"," * @private"," */"," _afterShowNextMonthChange : function () {"," "," var contentBox = this.get('contentBox'),"," lastPane = contentBox.one(\"#\" + this._calendarId + \"_pane_\" + (this._paneNumber - 1));"," this._cleanUpNextMonthCells(lastPane); ","",""," if (this.get('showNextMonth')) {"," this._turnNextMonthOn(lastPane);"," }",""," else {"," this._turnNextMonthOff(lastPane);"," }",""," },",""," /**"," * The handler for the change in the showPrevMonth attribute."," * @method _afterShowPrevMonthChange"," * @private"," */"," _afterShowPrevMonthChange : function () {"," var contentBox = this.get('contentBox'),"," firstPane = contentBox.one(\"#\" + this._calendarId + \"_pane_\" + 0);",""," if (this.get('showPrevMonth')) {"," this._turnPrevMonthOn(firstPane);"," }",""," else {"," this._turnPrevMonthOff(firstPane);"," }"," "," },"," "," /**"," * The handler for the change in the headerRenderer attribute."," * @method _afterHeaderRendererChange"," * @private"," */ "," _afterHeaderRendererChange : function () {"," var headerCell = this.get(\"contentBox\").one(\".\" + CAL_HD_LABEL);"," headerCell.setContent(this._updateCalendarHeader(this.get('date')));"," },",""," /**"," * The handler for the change in the customRenderer attribute."," * @method _afterCustomRendererChange"," * @private"," */ "," _afterCustomRendererChange : function () {"," this._restoreModifiedCells();"," this._renderCustomRules();"," },",""," /**"," * The handler for the change in the date attribute. Modifies the calendar"," * view by shifting the calendar grid mask and running custom rendering and"," * selection rendering as necessary."," * @method _afterDateChange"," * @private"," */ "," _afterDateChange : function () {"," "," var contentBox = this.get('contentBox'),"," headerCell = contentBox.one(\".\" + CAL_HD).one(\".\" + CAL_HD_LABEL),"," calendarPanes = contentBox.all(\".\" + CAL_GRID),"," currentDate = this.get(\"date\"),"," counter = 0;",""," contentBox.setStyle(\"visibility\", \"hidden\");"," headerCell.setContent(this._updateCalendarHeader(currentDate));"," "," this._restoreModifiedCells();",""," calendarPanes.each(function (curNode) {"," this._rerenderCalendarPane(ydate.addMonths(currentDate, counter++), "," curNode);"," }, this);",""," this._afterShowPrevMonthChange();"," this._afterShowNextMonthChange();",""," this._renderCustomRules();"," this._renderSelectedDates();"," "," contentBox.setStyle(\"visibility\", \"visible\");"," },","",""," /**"," * A rendering assist method that initializes the HTML for a single"," * calendar pane."," * @method _initCalendarPane"," * @param {Date} baseDate The date corresponding to the month of the given"," * calendar pane."," * @param {String} pane_id The id of the pane, to be used as a prefix for"," * element ids in the given pane."," * @private"," */ "," _initCalendarPane : function (baseDate, pane_id) {"," // Initialize final output HTML string"," var calString = '',"," // Get a list of short weekdays from the internationalization package, or else use default English ones."," weekdays = this.get('strings.very_short_weekdays') || [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],"," fullweekdays = this.get('strings.weekdays') || [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],"," // Get the first day of the week from the internationalization package, or else use Sunday as default."," firstday = this.get('strings.first_weekday') || 0,"," // Compute the cutoff column of the masked calendar table, based on the start date and the first day of week."," cutoffCol = this._getCutoffColumn(baseDate, firstday),"," // Compute the number of days in the month based on starting date"," daysInMonth = ydate.daysInMonth(baseDate),"," // Initialize the array of individual row HTML strings"," row_array = ['','','','','',''],"," // Initialize the partial templates object"," partials = {};"," "," // Initialize the partial template for the weekday row cells."," partials[\"weekday_row\"] = '';"," "," // Populate the partial template for the weekday row cells with weekday names"," for (var day = firstday; day <= firstday + 6; day++) {"," partials[\"weekday_row\"] += "," substitute(CalendarBase.WEEKDAY_TEMPLATE,"," {weekdayname: weekdays[day%7],"," full_weekdayname: fullweekdays[day%7]});"," }"," "," // Populate the partial template for the weekday row container with the weekday row cells"," partials[\"weekday_row_template\"] = substitute(CalendarBase.WEEKDAY_ROW_TEMPLATE, partials);",""," // Populate the array of individual row HTML strings"," for (var row = 0; row <= 5; row++) {"," "," for (var column = 0; column <= 12; column++) { "," "," // Compute the value of the date that needs to populate the cell"," var date = 7*row - 5 + column;",""," // Compose the value of the unique id of the current calendar cell"," var id_date = pane_id + \"_\" + column + \"_\" + date;",""," // Set the calendar day class to one of three possible values"," var calendar_day_class = CAL_DAY;",""," if (date < 1) {"," calendar_day_class = CAL_PREVMONTH_DAY;"," }"," else if (date > daysInMonth) {"," calendar_day_class = CAL_NEXTMONTH_DAY;"," }",""," // Cut off dates that fall before the first and after the last date of the month"," if (date < 1 || date > daysInMonth) {"," date = \" \";"," }"," "," // Decide on whether a column in the masked table is visible or not based on the value of the cutoff column."," var column_visibility = (column >= cutoffCol && column < (cutoffCol + 7)) ? '' : CAL_COL_HIDDEN;",""," // Substitute the values into the partial calendar day template and add it to the current row HTML string"," row_array[row] += substitute (CalendarBase.CALDAY_TEMPLATE, "," {day_content: date,"," calendar_col_class: \"calendar_col\" + column,"," calendar_col_visibility_class: column_visibility,"," calendar_day_class: calendar_day_class,"," calendar_day_id: id_date});"," }"," }"," "," // Instantiate the partial calendar pane body template"," partials[\"body_template\"] = '';"," "," // Populate the body template with the rows templates"," each (row_array, function (v) {"," partials[\"body_template\"] += substitute(CalendarBase.CALDAY_ROW_TEMPLATE, "," {calday_row: v});"," });",""," // Populate the calendar grid id"," partials[\"calendar_pane_id\"] = pane_id;",""," // Populate the calendar pane tabindex"," partials[\"calendar_pane_tabindex\"] = this.get(\"tabIndex\");"," partials[\"pane_arialabel\"] = ydate.format(baseDate, {format:\"%B %Y\"});","",""," // Generate final output by substituting class names."," var output = substitute(substitute (CalendarBase.CALENDAR_GRID_TEMPLATE, partials),"," CalendarBase.CALENDAR_STRINGS);",""," // Store the initialized pane information",""," this._paneProperties[pane_id] = {cutoffCol: cutoffCol, daysInMonth: daysInMonth, paneDate: baseDate};",""," return output;"," },",""," /**"," * A rendering assist method that rerenders a specified calendar pane, based"," * on a new Date. "," * @method _rerenderCalendarPane"," * @param {Date} newDate The date corresponding to the month of the given"," * calendar pane."," * @param {Node} pane The node corresponding to the calendar pane to be rerenders."," * @private"," */ "," _rerenderCalendarPane : function (newDate, pane) {",""," // Get the first day of the week from the internationalization package, or else use Sunday as default."," var firstday = this.get('strings.first_weekday') || 0,"," // Compute the cutoff column of the masked calendar table, based on the start date and the first day of week."," cutoffCol = this._getCutoffColumn(newDate, firstday),"," // Compute the number of days in the month based on starting date"," daysInMonth = ydate.daysInMonth(newDate),"," // Get pane id for easier reference"," paneId = pane.get(\"id\");"," "," // Hide the pane before making DOM changes to speed them up"," pane.setStyle(\"visibility\", \"hidden\");"," pane.setAttribute(\"aria-label\", ydate.format(newDate, {format:\"%B %Y\"}));"," "," // Go through all columns, and flip their visibility setting based on whether they are within the unmasked range."," for (var column = 0; column <= 12; column++) {"," var currentColumn = pane.all(\".\" + \"calendar_col\" + column);"," currentColumn.removeClass(CAL_COL_HIDDEN);"," "," if (column < cutoffCol || column >= (cutoffCol + 7)) {"," currentColumn.addClass(CAL_COL_HIDDEN);"," }"," else {"," // Clean up dates in visible columns to account for the correct number of days in a month"," switch(column)"," {"," case 0:"," var curCell = pane.one(\"#\" + paneId + \"_0_30\");"," if (daysInMonth >= 30) {"," curCell.set(\"text\", \"30\");"," curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY);"," }"," else {"," curCell.setContent(\" \");"," curCell.addClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY);"," }"," break;"," case 1:"," var curCell = pane.one(\"#\" + paneId + \"_1_31\");"," if (daysInMonth >= 31) {"," curCell.set(\"text\", \"31\");"," curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY);"," }"," else {"," curCell.setContent(\" \");"," curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY);"," }"," break;"," case 6:"," var curCell = pane.one(\"#\" + paneId + \"_6_29\");"," if (daysInMonth >= 29) {"," curCell.set(\"text\", \"29\");"," curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY);"," }"," else {"," curCell.setContent(\" \");"," curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY);"," }"," break;"," case 7:"," var curCell = pane.one(\"#\" + paneId + \"_7_30\");"," if (daysInMonth >= 30) {"," curCell.set(\"text\", \"30\");"," curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY);"," }"," else {"," curCell.setContent(\" \");"," curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY);"," }"," break;"," case 8:"," var curCell = pane.one(\"#\" + paneId + \"_8_31\");"," if (daysInMonth >= 31) {"," curCell.set(\"text\", \"31\");"," curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY);"," }"," else {"," curCell.setContent(\" \");"," curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY);"," }"," break;"," } "," }"," }"," // Update stored pane properties"," this._paneProperties[paneId].cutoffCol = cutoffCol;"," this._paneProperties[paneId].daysInMonth = daysInMonth;"," this._paneProperties[paneId].paneDate = newDate;"," "," // Bring the pane visibility back after all DOM changes are done "," pane.setStyle(\"visibility\", \"visible\");",""," },",""," /**"," * A rendering assist method that updates the calendar header based"," * on a given date and potentially the provided headerRenderer."," * @method _updateCalendarHeader"," * @param {Date} baseDate The date with which to update the calendar header."," * @private"," */ "," _updateCalendarHeader : function (baseDate) {"," var headerString = \"\","," headerRenderer = this.get(\"headerRenderer\");"," "," if (Y.Lang.isString(headerRenderer)) {"," headerString = ydate.format(baseDate, {format:headerRenderer});"," }"," else if (headerRenderer instanceof Function) {"," headerString = headerRenderer.call(this, baseDate);"," }"," "," return headerString; "," },",""," /**"," * A rendering assist method that initializes the calendar header HTML "," * based on a given date and potentially the provided headerRenderer."," * @method _updateCalendarHeader"," * @param {Date} baseDate The date with which to initialize the calendar header."," * @private"," */ "," _initCalendarHeader : function (baseDate) {"," return substitute(substitute(CalendarBase.HEADER_TEMPLATE, "," {calheader: this._updateCalendarHeader(baseDate),"," calendar_id: this._calendarId}), "," CalendarBase.CALENDAR_STRINGS);"," },",""," /**"," * A rendering assist method that initializes the calendar HTML "," * based on a given date."," * @method _initCalendarHTML"," * @param {Date} baseDate The date with which to initialize the calendar."," * @private"," */ "," _initCalendarHTML : function (baseDate) {"," // Instantiate the partials holder"," var partials = {},"," // Counter for iterative template replacement."," counter = 0;"," "," // Generate the template for the header "," partials[\"header_template\"] = this._initCalendarHeader(baseDate);"," partials[\"calendar_id\"] = this._calendarId;",""," partials[\"body_template\"] = substitute(substitute (CalendarBase.CONTENT_TEMPLATE, partials),"," CalendarBase.CALENDAR_STRINGS);"," "," // Instantiate the iterative template replacer function "," function paneReplacer () {"," var singlePane = this._initCalendarPane(ydate.addMonths(baseDate, counter), partials[\"calendar_id\"]+\"_pane_\"+counter);"," counter++;"," return singlePane;"," }"," // Go through all occurrences of the calendar_grid_template token and replace it with an appropriate calendar grid."," var output = partials[\"body_template\"].replace(/\\{calendar_grid_template\\}/g, Y.bind(paneReplacer, this));",""," // Update the paneNumber count"," this._paneNumber = counter;",""," return output;"," }","}, {"," "," /**"," * The CSS classnames for the calendar templates."," * @property CALENDAR_STRINGS"," * @type Object"," * @readOnly"," * @protected"," * @static"," */ "," CALENDAR_STRINGS: {"," calendar_grid_class : CAL_GRID,"," calendar_body_class : CAL_BODY,"," calendar_hd_class : CAL_HD,"," calendar_hd_label_class : CAL_HD_LABEL,"," calendar_weekdayrow_class : CAL_WDAYROW,"," calendar_weekday_class : CAL_WDAY,"," calendar_row_class : CAL_ROW,"," calendar_day_class : CAL_DAY,"," calendar_dayanchor_class : CAL_ANCHOR,"," calendar_pane_class : CAL_PANE,"," calendar_right_grid_class : CAL_RIGHT_GRID,"," calendar_left_grid_class : CAL_LEFT_GRID,"," calendar_status_class : CAL_STATUS"," },",""," /*",""," ARIA_STATUS_TEMPLATE: '
',",""," AriaStatus : null,",""," updateStatus : function (statusString) {",""," if (!CalendarBase.AriaStatus) {"," CalendarBase.AriaStatus = create("," substitute (CalendarBase.ARIA_STATUS_TEMPLATE, "," CalendarBase.CALENDAR_STRINGS));"," Y.one(\"body\").append(CalendarBase.AriaStatus);"," }",""," CalendarBase.AriaStatus.set(\"text\", statusString);"," },",""," */",""," /**"," * The main content template for calendar."," * @property CONTENT_TEMPLATE"," * @type String"," * @protected"," * @static"," */ "," CONTENT_TEMPLATE: '
' + "," '{header_template}' +"," '
' +"," '{calendar_grid_template}' +"," '
' +"," '
',",""," /**"," * A single pane template for calendar (same as default CONTENT_TEMPLATE)"," * @property ONE_PANE_TEMPLATE"," * @type String"," * @protected"," * @readOnly"," * @static"," */ "," ONE_PANE_TEMPLATE: '
' + "," '{header_template}' +"," '
' +"," '{calendar_grid_template}' +"," '
' +"," '
',",""," /**"," * A two pane template for calendar."," * @property TWO_PANE_TEMPLATE"," * @type String"," * @protected"," * @readOnly"," * @static"," */ "," TWO_PANE_TEMPLATE: '
' + "," '{header_template}' +"," '
'+"," '
' + "," '{calendar_grid_template}' +"," '
' +"," '
' +"," '
' +"," '
' +"," '{calendar_grid_template}' +"," '
' +"," '
' + "," '
',"," /**"," * A three pane template for calendar."," * @property THREE_PANE_TEMPLATE"," * @type String"," * @protected"," * @readOnly"," * @static"," */ "," THREE_PANE_TEMPLATE: '
' + "," '{header_template}' +"," '
' +"," '
' +"," '{calendar_grid_template}' +"," '
' + "," '
' +"," '
' +"," '{calendar_grid_template}' +"," '
' + "," '
' +"," '
' +"," '{calendar_grid_template}' +"," '
' + "," '
' + "," '
',"," /**"," * A template for the calendar grid."," * @property CALENDAR_GRID_TEMPLATE"," * @type String"," * @protected"," * @static"," */ "," CALENDAR_GRID_TEMPLATE: '' + "," '' +"," '{weekday_row_template}' +"," '' +"," '' + "," '{body_template}' +"," '' +"," '
',",""," /**"," * A template for the calendar header."," * @property HEADER_TEMPLATE"," * @type String"," * @protected"," * @static"," */ "," HEADER_TEMPLATE: '
' + "," '
' + "," '{calheader}' +"," '
' +"," '
',",""," /**"," * A template for the row of weekday names."," * @property WEEKDAY_ROW_TEMPLATE"," * @type String"," * @protected"," * @static"," */ "," WEEKDAY_ROW_TEMPLATE: '' + "," '{weekday_row}' +"," '',",""," /**"," * A template for a single row of calendar days."," * @property CALDAY_ROW_TEMPLATE"," * @type String"," * @protected"," * @static"," */ "," CALDAY_ROW_TEMPLATE: '' + "," '{calday_row}' + "," '',",""," /**"," * A template for a single cell with a weekday name."," * @property CALDAY_ROW_TEMPLATE"," * @type String"," * @protected"," * @static"," */ "," WEEKDAY_TEMPLATE: '{weekdayname}',",""," /**"," * A template for a single cell with a calendar day."," * @property CALDAY_TEMPLATE"," * @type String"," * @protected"," * @static"," */ "," CALDAY_TEMPLATE: '' +"," '{day_content}' + "," '',",""," /**"," * The identity of the widget."," *"," * @property NAME"," * @type String"," * @default 'calendarBase'"," * @readOnly"," * @protected"," * @static"," */ "," NAME: 'calendarBase',",""," /**"," * Static property used to define the default attribute configuration of"," * the Widget."," *"," * @property ATTRS"," * @type {Object}"," * @protected"," * @static"," */ "," ATTRS: {"," tabIndex: {"," value: 1"," },"," /**"," * The date corresponding to the current calendar view. Always"," * normalized to the first of the month that contains the date"," * at assignment time. Used as the first date visible in the"," * calendar."," *"," * @attribute date"," * @type Date"," * @default The first of the month containing today's date, as"," * set on the end user's system."," */"," date: {"," value: new Date(),"," setter: function (val) {"," var newDate = this._normalizeDate(val);"," if (ydate.areEqual(newDate, this.get('date'))) {"," return this.get('date');"," }"," else {"," return newDate;"," }"," }"," },",""," /**"," * A setting specifying whether to shows days from the previous"," * month in the visible month's grid, if there are empty preceding"," * cells available."," *"," * @attribute showPrevMonth"," * @type boolean"," * @default false"," */"," showPrevMonth: {"," value: false"," },",""," /**"," * A setting specifying whether to shows days from the next"," * month in the visible month's grid, if there are empty"," * cells available at the end."," *"," * @attribute showNextMonth"," * @type boolean"," * @default false"," */"," showNextMonth: {"," value: false"," },",""," /**"," * Strings and properties derived from the internationalization packages"," * for the calendar."," *"," * @attribute strings"," * @type Object"," * @protected"," */"," strings : {"," valueFn: function() { return Y.Intl.get(\"calendar-base\"); }"," },",""," /**"," * Custom header renderer for the calendar."," *"," * @attribute headerRenderer"," * @type String | Function"," */"," headerRenderer: {"," value: \"%B %Y\""," },",""," /**"," * The name of the rule which all enabled dates should match."," * Either disabledDatesRule or enabledDatesRule should be specified,"," * or neither, but not both."," *"," * @attribute enabledDatesRule"," * @type String"," * @default null"," */"," enabledDatesRule: {"," value: null"," },",""," /**"," * The name of the rule which all disabled dates should match."," * Either disabledDatesRule or enabledDatesRule should be specified,"," * or neither, but not both."," *"," * @attribute disabledDatesRule"," * @type String"," * @default null"," */"," disabledDatesRule: {"," value: null"," },",""," /**"," * A read-only attribute providing a list of currently selected dates."," *"," * @attribute selectedDates"," * @readOnly"," * @type Array"," */"," selectedDates : {"," readOnly: true,"," getter: function (val) {"," return (this._getSelectedDatesList());"," }"," },",""," /**"," * An object of the form {rules:Object, filterFunction:Function},"," * providing set of rules and a custom rendering function for "," * customizing specific calendar cells."," *"," * @attribute customRenderer"," * @readOnly"," * @type Object"," * @default {}"," */"," customRenderer : {"," lazyAdd: false,"," value: {},"," setter: function (val) {"," this._rules = val.rules;"," this._filterFunction = val.filterFunction;"," }"," }"," }"," ","});","","","}, '3.7.3', {\"requires\": [\"widget\", \"substitute\", \"datatype-date\", \"datatype-date-math\", \"cssgrids\"], \"lang\": [\"de\", \"en\", \"fr\", \"ja\", \"nb-NO\", \"pt-BR\", \"ru\", \"zh-HANT-TW\"], \"skinnable\": true});"]; -_yuitest_coverage["build/calendar-base/calendar-base.js"].lines = {"1":0,"12":0,"55":0,"56":0,"61":0,"144":0,"145":0,"146":0,"147":0,"148":0,"150":0,"161":0,"162":0,"163":0,"164":0,"166":0,"167":0,"169":0,"170":0,"172":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"205":0,"206":0,"207":0,"208":0,"209":0,"213":0,"226":0,"229":0,"230":0,"233":0,"251":0,"252":0,"255":0,"258":0,"259":0,"260":0,"261":0,"263":0,"264":0,"267":0,"282":0,"290":0,"291":0,"292":0,"293":0,"296":0,"297":0,"298":0,"299":0,"302":0,"303":0,"304":0,"305":0,"308":0,"309":0,"310":0,"311":0,"324":0,"339":0,"352":0,"355":0,"356":0,"358":0,"359":0,"362":0,"372":0,"373":0,"375":0,"376":0,"388":0,"389":0,"391":0,"392":0,"394":0,"395":0,"410":0,"412":0,"416":0,"417":0,"418":0,"421":0,"422":0,"426":0,"427":0,"428":0,"431":0,"433":0,"434":0,"446":0,"447":0,"459":0,"463":0,"464":0,"465":0,"466":0,"469":0,"473":0,"474":0,"475":0,"476":0,"478":0,"491":0,"494":0,"497":0,"498":0,"499":0,"511":0,"512":0,"523":0,"526":0,"527":0,"530":0,"541":0,"542":0,"543":0,"544":0,"561":0,"570":0,"572":0,"573":0,"574":0,"586":0,"588":0,"589":0,"592":0,"593":0,"594":0,"595":0,"596":0,"597":0,"598":0,"599":0,"600":0,"603":0,"604":0,"605":0,"608":0,"609":0,"610":0,"624":0,"626":0,"627":0,"628":0,"629":0,"630":0,"646":0,"653":0,"655":0,"656":0,"659":0,"661":0,"663":0,"664":0,"666":0,"667":0,"670":0,"672":0,"674":0,"675":0,"678":0,"680":0,"682":0,"683":0,"686":0,"688":0,"690":0,"691":0,"694":0,"696":0,"698":0,"699":0,"702":0,"704":0,"706":0,"720":0,"724":0,"728":0,"750":0,"751":0,"754":0,"770":0,"771":0,"772":0,"786":0,"790":0,"791":0,"794":0,"796":0,"798":0,"800":0,"817":0,"818":0,"820":0,"822":0,"834":0,"835":0,"836":0,"837":0,"838":0,"839":0,"851":0,"856":0,"858":0,"861":0,"862":0,"863":0,"865":0,"866":0,"869":0,"870":0,"883":0,"887":0,"889":0,"892":0,"893":0,"894":0,"896":0,"897":0,"900":0,"901":0,"912":0,"914":0,"917":0,"918":0,"922":0,"933":0,"936":0,"937":0,"941":0,"952":0,"953":0,"962":0,"963":0,"975":0,"981":0,"982":0,"984":0,"986":0,"987":0,"991":0,"992":0,"994":0,"995":0,"997":0,"1013":0,"1029":0,"1032":0,"1033":0,"1040":0,"1043":0,"1045":0,"1048":0,"1051":0,"1054":0,"1056":0,"1057":0,"1059":0,"1060":0,"1064":0,"1065":0,"1069":0,"1072":0,"1082":0,"1085":0,"1086":0,"1091":0,"1094":0,"1095":0,"1099":0,"1104":0,"1106":0,"1121":0,"1130":0,"1131":0,"1134":0,"1135":0,"1136":0,"1138":0,"1139":0,"1143":0,"1146":0,"1147":0,"1148":0,"1149":0,"1152":0,"1153":0,"1155":0,"1157":0,"1158":0,"1159":0,"1160":0,"1163":0,"1164":0,"1166":0,"1168":0,"1169":0,"1170":0,"1171":0,"1174":0,"1175":0,"1177":0,"1179":0,"1180":0,"1181":0,"1182":0,"1185":0,"1186":0,"1188":0,"1190":0,"1191":0,"1192":0,"1193":0,"1196":0,"1197":0,"1199":0,"1204":0,"1205":0,"1206":0,"1209":0,"1221":0,"1224":0,"1225":0,"1227":0,"1228":0,"1231":0,"1242":0,"1257":0,"1262":0,"1263":0,"1265":0,"1269":0,"1270":0,"1271":0,"1272":0,"1275":0,"1278":0,"1280":0,"1512":0,"1513":0,"1514":0,"1517":0,"1557":0,"1606":0,"1624":0,"1625":0}; -_yuitest_coverage["build/calendar-base/calendar-base.js"].functions = {"CalendarBase:55":0,"initializer:143":0,"renderUI:159":0,"bindUI:182":0,"(anonymous 4):208":0,"(anonymous 3):207":0,"(anonymous 2):206":0,"_getSelectedDatesList:204":0,"_getSelectedDatesInMonth:225":0,"_isNumInList:250":0,"_getRulesForDate:281":0,"_matchesRule:338":0,"_canBeSelected:350":0,"selectDates:371":0,"deselectDates:387":0,"_addDateToSelection:408":0,"_addDatesToSelection:445":0,"_addDateRangeToSelection:457":0,"_removeDateFromSelection:490":0,"_removeDatesFromSelection:510":0,"_removeDateRangeFromSelection:522":0,"_clearSelection:540":0,"_fireSelectionChange:553":0,"_restoreModifiedCells:569":0,"(anonymous 5):595":0,"_renderCustomRules:584":0,"(anonymous 6):629":0,"_renderSelectedDates:623":0,"_dateToNode:645":0,"_nodeToDate:718":0,"_normalizeDate:749":0,"_getCutoffColumn:768":0,"_turnPrevMonthOn:784":0,"_turnPrevMonthOff:816":0,"_cleanUpNextMonthCells:833":0,"_turnNextMonthOn:850":0,"_turnNextMonthOff:882":0,"_afterShowNextMonthChange:910":0,"_afterShowPrevMonthChange:932":0,"_afterHeaderRendererChange:951":0,"_afterCustomRendererChange:961":0,"(anonymous 7):986":0,"_afterDateChange:973":0,"(anonymous 8):1085":0,"_initCalendarPane:1011":0,"_rerenderCalendarPane:1118":0,"_updateCalendarHeader:1220":0,"_initCalendarHeader:1241":0,"paneReplacer:1269":0,"_initCalendarHTML:1255":0,"setter:1511":0,"valueFn:1557":0,"getter:1605":0,"setter:1623":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/calendar-base/calendar-base.js"].coveredLines = 355; -_yuitest_coverage["build/calendar-base/calendar-base.js"].coveredFunctions = 55; -_yuitest_coverline("build/calendar-base/calendar-base.js", 1); -YUI.add('calendar-base', function (Y, NAME) { - -/** - * The CalendarBase submodule is a basic UI calendar view that displays - * a range of dates in a two-dimensional month grid, with one or more - * months visible at a single time. CalendarBase supports custom date - * rendering, multiple calendar panes, and selection. - * @module calendar - * @submodule calendar-base - */ - -_yuitest_coverfunc("build/calendar-base/calendar-base.js", "(anonymous 1)", 1); -_yuitest_coverline("build/calendar-base/calendar-base.js", 12); -var getCN = Y.ClassNameManager.getClassName, - CALENDAR = 'calendar', - CAL_GRID = getCN(CALENDAR, 'grid'), - CAL_LEFT_GRID = getCN(CALENDAR, 'left-grid'), - CAL_RIGHT_GRID = getCN(CALENDAR, 'right-grid'), - CAL_BODY = getCN(CALENDAR, 'body'), - CAL_HD = getCN(CALENDAR, 'header'), - CAL_HD_LABEL = getCN(CALENDAR, 'header-label'), - CAL_WDAYROW = getCN(CALENDAR, 'weekdayrow'), - CAL_WDAY = getCN(CALENDAR, 'weekday'), - CAL_COL_HIDDEN = getCN(CALENDAR, 'column-hidden'), - CAL_DAY_SELECTED = getCN(CALENDAR, 'day-selected'), - SELECTION_DISABLED = getCN(CALENDAR, 'selection-disabled'), - CAL_ROW = getCN(CALENDAR, 'row'), - CAL_DAY = getCN(CALENDAR, 'day'), - CAL_PREVMONTH_DAY = getCN(CALENDAR, 'prevmonth-day'), - CAL_NEXTMONTH_DAY = getCN(CALENDAR, 'nextmonth-day'), - CAL_ANCHOR = getCN(CALENDAR, 'anchor'), - CAL_PANE = getCN(CALENDAR, 'pane'), - CAL_STATUS = getCN(CALENDAR, 'status'), - L = Y.Lang, - node = Y.Node, - create = node.create, - substitute = Y.substitute, - each = Y.each, - hasVal = Y.Array.hasValue, - iOf = Y.Array.indexOf, - hasKey = Y.Object.hasKey, - setVal = Y.Object.setValue, - owns = Y.Object.owns, - isEmpty = Y.Object.isEmpty, - ydate = Y.DataType.Date; - -/** Create a calendar view to represent a single or multiple - * month range of dates, rendered as a grid with date and - * weekday labels. - * - * @class CalendarBase - * @extends Widget - * @param config {Object} Configuration object (see Configuration - * attributes) - * @constructor - */ -_yuitest_coverline("build/calendar-base/calendar-base.js", 55); -function CalendarBase(config) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "CalendarBase", 55); -_yuitest_coverline("build/calendar-base/calendar-base.js", 56); -CalendarBase.superclass.constructor.apply ( this, arguments ); -} - - - -_yuitest_coverline("build/calendar-base/calendar-base.js", 61); -Y.CalendarBase = Y.extend( CalendarBase, Y.Widget, { - - /** - * A storage for various properties of individual month - * panes. - * - * @property _paneProperties - * @type Object - * @private - */ - _paneProperties : {}, - - /** - * The number of month panes in the calendar, deduced - * from the CONTENT_TEMPLATE's number of {calendar_grid} - * tokens. - * - * @property _paneNumber - * @type Number - * @private - */ - _paneNumber : 1, - - /** - * The unique id used to prefix various elements of this - * calendar instance. - * - * @property _calendarId - * @type String - * @private - */ - _calendarId : null, - - /** - * The hash map of selected dates, populated with - * selectDates() and deselectDates() methods - * - * @property _selectedDates - * @type Object - * @private - */ - _selectedDates : {}, - - /** - * A private copy of the rules object, populated - * by setting the customRenderer attribute. - * - * @property _rules - * @type Object - * @private - */ - _rules : {}, - - /** - * A private copy of the filterFunction, populated - * by setting the customRenderer attribute. - * - * @property _filterFunction - * @type Function - * @private - */ - _filterFunction : null, - - /** - * Storage for calendar cells modified by any custom - * formatting. The storage is cleared, used to restore - * cells to the original state, and repopulated accordingly - * when the calendar is rerendered. - * - * @property _storedDateCells - * @type Object - * @private - */ - _storedDateCells : {}, - - /** - * Designated initializer - * Initializes instance-level properties of - * calendar. - * - * @method initializer - */ - initializer : function () { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "initializer", 143); -_yuitest_coverline("build/calendar-base/calendar-base.js", 144); -this._paneProperties = {}; - _yuitest_coverline("build/calendar-base/calendar-base.js", 145); -this._calendarId = Y.guid('calendar'); - _yuitest_coverline("build/calendar-base/calendar-base.js", 146); -this._selectedDates = {}; - _yuitest_coverline("build/calendar-base/calendar-base.js", 147); -if (isEmpty(this._rules)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 148); -this._rules = {}; - } - _yuitest_coverline("build/calendar-base/calendar-base.js", 150); -this._storedDateCells = {}; - }, - - /** - * renderUI implementation - * - * Creates a visual representation of the calendar based on existing parameters. - * @method renderUI - */ - renderUI : function () { - - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "renderUI", 159); -_yuitest_coverline("build/calendar-base/calendar-base.js", 161); -var contentBox = this.get('contentBox'); - _yuitest_coverline("build/calendar-base/calendar-base.js", 162); -contentBox.appendChild(this._initCalendarHTML(this.get('date'))); - _yuitest_coverline("build/calendar-base/calendar-base.js", 163); -if (this.get('showPrevMonth')) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 164); -this._afterShowPrevMonthChange(); - } - _yuitest_coverline("build/calendar-base/calendar-base.js", 166); -if (this.get('showNextMonth')) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 167); -this._afterShowNextMonthChange(); - } - _yuitest_coverline("build/calendar-base/calendar-base.js", 169); -this._renderCustomRules(); - _yuitest_coverline("build/calendar-base/calendar-base.js", 170); -this._renderSelectedDates(); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 172); -this.get("boundingBox").setAttribute("aria-labelledby", this._calendarId + "_header"); - - }, - /** - * bindUI implementation - * - * Assigns listeners to relevant events that change the state - * of the calendar. - * @method bindUI - */ - bindUI : function () { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "bindUI", 182); -_yuitest_coverline("build/calendar-base/calendar-base.js", 183); -this.after('dateChange', this._afterDateChange); - _yuitest_coverline("build/calendar-base/calendar-base.js", 184); -this.after('showPrevMonthChange', this._afterShowPrevMonthChange); - _yuitest_coverline("build/calendar-base/calendar-base.js", 185); -this.after('showNextMonthChange', this._afterShowNextMonthChange); - _yuitest_coverline("build/calendar-base/calendar-base.js", 186); -this.after('headerRendererChange', this._afterHeaderRendererChange); - _yuitest_coverline("build/calendar-base/calendar-base.js", 187); -this.after('customRendererChange', this._afterCustomRendererChange); - _yuitest_coverline("build/calendar-base/calendar-base.js", 188); -this.after('enabledDatesRuleChange', this._afterCustomRendererChange); - _yuitest_coverline("build/calendar-base/calendar-base.js", 189); -this.after('disabledDatesRuleChange', this._afterCustomRendererChange); - _yuitest_coverline("build/calendar-base/calendar-base.js", 190); -this.after('focusedChange', this._afterFocusedChange); - _yuitest_coverline("build/calendar-base/calendar-base.js", 191); -this.after('selectionChange', this._renderSelectedDates); - _yuitest_coverline("build/calendar-base/calendar-base.js", 192); -this._bindCalendarEvents(); - }, - - - /** - * An internal utility method that generates a list of selected dates - * from the hash storage. - * - * @method _getSelectedDatesList - * @protected - * @return {Array} The array of `Date`s that are currently selected. - */ - _getSelectedDatesList : function () { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_getSelectedDatesList", 204); -_yuitest_coverline("build/calendar-base/calendar-base.js", 205); -var output = []; - _yuitest_coverline("build/calendar-base/calendar-base.js", 206); -each (this._selectedDates, function (year) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "(anonymous 2)", 206); -_yuitest_coverline("build/calendar-base/calendar-base.js", 207); -each (year, function (month) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "(anonymous 3)", 207); -_yuitest_coverline("build/calendar-base/calendar-base.js", 208); -each (month, function (day) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "(anonymous 4)", 208); -_yuitest_coverline("build/calendar-base/calendar-base.js", 209); -output.push (day); - }, this); - }, this); - }, this); - _yuitest_coverline("build/calendar-base/calendar-base.js", 213); -return output; - }, - - /** - * A utility method that returns all dates selected in a specific month. - * - * @method _getSelectedDatesInMonth - * @param {Date} oDate corresponding to the month for which selected dates - * are requested. - * @protected - * @return {Array} The array of `Date`s in a given month that are currently selected. - */ - _getSelectedDatesInMonth : function (oDate) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_getSelectedDatesInMonth", 225); -_yuitest_coverline("build/calendar-base/calendar-base.js", 226); -var year = oDate.getFullYear(), - month = oDate.getMonth(); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 229); -if (hasKey(this._selectedDates, year) && hasKey(this._selectedDates[year], month)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 230); -return Y.Object.values(this._selectedDates[year][month]); - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 233); -return []; - } - }, - - - /** - * An internal parsing method that receives a String list of numbers - * and number ranges (of the form "1,2,3,4-6,7-9,10,11" etc.) and checks - * whether a specific number is included in this list. Used for looking - * up dates in the customRenderer rule set. - * - * @method _isNumInList - * @param {Number} num The number to look for in a list. - * @param {String} strList The list of numbers of the form "1,2,3,4-6,7-8,9", etc. - * @private - * @return {boolean} Returns true if the given number is in the given list. - */ - _isNumInList : function (num, strList) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_isNumInList", 250); -_yuitest_coverline("build/calendar-base/calendar-base.js", 251); -if (strList == "all") { - _yuitest_coverline("build/calendar-base/calendar-base.js", 252); -return true; - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 255); -var elements = strList.split(","), - i = elements.length; - - _yuitest_coverline("build/calendar-base/calendar-base.js", 258); -while (i--) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 259); -var range = elements[i].split("-"); - _yuitest_coverline("build/calendar-base/calendar-base.js", 260); -if (range.length == 2 && num >= parseInt(range[0], 10) && num <= parseInt(range[1], 10)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 261); -return true; - } - else {_yuitest_coverline("build/calendar-base/calendar-base.js", 263); -if (range.length == 1 && (parseInt(elements[i], 10) == num)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 264); -return true; - }} - } - _yuitest_coverline("build/calendar-base/calendar-base.js", 267); -return false; - } - }, - - /** - * Given a specific date, returns an array of rules (from the customRenderer rule set) - * that the given date matches. - * - * @method _getRulesForDate - * @param {Date} oDate The date for which an array of rules is needed - * @private - * @return {Array} Returns an array of `String`s, each containg the name of - * a rule that the given date matches. - */ - _getRulesForDate : function (oDate) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_getRulesForDate", 281); -_yuitest_coverline("build/calendar-base/calendar-base.js", 282); -var year = oDate.getFullYear(), - month = oDate.getMonth(), - date = oDate.getDate(), - wday = oDate.getDay(), - rules = this._rules, - outputRules = [], - years, months, dates, days; - - _yuitest_coverline("build/calendar-base/calendar-base.js", 290); -for (years in rules) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 291); -if (this._isNumInList(year, years)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 292); -if (L.isString(rules[years])) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 293); -outputRules.push(rules[years]); - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 296); -for (months in rules[years]) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 297); -if (this._isNumInList(month, months)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 298); -if (L.isString(rules[years][months])) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 299); -outputRules.push(rules[years][months]); - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 302); -for (dates in rules[years][months]) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 303); -if (this._isNumInList(date, dates)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 304); -if (L.isString(rules[years][months][dates])) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 305); -outputRules.push(rules[years][months][dates]); - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 308); -for (days in rules[years][months][dates]) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 309); -if (this._isNumInList(wday, days)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 310); -if (L.isString(rules[years][months][dates][days])) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 311); -outputRules.push(rules[years][months][dates][days]); - } - } - } - } - } - } - } - } - } - } - } - } - _yuitest_coverline("build/calendar-base/calendar-base.js", 324); -return outputRules; - }, - - /** - * A utility method which, given a specific date and a name of the rule, - * checks whether the date matches the given rule. - * - * @method _matchesRule - * @param {Date} oDate The date to check - * @param {String} rule The name of the rule that the date should match. - * @private - * @return {boolean} Returns true if the date matches the given rule. - * - */ - _matchesRule : function (oDate, rule) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_matchesRule", 338); -_yuitest_coverline("build/calendar-base/calendar-base.js", 339); -return (iOf(this._getRulesForDate(oDate), rule) >= 0); - }, - - /** - * A utility method which checks whether a given date matches the `enabledDatesRule` - * or does not match the `disabledDatesRule` and therefore whether it can be selected. - * @method _canBeSelected - * @param {Date} oDate The date to check - * @private - * @return {boolean} Returns true if the date can be selected; false otherwise. - */ - _canBeSelected : function (oDate) { - - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_canBeSelected", 350); -_yuitest_coverline("build/calendar-base/calendar-base.js", 352); -var enabledDatesRule = this.get("enabledDatesRule"), - disabledDatesRule = this.get("disabledDatesRule"); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 355); -if (enabledDatesRule) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 356); -return this._matchesRule(oDate, enabledDatesRule); - } - else {_yuitest_coverline("build/calendar-base/calendar-base.js", 358); -if (disabledDatesRule) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 359); -return !this._matchesRule(oDate, disabledDatesRule); - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 362); -return true; - }} - }, - - /** - * Selects a given date or array of dates. - * @method selectDates - * @param {Date|Array} dates A `Date` or `Array` of `Date`s. - */ - selectDates : function (dates) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "selectDates", 371); -_yuitest_coverline("build/calendar-base/calendar-base.js", 372); -if (ydate.isValidDate(dates)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 373); -this._addDateToSelection(dates); - } - else {_yuitest_coverline("build/calendar-base/calendar-base.js", 375); -if (L.isArray(dates)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 376); -this._addDatesToSelection(dates); - }} - }, - - /** - * Deselects a given date or array of dates, or deselects - * all dates if no argument is specified. - * @method deselectDates - * @param {Date|Array} [dates] A `Date` or `Array` of `Date`s, or no - * argument if all dates should be deselected. - */ - deselectDates : function (dates) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "deselectDates", 387); -_yuitest_coverline("build/calendar-base/calendar-base.js", 388); -if (!dates) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 389); -this._clearSelection(); - } - else {_yuitest_coverline("build/calendar-base/calendar-base.js", 391); -if (ydate.isValidDate(dates)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 392); -this._removeDateFromSelection(dates); - } - else {_yuitest_coverline("build/calendar-base/calendar-base.js", 394); -if (L.isArray(dates)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 395); -this._removeDatesFromSelection(dates); - }}} - }, - - /** - * A utility method that adds a given date to selection.. - * @method _addDateToSelection - * @param {Date} oDate The date to add to selection. - * @param {Number} [index] An optional parameter that is used - * to differentiate between individual date selections and multiple - * date selections. - * @private - */ - _addDateToSelection : function (oDate, index) { - - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_addDateToSelection", 408); -_yuitest_coverline("build/calendar-base/calendar-base.js", 410); -if (this._canBeSelected(oDate)) { - - _yuitest_coverline("build/calendar-base/calendar-base.js", 412); -var year = oDate.getFullYear(), - month = oDate.getMonth(), - day = oDate.getDate(); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 416); -if (hasKey(this._selectedDates, year)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 417); -if (hasKey(this._selectedDates[year], month)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 418); -this._selectedDates[year][month][day] = oDate; - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 421); -this._selectedDates[year][month] = {}; - _yuitest_coverline("build/calendar-base/calendar-base.js", 422); -this._selectedDates[year][month][day] = oDate; - } - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 426); -this._selectedDates[year] = {}; - _yuitest_coverline("build/calendar-base/calendar-base.js", 427); -this._selectedDates[year][month] = {}; - _yuitest_coverline("build/calendar-base/calendar-base.js", 428); -this._selectedDates[year][month][day] = oDate; - } - - _yuitest_coverline("build/calendar-base/calendar-base.js", 431); -this._selectedDates = setVal(this._selectedDates, [year, month, day], oDate); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 433); -if (!index) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 434); -this._fireSelectionChange(); - } - } - }, - - /** - * A utility method that adds a given list of dates to selection. - * @method _addDatesToSelection - * @param {Array} datesArray The list of dates to add to selection. - * @private - */ - _addDatesToSelection : function (datesArray) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_addDatesToSelection", 445); -_yuitest_coverline("build/calendar-base/calendar-base.js", 446); -each(datesArray, this._addDateToSelection, this); - _yuitest_coverline("build/calendar-base/calendar-base.js", 447); -this._fireSelectionChange(); - }, - - /** - * A utility method that adds a given range of dates to selection. - * @method _addDateRangeToSelection - * @param {Date} startDate The first date of the given range. - * @param {Date} endDate The last date of the given range. - * @private - */ - _addDateRangeToSelection : function (startDate, endDate) { - - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_addDateRangeToSelection", 457); -_yuitest_coverline("build/calendar-base/calendar-base.js", 459); -var timezoneDifference = (endDate.getTimezoneOffset() - startDate.getTimezoneOffset())*60000, - startTime = startDate.getTime(), - endTime = endDate.getTime(); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 463); -if (startTime > endTime) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 464); -var tempTime = startTime; - _yuitest_coverline("build/calendar-base/calendar-base.js", 465); -startTime = endTime; - _yuitest_coverline("build/calendar-base/calendar-base.js", 466); -endTime = tempTime + timezoneDifference; - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 469); -endTime = endTime - timezoneDifference; - } - - - _yuitest_coverline("build/calendar-base/calendar-base.js", 473); -for (var time = startTime; time <= endTime; time += 86400000) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 474); -var addedDate = new Date(time); - _yuitest_coverline("build/calendar-base/calendar-base.js", 475); -addedDate.setHours(12); - _yuitest_coverline("build/calendar-base/calendar-base.js", 476); -this._addDateToSelection(addedDate, time); - } - _yuitest_coverline("build/calendar-base/calendar-base.js", 478); -this._fireSelectionChange(); - }, - - /** - * A utility method that removes a given date from selection.. - * @method _removeDateFromSelection - * @param {Date} oDate The date to remove from selection. - * @param {Number} [index] An optional parameter that is used - * to differentiate between individual date selections and multiple - * date selections. - * @private - */ - _removeDateFromSelection : function (oDate, index) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_removeDateFromSelection", 490); -_yuitest_coverline("build/calendar-base/calendar-base.js", 491); -var year = oDate.getFullYear(), - month = oDate.getMonth(), - day = oDate.getDate(); - _yuitest_coverline("build/calendar-base/calendar-base.js", 494); -if (hasKey(this._selectedDates, year) && - hasKey(this._selectedDates[year], month) && - hasKey(this._selectedDates[year][month], day)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 497); -delete this._selectedDates[year][month][day]; - _yuitest_coverline("build/calendar-base/calendar-base.js", 498); -if (!index) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 499); -this._fireSelectionChange(); - } - } - }, - - /** - * A utility method that removes a given list of dates from selection. - * @method _removeDatesFromSelection - * @param {Array} datesArray The list of dates to remove from selection. - * @private - */ - _removeDatesFromSelection : function (datesArray) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_removeDatesFromSelection", 510); -_yuitest_coverline("build/calendar-base/calendar-base.js", 511); -each(datesArray, this._removeDateFromSelection, this); - _yuitest_coverline("build/calendar-base/calendar-base.js", 512); -this._fireSelectionChange(); - }, - - /** - * A utility method that removes a given range of dates from selection. - * @method _removeDateRangeFromSelection - * @param {Date} startDate The first date of the given range. - * @param {Date} endDate The last date of the given range. - * @private - */ - _removeDateRangeFromSelection : function (startDate, endDate) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_removeDateRangeFromSelection", 522); -_yuitest_coverline("build/calendar-base/calendar-base.js", 523); -var startTime = startDate.getTime(), - endTime = endDate.getTime(); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 526); -for (var time = startTime; time <= endTime; time += 86400000) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 527); -this._removeDateFromSelection(new Date(time), time); - } - - _yuitest_coverline("build/calendar-base/calendar-base.js", 530); -this._fireSelectionChange(); - }, - - /** - * A utility method that removes all dates from selection. - * @method _clearSelection - * @param {boolean} noevent A Boolean specifying whether a selectionChange - * event should be fired. If true, the event is not fired. - * @private - */ - _clearSelection : function (noevent) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_clearSelection", 540); -_yuitest_coverline("build/calendar-base/calendar-base.js", 541); -this._selectedDates = {}; - _yuitest_coverline("build/calendar-base/calendar-base.js", 542); -this.get("contentBox").all("." + CAL_DAY_SELECTED).removeClass(CAL_DAY_SELECTED).setAttribute("aria-selected", false); - _yuitest_coverline("build/calendar-base/calendar-base.js", 543); -if (!noevent) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 544); -this._fireSelectionChange(); - } - }, - - /** - * A utility method that fires a selectionChange event. - * @method _fireSelectionChange - * @private - */ - _fireSelectionChange : function () { - - /** - * Fired when the set of selected dates changes. Contains a payload with - * a `newSelection` property with an array of selected dates. - * - * @event selectionChange - */ - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_fireSelectionChange", 553); -_yuitest_coverline("build/calendar-base/calendar-base.js", 561); -this.fire("selectionChange", {newSelection: this._getSelectedDatesList()}); - }, - - /** - * A utility method that restores cells modified by custom formatting. - * @method _restoreModifiedCells - * @private - */ - _restoreModifiedCells : function () { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_restoreModifiedCells", 569); -_yuitest_coverline("build/calendar-base/calendar-base.js", 570); -var contentbox = this.get("contentBox"), - id; - _yuitest_coverline("build/calendar-base/calendar-base.js", 572); -for (id in this._storedDateCells) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 573); -contentbox.one("#" + id).replace(this._storedDateCells[id]); - _yuitest_coverline("build/calendar-base/calendar-base.js", 574); -delete this._storedDateCells[id]; - } - }, - - /** - * A rendering assist method that renders all cells modified by the customRenderer - * rules, as well as the enabledDatesRule and disabledDatesRule. - * @method _renderCustomRules - * @private - */ - _renderCustomRules : function () { - - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_renderCustomRules", 584); -_yuitest_coverline("build/calendar-base/calendar-base.js", 586); -this.get("contentBox").all("." + CAL_DAY + ",." + CAL_NEXTMONTH_DAY).removeClass(SELECTION_DISABLED).setAttribute("aria-disabled", false); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 588); -if (!isEmpty(this._rules)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 589); -var enRule = this.get("enabledDatesRule"), - disRule = this.get("disabledDatesRule"); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 592); -for (var paneNum = 0; paneNum < this._paneNumber; paneNum++) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 593); -var paneDate = ydate.addMonths(this.get("date"), paneNum); - _yuitest_coverline("build/calendar-base/calendar-base.js", 594); -var dateArray = ydate.listOfDatesInMonth(paneDate); - _yuitest_coverline("build/calendar-base/calendar-base.js", 595); -each(dateArray, function (date) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "(anonymous 5)", 595); -_yuitest_coverline("build/calendar-base/calendar-base.js", 596); -var matchingRules = this._getRulesForDate(date); - _yuitest_coverline("build/calendar-base/calendar-base.js", 597); -if (matchingRules.length > 0) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 598); -var dateNode = this._dateToNode(date); - _yuitest_coverline("build/calendar-base/calendar-base.js", 599); -if ((enRule && iOf(matchingRules, enRule) < 0) || (!enRule && disRule && iOf(matchingRules, disRule) >= 0)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 600); -dateNode.addClass(SELECTION_DISABLED).setAttribute("aria-disabled", true); - } - - _yuitest_coverline("build/calendar-base/calendar-base.js", 603); -if (L.isFunction(this._filterFunction)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 604); -this._storedDateCells[dateNode.get("id")] = dateNode.cloneNode(true); - _yuitest_coverline("build/calendar-base/calendar-base.js", 605); -this._filterFunction (date, dateNode, matchingRules); - } - } - else {_yuitest_coverline("build/calendar-base/calendar-base.js", 608); -if (enRule) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 609); -var dateNode = this._dateToNode(date); - _yuitest_coverline("build/calendar-base/calendar-base.js", 610); -dateNode.addClass(SELECTION_DISABLED).setAttribute("aria-disabled", true); - }} - }, - this); - } - } - }, - - /** - * A rendering assist method that renders all cells that are currently selected. - * @method _renderSelectedDates - * @private - */ - _renderSelectedDates : function () { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_renderSelectedDates", 623); -_yuitest_coverline("build/calendar-base/calendar-base.js", 624); -this.get("contentBox").all("." + CAL_DAY_SELECTED).removeClass(CAL_DAY_SELECTED).setAttribute("aria-selected", false); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 626); -for (var paneNum = 0; paneNum < this._paneNumber; paneNum++) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 627); -var paneDate = ydate.addMonths(this.get("date"), paneNum); - _yuitest_coverline("build/calendar-base/calendar-base.js", 628); -var dateArray = this._getSelectedDatesInMonth(paneDate); - _yuitest_coverline("build/calendar-base/calendar-base.js", 629); -each(dateArray, function (date) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "(anonymous 6)", 629); -_yuitest_coverline("build/calendar-base/calendar-base.js", 630); -this._dateToNode(date).addClass(CAL_DAY_SELECTED).setAttribute("aria-selected", true); - }, - this); - } - }, - - /** - * A utility method that converts a date to the node wrapping the calendar cell - * the date corresponds to.. - * @method _dateToNode - * @param {Date} oDate The date to convert to Node - * @protected - * @return {Node} The node wrapping the DOM element of the cell the date - * corresponds to. - */ - _dateToNode : function (oDate) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_dateToNode", 645); -_yuitest_coverline("build/calendar-base/calendar-base.js", 646); -var day = oDate.getDate(), - col = 0, - daymod = day%7, - paneNum = (12 + oDate.getMonth() - this.get("date").getMonth()) % 12, - paneId = this._calendarId + "_pane_" + paneNum, - cutoffCol = this._paneProperties[paneId].cutoffCol; - - _yuitest_coverline("build/calendar-base/calendar-base.js", 653); -switch (daymod) { - case (0): - _yuitest_coverline("build/calendar-base/calendar-base.js", 655); -if (cutoffCol >= 6) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 656); -col = 12; - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 659); -col = 5; - } - _yuitest_coverline("build/calendar-base/calendar-base.js", 661); -break; - case (1): - _yuitest_coverline("build/calendar-base/calendar-base.js", 663); -col = 6; - _yuitest_coverline("build/calendar-base/calendar-base.js", 664); -break; - case (2): - _yuitest_coverline("build/calendar-base/calendar-base.js", 666); -if (cutoffCol > 0) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 667); -col = 7; - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 670); -col = 0; - } - _yuitest_coverline("build/calendar-base/calendar-base.js", 672); -break; - case (3): - _yuitest_coverline("build/calendar-base/calendar-base.js", 674); -if (cutoffCol > 1) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 675); -col = 8; - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 678); -col = 1; - } - _yuitest_coverline("build/calendar-base/calendar-base.js", 680); -break; - case (4): - _yuitest_coverline("build/calendar-base/calendar-base.js", 682); -if (cutoffCol > 2) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 683); -col = 9; - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 686); -col = 2; - } - _yuitest_coverline("build/calendar-base/calendar-base.js", 688); -break; - case (5): - _yuitest_coverline("build/calendar-base/calendar-base.js", 690); -if (cutoffCol > 3) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 691); -col = 10; - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 694); -col = 3; - } - _yuitest_coverline("build/calendar-base/calendar-base.js", 696); -break; - case (6): - _yuitest_coverline("build/calendar-base/calendar-base.js", 698); -if (cutoffCol > 4) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 699); -col = 11; - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 702); -col = 4; - } - _yuitest_coverline("build/calendar-base/calendar-base.js", 704); -break; - } - _yuitest_coverline("build/calendar-base/calendar-base.js", 706); -return(this.get("contentBox").one("#" + this._calendarId + "_pane_" + paneNum + "_" + col + "_" + day)); - - }, - - /** - * A utility method that converts a node corresponding to the DOM element of - * the cell for a particular date to that date. - * @method _nodeToDate - * @param {Node} oNode The Node wrapping the DOM element of a particular date cell. - * @protected - * @return {Date} The date corresponding to the DOM element that the given node wraps. - */ - _nodeToDate : function (oNode) { - - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_nodeToDate", 718); -_yuitest_coverline("build/calendar-base/calendar-base.js", 720); -var idParts = oNode.get("id").split("_").reverse(), - paneNum = parseInt(idParts[2], 10), - day = parseInt(idParts[0], 10); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 724); -var shiftedDate = ydate.addMonths(this.get("date"), paneNum), - year = shiftedDate.getFullYear(), - month = shiftedDate.getMonth(); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 728); -return new Date(year, month, day, 12, 0, 0, 0); - }, - - /** - * A placeholder method, called from bindUI, to bind the Calendar events. - * @method _bindCalendarEvents - * @protected - */ - _bindCalendarEvents : function () { - - }, - - /** - * A utility method that normalizes a given date by converting it to the 1st - * day of the month the date is in, with the time set to noon. - * @method _normalizeDate - * @param {Date} oDate The date to normalize - * @protected - * @return {Date} The normalized date, set to the first of the month, with time - * set to noon. - */ - _normalizeDate : function (date) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_normalizeDate", 749); -_yuitest_coverline("build/calendar-base/calendar-base.js", 750); -if (date) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 751); -return new Date(date.getFullYear(), date.getMonth(), 1, 12, 0, 0, 0); - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 754); -return null; - } - }, - - - /** - * A render assist utility method that computes the cutoff column for the calendar - * rendering mask. - * @method _getCutoffColumn - * @param {Date} date The date of the month grid to compute the cutoff column for. - * @param {Number} firstday The first day of the week (modified by internationalized calendars) - * @private - * @return {Number} The number of the cutoff column. - */ - _getCutoffColumn : function (date, firstday) { - - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_getCutoffColumn", 768); -_yuitest_coverline("build/calendar-base/calendar-base.js", 770); -var distance = this._normalizeDate(date).getDay() - firstday; - _yuitest_coverline("build/calendar-base/calendar-base.js", 771); -var cutOffColumn = 6 - (distance + 7)%7; - _yuitest_coverline("build/calendar-base/calendar-base.js", 772); -return cutOffColumn; - - }, - - /** - * A render assist method that turns on the view of the previous month's dates - * in a given calendar pane. - * @method _turnPrevMonthOn - * @param {Node} pane The calendar pane that needs its previous month's dates view - * modified. - * @protected - */ - _turnPrevMonthOn : function (pane) { - - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_turnPrevMonthOn", 784); -_yuitest_coverline("build/calendar-base/calendar-base.js", 786); -var pane_id = pane.get("id"), - pane_date = this._paneProperties[pane_id].paneDate, - daysInPrevMonth = ydate.daysInMonth(ydate.addMonths(pane_date, -1)); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 790); -if (!this._paneProperties[pane_id].hasOwnProperty("daysInPrevMonth")) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 791); -this._paneProperties[pane_id].daysInPrevMonth = 0; - } - - _yuitest_coverline("build/calendar-base/calendar-base.js", 794); -if (daysInPrevMonth != this._paneProperties[pane_id].daysInPrevMonth) { - - _yuitest_coverline("build/calendar-base/calendar-base.js", 796); -this._paneProperties[pane_id].daysInPrevMonth = daysInPrevMonth; - - _yuitest_coverline("build/calendar-base/calendar-base.js", 798); -for (var cell = 5; cell >= 0; cell--) - { - _yuitest_coverline("build/calendar-base/calendar-base.js", 800); -pane.one("#" + pane_id + "_" + cell + "_" + (cell-5)).set('text', daysInPrevMonth--); - } - - } - - - }, - - /** - * A render assist method that turns off the view of the previous month's dates - * in a given calendar pane. - * @method _turnPrevMonthOff - * @param {Node} pane The calendar pane that needs its previous month's dates view - * modified. - * @protected - */ - _turnPrevMonthOff : function (pane) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_turnPrevMonthOff", 816); -_yuitest_coverline("build/calendar-base/calendar-base.js", 817); -var pane_id = pane.get("id"); - _yuitest_coverline("build/calendar-base/calendar-base.js", 818); -this._paneProperties[pane_id].daysInPrevMonth = 0; - - _yuitest_coverline("build/calendar-base/calendar-base.js", 820); -for (var cell = 5; cell >= 0; cell--) - { - _yuitest_coverline("build/calendar-base/calendar-base.js", 822); -pane.one("#" + pane_id + "_" + cell + "_" + (cell-5)).setContent(" "); - } - }, - - /** - * A render assist method that cleans up the last few cells in the month grid - * when the number of days in the month changes. - * @method _cleanUpNextMonthCells - * @param {Node} pane The calendar pane that needs the last date cells cleaned up. - * @private - */ - _cleanUpNextMonthCells : function (pane) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_cleanUpNextMonthCells", 833); -_yuitest_coverline("build/calendar-base/calendar-base.js", 834); -var pane_id = pane.get("id"); - _yuitest_coverline("build/calendar-base/calendar-base.js", 835); -pane.one("#" + pane_id + "_6_29").removeClass(CAL_NEXTMONTH_DAY); - _yuitest_coverline("build/calendar-base/calendar-base.js", 836); -pane.one("#" + pane_id + "_7_30").removeClass(CAL_NEXTMONTH_DAY); - _yuitest_coverline("build/calendar-base/calendar-base.js", 837); -pane.one("#" + pane_id + "_8_31").removeClass(CAL_NEXTMONTH_DAY); - _yuitest_coverline("build/calendar-base/calendar-base.js", 838); -pane.one("#" + pane_id + "_0_30").removeClass(CAL_NEXTMONTH_DAY); - _yuitest_coverline("build/calendar-base/calendar-base.js", 839); -pane.one("#" + pane_id + "_1_31").removeClass(CAL_NEXTMONTH_DAY); - }, - - /** - * A render assist method that turns on the view of the next month's dates - * in a given calendar pane. - * @method _turnNextMonthOn - * @param {Node} pane The calendar pane that needs its next month's dates view - * modified. - * @protected - */ - _turnNextMonthOn : function (pane) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_turnNextMonthOn", 850); -_yuitest_coverline("build/calendar-base/calendar-base.js", 851); -var dayCounter = 1, - pane_id = pane.get("id"), - daysInMonth = this._paneProperties[pane_id].daysInMonth, - cutoffCol = this._paneProperties[pane_id].cutoffCol; - - _yuitest_coverline("build/calendar-base/calendar-base.js", 856); -for (var cell = daysInMonth - 22; cell < cutoffCol + 7; cell++) - { - _yuitest_coverline("build/calendar-base/calendar-base.js", 858); -pane.one("#" + pane_id + "_" + cell + "_" + (cell+23)).set("text", dayCounter++).addClass(CAL_NEXTMONTH_DAY); - } - - _yuitest_coverline("build/calendar-base/calendar-base.js", 861); -var startingCell = cutoffCol; - _yuitest_coverline("build/calendar-base/calendar-base.js", 862); -if (daysInMonth == 31 && (cutoffCol <= 1)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 863); -startingCell = 2; - } - else {_yuitest_coverline("build/calendar-base/calendar-base.js", 865); -if (daysInMonth == 30 && cutoffCol === 0) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 866); -startingCell = 1; - }} - - _yuitest_coverline("build/calendar-base/calendar-base.js", 869); -for (var cell = startingCell ; cell < cutoffCol + 7; cell++) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 870); -pane.one("#" + pane_id + "_" + cell + "_" + (cell+30)).set("text", dayCounter++).addClass(CAL_NEXTMONTH_DAY); - } - }, - - /** - * A render assist method that turns off the view of the next month's dates - * in a given calendar pane. - * @method _turnNextMonthOff - * @param {Node} pane The calendar pane that needs its next month's dates view - * modified. - * @protected - */ - _turnNextMonthOff : function (pane) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_turnNextMonthOff", 882); -_yuitest_coverline("build/calendar-base/calendar-base.js", 883); -var pane_id = pane.get("id"), - daysInMonth = this._paneProperties[pane_id].daysInMonth, - cutoffCol = this._paneProperties[pane_id].cutoffCol; - - _yuitest_coverline("build/calendar-base/calendar-base.js", 887); -for (var cell = daysInMonth - 22; cell <= 12; cell++) - { - _yuitest_coverline("build/calendar-base/calendar-base.js", 889); -pane.one("#" + pane_id + "_" + cell + "_" + (cell+23)).setContent(" ").addClass(CAL_NEXTMONTH_DAY); - } - - _yuitest_coverline("build/calendar-base/calendar-base.js", 892); -var startingCell = 0; - _yuitest_coverline("build/calendar-base/calendar-base.js", 893); -if (daysInMonth == 31 && (cutoffCol <= 1)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 894); -startingCell = 2; - } - else {_yuitest_coverline("build/calendar-base/calendar-base.js", 896); -if (daysInMonth == 30 && cutoffCol === 0) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 897); -startingCell = 1; - }} - - _yuitest_coverline("build/calendar-base/calendar-base.js", 900); -for (var cell = startingCell ; cell <= 12; cell++) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 901); -pane.one("#" + pane_id + "_" + cell + "_" + (cell+30)).setContent(" ").addClass(CAL_NEXTMONTH_DAY); - } - }, - - /** - * The handler for the change in the showNextMonth attribute. - * @method _afterShowNextMonthChange - * @private - */ - _afterShowNextMonthChange : function () { - - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_afterShowNextMonthChange", 910); -_yuitest_coverline("build/calendar-base/calendar-base.js", 912); -var contentBox = this.get('contentBox'), - lastPane = contentBox.one("#" + this._calendarId + "_pane_" + (this._paneNumber - 1)); - _yuitest_coverline("build/calendar-base/calendar-base.js", 914); -this._cleanUpNextMonthCells(lastPane); - - - _yuitest_coverline("build/calendar-base/calendar-base.js", 917); -if (this.get('showNextMonth')) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 918); -this._turnNextMonthOn(lastPane); - } - - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 922); -this._turnNextMonthOff(lastPane); - } - - }, - - /** - * The handler for the change in the showPrevMonth attribute. - * @method _afterShowPrevMonthChange - * @private - */ - _afterShowPrevMonthChange : function () { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_afterShowPrevMonthChange", 932); -_yuitest_coverline("build/calendar-base/calendar-base.js", 933); -var contentBox = this.get('contentBox'), - firstPane = contentBox.one("#" + this._calendarId + "_pane_" + 0); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 936); -if (this.get('showPrevMonth')) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 937); -this._turnPrevMonthOn(firstPane); - } - - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 941); -this._turnPrevMonthOff(firstPane); - } - - }, - - /** - * The handler for the change in the headerRenderer attribute. - * @method _afterHeaderRendererChange - * @private - */ - _afterHeaderRendererChange : function () { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_afterHeaderRendererChange", 951); -_yuitest_coverline("build/calendar-base/calendar-base.js", 952); -var headerCell = this.get("contentBox").one("." + CAL_HD_LABEL); - _yuitest_coverline("build/calendar-base/calendar-base.js", 953); -headerCell.setContent(this._updateCalendarHeader(this.get('date'))); - }, - - /** - * The handler for the change in the customRenderer attribute. - * @method _afterCustomRendererChange - * @private - */ - _afterCustomRendererChange : function () { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_afterCustomRendererChange", 961); -_yuitest_coverline("build/calendar-base/calendar-base.js", 962); -this._restoreModifiedCells(); - _yuitest_coverline("build/calendar-base/calendar-base.js", 963); -this._renderCustomRules(); - }, - - /** - * The handler for the change in the date attribute. Modifies the calendar - * view by shifting the calendar grid mask and running custom rendering and - * selection rendering as necessary. - * @method _afterDateChange - * @private - */ - _afterDateChange : function () { - - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_afterDateChange", 973); -_yuitest_coverline("build/calendar-base/calendar-base.js", 975); -var contentBox = this.get('contentBox'), - headerCell = contentBox.one("." + CAL_HD).one("." + CAL_HD_LABEL), - calendarPanes = contentBox.all("." + CAL_GRID), - currentDate = this.get("date"), - counter = 0; - - _yuitest_coverline("build/calendar-base/calendar-base.js", 981); -contentBox.setStyle("visibility", "hidden"); - _yuitest_coverline("build/calendar-base/calendar-base.js", 982); -headerCell.setContent(this._updateCalendarHeader(currentDate)); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 984); -this._restoreModifiedCells(); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 986); -calendarPanes.each(function (curNode) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "(anonymous 7)", 986); -_yuitest_coverline("build/calendar-base/calendar-base.js", 987); -this._rerenderCalendarPane(ydate.addMonths(currentDate, counter++), - curNode); - }, this); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 991); -this._afterShowPrevMonthChange(); - _yuitest_coverline("build/calendar-base/calendar-base.js", 992); -this._afterShowNextMonthChange(); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 994); -this._renderCustomRules(); - _yuitest_coverline("build/calendar-base/calendar-base.js", 995); -this._renderSelectedDates(); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 997); -contentBox.setStyle("visibility", "visible"); - }, - - - /** - * A rendering assist method that initializes the HTML for a single - * calendar pane. - * @method _initCalendarPane - * @param {Date} baseDate The date corresponding to the month of the given - * calendar pane. - * @param {String} pane_id The id of the pane, to be used as a prefix for - * element ids in the given pane. - * @private - */ - _initCalendarPane : function (baseDate, pane_id) { - // Initialize final output HTML string - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_initCalendarPane", 1011); -_yuitest_coverline("build/calendar-base/calendar-base.js", 1013); -var calString = '', - // Get a list of short weekdays from the internationalization package, or else use default English ones. - weekdays = this.get('strings.very_short_weekdays') || ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], - fullweekdays = this.get('strings.weekdays') || ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - // Get the first day of the week from the internationalization package, or else use Sunday as default. - firstday = this.get('strings.first_weekday') || 0, - // Compute the cutoff column of the masked calendar table, based on the start date and the first day of week. - cutoffCol = this._getCutoffColumn(baseDate, firstday), - // Compute the number of days in the month based on starting date - daysInMonth = ydate.daysInMonth(baseDate), - // Initialize the array of individual row HTML strings - row_array = ['','','','','',''], - // Initialize the partial templates object - partials = {}; - - // Initialize the partial template for the weekday row cells. - _yuitest_coverline("build/calendar-base/calendar-base.js", 1029); -partials["weekday_row"] = ''; - - // Populate the partial template for the weekday row cells with weekday names - _yuitest_coverline("build/calendar-base/calendar-base.js", 1032); -for (var day = firstday; day <= firstday + 6; day++) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1033); -partials["weekday_row"] += - substitute(CalendarBase.WEEKDAY_TEMPLATE, - {weekdayname: weekdays[day%7], - full_weekdayname: fullweekdays[day%7]}); - } - - // Populate the partial template for the weekday row container with the weekday row cells - _yuitest_coverline("build/calendar-base/calendar-base.js", 1040); -partials["weekday_row_template"] = substitute(CalendarBase.WEEKDAY_ROW_TEMPLATE, partials); - - // Populate the array of individual row HTML strings - _yuitest_coverline("build/calendar-base/calendar-base.js", 1043); -for (var row = 0; row <= 5; row++) { - - _yuitest_coverline("build/calendar-base/calendar-base.js", 1045); -for (var column = 0; column <= 12; column++) { - - // Compute the value of the date that needs to populate the cell - _yuitest_coverline("build/calendar-base/calendar-base.js", 1048); -var date = 7*row - 5 + column; - - // Compose the value of the unique id of the current calendar cell - _yuitest_coverline("build/calendar-base/calendar-base.js", 1051); -var id_date = pane_id + "_" + column + "_" + date; - - // Set the calendar day class to one of three possible values - _yuitest_coverline("build/calendar-base/calendar-base.js", 1054); -var calendar_day_class = CAL_DAY; - - _yuitest_coverline("build/calendar-base/calendar-base.js", 1056); -if (date < 1) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1057); -calendar_day_class = CAL_PREVMONTH_DAY; - } - else {_yuitest_coverline("build/calendar-base/calendar-base.js", 1059); -if (date > daysInMonth) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1060); -calendar_day_class = CAL_NEXTMONTH_DAY; - }} - - // Cut off dates that fall before the first and after the last date of the month - _yuitest_coverline("build/calendar-base/calendar-base.js", 1064); -if (date < 1 || date > daysInMonth) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1065); -date = " "; - } - - // Decide on whether a column in the masked table is visible or not based on the value of the cutoff column. - _yuitest_coverline("build/calendar-base/calendar-base.js", 1069); -var column_visibility = (column >= cutoffCol && column < (cutoffCol + 7)) ? '' : CAL_COL_HIDDEN; - - // Substitute the values into the partial calendar day template and add it to the current row HTML string - _yuitest_coverline("build/calendar-base/calendar-base.js", 1072); -row_array[row] += substitute (CalendarBase.CALDAY_TEMPLATE, - {day_content: date, - calendar_col_class: "calendar_col" + column, - calendar_col_visibility_class: column_visibility, - calendar_day_class: calendar_day_class, - calendar_day_id: id_date}); - } - } - - // Instantiate the partial calendar pane body template - _yuitest_coverline("build/calendar-base/calendar-base.js", 1082); -partials["body_template"] = ''; - - // Populate the body template with the rows templates - _yuitest_coverline("build/calendar-base/calendar-base.js", 1085); -each (row_array, function (v) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "(anonymous 8)", 1085); -_yuitest_coverline("build/calendar-base/calendar-base.js", 1086); -partials["body_template"] += substitute(CalendarBase.CALDAY_ROW_TEMPLATE, - {calday_row: v}); - }); - - // Populate the calendar grid id - _yuitest_coverline("build/calendar-base/calendar-base.js", 1091); -partials["calendar_pane_id"] = pane_id; - - // Populate the calendar pane tabindex - _yuitest_coverline("build/calendar-base/calendar-base.js", 1094); -partials["calendar_pane_tabindex"] = this.get("tabIndex"); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1095); -partials["pane_arialabel"] = ydate.format(baseDate, {format:"%B %Y"}); - - - // Generate final output by substituting class names. - _yuitest_coverline("build/calendar-base/calendar-base.js", 1099); -var output = substitute(substitute (CalendarBase.CALENDAR_GRID_TEMPLATE, partials), - CalendarBase.CALENDAR_STRINGS); - - // Store the initialized pane information - - _yuitest_coverline("build/calendar-base/calendar-base.js", 1104); -this._paneProperties[pane_id] = {cutoffCol: cutoffCol, daysInMonth: daysInMonth, paneDate: baseDate}; - - _yuitest_coverline("build/calendar-base/calendar-base.js", 1106); -return output; - }, - - /** - * A rendering assist method that rerenders a specified calendar pane, based - * on a new Date. - * @method _rerenderCalendarPane - * @param {Date} newDate The date corresponding to the month of the given - * calendar pane. - * @param {Node} pane The node corresponding to the calendar pane to be rerenders. - * @private - */ - _rerenderCalendarPane : function (newDate, pane) { - - // Get the first day of the week from the internationalization package, or else use Sunday as default. - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_rerenderCalendarPane", 1118); -_yuitest_coverline("build/calendar-base/calendar-base.js", 1121); -var firstday = this.get('strings.first_weekday') || 0, - // Compute the cutoff column of the masked calendar table, based on the start date and the first day of week. - cutoffCol = this._getCutoffColumn(newDate, firstday), - // Compute the number of days in the month based on starting date - daysInMonth = ydate.daysInMonth(newDate), - // Get pane id for easier reference - paneId = pane.get("id"); - - // Hide the pane before making DOM changes to speed them up - _yuitest_coverline("build/calendar-base/calendar-base.js", 1130); -pane.setStyle("visibility", "hidden"); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1131); -pane.setAttribute("aria-label", ydate.format(newDate, {format:"%B %Y"})); - - // Go through all columns, and flip their visibility setting based on whether they are within the unmasked range. - _yuitest_coverline("build/calendar-base/calendar-base.js", 1134); -for (var column = 0; column <= 12; column++) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1135); -var currentColumn = pane.all("." + "calendar_col" + column); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1136); -currentColumn.removeClass(CAL_COL_HIDDEN); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 1138); -if (column < cutoffCol || column >= (cutoffCol + 7)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1139); -currentColumn.addClass(CAL_COL_HIDDEN); - } - else { - // Clean up dates in visible columns to account for the correct number of days in a month - _yuitest_coverline("build/calendar-base/calendar-base.js", 1143); -switch(column) - { - case 0: - _yuitest_coverline("build/calendar-base/calendar-base.js", 1146); -var curCell = pane.one("#" + paneId + "_0_30"); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1147); -if (daysInMonth >= 30) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1148); -curCell.set("text", "30"); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1149); -curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY); - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1152); -curCell.setContent(" "); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1153); -curCell.addClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY); - } - _yuitest_coverline("build/calendar-base/calendar-base.js", 1155); -break; - case 1: - _yuitest_coverline("build/calendar-base/calendar-base.js", 1157); -var curCell = pane.one("#" + paneId + "_1_31"); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1158); -if (daysInMonth >= 31) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1159); -curCell.set("text", "31"); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1160); -curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY); - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1163); -curCell.setContent(" "); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1164); -curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY); - } - _yuitest_coverline("build/calendar-base/calendar-base.js", 1166); -break; - case 6: - _yuitest_coverline("build/calendar-base/calendar-base.js", 1168); -var curCell = pane.one("#" + paneId + "_6_29"); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1169); -if (daysInMonth >= 29) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1170); -curCell.set("text", "29"); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1171); -curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY); - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1174); -curCell.setContent(" "); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1175); -curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY); - } - _yuitest_coverline("build/calendar-base/calendar-base.js", 1177); -break; - case 7: - _yuitest_coverline("build/calendar-base/calendar-base.js", 1179); -var curCell = pane.one("#" + paneId + "_7_30"); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1180); -if (daysInMonth >= 30) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1181); -curCell.set("text", "30"); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1182); -curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY); - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1185); -curCell.setContent(" "); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1186); -curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY); - } - _yuitest_coverline("build/calendar-base/calendar-base.js", 1188); -break; - case 8: - _yuitest_coverline("build/calendar-base/calendar-base.js", 1190); -var curCell = pane.one("#" + paneId + "_8_31"); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1191); -if (daysInMonth >= 31) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1192); -curCell.set("text", "31"); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1193); -curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY); - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1196); -curCell.setContent(" "); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1197); -curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY); - } - _yuitest_coverline("build/calendar-base/calendar-base.js", 1199); -break; - } - } - } - // Update stored pane properties - _yuitest_coverline("build/calendar-base/calendar-base.js", 1204); -this._paneProperties[paneId].cutoffCol = cutoffCol; - _yuitest_coverline("build/calendar-base/calendar-base.js", 1205); -this._paneProperties[paneId].daysInMonth = daysInMonth; - _yuitest_coverline("build/calendar-base/calendar-base.js", 1206); -this._paneProperties[paneId].paneDate = newDate; - - // Bring the pane visibility back after all DOM changes are done - _yuitest_coverline("build/calendar-base/calendar-base.js", 1209); -pane.setStyle("visibility", "visible"); - - }, - - /** - * A rendering assist method that updates the calendar header based - * on a given date and potentially the provided headerRenderer. - * @method _updateCalendarHeader - * @param {Date} baseDate The date with which to update the calendar header. - * @private - */ - _updateCalendarHeader : function (baseDate) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_updateCalendarHeader", 1220); -_yuitest_coverline("build/calendar-base/calendar-base.js", 1221); -var headerString = "", - headerRenderer = this.get("headerRenderer"); - - _yuitest_coverline("build/calendar-base/calendar-base.js", 1224); -if (Y.Lang.isString(headerRenderer)) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1225); -headerString = ydate.format(baseDate, {format:headerRenderer}); - } - else {_yuitest_coverline("build/calendar-base/calendar-base.js", 1227); -if (headerRenderer instanceof Function) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1228); -headerString = headerRenderer.call(this, baseDate); - }} - - _yuitest_coverline("build/calendar-base/calendar-base.js", 1231); -return headerString; - }, - - /** - * A rendering assist method that initializes the calendar header HTML - * based on a given date and potentially the provided headerRenderer. - * @method _updateCalendarHeader - * @param {Date} baseDate The date with which to initialize the calendar header. - * @private - */ - _initCalendarHeader : function (baseDate) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_initCalendarHeader", 1241); -_yuitest_coverline("build/calendar-base/calendar-base.js", 1242); -return substitute(substitute(CalendarBase.HEADER_TEMPLATE, - {calheader: this._updateCalendarHeader(baseDate), - calendar_id: this._calendarId}), - CalendarBase.CALENDAR_STRINGS); - }, - - /** - * A rendering assist method that initializes the calendar HTML - * based on a given date. - * @method _initCalendarHTML - * @param {Date} baseDate The date with which to initialize the calendar. - * @private - */ - _initCalendarHTML : function (baseDate) { - // Instantiate the partials holder - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "_initCalendarHTML", 1255); -_yuitest_coverline("build/calendar-base/calendar-base.js", 1257); -var partials = {}, - // Counter for iterative template replacement. - counter = 0; - - // Generate the template for the header - _yuitest_coverline("build/calendar-base/calendar-base.js", 1262); -partials["header_template"] = this._initCalendarHeader(baseDate); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1263); -partials["calendar_id"] = this._calendarId; - - _yuitest_coverline("build/calendar-base/calendar-base.js", 1265); -partials["body_template"] = substitute(substitute (CalendarBase.CONTENT_TEMPLATE, partials), - CalendarBase.CALENDAR_STRINGS); - - // Instantiate the iterative template replacer function - _yuitest_coverline("build/calendar-base/calendar-base.js", 1269); -function paneReplacer () { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "paneReplacer", 1269); -_yuitest_coverline("build/calendar-base/calendar-base.js", 1270); -var singlePane = this._initCalendarPane(ydate.addMonths(baseDate, counter), partials["calendar_id"]+"_pane_"+counter); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1271); -counter++; - _yuitest_coverline("build/calendar-base/calendar-base.js", 1272); -return singlePane; - } - // Go through all occurrences of the calendar_grid_template token and replace it with an appropriate calendar grid. - _yuitest_coverline("build/calendar-base/calendar-base.js", 1275); -var output = partials["body_template"].replace(/\{calendar_grid_template\}/g, Y.bind(paneReplacer, this)); - - // Update the paneNumber count - _yuitest_coverline("build/calendar-base/calendar-base.js", 1278); -this._paneNumber = counter; - - _yuitest_coverline("build/calendar-base/calendar-base.js", 1280); -return output; - } -}, { - - /** - * The CSS classnames for the calendar templates. - * @property CALENDAR_STRINGS - * @type Object - * @readOnly - * @protected - * @static - */ - CALENDAR_STRINGS: { - calendar_grid_class : CAL_GRID, - calendar_body_class : CAL_BODY, - calendar_hd_class : CAL_HD, - calendar_hd_label_class : CAL_HD_LABEL, - calendar_weekdayrow_class : CAL_WDAYROW, - calendar_weekday_class : CAL_WDAY, - calendar_row_class : CAL_ROW, - calendar_day_class : CAL_DAY, - calendar_dayanchor_class : CAL_ANCHOR, - calendar_pane_class : CAL_PANE, - calendar_right_grid_class : CAL_RIGHT_GRID, - calendar_left_grid_class : CAL_LEFT_GRID, - calendar_status_class : CAL_STATUS - }, - - /* - - ARIA_STATUS_TEMPLATE: '
', - - AriaStatus : null, - - updateStatus : function (statusString) { - - if (!CalendarBase.AriaStatus) { - CalendarBase.AriaStatus = create( - substitute (CalendarBase.ARIA_STATUS_TEMPLATE, - CalendarBase.CALENDAR_STRINGS)); - Y.one("body").append(CalendarBase.AriaStatus); - } - - CalendarBase.AriaStatus.set("text", statusString); - }, - - */ - - /** - * The main content template for calendar. - * @property CONTENT_TEMPLATE - * @type String - * @protected - * @static - */ - CONTENT_TEMPLATE: '
' + - '{header_template}' + - '
' + - '{calendar_grid_template}' + - '
' + - '
', - - /** - * A single pane template for calendar (same as default CONTENT_TEMPLATE) - * @property ONE_PANE_TEMPLATE - * @type String - * @protected - * @readOnly - * @static - */ - ONE_PANE_TEMPLATE: '
' + - '{header_template}' + - '
' + - '{calendar_grid_template}' + - '
' + - '
', - - /** - * A two pane template for calendar. - * @property TWO_PANE_TEMPLATE - * @type String - * @protected - * @readOnly - * @static - */ - TWO_PANE_TEMPLATE: '
' + - '{header_template}' + - '
'+ - '
' + - '{calendar_grid_template}' + - '
' + - '
' + - '
' + - '
' + - '{calendar_grid_template}' + - '
' + - '
' + - '
', - /** - * A three pane template for calendar. - * @property THREE_PANE_TEMPLATE - * @type String - * @protected - * @readOnly - * @static - */ - THREE_PANE_TEMPLATE: '
' + - '{header_template}' + - '
' + - '
' + - '{calendar_grid_template}' + - '
' + - '
' + - '
' + - '{calendar_grid_template}' + - '
' + - '
' + - '
' + - '{calendar_grid_template}' + - '
' + - '
' + - '
', - /** - * A template for the calendar grid. - * @property CALENDAR_GRID_TEMPLATE - * @type String - * @protected - * @static - */ - CALENDAR_GRID_TEMPLATE: '' + - '' + - '{weekday_row_template}' + - '' + - '' + - '{body_template}' + - '' + - '
', - - /** - * A template for the calendar header. - * @property HEADER_TEMPLATE - * @type String - * @protected - * @static - */ - HEADER_TEMPLATE: '
' + - '
' + - '{calheader}' + - '
' + - '
', - - /** - * A template for the row of weekday names. - * @property WEEKDAY_ROW_TEMPLATE - * @type String - * @protected - * @static - */ - WEEKDAY_ROW_TEMPLATE: '' + - '{weekday_row}' + - '', - - /** - * A template for a single row of calendar days. - * @property CALDAY_ROW_TEMPLATE - * @type String - * @protected - * @static - */ - CALDAY_ROW_TEMPLATE: '' + - '{calday_row}' + - '', - - /** - * A template for a single cell with a weekday name. - * @property CALDAY_ROW_TEMPLATE - * @type String - * @protected - * @static - */ - WEEKDAY_TEMPLATE: '{weekdayname}', - - /** - * A template for a single cell with a calendar day. - * @property CALDAY_TEMPLATE - * @type String - * @protected - * @static - */ - CALDAY_TEMPLATE: '' + - '{day_content}' + - '', - - /** - * The identity of the widget. - * - * @property NAME - * @type String - * @default 'calendarBase' - * @readOnly - * @protected - * @static - */ - NAME: 'calendarBase', - - /** - * Static property used to define the default attribute configuration of - * the Widget. - * - * @property ATTRS - * @type {Object} - * @protected - * @static - */ - ATTRS: { - tabIndex: { - value: 1 - }, - /** - * The date corresponding to the current calendar view. Always - * normalized to the first of the month that contains the date - * at assignment time. Used as the first date visible in the - * calendar. - * - * @attribute date - * @type Date - * @default The first of the month containing today's date, as - * set on the end user's system. - */ - date: { - value: new Date(), - setter: function (val) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "setter", 1511); -_yuitest_coverline("build/calendar-base/calendar-base.js", 1512); -var newDate = this._normalizeDate(val); - _yuitest_coverline("build/calendar-base/calendar-base.js", 1513); -if (ydate.areEqual(newDate, this.get('date'))) { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1514); -return this.get('date'); - } - else { - _yuitest_coverline("build/calendar-base/calendar-base.js", 1517); -return newDate; - } - } - }, - - /** - * A setting specifying whether to shows days from the previous - * month in the visible month's grid, if there are empty preceding - * cells available. - * - * @attribute showPrevMonth - * @type boolean - * @default false - */ - showPrevMonth: { - value: false - }, - - /** - * A setting specifying whether to shows days from the next - * month in the visible month's grid, if there are empty - * cells available at the end. - * - * @attribute showNextMonth - * @type boolean - * @default false - */ - showNextMonth: { - value: false - }, - - /** - * Strings and properties derived from the internationalization packages - * for the calendar. - * - * @attribute strings - * @type Object - * @protected - */ - strings : { - valueFn: function() { _yuitest_coverfunc("build/calendar-base/calendar-base.js", "valueFn", 1557); -_yuitest_coverline("build/calendar-base/calendar-base.js", 1557); -return Y.Intl.get("calendar-base"); } - }, - - /** - * Custom header renderer for the calendar. - * - * @attribute headerRenderer - * @type String | Function - */ - headerRenderer: { - value: "%B %Y" - }, - - /** - * The name of the rule which all enabled dates should match. - * Either disabledDatesRule or enabledDatesRule should be specified, - * or neither, but not both. - * - * @attribute enabledDatesRule - * @type String - * @default null - */ - enabledDatesRule: { - value: null - }, - - /** - * The name of the rule which all disabled dates should match. - * Either disabledDatesRule or enabledDatesRule should be specified, - * or neither, but not both. - * - * @attribute disabledDatesRule - * @type String - * @default null - */ - disabledDatesRule: { - value: null - }, - - /** - * A read-only attribute providing a list of currently selected dates. - * - * @attribute selectedDates - * @readOnly - * @type Array - */ - selectedDates : { - readOnly: true, - getter: function (val) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "getter", 1605); -_yuitest_coverline("build/calendar-base/calendar-base.js", 1606); -return (this._getSelectedDatesList()); - } - }, - - /** - * An object of the form {rules:Object, filterFunction:Function}, - * providing set of rules and a custom rendering function for - * customizing specific calendar cells. - * - * @attribute customRenderer - * @readOnly - * @type Object - * @default {} - */ - customRenderer : { - lazyAdd: false, - value: {}, - setter: function (val) { - _yuitest_coverfunc("build/calendar-base/calendar-base.js", "setter", 1623); -_yuitest_coverline("build/calendar-base/calendar-base.js", 1624); -this._rules = val.rules; - _yuitest_coverline("build/calendar-base/calendar-base.js", 1625); -this._filterFunction = val.filterFunction; - } - } - } - -}); - - -}, '3.7.3', {"requires": ["widget", "substitute", "datatype-date", "datatype-date-math", "cssgrids"], "lang": ["de", "en", "fr", "ja", "nb-NO", "pt-BR", "ru", "zh-HANT-TW"], "skinnable": true}); diff --git a/lib/yuilib/3.7.3/build/calendar-base/calendar-base-debug.js b/lib/yuilib/3.7.3/build/calendar-base/calendar-base-debug.js deleted file mode 100644 index 207f947a92b..00000000000 --- a/lib/yuilib/3.7.3/build/calendar-base/calendar-base-debug.js +++ /dev/null @@ -1,1639 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add('calendar-base', function (Y, NAME) { - -/** - * The CalendarBase submodule is a basic UI calendar view that displays - * a range of dates in a two-dimensional month grid, with one or more - * months visible at a single time. CalendarBase supports custom date - * rendering, multiple calendar panes, and selection. - * @module calendar - * @submodule calendar-base - */ - -var getCN = Y.ClassNameManager.getClassName, - CALENDAR = 'calendar', - CAL_GRID = getCN(CALENDAR, 'grid'), - CAL_LEFT_GRID = getCN(CALENDAR, 'left-grid'), - CAL_RIGHT_GRID = getCN(CALENDAR, 'right-grid'), - CAL_BODY = getCN(CALENDAR, 'body'), - CAL_HD = getCN(CALENDAR, 'header'), - CAL_HD_LABEL = getCN(CALENDAR, 'header-label'), - CAL_WDAYROW = getCN(CALENDAR, 'weekdayrow'), - CAL_WDAY = getCN(CALENDAR, 'weekday'), - CAL_COL_HIDDEN = getCN(CALENDAR, 'column-hidden'), - CAL_DAY_SELECTED = getCN(CALENDAR, 'day-selected'), - SELECTION_DISABLED = getCN(CALENDAR, 'selection-disabled'), - CAL_ROW = getCN(CALENDAR, 'row'), - CAL_DAY = getCN(CALENDAR, 'day'), - CAL_PREVMONTH_DAY = getCN(CALENDAR, 'prevmonth-day'), - CAL_NEXTMONTH_DAY = getCN(CALENDAR, 'nextmonth-day'), - CAL_ANCHOR = getCN(CALENDAR, 'anchor'), - CAL_PANE = getCN(CALENDAR, 'pane'), - CAL_STATUS = getCN(CALENDAR, 'status'), - L = Y.Lang, - node = Y.Node, - create = node.create, - substitute = Y.substitute, - each = Y.each, - hasVal = Y.Array.hasValue, - iOf = Y.Array.indexOf, - hasKey = Y.Object.hasKey, - setVal = Y.Object.setValue, - owns = Y.Object.owns, - isEmpty = Y.Object.isEmpty, - ydate = Y.DataType.Date; - -/** Create a calendar view to represent a single or multiple - * month range of dates, rendered as a grid with date and - * weekday labels. - * - * @class CalendarBase - * @extends Widget - * @param config {Object} Configuration object (see Configuration - * attributes) - * @constructor - */ -function CalendarBase(config) { - CalendarBase.superclass.constructor.apply ( this, arguments ); -} - - - -Y.CalendarBase = Y.extend( CalendarBase, Y.Widget, { - - /** - * A storage for various properties of individual month - * panes. - * - * @property _paneProperties - * @type Object - * @private - */ - _paneProperties : {}, - - /** - * The number of month panes in the calendar, deduced - * from the CONTENT_TEMPLATE's number of {calendar_grid} - * tokens. - * - * @property _paneNumber - * @type Number - * @private - */ - _paneNumber : 1, - - /** - * The unique id used to prefix various elements of this - * calendar instance. - * - * @property _calendarId - * @type String - * @private - */ - _calendarId : null, - - /** - * The hash map of selected dates, populated with - * selectDates() and deselectDates() methods - * - * @property _selectedDates - * @type Object - * @private - */ - _selectedDates : {}, - - /** - * A private copy of the rules object, populated - * by setting the customRenderer attribute. - * - * @property _rules - * @type Object - * @private - */ - _rules : {}, - - /** - * A private copy of the filterFunction, populated - * by setting the customRenderer attribute. - * - * @property _filterFunction - * @type Function - * @private - */ - _filterFunction : null, - - /** - * Storage for calendar cells modified by any custom - * formatting. The storage is cleared, used to restore - * cells to the original state, and repopulated accordingly - * when the calendar is rerendered. - * - * @property _storedDateCells - * @type Object - * @private - */ - _storedDateCells : {}, - - /** - * Designated initializer - * Initializes instance-level properties of - * calendar. - * - * @method initializer - */ - initializer : function () { - this._paneProperties = {}; - this._calendarId = Y.guid('calendar'); - this._selectedDates = {}; - if (isEmpty(this._rules)) { - this._rules = {}; - } - this._storedDateCells = {}; - }, - - /** - * renderUI implementation - * - * Creates a visual representation of the calendar based on existing parameters. - * @method renderUI - */ - renderUI : function () { - - var contentBox = this.get('contentBox'); - contentBox.appendChild(this._initCalendarHTML(this.get('date'))); - if (this.get('showPrevMonth')) { - this._afterShowPrevMonthChange(); - } - if (this.get('showNextMonth')) { - this._afterShowNextMonthChange(); - } - this._renderCustomRules(); - this._renderSelectedDates(); - - this.get("boundingBox").setAttribute("aria-labelledby", this._calendarId + "_header"); - - }, - /** - * bindUI implementation - * - * Assigns listeners to relevant events that change the state - * of the calendar. - * @method bindUI - */ - bindUI : function () { - this.after('dateChange', this._afterDateChange); - this.after('showPrevMonthChange', this._afterShowPrevMonthChange); - this.after('showNextMonthChange', this._afterShowNextMonthChange); - this.after('headerRendererChange', this._afterHeaderRendererChange); - this.after('customRendererChange', this._afterCustomRendererChange); - this.after('enabledDatesRuleChange', this._afterCustomRendererChange); - this.after('disabledDatesRuleChange', this._afterCustomRendererChange); - this.after('focusedChange', this._afterFocusedChange); - this.after('selectionChange', this._renderSelectedDates); - this._bindCalendarEvents(); - }, - - - /** - * An internal utility method that generates a list of selected dates - * from the hash storage. - * - * @method _getSelectedDatesList - * @protected - * @return {Array} The array of `Date`s that are currently selected. - */ - _getSelectedDatesList : function () { - var output = []; - each (this._selectedDates, function (year) { - each (year, function (month) { - each (month, function (day) { - output.push (day); - }, this); - }, this); - }, this); - return output; - }, - - /** - * A utility method that returns all dates selected in a specific month. - * - * @method _getSelectedDatesInMonth - * @param {Date} oDate corresponding to the month for which selected dates - * are requested. - * @protected - * @return {Array} The array of `Date`s in a given month that are currently selected. - */ - _getSelectedDatesInMonth : function (oDate) { - var year = oDate.getFullYear(), - month = oDate.getMonth(); - - if (hasKey(this._selectedDates, year) && hasKey(this._selectedDates[year], month)) { - return Y.Object.values(this._selectedDates[year][month]); - } - else { - return []; - } - }, - - - /** - * An internal parsing method that receives a String list of numbers - * and number ranges (of the form "1,2,3,4-6,7-9,10,11" etc.) and checks - * whether a specific number is included in this list. Used for looking - * up dates in the customRenderer rule set. - * - * @method _isNumInList - * @param {Number} num The number to look for in a list. - * @param {String} strList The list of numbers of the form "1,2,3,4-6,7-8,9", etc. - * @private - * @return {boolean} Returns true if the given number is in the given list. - */ - _isNumInList : function (num, strList) { - if (strList == "all") { - return true; - } - else { - var elements = strList.split(","), - i = elements.length; - - while (i--) { - var range = elements[i].split("-"); - if (range.length == 2 && num >= parseInt(range[0], 10) && num <= parseInt(range[1], 10)) { - return true; - } - else if (range.length == 1 && (parseInt(elements[i], 10) == num)) { - return true; - } - } - return false; - } - }, - - /** - * Given a specific date, returns an array of rules (from the customRenderer rule set) - * that the given date matches. - * - * @method _getRulesForDate - * @param {Date} oDate The date for which an array of rules is needed - * @private - * @return {Array} Returns an array of `String`s, each containg the name of - * a rule that the given date matches. - */ - _getRulesForDate : function (oDate) { - var year = oDate.getFullYear(), - month = oDate.getMonth(), - date = oDate.getDate(), - wday = oDate.getDay(), - rules = this._rules, - outputRules = [], - years, months, dates, days; - - for (years in rules) { - if (this._isNumInList(year, years)) { - if (L.isString(rules[years])) { - outputRules.push(rules[years]); - } - else { - for (months in rules[years]) { - if (this._isNumInList(month, months)) { - if (L.isString(rules[years][months])) { - outputRules.push(rules[years][months]); - } - else { - for (dates in rules[years][months]) { - if (this._isNumInList(date, dates)) { - if (L.isString(rules[years][months][dates])) { - outputRules.push(rules[years][months][dates]); - } - else { - for (days in rules[years][months][dates]) { - if (this._isNumInList(wday, days)) { - if (L.isString(rules[years][months][dates][days])) { - outputRules.push(rules[years][months][dates][days]); - } - } - } - } - } - } - } - } - } - } - } - } - return outputRules; - }, - - /** - * A utility method which, given a specific date and a name of the rule, - * checks whether the date matches the given rule. - * - * @method _matchesRule - * @param {Date} oDate The date to check - * @param {String} rule The name of the rule that the date should match. - * @private - * @return {boolean} Returns true if the date matches the given rule. - * - */ - _matchesRule : function (oDate, rule) { - return (iOf(this._getRulesForDate(oDate), rule) >= 0); - }, - - /** - * A utility method which checks whether a given date matches the `enabledDatesRule` - * or does not match the `disabledDatesRule` and therefore whether it can be selected. - * @method _canBeSelected - * @param {Date} oDate The date to check - * @private - * @return {boolean} Returns true if the date can be selected; false otherwise. - */ - _canBeSelected : function (oDate) { - - var enabledDatesRule = this.get("enabledDatesRule"), - disabledDatesRule = this.get("disabledDatesRule"); - - if (enabledDatesRule) { - return this._matchesRule(oDate, enabledDatesRule); - } - else if (disabledDatesRule) { - return !this._matchesRule(oDate, disabledDatesRule); - } - else { - return true; - } - }, - - /** - * Selects a given date or array of dates. - * @method selectDates - * @param {Date|Array} dates A `Date` or `Array` of `Date`s. - */ - selectDates : function (dates) { - if (ydate.isValidDate(dates)) { - this._addDateToSelection(dates); - } - else if (L.isArray(dates)) { - this._addDatesToSelection(dates); - } - }, - - /** - * Deselects a given date or array of dates, or deselects - * all dates if no argument is specified. - * @method deselectDates - * @param {Date|Array} [dates] A `Date` or `Array` of `Date`s, or no - * argument if all dates should be deselected. - */ - deselectDates : function (dates) { - if (!dates) { - this._clearSelection(); - } - else if (ydate.isValidDate(dates)) { - this._removeDateFromSelection(dates); - } - else if (L.isArray(dates)) { - this._removeDatesFromSelection(dates); - } - }, - - /** - * A utility method that adds a given date to selection.. - * @method _addDateToSelection - * @param {Date} oDate The date to add to selection. - * @param {Number} [index] An optional parameter that is used - * to differentiate between individual date selections and multiple - * date selections. - * @private - */ - _addDateToSelection : function (oDate, index) { - - if (this._canBeSelected(oDate)) { - - var year = oDate.getFullYear(), - month = oDate.getMonth(), - day = oDate.getDate(); - - if (hasKey(this._selectedDates, year)) { - if (hasKey(this._selectedDates[year], month)) { - this._selectedDates[year][month][day] = oDate; - } - else { - this._selectedDates[year][month] = {}; - this._selectedDates[year][month][day] = oDate; - } - } - else { - this._selectedDates[year] = {}; - this._selectedDates[year][month] = {}; - this._selectedDates[year][month][day] = oDate; - } - - this._selectedDates = setVal(this._selectedDates, [year, month, day], oDate); - - if (!index) { - this._fireSelectionChange(); - } - } - }, - - /** - * A utility method that adds a given list of dates to selection. - * @method _addDatesToSelection - * @param {Array} datesArray The list of dates to add to selection. - * @private - */ - _addDatesToSelection : function (datesArray) { - each(datesArray, this._addDateToSelection, this); - this._fireSelectionChange(); - }, - - /** - * A utility method that adds a given range of dates to selection. - * @method _addDateRangeToSelection - * @param {Date} startDate The first date of the given range. - * @param {Date} endDate The last date of the given range. - * @private - */ - _addDateRangeToSelection : function (startDate, endDate) { - - var timezoneDifference = (endDate.getTimezoneOffset() - startDate.getTimezoneOffset())*60000, - startTime = startDate.getTime(), - endTime = endDate.getTime(); - - if (startTime > endTime) { - var tempTime = startTime; - startTime = endTime; - endTime = tempTime + timezoneDifference; - } - else { - endTime = endTime - timezoneDifference; - } - - - for (var time = startTime; time <= endTime; time += 86400000) { - var addedDate = new Date(time); - addedDate.setHours(12); - this._addDateToSelection(addedDate, time); - } - this._fireSelectionChange(); - }, - - /** - * A utility method that removes a given date from selection.. - * @method _removeDateFromSelection - * @param {Date} oDate The date to remove from selection. - * @param {Number} [index] An optional parameter that is used - * to differentiate between individual date selections and multiple - * date selections. - * @private - */ - _removeDateFromSelection : function (oDate, index) { - var year = oDate.getFullYear(), - month = oDate.getMonth(), - day = oDate.getDate(); - if (hasKey(this._selectedDates, year) && - hasKey(this._selectedDates[year], month) && - hasKey(this._selectedDates[year][month], day)) { - delete this._selectedDates[year][month][day]; - if (!index) { - this._fireSelectionChange(); - } - } - }, - - /** - * A utility method that removes a given list of dates from selection. - * @method _removeDatesFromSelection - * @param {Array} datesArray The list of dates to remove from selection. - * @private - */ - _removeDatesFromSelection : function (datesArray) { - each(datesArray, this._removeDateFromSelection, this); - this._fireSelectionChange(); - }, - - /** - * A utility method that removes a given range of dates from selection. - * @method _removeDateRangeFromSelection - * @param {Date} startDate The first date of the given range. - * @param {Date} endDate The last date of the given range. - * @private - */ - _removeDateRangeFromSelection : function (startDate, endDate) { - var startTime = startDate.getTime(), - endTime = endDate.getTime(); - - for (var time = startTime; time <= endTime; time += 86400000) { - this._removeDateFromSelection(new Date(time), time); - } - - this._fireSelectionChange(); - }, - - /** - * A utility method that removes all dates from selection. - * @method _clearSelection - * @param {boolean} noevent A Boolean specifying whether a selectionChange - * event should be fired. If true, the event is not fired. - * @private - */ - _clearSelection : function (noevent) { - this._selectedDates = {}; - this.get("contentBox").all("." + CAL_DAY_SELECTED).removeClass(CAL_DAY_SELECTED).setAttribute("aria-selected", false); - if (!noevent) { - this._fireSelectionChange(); - } - }, - - /** - * A utility method that fires a selectionChange event. - * @method _fireSelectionChange - * @private - */ - _fireSelectionChange : function () { - - /** - * Fired when the set of selected dates changes. Contains a payload with - * a `newSelection` property with an array of selected dates. - * - * @event selectionChange - */ - this.fire("selectionChange", {newSelection: this._getSelectedDatesList()}); - }, - - /** - * A utility method that restores cells modified by custom formatting. - * @method _restoreModifiedCells - * @private - */ - _restoreModifiedCells : function () { - var contentbox = this.get("contentBox"), - id; - for (id in this._storedDateCells) { - contentbox.one("#" + id).replace(this._storedDateCells[id]); - delete this._storedDateCells[id]; - } - }, - - /** - * A rendering assist method that renders all cells modified by the customRenderer - * rules, as well as the enabledDatesRule and disabledDatesRule. - * @method _renderCustomRules - * @private - */ - _renderCustomRules : function () { - - this.get("contentBox").all("." + CAL_DAY + ",." + CAL_NEXTMONTH_DAY).removeClass(SELECTION_DISABLED).setAttribute("aria-disabled", false); - - if (!isEmpty(this._rules)) { - var enRule = this.get("enabledDatesRule"), - disRule = this.get("disabledDatesRule"); - - for (var paneNum = 0; paneNum < this._paneNumber; paneNum++) { - var paneDate = ydate.addMonths(this.get("date"), paneNum); - var dateArray = ydate.listOfDatesInMonth(paneDate); - each(dateArray, function (date) { - var matchingRules = this._getRulesForDate(date); - if (matchingRules.length > 0) { - var dateNode = this._dateToNode(date); - if ((enRule && iOf(matchingRules, enRule) < 0) || (!enRule && disRule && iOf(matchingRules, disRule) >= 0)) { - dateNode.addClass(SELECTION_DISABLED).setAttribute("aria-disabled", true); - } - - if (L.isFunction(this._filterFunction)) { - this._storedDateCells[dateNode.get("id")] = dateNode.cloneNode(true); - this._filterFunction (date, dateNode, matchingRules); - } - } - else if (enRule) { - var dateNode = this._dateToNode(date); - dateNode.addClass(SELECTION_DISABLED).setAttribute("aria-disabled", true); - } - }, - this); - } - } - }, - - /** - * A rendering assist method that renders all cells that are currently selected. - * @method _renderSelectedDates - * @private - */ - _renderSelectedDates : function () { - this.get("contentBox").all("." + CAL_DAY_SELECTED).removeClass(CAL_DAY_SELECTED).setAttribute("aria-selected", false); - - for (var paneNum = 0; paneNum < this._paneNumber; paneNum++) { - var paneDate = ydate.addMonths(this.get("date"), paneNum); - var dateArray = this._getSelectedDatesInMonth(paneDate); - each(dateArray, function (date) { - this._dateToNode(date).addClass(CAL_DAY_SELECTED).setAttribute("aria-selected", true); - }, - this); - } - }, - - /** - * A utility method that converts a date to the node wrapping the calendar cell - * the date corresponds to.. - * @method _dateToNode - * @param {Date} oDate The date to convert to Node - * @protected - * @return {Node} The node wrapping the DOM element of the cell the date - * corresponds to. - */ - _dateToNode : function (oDate) { - var day = oDate.getDate(), - col = 0, - daymod = day%7, - paneNum = (12 + oDate.getMonth() - this.get("date").getMonth()) % 12, - paneId = this._calendarId + "_pane_" + paneNum, - cutoffCol = this._paneProperties[paneId].cutoffCol; - - switch (daymod) { - case (0): - if (cutoffCol >= 6) { - col = 12; - } - else { - col = 5; - } - break; - case (1): - col = 6; - break; - case (2): - if (cutoffCol > 0) { - col = 7; - } - else { - col = 0; - } - break; - case (3): - if (cutoffCol > 1) { - col = 8; - } - else { - col = 1; - } - break; - case (4): - if (cutoffCol > 2) { - col = 9; - } - else { - col = 2; - } - break; - case (5): - if (cutoffCol > 3) { - col = 10; - } - else { - col = 3; - } - break; - case (6): - if (cutoffCol > 4) { - col = 11; - } - else { - col = 4; - } - break; - } - return(this.get("contentBox").one("#" + this._calendarId + "_pane_" + paneNum + "_" + col + "_" + day)); - - }, - - /** - * A utility method that converts a node corresponding to the DOM element of - * the cell for a particular date to that date. - * @method _nodeToDate - * @param {Node} oNode The Node wrapping the DOM element of a particular date cell. - * @protected - * @return {Date} The date corresponding to the DOM element that the given node wraps. - */ - _nodeToDate : function (oNode) { - - var idParts = oNode.get("id").split("_").reverse(), - paneNum = parseInt(idParts[2], 10), - day = parseInt(idParts[0], 10); - - var shiftedDate = ydate.addMonths(this.get("date"), paneNum), - year = shiftedDate.getFullYear(), - month = shiftedDate.getMonth(); - - return new Date(year, month, day, 12, 0, 0, 0); - }, - - /** - * A placeholder method, called from bindUI, to bind the Calendar events. - * @method _bindCalendarEvents - * @protected - */ - _bindCalendarEvents : function () { - - }, - - /** - * A utility method that normalizes a given date by converting it to the 1st - * day of the month the date is in, with the time set to noon. - * @method _normalizeDate - * @param {Date} oDate The date to normalize - * @protected - * @return {Date} The normalized date, set to the first of the month, with time - * set to noon. - */ - _normalizeDate : function (date) { - if (date) { - return new Date(date.getFullYear(), date.getMonth(), 1, 12, 0, 0, 0); - } - else { - return null; - } - }, - - - /** - * A render assist utility method that computes the cutoff column for the calendar - * rendering mask. - * @method _getCutoffColumn - * @param {Date} date The date of the month grid to compute the cutoff column for. - * @param {Number} firstday The first day of the week (modified by internationalized calendars) - * @private - * @return {Number} The number of the cutoff column. - */ - _getCutoffColumn : function (date, firstday) { - - var distance = this._normalizeDate(date).getDay() - firstday; - var cutOffColumn = 6 - (distance + 7)%7; - return cutOffColumn; - - }, - - /** - * A render assist method that turns on the view of the previous month's dates - * in a given calendar pane. - * @method _turnPrevMonthOn - * @param {Node} pane The calendar pane that needs its previous month's dates view - * modified. - * @protected - */ - _turnPrevMonthOn : function (pane) { - - var pane_id = pane.get("id"), - pane_date = this._paneProperties[pane_id].paneDate, - daysInPrevMonth = ydate.daysInMonth(ydate.addMonths(pane_date, -1)); - - if (!this._paneProperties[pane_id].hasOwnProperty("daysInPrevMonth")) { - this._paneProperties[pane_id].daysInPrevMonth = 0; - } - - if (daysInPrevMonth != this._paneProperties[pane_id].daysInPrevMonth) { - - this._paneProperties[pane_id].daysInPrevMonth = daysInPrevMonth; - - for (var cell = 5; cell >= 0; cell--) - { - pane.one("#" + pane_id + "_" + cell + "_" + (cell-5)).set('text', daysInPrevMonth--); - } - - } - - - }, - - /** - * A render assist method that turns off the view of the previous month's dates - * in a given calendar pane. - * @method _turnPrevMonthOff - * @param {Node} pane The calendar pane that needs its previous month's dates view - * modified. - * @protected - */ - _turnPrevMonthOff : function (pane) { - var pane_id = pane.get("id"); - this._paneProperties[pane_id].daysInPrevMonth = 0; - - for (var cell = 5; cell >= 0; cell--) - { - pane.one("#" + pane_id + "_" + cell + "_" + (cell-5)).setContent(" "); - } - }, - - /** - * A render assist method that cleans up the last few cells in the month grid - * when the number of days in the month changes. - * @method _cleanUpNextMonthCells - * @param {Node} pane The calendar pane that needs the last date cells cleaned up. - * @private - */ - _cleanUpNextMonthCells : function (pane) { - var pane_id = pane.get("id"); - pane.one("#" + pane_id + "_6_29").removeClass(CAL_NEXTMONTH_DAY); - pane.one("#" + pane_id + "_7_30").removeClass(CAL_NEXTMONTH_DAY); - pane.one("#" + pane_id + "_8_31").removeClass(CAL_NEXTMONTH_DAY); - pane.one("#" + pane_id + "_0_30").removeClass(CAL_NEXTMONTH_DAY); - pane.one("#" + pane_id + "_1_31").removeClass(CAL_NEXTMONTH_DAY); - }, - - /** - * A render assist method that turns on the view of the next month's dates - * in a given calendar pane. - * @method _turnNextMonthOn - * @param {Node} pane The calendar pane that needs its next month's dates view - * modified. - * @protected - */ - _turnNextMonthOn : function (pane) { - var dayCounter = 1, - pane_id = pane.get("id"), - daysInMonth = this._paneProperties[pane_id].daysInMonth, - cutoffCol = this._paneProperties[pane_id].cutoffCol; - - for (var cell = daysInMonth - 22; cell < cutoffCol + 7; cell++) - { - pane.one("#" + pane_id + "_" + cell + "_" + (cell+23)).set("text", dayCounter++).addClass(CAL_NEXTMONTH_DAY); - } - - var startingCell = cutoffCol; - if (daysInMonth == 31 && (cutoffCol <= 1)) { - startingCell = 2; - } - else if (daysInMonth == 30 && cutoffCol === 0) { - startingCell = 1; - } - - for (var cell = startingCell ; cell < cutoffCol + 7; cell++) { - pane.one("#" + pane_id + "_" + cell + "_" + (cell+30)).set("text", dayCounter++).addClass(CAL_NEXTMONTH_DAY); - } - }, - - /** - * A render assist method that turns off the view of the next month's dates - * in a given calendar pane. - * @method _turnNextMonthOff - * @param {Node} pane The calendar pane that needs its next month's dates view - * modified. - * @protected - */ - _turnNextMonthOff : function (pane) { - var pane_id = pane.get("id"), - daysInMonth = this._paneProperties[pane_id].daysInMonth, - cutoffCol = this._paneProperties[pane_id].cutoffCol; - - for (var cell = daysInMonth - 22; cell <= 12; cell++) - { - pane.one("#" + pane_id + "_" + cell + "_" + (cell+23)).setContent(" ").addClass(CAL_NEXTMONTH_DAY); - } - - var startingCell = 0; - if (daysInMonth == 31 && (cutoffCol <= 1)) { - startingCell = 2; - } - else if (daysInMonth == 30 && cutoffCol === 0) { - startingCell = 1; - } - - for (var cell = startingCell ; cell <= 12; cell++) { - pane.one("#" + pane_id + "_" + cell + "_" + (cell+30)).setContent(" ").addClass(CAL_NEXTMONTH_DAY); - } - }, - - /** - * The handler for the change in the showNextMonth attribute. - * @method _afterShowNextMonthChange - * @private - */ - _afterShowNextMonthChange : function () { - - var contentBox = this.get('contentBox'), - lastPane = contentBox.one("#" + this._calendarId + "_pane_" + (this._paneNumber - 1)); - this._cleanUpNextMonthCells(lastPane); - - - if (this.get('showNextMonth')) { - this._turnNextMonthOn(lastPane); - } - - else { - this._turnNextMonthOff(lastPane); - } - - }, - - /** - * The handler for the change in the showPrevMonth attribute. - * @method _afterShowPrevMonthChange - * @private - */ - _afterShowPrevMonthChange : function () { - var contentBox = this.get('contentBox'), - firstPane = contentBox.one("#" + this._calendarId + "_pane_" + 0); - - if (this.get('showPrevMonth')) { - this._turnPrevMonthOn(firstPane); - } - - else { - this._turnPrevMonthOff(firstPane); - } - - }, - - /** - * The handler for the change in the headerRenderer attribute. - * @method _afterHeaderRendererChange - * @private - */ - _afterHeaderRendererChange : function () { - var headerCell = this.get("contentBox").one("." + CAL_HD_LABEL); - headerCell.setContent(this._updateCalendarHeader(this.get('date'))); - }, - - /** - * The handler for the change in the customRenderer attribute. - * @method _afterCustomRendererChange - * @private - */ - _afterCustomRendererChange : function () { - this._restoreModifiedCells(); - this._renderCustomRules(); - }, - - /** - * The handler for the change in the date attribute. Modifies the calendar - * view by shifting the calendar grid mask and running custom rendering and - * selection rendering as necessary. - * @method _afterDateChange - * @private - */ - _afterDateChange : function () { - - var contentBox = this.get('contentBox'), - headerCell = contentBox.one("." + CAL_HD).one("." + CAL_HD_LABEL), - calendarPanes = contentBox.all("." + CAL_GRID), - currentDate = this.get("date"), - counter = 0; - - contentBox.setStyle("visibility", "hidden"); - headerCell.setContent(this._updateCalendarHeader(currentDate)); - - this._restoreModifiedCells(); - - calendarPanes.each(function (curNode) { - this._rerenderCalendarPane(ydate.addMonths(currentDate, counter++), - curNode); - }, this); - - this._afterShowPrevMonthChange(); - this._afterShowNextMonthChange(); - - this._renderCustomRules(); - this._renderSelectedDates(); - - contentBox.setStyle("visibility", "visible"); - }, - - - /** - * A rendering assist method that initializes the HTML for a single - * calendar pane. - * @method _initCalendarPane - * @param {Date} baseDate The date corresponding to the month of the given - * calendar pane. - * @param {String} pane_id The id of the pane, to be used as a prefix for - * element ids in the given pane. - * @private - */ - _initCalendarPane : function (baseDate, pane_id) { - // Initialize final output HTML string - var calString = '', - // Get a list of short weekdays from the internationalization package, or else use default English ones. - weekdays = this.get('strings.very_short_weekdays') || ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], - fullweekdays = this.get('strings.weekdays') || ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - // Get the first day of the week from the internationalization package, or else use Sunday as default. - firstday = this.get('strings.first_weekday') || 0, - // Compute the cutoff column of the masked calendar table, based on the start date and the first day of week. - cutoffCol = this._getCutoffColumn(baseDate, firstday), - // Compute the number of days in the month based on starting date - daysInMonth = ydate.daysInMonth(baseDate), - // Initialize the array of individual row HTML strings - row_array = ['','','','','',''], - // Initialize the partial templates object - partials = {}; - - // Initialize the partial template for the weekday row cells. - partials["weekday_row"] = ''; - - // Populate the partial template for the weekday row cells with weekday names - for (var day = firstday; day <= firstday + 6; day++) { - partials["weekday_row"] += - substitute(CalendarBase.WEEKDAY_TEMPLATE, - {weekdayname: weekdays[day%7], - full_weekdayname: fullweekdays[day%7]}); - } - - // Populate the partial template for the weekday row container with the weekday row cells - partials["weekday_row_template"] = substitute(CalendarBase.WEEKDAY_ROW_TEMPLATE, partials); - - // Populate the array of individual row HTML strings - for (var row = 0; row <= 5; row++) { - - for (var column = 0; column <= 12; column++) { - - // Compute the value of the date that needs to populate the cell - var date = 7*row - 5 + column; - - // Compose the value of the unique id of the current calendar cell - var id_date = pane_id + "_" + column + "_" + date; - - // Set the calendar day class to one of three possible values - var calendar_day_class = CAL_DAY; - - if (date < 1) { - calendar_day_class = CAL_PREVMONTH_DAY; - } - else if (date > daysInMonth) { - calendar_day_class = CAL_NEXTMONTH_DAY; - } - - // Cut off dates that fall before the first and after the last date of the month - if (date < 1 || date > daysInMonth) { - date = " "; - } - - // Decide on whether a column in the masked table is visible or not based on the value of the cutoff column. - var column_visibility = (column >= cutoffCol && column < (cutoffCol + 7)) ? '' : CAL_COL_HIDDEN; - - // Substitute the values into the partial calendar day template and add it to the current row HTML string - row_array[row] += substitute (CalendarBase.CALDAY_TEMPLATE, - {day_content: date, - calendar_col_class: "calendar_col" + column, - calendar_col_visibility_class: column_visibility, - calendar_day_class: calendar_day_class, - calendar_day_id: id_date}); - } - } - - // Instantiate the partial calendar pane body template - partials["body_template"] = ''; - - // Populate the body template with the rows templates - each (row_array, function (v) { - partials["body_template"] += substitute(CalendarBase.CALDAY_ROW_TEMPLATE, - {calday_row: v}); - }); - - // Populate the calendar grid id - partials["calendar_pane_id"] = pane_id; - - // Populate the calendar pane tabindex - partials["calendar_pane_tabindex"] = this.get("tabIndex"); - partials["pane_arialabel"] = ydate.format(baseDate, {format:"%B %Y"}); - - - // Generate final output by substituting class names. - var output = substitute(substitute (CalendarBase.CALENDAR_GRID_TEMPLATE, partials), - CalendarBase.CALENDAR_STRINGS); - - // Store the initialized pane information - - this._paneProperties[pane_id] = {cutoffCol: cutoffCol, daysInMonth: daysInMonth, paneDate: baseDate}; - - return output; - }, - - /** - * A rendering assist method that rerenders a specified calendar pane, based - * on a new Date. - * @method _rerenderCalendarPane - * @param {Date} newDate The date corresponding to the month of the given - * calendar pane. - * @param {Node} pane The node corresponding to the calendar pane to be rerenders. - * @private - */ - _rerenderCalendarPane : function (newDate, pane) { - - // Get the first day of the week from the internationalization package, or else use Sunday as default. - var firstday = this.get('strings.first_weekday') || 0, - // Compute the cutoff column of the masked calendar table, based on the start date and the first day of week. - cutoffCol = this._getCutoffColumn(newDate, firstday), - // Compute the number of days in the month based on starting date - daysInMonth = ydate.daysInMonth(newDate), - // Get pane id for easier reference - paneId = pane.get("id"); - - // Hide the pane before making DOM changes to speed them up - pane.setStyle("visibility", "hidden"); - pane.setAttribute("aria-label", ydate.format(newDate, {format:"%B %Y"})); - - // Go through all columns, and flip their visibility setting based on whether they are within the unmasked range. - for (var column = 0; column <= 12; column++) { - var currentColumn = pane.all("." + "calendar_col" + column); - currentColumn.removeClass(CAL_COL_HIDDEN); - - if (column < cutoffCol || column >= (cutoffCol + 7)) { - currentColumn.addClass(CAL_COL_HIDDEN); - } - else { - // Clean up dates in visible columns to account for the correct number of days in a month - switch(column) - { - case 0: - var curCell = pane.one("#" + paneId + "_0_30"); - if (daysInMonth >= 30) { - curCell.set("text", "30"); - curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY); - } - else { - curCell.setContent(" "); - curCell.addClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY); - } - break; - case 1: - var curCell = pane.one("#" + paneId + "_1_31"); - if (daysInMonth >= 31) { - curCell.set("text", "31"); - curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY); - } - else { - curCell.setContent(" "); - curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY); - } - break; - case 6: - var curCell = pane.one("#" + paneId + "_6_29"); - if (daysInMonth >= 29) { - curCell.set("text", "29"); - curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY); - } - else { - curCell.setContent(" "); - curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY); - } - break; - case 7: - var curCell = pane.one("#" + paneId + "_7_30"); - if (daysInMonth >= 30) { - curCell.set("text", "30"); - curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY); - } - else { - curCell.setContent(" "); - curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY); - } - break; - case 8: - var curCell = pane.one("#" + paneId + "_8_31"); - if (daysInMonth >= 31) { - curCell.set("text", "31"); - curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY); - } - else { - curCell.setContent(" "); - curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY); - } - break; - } - } - } - // Update stored pane properties - this._paneProperties[paneId].cutoffCol = cutoffCol; - this._paneProperties[paneId].daysInMonth = daysInMonth; - this._paneProperties[paneId].paneDate = newDate; - - // Bring the pane visibility back after all DOM changes are done - pane.setStyle("visibility", "visible"); - - }, - - /** - * A rendering assist method that updates the calendar header based - * on a given date and potentially the provided headerRenderer. - * @method _updateCalendarHeader - * @param {Date} baseDate The date with which to update the calendar header. - * @private - */ - _updateCalendarHeader : function (baseDate) { - var headerString = "", - headerRenderer = this.get("headerRenderer"); - - if (Y.Lang.isString(headerRenderer)) { - headerString = ydate.format(baseDate, {format:headerRenderer}); - } - else if (headerRenderer instanceof Function) { - headerString = headerRenderer.call(this, baseDate); - } - - return headerString; - }, - - /** - * A rendering assist method that initializes the calendar header HTML - * based on a given date and potentially the provided headerRenderer. - * @method _updateCalendarHeader - * @param {Date} baseDate The date with which to initialize the calendar header. - * @private - */ - _initCalendarHeader : function (baseDate) { - return substitute(substitute(CalendarBase.HEADER_TEMPLATE, - {calheader: this._updateCalendarHeader(baseDate), - calendar_id: this._calendarId}), - CalendarBase.CALENDAR_STRINGS); - }, - - /** - * A rendering assist method that initializes the calendar HTML - * based on a given date. - * @method _initCalendarHTML - * @param {Date} baseDate The date with which to initialize the calendar. - * @private - */ - _initCalendarHTML : function (baseDate) { - // Instantiate the partials holder - var partials = {}, - // Counter for iterative template replacement. - counter = 0; - - // Generate the template for the header - partials["header_template"] = this._initCalendarHeader(baseDate); - partials["calendar_id"] = this._calendarId; - - partials["body_template"] = substitute(substitute (CalendarBase.CONTENT_TEMPLATE, partials), - CalendarBase.CALENDAR_STRINGS); - - // Instantiate the iterative template replacer function - function paneReplacer () { - var singlePane = this._initCalendarPane(ydate.addMonths(baseDate, counter), partials["calendar_id"]+"_pane_"+counter); - counter++; - return singlePane; - } - // Go through all occurrences of the calendar_grid_template token and replace it with an appropriate calendar grid. - var output = partials["body_template"].replace(/\{calendar_grid_template\}/g, Y.bind(paneReplacer, this)); - - // Update the paneNumber count - this._paneNumber = counter; - - return output; - } -}, { - - /** - * The CSS classnames for the calendar templates. - * @property CALENDAR_STRINGS - * @type Object - * @readOnly - * @protected - * @static - */ - CALENDAR_STRINGS: { - calendar_grid_class : CAL_GRID, - calendar_body_class : CAL_BODY, - calendar_hd_class : CAL_HD, - calendar_hd_label_class : CAL_HD_LABEL, - calendar_weekdayrow_class : CAL_WDAYROW, - calendar_weekday_class : CAL_WDAY, - calendar_row_class : CAL_ROW, - calendar_day_class : CAL_DAY, - calendar_dayanchor_class : CAL_ANCHOR, - calendar_pane_class : CAL_PANE, - calendar_right_grid_class : CAL_RIGHT_GRID, - calendar_left_grid_class : CAL_LEFT_GRID, - calendar_status_class : CAL_STATUS - }, - - /* - - ARIA_STATUS_TEMPLATE: '
', - - AriaStatus : null, - - updateStatus : function (statusString) { - - if (!CalendarBase.AriaStatus) { - CalendarBase.AriaStatus = create( - substitute (CalendarBase.ARIA_STATUS_TEMPLATE, - CalendarBase.CALENDAR_STRINGS)); - Y.one("body").append(CalendarBase.AriaStatus); - } - - CalendarBase.AriaStatus.set("text", statusString); - }, - - */ - - /** - * The main content template for calendar. - * @property CONTENT_TEMPLATE - * @type String - * @protected - * @static - */ - CONTENT_TEMPLATE: '
' + - '{header_template}' + - '
' + - '{calendar_grid_template}' + - '
' + - '
', - - /** - * A single pane template for calendar (same as default CONTENT_TEMPLATE) - * @property ONE_PANE_TEMPLATE - * @type String - * @protected - * @readOnly - * @static - */ - ONE_PANE_TEMPLATE: '
' + - '{header_template}' + - '
' + - '{calendar_grid_template}' + - '
' + - '
', - - /** - * A two pane template for calendar. - * @property TWO_PANE_TEMPLATE - * @type String - * @protected - * @readOnly - * @static - */ - TWO_PANE_TEMPLATE: '
' + - '{header_template}' + - '
'+ - '
' + - '{calendar_grid_template}' + - '
' + - '
' + - '
' + - '
' + - '{calendar_grid_template}' + - '
' + - '
' + - '
', - /** - * A three pane template for calendar. - * @property THREE_PANE_TEMPLATE - * @type String - * @protected - * @readOnly - * @static - */ - THREE_PANE_TEMPLATE: '
' + - '{header_template}' + - '
' + - '
' + - '{calendar_grid_template}' + - '
' + - '
' + - '
' + - '{calendar_grid_template}' + - '
' + - '
' + - '
' + - '{calendar_grid_template}' + - '
' + - '
' + - '
', - /** - * A template for the calendar grid. - * @property CALENDAR_GRID_TEMPLATE - * @type String - * @protected - * @static - */ - CALENDAR_GRID_TEMPLATE: '' + - '' + - '{weekday_row_template}' + - '' + - '' + - '{body_template}' + - '' + - '
', - - /** - * A template for the calendar header. - * @property HEADER_TEMPLATE - * @type String - * @protected - * @static - */ - HEADER_TEMPLATE: '
' + - '
' + - '{calheader}' + - '
' + - '
', - - /** - * A template for the row of weekday names. - * @property WEEKDAY_ROW_TEMPLATE - * @type String - * @protected - * @static - */ - WEEKDAY_ROW_TEMPLATE: '' + - '{weekday_row}' + - '', - - /** - * A template for a single row of calendar days. - * @property CALDAY_ROW_TEMPLATE - * @type String - * @protected - * @static - */ - CALDAY_ROW_TEMPLATE: '' + - '{calday_row}' + - '', - - /** - * A template for a single cell with a weekday name. - * @property CALDAY_ROW_TEMPLATE - * @type String - * @protected - * @static - */ - WEEKDAY_TEMPLATE: '{weekdayname}', - - /** - * A template for a single cell with a calendar day. - * @property CALDAY_TEMPLATE - * @type String - * @protected - * @static - */ - CALDAY_TEMPLATE: '' + - '{day_content}' + - '', - - /** - * The identity of the widget. - * - * @property NAME - * @type String - * @default 'calendarBase' - * @readOnly - * @protected - * @static - */ - NAME: 'calendarBase', - - /** - * Static property used to define the default attribute configuration of - * the Widget. - * - * @property ATTRS - * @type {Object} - * @protected - * @static - */ - ATTRS: { - tabIndex: { - value: 1 - }, - /** - * The date corresponding to the current calendar view. Always - * normalized to the first of the month that contains the date - * at assignment time. Used as the first date visible in the - * calendar. - * - * @attribute date - * @type Date - * @default The first of the month containing today's date, as - * set on the end user's system. - */ - date: { - value: new Date(), - setter: function (val) { - var newDate = this._normalizeDate(val); - if (ydate.areEqual(newDate, this.get('date'))) { - return this.get('date'); - } - else { - return newDate; - } - } - }, - - /** - * A setting specifying whether to shows days from the previous - * month in the visible month's grid, if there are empty preceding - * cells available. - * - * @attribute showPrevMonth - * @type boolean - * @default false - */ - showPrevMonth: { - value: false - }, - - /** - * A setting specifying whether to shows days from the next - * month in the visible month's grid, if there are empty - * cells available at the end. - * - * @attribute showNextMonth - * @type boolean - * @default false - */ - showNextMonth: { - value: false - }, - - /** - * Strings and properties derived from the internationalization packages - * for the calendar. - * - * @attribute strings - * @type Object - * @protected - */ - strings : { - valueFn: function() { return Y.Intl.get("calendar-base"); } - }, - - /** - * Custom header renderer for the calendar. - * - * @attribute headerRenderer - * @type String | Function - */ - headerRenderer: { - value: "%B %Y" - }, - - /** - * The name of the rule which all enabled dates should match. - * Either disabledDatesRule or enabledDatesRule should be specified, - * or neither, but not both. - * - * @attribute enabledDatesRule - * @type String - * @default null - */ - enabledDatesRule: { - value: null - }, - - /** - * The name of the rule which all disabled dates should match. - * Either disabledDatesRule or enabledDatesRule should be specified, - * or neither, but not both. - * - * @attribute disabledDatesRule - * @type String - * @default null - */ - disabledDatesRule: { - value: null - }, - - /** - * A read-only attribute providing a list of currently selected dates. - * - * @attribute selectedDates - * @readOnly - * @type Array - */ - selectedDates : { - readOnly: true, - getter: function (val) { - return (this._getSelectedDatesList()); - } - }, - - /** - * An object of the form {rules:Object, filterFunction:Function}, - * providing set of rules and a custom rendering function for - * customizing specific calendar cells. - * - * @attribute customRenderer - * @readOnly - * @type Object - * @default {} - */ - customRenderer : { - lazyAdd: false, - value: {}, - setter: function (val) { - this._rules = val.rules; - this._filterFunction = val.filterFunction; - } - } - } - -}); - - -}, '3.7.3', {"requires": ["widget", "substitute", "datatype-date", "datatype-date-math", "cssgrids"], "lang": ["de", "en", "fr", "ja", "nb-NO", "pt-BR", "ru", "zh-HANT-TW"], "skinnable": true}); diff --git a/lib/yuilib/3.7.3/build/calendar-base/calendar-base-min.js b/lib/yuilib/3.7.3/build/calendar-base/calendar-base-min.js deleted file mode 100644 index e1a0917bc81..00000000000 --- a/lib/yuilib/3.7.3/build/calendar-base/calendar-base-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("calendar-base",function(e,t){function P(e){P.superclass.constructor.apply(this,arguments)}var n=e.ClassNameManager.getClassName,r="calendar",i=n(r,"grid"),s=n(r,"left-grid"),o=n(r,"right-grid"),u=n(r,"body"),a=n(r,"header"),f=n(r,"header-label"),l=n(r,"weekdayrow"),c=n(r,"weekday"),h=n(r,"column-hidden"),p=n(r,"day-selected"),d=n(r,"selection-disabled"),v=n(r,"row"),m=n(r,"day"),g=n(r,"prevmonth-day"),y=n(r,"nextmonth-day"),b=n(r,"anchor"),w=n(r,"pane"),E=n(r,"status"),S=e.Lang,x=e.Node,T=x.create,N=e.substitute,C=e.each,k=e.Array.hasValue,L=e.Array.indexOf,A=e.Object.hasKey,O=e.Object.setValue,M=e.Object.owns,_=e.Object.isEmpty,D=e.DataType.Date;e.CalendarBase=e.extend(P,e.Widget,{_paneProperties:{},_paneNumber:1,_calendarId:null,_selectedDates:{},_rules:{},_filterFunction:null,_storedDateCells:{},initializer:function(){this._paneProperties={},this._calendarId=e.guid("calendar"),this._selectedDates={},_(this._rules)&&(this._rules={}),this._storedDateCells={}},renderUI:function(){var e=this.get("contentBox");e.appendChild(this._initCalendarHTML(this.get("date"))),this.get("showPrevMonth")&&this._afterShowPrevMonthChange(),this.get("showNextMonth")&&this._afterShowNextMonthChange(),this._renderCustomRules(),this._renderSelectedDates(),this.get("boundingBox").setAttribute("aria-labelledby",this._calendarId+"_header")},bindUI:function(){this.after("dateChange",this._afterDateChange),this.after("showPrevMonthChange",this._afterShowPrevMonthChange),this.after("showNextMonthChange",this._afterShowNextMonthChange),this.after("headerRendererChange",this._afterHeaderRendererChange),this.after("customRendererChange",this._afterCustomRendererChange),this.after("enabledDatesRuleChange",this._afterCustomRendererChange),this.after("disabledDatesRuleChange",this._afterCustomRendererChange),this.after("focusedChange",this._afterFocusedChange),this.after("selectionChange",this._renderSelectedDates),this._bindCalendarEvents()},_getSelectedDatesList:function(){var e=[];return C(this._selectedDates,function(t){C(t,function(t){C(t,function(t){e.push(t)},this)},this)},this),e},_getSelectedDatesInMonth:function(t){var n=t.getFullYear(),r=t.getMonth();return A(this._selectedDates,n)&&A(this._selectedDates[n],r)?e.Object.values(this._selectedDates[n][r]):[]},_isNumInList:function(e,t){if(t=="all")return!0;var n=t.split(","),r=n.length;while(r--){var i=n[r].split("-");if(i.length==2&&e>=parseInt(i[0],10)&&e<=parseInt(i[1],10))return!0;if(i.length==1&&parseInt(n[r],10)==e)return!0}return!1},_getRulesForDate:function(e){var t=e.getFullYear(),n=e.getMonth(),r=e.getDate(),i=e.getDay(),s=this._rules,o=[],u,a,f,l;for(u in s)if(this._isNumInList(t,u))if(S.isString(s[u]))o.push(s[u]);else for(a in s[u])if(this._isNumInList(n,a))if(S.isString(s[u][a]))o.push(s[u][a]);else for(f in s[u][a])if(this._isNumInList(r,f))if(S.isString(s[u][a][f]))o.push(s[u][a][f]);else for(l in s[u][a][f])this._isNumInList(i,l)&&S.isString(s[u][a][f][l])&&o.push(s[u][a][f][l]);return o},_matchesRule:function(e,t){return L(this._getRulesForDate(e),t)>=0},_canBeSelected:function(e){var t=this.get("enabledDatesRule"),n=this.get("disabledDatesRule");return t?this._matchesRule(e,t):n?!this._matchesRule(e,n):!0},selectDates:function(e){D.isValidDate(e)?this._addDateToSelection(e):S.isArray(e)&&this._addDatesToSelection(e)},deselectDates:function(e){e?D.isValidDate(e)?this._removeDateFromSelection(e):S.isArray(e)&&this._removeDatesFromSelection(e):this._clearSelection()},_addDateToSelection:function(e,t){if(this._canBeSelected(e)){var n=e.getFullYear(),r=e.getMonth(),i=e.getDate();A(this._selectedDates,n)?A(this._selectedDates[n],r)?this._selectedDates[n][r][i]=e:(this._selectedDates[n][r]={},this._selectedDates[n][r][i]=e):(this._selectedDates[n]={},this._selectedDates[n][r]={},this._selectedDates[n][r][i]=e),this._selectedDates=O(this._selectedDates,[n,r,i],e),t||this._fireSelectionChange()}},_addDatesToSelection:function(e){C(e,this._addDateToSelection,this),this._fireSelectionChange()},_addDateRangeToSelection:function(e,t){var n=(t.getTimezoneOffset()-e.getTimezoneOffset())*6e4,r=e.getTime(),i=t.getTime();if(r>i){var s=r;r=i,i=s+n}else i-=n;for(var o=r;o<=i;o+=864e5){var u=new Date(o);u.setHours(12),this._addDateToSelection(u,o)}this._fireSelectionChange()},_removeDateFromSelection:function(e,t){var n=e.getFullYear(),r=e.getMonth(),i=e.getDate();A(this._selectedDates,n)&&A(this._selectedDates[n],r)&&A(this._selectedDates[n][r],i)&&(delete this._selectedDates[n][r][i],t||this._fireSelectionChange())},_removeDatesFromSelection:function(e){C(e,this._removeDateFromSelection,this),this._fireSelectionChange()},_removeDateRangeFromSelection:function(e,t){var n=e.getTime(),r=t.getTime();for(var i=n;i<=r;i+=864e5)this._removeDateFromSelection(new Date(i),i);this._fireSelectionChange()},_clearSelection:function(e){this._selectedDates={},this.get("contentBox").all("."+p).removeClass(p).setAttribute("aria-selected",!1),e||this._fireSelectionChange()},_fireSelectionChange:function(){this.fire("selectionChange",{newSelection:this._getSelectedDatesList()})},_restoreModifiedCells:function(){var e=this.get("contentBox"),t;for(t in this._storedDateCells)e.one("#"+t).replace(this._storedDateCells[t]),delete this._storedDateCells[t]},_renderCustomRules:function(){this.get("contentBox").all("."+m+",."+y).removeClass(d).setAttribute("aria-disabled",!1);if(!_(this._rules)){var e=this.get("enabledDatesRule"),t=this.get("disabledDatesRule");for(var n=0;n0){var i=this._dateToNode(n);(e&&L(r,e)<0||!e&&t&&L(r,t)>=0)&&i.addClass(d).setAttribute("aria-disabled",!0),S.isFunction(this._filterFunction)&&(this._storedDateCells[i.get("id")]=i.cloneNode(!0),this._filterFunction(n,i,r))}else if(e){var i=this._dateToNode(n);i.addClass(d).setAttribute("aria-disabled",!0)}},this)}}},_renderSelectedDates:function(){this.get("contentBox").all("."+p).removeClass(p).setAttribute("aria-selected",!1);for(var e=0;e=6?n=12:n=5;break;case 1:n=6;break;case 2:o>0?n=7:n=0;break;case 3:o>1?n=8:n=1;break;case 4:o>2?n=9:n=2;break;case 5:o>3?n=10:n=3;break;case 6:o>4?n=11:n=4}return this.get("contentBox").one("#"+this._calendarId+"_pane_"+i+"_"+n+"_"+t)},_nodeToDate:function(e){var t=e.get("id").split("_").reverse(),n=parseInt(t[2],10),r=parseInt(t[0],10),i=D.addMonths(this.get("date"),n),s=i.getFullYear(),o=i.getMonth();return new Date(s,o,r,12,0,0,0)},_bindCalendarEvents:function(){},_normalizeDate:function(e){return e?new Date(e.getFullYear(),e.getMonth(),1,12,0,0,0):null},_getCutoffColumn:function(e,t){var n=this._normalizeDate(e).getDay()-t,r=6-(n+7)%7;return r},_turnPrevMonthOn:function(e){var t=e.get("id"),n=this._paneProperties[t].paneDate,r=D.daysInMonth(D.addMonths(n,-1));this._paneProperties[t].hasOwnProperty("daysInPrevMonth")||(this._paneProperties[t].daysInPrevMonth=0);if(r!=this._paneProperties[t].daysInPrevMonth){this._paneProperties[t].daysInPrevMonth=r;for(var i=5;i>=0;i--)e.one("#"+t+"_"+i+"_"+(i-5)).set("text",r--)}},_turnPrevMonthOff:function(e){var t=e.get("id");this._paneProperties[t].daysInPrevMonth=0;for(var n=5;n>=0;n--)e.one("#"+t+"_"+n+"_"+(n-5)).setContent(" ")},_cleanUpNextMonthCells:function(e){var t=e.get("id");e.one("#"+t+"_6_29").removeClass(y),e.one("#"+t+"_7_30").removeClass(y),e.one("#"+t+"_8_31").removeClass(y),e.one("#"+t+"_0_30").removeClass(y),e.one("#"+t+"_1_31").removeClass(y)},_turnNextMonthOn:function(e){var t=1,n=e.get("id"),r=this._paneProperties[n].daysInMonth,i=this._paneProperties[n].cutoffCol;for(var s=r-22;su&&(b=y);if(d<1||d>u)d=" ";var w=p>=o&&p=r+7)u.addClass(h);else switch(o){case 0:var a=t.one("#"+s+"_0_30");i>=30?(a.set("text","30"),a.removeClass(y).addClass(m)):(a.setContent(" "),a.addClass(y).addClass(m));break;case 1:var a=t.one("#"+s+"_1_31");i>=31?(a.set("text","31"),a.removeClass(y).addClass(m)):(a.setContent(" "),a.removeClass(m).addClass(y));break;case 6:var a=t.one("#"+s+"_6_29");i>=29?(a.set("text","29"),a.removeClass(y).addClass(m)):(a.setContent(" "),a.removeClass(m).addClass(y));break;case 7:var a=t.one("#"+s+"_7_30");i>=30?(a.set("text","30"),a.removeClass(y).addClass(m)):(a.setContent(" "),a.removeClass(m).addClass(y));break;case 8:var a=t.one("#"+s+"_8_31");i>=31?(a.set("text","31"),a.removeClass(y).addClass(m)):(a.setContent(" "),a.removeClass(m).addClass(y))}}this._paneProperties[s].cutoffCol=r,this._paneProperties[s].daysInMonth=i,this._paneProperties[s].paneDate=e,t.setStyle("visibility","visible")},_updateCalendarHeader:function(t){var n="",r=this.get("headerRenderer");return e.Lang.isString(r)?n=D.format(t,{format:r}):r instanceof Function&&(n=r.call(this,t)),n},_initCalendarHeader:function(e){return N(N(P.HEADER_TEMPLATE,{calheader:this._updateCalendarHeader(e),calendar_id:this._calendarId}),P.CALENDAR_STRINGS)},_initCalendarHTML:function(t){function i(){var e=this._initCalendarPane(D.addMonths(t,r),n.calendar_id+"_pane_"+r);return r++,e}var n={},r=0;n.header_template=this._initCalendarHeader(t),n.calendar_id=this._calendarId,n.body_template=N(N(P.CONTENT_TEMPLATE,n),P.CALENDAR_STRINGS);var s=n.body_template.replace(/\{calendar_grid_template\}/g,e.bind(i,this));return this._paneNumber=r,s}},{CALENDAR_STRINGS:{calendar_grid_class:i,calendar_body_class:u,calendar_hd_class:a,calendar_hd_label_class:f,calendar_weekdayrow_class:l,calendar_weekday_class:c,calendar_row_class:v,calendar_day_class:m,calendar_dayanchor_class:b,calendar_pane_class:w,calendar_right_grid_class:o,calendar_left_grid_class:s,calendar_status_class:E},CONTENT_TEMPLATE:'
{header_template}
{calendar_grid_template}
',ONE_PANE_TEMPLATE:'
{header_template}
{calendar_grid_template}
',TWO_PANE_TEMPLATE:'
{header_template}
{calendar_grid_template}
{calendar_grid_template}
',THREE_PANE_TEMPLATE:'
{header_template}
{calendar_grid_template}
{calendar_grid_template}
{calendar_grid_template}
',CALENDAR_GRID_TEMPLATE:'{weekday_row_template}{body_template}
',HEADER_TEMPLATE:'
{calheader}
',WEEKDAY_ROW_TEMPLATE:'{weekday_row}',CALDAY_ROW_TEMPLATE:'{calday_row}',WEEKDAY_TEMPLATE:'{weekdayname}',CALDAY_TEMPLATE:'{day_content}',NAME:"calendarBase",ATTRS:{tabIndex:{value:1},date:{value:new Date,setter:function(e){var t=this._normalizeDate(e);return D.areEqual(t,this.get("date"))?this.get("date"):t}},showPrevMonth:{value:!1},showNextMonth:{value:!1},strings:{valueFn:function(){return e.Intl.get("calendar-base")}},headerRenderer:{value:"%B %Y"},enabledDatesRule:{value:null},disabledDatesRule:{value:null},selectedDates:{readOnly:!0,getter:function(e){return this._getSelectedDatesList()}},customRenderer:{lazyAdd:!1,value:{},setter:function(e){this._rules=e.rules,this._filterFunction=e.filterFunction}}}})},"3.7.3",{requires:["widget","substitute","datatype-date","datatype-date-math","cssgrids"],lang:["de","en","fr","ja","nb-NO","pt-BR","ru","zh-HANT-TW"],skinnable:!0}); diff --git a/lib/yuilib/3.7.3/build/calendar-base/calendar-base.js b/lib/yuilib/3.7.3/build/calendar-base/calendar-base.js deleted file mode 100644 index 207f947a92b..00000000000 --- a/lib/yuilib/3.7.3/build/calendar-base/calendar-base.js +++ /dev/null @@ -1,1639 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add('calendar-base', function (Y, NAME) { - -/** - * The CalendarBase submodule is a basic UI calendar view that displays - * a range of dates in a two-dimensional month grid, with one or more - * months visible at a single time. CalendarBase supports custom date - * rendering, multiple calendar panes, and selection. - * @module calendar - * @submodule calendar-base - */ - -var getCN = Y.ClassNameManager.getClassName, - CALENDAR = 'calendar', - CAL_GRID = getCN(CALENDAR, 'grid'), - CAL_LEFT_GRID = getCN(CALENDAR, 'left-grid'), - CAL_RIGHT_GRID = getCN(CALENDAR, 'right-grid'), - CAL_BODY = getCN(CALENDAR, 'body'), - CAL_HD = getCN(CALENDAR, 'header'), - CAL_HD_LABEL = getCN(CALENDAR, 'header-label'), - CAL_WDAYROW = getCN(CALENDAR, 'weekdayrow'), - CAL_WDAY = getCN(CALENDAR, 'weekday'), - CAL_COL_HIDDEN = getCN(CALENDAR, 'column-hidden'), - CAL_DAY_SELECTED = getCN(CALENDAR, 'day-selected'), - SELECTION_DISABLED = getCN(CALENDAR, 'selection-disabled'), - CAL_ROW = getCN(CALENDAR, 'row'), - CAL_DAY = getCN(CALENDAR, 'day'), - CAL_PREVMONTH_DAY = getCN(CALENDAR, 'prevmonth-day'), - CAL_NEXTMONTH_DAY = getCN(CALENDAR, 'nextmonth-day'), - CAL_ANCHOR = getCN(CALENDAR, 'anchor'), - CAL_PANE = getCN(CALENDAR, 'pane'), - CAL_STATUS = getCN(CALENDAR, 'status'), - L = Y.Lang, - node = Y.Node, - create = node.create, - substitute = Y.substitute, - each = Y.each, - hasVal = Y.Array.hasValue, - iOf = Y.Array.indexOf, - hasKey = Y.Object.hasKey, - setVal = Y.Object.setValue, - owns = Y.Object.owns, - isEmpty = Y.Object.isEmpty, - ydate = Y.DataType.Date; - -/** Create a calendar view to represent a single or multiple - * month range of dates, rendered as a grid with date and - * weekday labels. - * - * @class CalendarBase - * @extends Widget - * @param config {Object} Configuration object (see Configuration - * attributes) - * @constructor - */ -function CalendarBase(config) { - CalendarBase.superclass.constructor.apply ( this, arguments ); -} - - - -Y.CalendarBase = Y.extend( CalendarBase, Y.Widget, { - - /** - * A storage for various properties of individual month - * panes. - * - * @property _paneProperties - * @type Object - * @private - */ - _paneProperties : {}, - - /** - * The number of month panes in the calendar, deduced - * from the CONTENT_TEMPLATE's number of {calendar_grid} - * tokens. - * - * @property _paneNumber - * @type Number - * @private - */ - _paneNumber : 1, - - /** - * The unique id used to prefix various elements of this - * calendar instance. - * - * @property _calendarId - * @type String - * @private - */ - _calendarId : null, - - /** - * The hash map of selected dates, populated with - * selectDates() and deselectDates() methods - * - * @property _selectedDates - * @type Object - * @private - */ - _selectedDates : {}, - - /** - * A private copy of the rules object, populated - * by setting the customRenderer attribute. - * - * @property _rules - * @type Object - * @private - */ - _rules : {}, - - /** - * A private copy of the filterFunction, populated - * by setting the customRenderer attribute. - * - * @property _filterFunction - * @type Function - * @private - */ - _filterFunction : null, - - /** - * Storage for calendar cells modified by any custom - * formatting. The storage is cleared, used to restore - * cells to the original state, and repopulated accordingly - * when the calendar is rerendered. - * - * @property _storedDateCells - * @type Object - * @private - */ - _storedDateCells : {}, - - /** - * Designated initializer - * Initializes instance-level properties of - * calendar. - * - * @method initializer - */ - initializer : function () { - this._paneProperties = {}; - this._calendarId = Y.guid('calendar'); - this._selectedDates = {}; - if (isEmpty(this._rules)) { - this._rules = {}; - } - this._storedDateCells = {}; - }, - - /** - * renderUI implementation - * - * Creates a visual representation of the calendar based on existing parameters. - * @method renderUI - */ - renderUI : function () { - - var contentBox = this.get('contentBox'); - contentBox.appendChild(this._initCalendarHTML(this.get('date'))); - if (this.get('showPrevMonth')) { - this._afterShowPrevMonthChange(); - } - if (this.get('showNextMonth')) { - this._afterShowNextMonthChange(); - } - this._renderCustomRules(); - this._renderSelectedDates(); - - this.get("boundingBox").setAttribute("aria-labelledby", this._calendarId + "_header"); - - }, - /** - * bindUI implementation - * - * Assigns listeners to relevant events that change the state - * of the calendar. - * @method bindUI - */ - bindUI : function () { - this.after('dateChange', this._afterDateChange); - this.after('showPrevMonthChange', this._afterShowPrevMonthChange); - this.after('showNextMonthChange', this._afterShowNextMonthChange); - this.after('headerRendererChange', this._afterHeaderRendererChange); - this.after('customRendererChange', this._afterCustomRendererChange); - this.after('enabledDatesRuleChange', this._afterCustomRendererChange); - this.after('disabledDatesRuleChange', this._afterCustomRendererChange); - this.after('focusedChange', this._afterFocusedChange); - this.after('selectionChange', this._renderSelectedDates); - this._bindCalendarEvents(); - }, - - - /** - * An internal utility method that generates a list of selected dates - * from the hash storage. - * - * @method _getSelectedDatesList - * @protected - * @return {Array} The array of `Date`s that are currently selected. - */ - _getSelectedDatesList : function () { - var output = []; - each (this._selectedDates, function (year) { - each (year, function (month) { - each (month, function (day) { - output.push (day); - }, this); - }, this); - }, this); - return output; - }, - - /** - * A utility method that returns all dates selected in a specific month. - * - * @method _getSelectedDatesInMonth - * @param {Date} oDate corresponding to the month for which selected dates - * are requested. - * @protected - * @return {Array} The array of `Date`s in a given month that are currently selected. - */ - _getSelectedDatesInMonth : function (oDate) { - var year = oDate.getFullYear(), - month = oDate.getMonth(); - - if (hasKey(this._selectedDates, year) && hasKey(this._selectedDates[year], month)) { - return Y.Object.values(this._selectedDates[year][month]); - } - else { - return []; - } - }, - - - /** - * An internal parsing method that receives a String list of numbers - * and number ranges (of the form "1,2,3,4-6,7-9,10,11" etc.) and checks - * whether a specific number is included in this list. Used for looking - * up dates in the customRenderer rule set. - * - * @method _isNumInList - * @param {Number} num The number to look for in a list. - * @param {String} strList The list of numbers of the form "1,2,3,4-6,7-8,9", etc. - * @private - * @return {boolean} Returns true if the given number is in the given list. - */ - _isNumInList : function (num, strList) { - if (strList == "all") { - return true; - } - else { - var elements = strList.split(","), - i = elements.length; - - while (i--) { - var range = elements[i].split("-"); - if (range.length == 2 && num >= parseInt(range[0], 10) && num <= parseInt(range[1], 10)) { - return true; - } - else if (range.length == 1 && (parseInt(elements[i], 10) == num)) { - return true; - } - } - return false; - } - }, - - /** - * Given a specific date, returns an array of rules (from the customRenderer rule set) - * that the given date matches. - * - * @method _getRulesForDate - * @param {Date} oDate The date for which an array of rules is needed - * @private - * @return {Array} Returns an array of `String`s, each containg the name of - * a rule that the given date matches. - */ - _getRulesForDate : function (oDate) { - var year = oDate.getFullYear(), - month = oDate.getMonth(), - date = oDate.getDate(), - wday = oDate.getDay(), - rules = this._rules, - outputRules = [], - years, months, dates, days; - - for (years in rules) { - if (this._isNumInList(year, years)) { - if (L.isString(rules[years])) { - outputRules.push(rules[years]); - } - else { - for (months in rules[years]) { - if (this._isNumInList(month, months)) { - if (L.isString(rules[years][months])) { - outputRules.push(rules[years][months]); - } - else { - for (dates in rules[years][months]) { - if (this._isNumInList(date, dates)) { - if (L.isString(rules[years][months][dates])) { - outputRules.push(rules[years][months][dates]); - } - else { - for (days in rules[years][months][dates]) { - if (this._isNumInList(wday, days)) { - if (L.isString(rules[years][months][dates][days])) { - outputRules.push(rules[years][months][dates][days]); - } - } - } - } - } - } - } - } - } - } - } - } - return outputRules; - }, - - /** - * A utility method which, given a specific date and a name of the rule, - * checks whether the date matches the given rule. - * - * @method _matchesRule - * @param {Date} oDate The date to check - * @param {String} rule The name of the rule that the date should match. - * @private - * @return {boolean} Returns true if the date matches the given rule. - * - */ - _matchesRule : function (oDate, rule) { - return (iOf(this._getRulesForDate(oDate), rule) >= 0); - }, - - /** - * A utility method which checks whether a given date matches the `enabledDatesRule` - * or does not match the `disabledDatesRule` and therefore whether it can be selected. - * @method _canBeSelected - * @param {Date} oDate The date to check - * @private - * @return {boolean} Returns true if the date can be selected; false otherwise. - */ - _canBeSelected : function (oDate) { - - var enabledDatesRule = this.get("enabledDatesRule"), - disabledDatesRule = this.get("disabledDatesRule"); - - if (enabledDatesRule) { - return this._matchesRule(oDate, enabledDatesRule); - } - else if (disabledDatesRule) { - return !this._matchesRule(oDate, disabledDatesRule); - } - else { - return true; - } - }, - - /** - * Selects a given date or array of dates. - * @method selectDates - * @param {Date|Array} dates A `Date` or `Array` of `Date`s. - */ - selectDates : function (dates) { - if (ydate.isValidDate(dates)) { - this._addDateToSelection(dates); - } - else if (L.isArray(dates)) { - this._addDatesToSelection(dates); - } - }, - - /** - * Deselects a given date or array of dates, or deselects - * all dates if no argument is specified. - * @method deselectDates - * @param {Date|Array} [dates] A `Date` or `Array` of `Date`s, or no - * argument if all dates should be deselected. - */ - deselectDates : function (dates) { - if (!dates) { - this._clearSelection(); - } - else if (ydate.isValidDate(dates)) { - this._removeDateFromSelection(dates); - } - else if (L.isArray(dates)) { - this._removeDatesFromSelection(dates); - } - }, - - /** - * A utility method that adds a given date to selection.. - * @method _addDateToSelection - * @param {Date} oDate The date to add to selection. - * @param {Number} [index] An optional parameter that is used - * to differentiate between individual date selections and multiple - * date selections. - * @private - */ - _addDateToSelection : function (oDate, index) { - - if (this._canBeSelected(oDate)) { - - var year = oDate.getFullYear(), - month = oDate.getMonth(), - day = oDate.getDate(); - - if (hasKey(this._selectedDates, year)) { - if (hasKey(this._selectedDates[year], month)) { - this._selectedDates[year][month][day] = oDate; - } - else { - this._selectedDates[year][month] = {}; - this._selectedDates[year][month][day] = oDate; - } - } - else { - this._selectedDates[year] = {}; - this._selectedDates[year][month] = {}; - this._selectedDates[year][month][day] = oDate; - } - - this._selectedDates = setVal(this._selectedDates, [year, month, day], oDate); - - if (!index) { - this._fireSelectionChange(); - } - } - }, - - /** - * A utility method that adds a given list of dates to selection. - * @method _addDatesToSelection - * @param {Array} datesArray The list of dates to add to selection. - * @private - */ - _addDatesToSelection : function (datesArray) { - each(datesArray, this._addDateToSelection, this); - this._fireSelectionChange(); - }, - - /** - * A utility method that adds a given range of dates to selection. - * @method _addDateRangeToSelection - * @param {Date} startDate The first date of the given range. - * @param {Date} endDate The last date of the given range. - * @private - */ - _addDateRangeToSelection : function (startDate, endDate) { - - var timezoneDifference = (endDate.getTimezoneOffset() - startDate.getTimezoneOffset())*60000, - startTime = startDate.getTime(), - endTime = endDate.getTime(); - - if (startTime > endTime) { - var tempTime = startTime; - startTime = endTime; - endTime = tempTime + timezoneDifference; - } - else { - endTime = endTime - timezoneDifference; - } - - - for (var time = startTime; time <= endTime; time += 86400000) { - var addedDate = new Date(time); - addedDate.setHours(12); - this._addDateToSelection(addedDate, time); - } - this._fireSelectionChange(); - }, - - /** - * A utility method that removes a given date from selection.. - * @method _removeDateFromSelection - * @param {Date} oDate The date to remove from selection. - * @param {Number} [index] An optional parameter that is used - * to differentiate between individual date selections and multiple - * date selections. - * @private - */ - _removeDateFromSelection : function (oDate, index) { - var year = oDate.getFullYear(), - month = oDate.getMonth(), - day = oDate.getDate(); - if (hasKey(this._selectedDates, year) && - hasKey(this._selectedDates[year], month) && - hasKey(this._selectedDates[year][month], day)) { - delete this._selectedDates[year][month][day]; - if (!index) { - this._fireSelectionChange(); - } - } - }, - - /** - * A utility method that removes a given list of dates from selection. - * @method _removeDatesFromSelection - * @param {Array} datesArray The list of dates to remove from selection. - * @private - */ - _removeDatesFromSelection : function (datesArray) { - each(datesArray, this._removeDateFromSelection, this); - this._fireSelectionChange(); - }, - - /** - * A utility method that removes a given range of dates from selection. - * @method _removeDateRangeFromSelection - * @param {Date} startDate The first date of the given range. - * @param {Date} endDate The last date of the given range. - * @private - */ - _removeDateRangeFromSelection : function (startDate, endDate) { - var startTime = startDate.getTime(), - endTime = endDate.getTime(); - - for (var time = startTime; time <= endTime; time += 86400000) { - this._removeDateFromSelection(new Date(time), time); - } - - this._fireSelectionChange(); - }, - - /** - * A utility method that removes all dates from selection. - * @method _clearSelection - * @param {boolean} noevent A Boolean specifying whether a selectionChange - * event should be fired. If true, the event is not fired. - * @private - */ - _clearSelection : function (noevent) { - this._selectedDates = {}; - this.get("contentBox").all("." + CAL_DAY_SELECTED).removeClass(CAL_DAY_SELECTED).setAttribute("aria-selected", false); - if (!noevent) { - this._fireSelectionChange(); - } - }, - - /** - * A utility method that fires a selectionChange event. - * @method _fireSelectionChange - * @private - */ - _fireSelectionChange : function () { - - /** - * Fired when the set of selected dates changes. Contains a payload with - * a `newSelection` property with an array of selected dates. - * - * @event selectionChange - */ - this.fire("selectionChange", {newSelection: this._getSelectedDatesList()}); - }, - - /** - * A utility method that restores cells modified by custom formatting. - * @method _restoreModifiedCells - * @private - */ - _restoreModifiedCells : function () { - var contentbox = this.get("contentBox"), - id; - for (id in this._storedDateCells) { - contentbox.one("#" + id).replace(this._storedDateCells[id]); - delete this._storedDateCells[id]; - } - }, - - /** - * A rendering assist method that renders all cells modified by the customRenderer - * rules, as well as the enabledDatesRule and disabledDatesRule. - * @method _renderCustomRules - * @private - */ - _renderCustomRules : function () { - - this.get("contentBox").all("." + CAL_DAY + ",." + CAL_NEXTMONTH_DAY).removeClass(SELECTION_DISABLED).setAttribute("aria-disabled", false); - - if (!isEmpty(this._rules)) { - var enRule = this.get("enabledDatesRule"), - disRule = this.get("disabledDatesRule"); - - for (var paneNum = 0; paneNum < this._paneNumber; paneNum++) { - var paneDate = ydate.addMonths(this.get("date"), paneNum); - var dateArray = ydate.listOfDatesInMonth(paneDate); - each(dateArray, function (date) { - var matchingRules = this._getRulesForDate(date); - if (matchingRules.length > 0) { - var dateNode = this._dateToNode(date); - if ((enRule && iOf(matchingRules, enRule) < 0) || (!enRule && disRule && iOf(matchingRules, disRule) >= 0)) { - dateNode.addClass(SELECTION_DISABLED).setAttribute("aria-disabled", true); - } - - if (L.isFunction(this._filterFunction)) { - this._storedDateCells[dateNode.get("id")] = dateNode.cloneNode(true); - this._filterFunction (date, dateNode, matchingRules); - } - } - else if (enRule) { - var dateNode = this._dateToNode(date); - dateNode.addClass(SELECTION_DISABLED).setAttribute("aria-disabled", true); - } - }, - this); - } - } - }, - - /** - * A rendering assist method that renders all cells that are currently selected. - * @method _renderSelectedDates - * @private - */ - _renderSelectedDates : function () { - this.get("contentBox").all("." + CAL_DAY_SELECTED).removeClass(CAL_DAY_SELECTED).setAttribute("aria-selected", false); - - for (var paneNum = 0; paneNum < this._paneNumber; paneNum++) { - var paneDate = ydate.addMonths(this.get("date"), paneNum); - var dateArray = this._getSelectedDatesInMonth(paneDate); - each(dateArray, function (date) { - this._dateToNode(date).addClass(CAL_DAY_SELECTED).setAttribute("aria-selected", true); - }, - this); - } - }, - - /** - * A utility method that converts a date to the node wrapping the calendar cell - * the date corresponds to.. - * @method _dateToNode - * @param {Date} oDate The date to convert to Node - * @protected - * @return {Node} The node wrapping the DOM element of the cell the date - * corresponds to. - */ - _dateToNode : function (oDate) { - var day = oDate.getDate(), - col = 0, - daymod = day%7, - paneNum = (12 + oDate.getMonth() - this.get("date").getMonth()) % 12, - paneId = this._calendarId + "_pane_" + paneNum, - cutoffCol = this._paneProperties[paneId].cutoffCol; - - switch (daymod) { - case (0): - if (cutoffCol >= 6) { - col = 12; - } - else { - col = 5; - } - break; - case (1): - col = 6; - break; - case (2): - if (cutoffCol > 0) { - col = 7; - } - else { - col = 0; - } - break; - case (3): - if (cutoffCol > 1) { - col = 8; - } - else { - col = 1; - } - break; - case (4): - if (cutoffCol > 2) { - col = 9; - } - else { - col = 2; - } - break; - case (5): - if (cutoffCol > 3) { - col = 10; - } - else { - col = 3; - } - break; - case (6): - if (cutoffCol > 4) { - col = 11; - } - else { - col = 4; - } - break; - } - return(this.get("contentBox").one("#" + this._calendarId + "_pane_" + paneNum + "_" + col + "_" + day)); - - }, - - /** - * A utility method that converts a node corresponding to the DOM element of - * the cell for a particular date to that date. - * @method _nodeToDate - * @param {Node} oNode The Node wrapping the DOM element of a particular date cell. - * @protected - * @return {Date} The date corresponding to the DOM element that the given node wraps. - */ - _nodeToDate : function (oNode) { - - var idParts = oNode.get("id").split("_").reverse(), - paneNum = parseInt(idParts[2], 10), - day = parseInt(idParts[0], 10); - - var shiftedDate = ydate.addMonths(this.get("date"), paneNum), - year = shiftedDate.getFullYear(), - month = shiftedDate.getMonth(); - - return new Date(year, month, day, 12, 0, 0, 0); - }, - - /** - * A placeholder method, called from bindUI, to bind the Calendar events. - * @method _bindCalendarEvents - * @protected - */ - _bindCalendarEvents : function () { - - }, - - /** - * A utility method that normalizes a given date by converting it to the 1st - * day of the month the date is in, with the time set to noon. - * @method _normalizeDate - * @param {Date} oDate The date to normalize - * @protected - * @return {Date} The normalized date, set to the first of the month, with time - * set to noon. - */ - _normalizeDate : function (date) { - if (date) { - return new Date(date.getFullYear(), date.getMonth(), 1, 12, 0, 0, 0); - } - else { - return null; - } - }, - - - /** - * A render assist utility method that computes the cutoff column for the calendar - * rendering mask. - * @method _getCutoffColumn - * @param {Date} date The date of the month grid to compute the cutoff column for. - * @param {Number} firstday The first day of the week (modified by internationalized calendars) - * @private - * @return {Number} The number of the cutoff column. - */ - _getCutoffColumn : function (date, firstday) { - - var distance = this._normalizeDate(date).getDay() - firstday; - var cutOffColumn = 6 - (distance + 7)%7; - return cutOffColumn; - - }, - - /** - * A render assist method that turns on the view of the previous month's dates - * in a given calendar pane. - * @method _turnPrevMonthOn - * @param {Node} pane The calendar pane that needs its previous month's dates view - * modified. - * @protected - */ - _turnPrevMonthOn : function (pane) { - - var pane_id = pane.get("id"), - pane_date = this._paneProperties[pane_id].paneDate, - daysInPrevMonth = ydate.daysInMonth(ydate.addMonths(pane_date, -1)); - - if (!this._paneProperties[pane_id].hasOwnProperty("daysInPrevMonth")) { - this._paneProperties[pane_id].daysInPrevMonth = 0; - } - - if (daysInPrevMonth != this._paneProperties[pane_id].daysInPrevMonth) { - - this._paneProperties[pane_id].daysInPrevMonth = daysInPrevMonth; - - for (var cell = 5; cell >= 0; cell--) - { - pane.one("#" + pane_id + "_" + cell + "_" + (cell-5)).set('text', daysInPrevMonth--); - } - - } - - - }, - - /** - * A render assist method that turns off the view of the previous month's dates - * in a given calendar pane. - * @method _turnPrevMonthOff - * @param {Node} pane The calendar pane that needs its previous month's dates view - * modified. - * @protected - */ - _turnPrevMonthOff : function (pane) { - var pane_id = pane.get("id"); - this._paneProperties[pane_id].daysInPrevMonth = 0; - - for (var cell = 5; cell >= 0; cell--) - { - pane.one("#" + pane_id + "_" + cell + "_" + (cell-5)).setContent(" "); - } - }, - - /** - * A render assist method that cleans up the last few cells in the month grid - * when the number of days in the month changes. - * @method _cleanUpNextMonthCells - * @param {Node} pane The calendar pane that needs the last date cells cleaned up. - * @private - */ - _cleanUpNextMonthCells : function (pane) { - var pane_id = pane.get("id"); - pane.one("#" + pane_id + "_6_29").removeClass(CAL_NEXTMONTH_DAY); - pane.one("#" + pane_id + "_7_30").removeClass(CAL_NEXTMONTH_DAY); - pane.one("#" + pane_id + "_8_31").removeClass(CAL_NEXTMONTH_DAY); - pane.one("#" + pane_id + "_0_30").removeClass(CAL_NEXTMONTH_DAY); - pane.one("#" + pane_id + "_1_31").removeClass(CAL_NEXTMONTH_DAY); - }, - - /** - * A render assist method that turns on the view of the next month's dates - * in a given calendar pane. - * @method _turnNextMonthOn - * @param {Node} pane The calendar pane that needs its next month's dates view - * modified. - * @protected - */ - _turnNextMonthOn : function (pane) { - var dayCounter = 1, - pane_id = pane.get("id"), - daysInMonth = this._paneProperties[pane_id].daysInMonth, - cutoffCol = this._paneProperties[pane_id].cutoffCol; - - for (var cell = daysInMonth - 22; cell < cutoffCol + 7; cell++) - { - pane.one("#" + pane_id + "_" + cell + "_" + (cell+23)).set("text", dayCounter++).addClass(CAL_NEXTMONTH_DAY); - } - - var startingCell = cutoffCol; - if (daysInMonth == 31 && (cutoffCol <= 1)) { - startingCell = 2; - } - else if (daysInMonth == 30 && cutoffCol === 0) { - startingCell = 1; - } - - for (var cell = startingCell ; cell < cutoffCol + 7; cell++) { - pane.one("#" + pane_id + "_" + cell + "_" + (cell+30)).set("text", dayCounter++).addClass(CAL_NEXTMONTH_DAY); - } - }, - - /** - * A render assist method that turns off the view of the next month's dates - * in a given calendar pane. - * @method _turnNextMonthOff - * @param {Node} pane The calendar pane that needs its next month's dates view - * modified. - * @protected - */ - _turnNextMonthOff : function (pane) { - var pane_id = pane.get("id"), - daysInMonth = this._paneProperties[pane_id].daysInMonth, - cutoffCol = this._paneProperties[pane_id].cutoffCol; - - for (var cell = daysInMonth - 22; cell <= 12; cell++) - { - pane.one("#" + pane_id + "_" + cell + "_" + (cell+23)).setContent(" ").addClass(CAL_NEXTMONTH_DAY); - } - - var startingCell = 0; - if (daysInMonth == 31 && (cutoffCol <= 1)) { - startingCell = 2; - } - else if (daysInMonth == 30 && cutoffCol === 0) { - startingCell = 1; - } - - for (var cell = startingCell ; cell <= 12; cell++) { - pane.one("#" + pane_id + "_" + cell + "_" + (cell+30)).setContent(" ").addClass(CAL_NEXTMONTH_DAY); - } - }, - - /** - * The handler for the change in the showNextMonth attribute. - * @method _afterShowNextMonthChange - * @private - */ - _afterShowNextMonthChange : function () { - - var contentBox = this.get('contentBox'), - lastPane = contentBox.one("#" + this._calendarId + "_pane_" + (this._paneNumber - 1)); - this._cleanUpNextMonthCells(lastPane); - - - if (this.get('showNextMonth')) { - this._turnNextMonthOn(lastPane); - } - - else { - this._turnNextMonthOff(lastPane); - } - - }, - - /** - * The handler for the change in the showPrevMonth attribute. - * @method _afterShowPrevMonthChange - * @private - */ - _afterShowPrevMonthChange : function () { - var contentBox = this.get('contentBox'), - firstPane = contentBox.one("#" + this._calendarId + "_pane_" + 0); - - if (this.get('showPrevMonth')) { - this._turnPrevMonthOn(firstPane); - } - - else { - this._turnPrevMonthOff(firstPane); - } - - }, - - /** - * The handler for the change in the headerRenderer attribute. - * @method _afterHeaderRendererChange - * @private - */ - _afterHeaderRendererChange : function () { - var headerCell = this.get("contentBox").one("." + CAL_HD_LABEL); - headerCell.setContent(this._updateCalendarHeader(this.get('date'))); - }, - - /** - * The handler for the change in the customRenderer attribute. - * @method _afterCustomRendererChange - * @private - */ - _afterCustomRendererChange : function () { - this._restoreModifiedCells(); - this._renderCustomRules(); - }, - - /** - * The handler for the change in the date attribute. Modifies the calendar - * view by shifting the calendar grid mask and running custom rendering and - * selection rendering as necessary. - * @method _afterDateChange - * @private - */ - _afterDateChange : function () { - - var contentBox = this.get('contentBox'), - headerCell = contentBox.one("." + CAL_HD).one("." + CAL_HD_LABEL), - calendarPanes = contentBox.all("." + CAL_GRID), - currentDate = this.get("date"), - counter = 0; - - contentBox.setStyle("visibility", "hidden"); - headerCell.setContent(this._updateCalendarHeader(currentDate)); - - this._restoreModifiedCells(); - - calendarPanes.each(function (curNode) { - this._rerenderCalendarPane(ydate.addMonths(currentDate, counter++), - curNode); - }, this); - - this._afterShowPrevMonthChange(); - this._afterShowNextMonthChange(); - - this._renderCustomRules(); - this._renderSelectedDates(); - - contentBox.setStyle("visibility", "visible"); - }, - - - /** - * A rendering assist method that initializes the HTML for a single - * calendar pane. - * @method _initCalendarPane - * @param {Date} baseDate The date corresponding to the month of the given - * calendar pane. - * @param {String} pane_id The id of the pane, to be used as a prefix for - * element ids in the given pane. - * @private - */ - _initCalendarPane : function (baseDate, pane_id) { - // Initialize final output HTML string - var calString = '', - // Get a list of short weekdays from the internationalization package, or else use default English ones. - weekdays = this.get('strings.very_short_weekdays') || ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], - fullweekdays = this.get('strings.weekdays') || ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - // Get the first day of the week from the internationalization package, or else use Sunday as default. - firstday = this.get('strings.first_weekday') || 0, - // Compute the cutoff column of the masked calendar table, based on the start date and the first day of week. - cutoffCol = this._getCutoffColumn(baseDate, firstday), - // Compute the number of days in the month based on starting date - daysInMonth = ydate.daysInMonth(baseDate), - // Initialize the array of individual row HTML strings - row_array = ['','','','','',''], - // Initialize the partial templates object - partials = {}; - - // Initialize the partial template for the weekday row cells. - partials["weekday_row"] = ''; - - // Populate the partial template for the weekday row cells with weekday names - for (var day = firstday; day <= firstday + 6; day++) { - partials["weekday_row"] += - substitute(CalendarBase.WEEKDAY_TEMPLATE, - {weekdayname: weekdays[day%7], - full_weekdayname: fullweekdays[day%7]}); - } - - // Populate the partial template for the weekday row container with the weekday row cells - partials["weekday_row_template"] = substitute(CalendarBase.WEEKDAY_ROW_TEMPLATE, partials); - - // Populate the array of individual row HTML strings - for (var row = 0; row <= 5; row++) { - - for (var column = 0; column <= 12; column++) { - - // Compute the value of the date that needs to populate the cell - var date = 7*row - 5 + column; - - // Compose the value of the unique id of the current calendar cell - var id_date = pane_id + "_" + column + "_" + date; - - // Set the calendar day class to one of three possible values - var calendar_day_class = CAL_DAY; - - if (date < 1) { - calendar_day_class = CAL_PREVMONTH_DAY; - } - else if (date > daysInMonth) { - calendar_day_class = CAL_NEXTMONTH_DAY; - } - - // Cut off dates that fall before the first and after the last date of the month - if (date < 1 || date > daysInMonth) { - date = " "; - } - - // Decide on whether a column in the masked table is visible or not based on the value of the cutoff column. - var column_visibility = (column >= cutoffCol && column < (cutoffCol + 7)) ? '' : CAL_COL_HIDDEN; - - // Substitute the values into the partial calendar day template and add it to the current row HTML string - row_array[row] += substitute (CalendarBase.CALDAY_TEMPLATE, - {day_content: date, - calendar_col_class: "calendar_col" + column, - calendar_col_visibility_class: column_visibility, - calendar_day_class: calendar_day_class, - calendar_day_id: id_date}); - } - } - - // Instantiate the partial calendar pane body template - partials["body_template"] = ''; - - // Populate the body template with the rows templates - each (row_array, function (v) { - partials["body_template"] += substitute(CalendarBase.CALDAY_ROW_TEMPLATE, - {calday_row: v}); - }); - - // Populate the calendar grid id - partials["calendar_pane_id"] = pane_id; - - // Populate the calendar pane tabindex - partials["calendar_pane_tabindex"] = this.get("tabIndex"); - partials["pane_arialabel"] = ydate.format(baseDate, {format:"%B %Y"}); - - - // Generate final output by substituting class names. - var output = substitute(substitute (CalendarBase.CALENDAR_GRID_TEMPLATE, partials), - CalendarBase.CALENDAR_STRINGS); - - // Store the initialized pane information - - this._paneProperties[pane_id] = {cutoffCol: cutoffCol, daysInMonth: daysInMonth, paneDate: baseDate}; - - return output; - }, - - /** - * A rendering assist method that rerenders a specified calendar pane, based - * on a new Date. - * @method _rerenderCalendarPane - * @param {Date} newDate The date corresponding to the month of the given - * calendar pane. - * @param {Node} pane The node corresponding to the calendar pane to be rerenders. - * @private - */ - _rerenderCalendarPane : function (newDate, pane) { - - // Get the first day of the week from the internationalization package, or else use Sunday as default. - var firstday = this.get('strings.first_weekday') || 0, - // Compute the cutoff column of the masked calendar table, based on the start date and the first day of week. - cutoffCol = this._getCutoffColumn(newDate, firstday), - // Compute the number of days in the month based on starting date - daysInMonth = ydate.daysInMonth(newDate), - // Get pane id for easier reference - paneId = pane.get("id"); - - // Hide the pane before making DOM changes to speed them up - pane.setStyle("visibility", "hidden"); - pane.setAttribute("aria-label", ydate.format(newDate, {format:"%B %Y"})); - - // Go through all columns, and flip their visibility setting based on whether they are within the unmasked range. - for (var column = 0; column <= 12; column++) { - var currentColumn = pane.all("." + "calendar_col" + column); - currentColumn.removeClass(CAL_COL_HIDDEN); - - if (column < cutoffCol || column >= (cutoffCol + 7)) { - currentColumn.addClass(CAL_COL_HIDDEN); - } - else { - // Clean up dates in visible columns to account for the correct number of days in a month - switch(column) - { - case 0: - var curCell = pane.one("#" + paneId + "_0_30"); - if (daysInMonth >= 30) { - curCell.set("text", "30"); - curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY); - } - else { - curCell.setContent(" "); - curCell.addClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY); - } - break; - case 1: - var curCell = pane.one("#" + paneId + "_1_31"); - if (daysInMonth >= 31) { - curCell.set("text", "31"); - curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY); - } - else { - curCell.setContent(" "); - curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY); - } - break; - case 6: - var curCell = pane.one("#" + paneId + "_6_29"); - if (daysInMonth >= 29) { - curCell.set("text", "29"); - curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY); - } - else { - curCell.setContent(" "); - curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY); - } - break; - case 7: - var curCell = pane.one("#" + paneId + "_7_30"); - if (daysInMonth >= 30) { - curCell.set("text", "30"); - curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY); - } - else { - curCell.setContent(" "); - curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY); - } - break; - case 8: - var curCell = pane.one("#" + paneId + "_8_31"); - if (daysInMonth >= 31) { - curCell.set("text", "31"); - curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY); - } - else { - curCell.setContent(" "); - curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY); - } - break; - } - } - } - // Update stored pane properties - this._paneProperties[paneId].cutoffCol = cutoffCol; - this._paneProperties[paneId].daysInMonth = daysInMonth; - this._paneProperties[paneId].paneDate = newDate; - - // Bring the pane visibility back after all DOM changes are done - pane.setStyle("visibility", "visible"); - - }, - - /** - * A rendering assist method that updates the calendar header based - * on a given date and potentially the provided headerRenderer. - * @method _updateCalendarHeader - * @param {Date} baseDate The date with which to update the calendar header. - * @private - */ - _updateCalendarHeader : function (baseDate) { - var headerString = "", - headerRenderer = this.get("headerRenderer"); - - if (Y.Lang.isString(headerRenderer)) { - headerString = ydate.format(baseDate, {format:headerRenderer}); - } - else if (headerRenderer instanceof Function) { - headerString = headerRenderer.call(this, baseDate); - } - - return headerString; - }, - - /** - * A rendering assist method that initializes the calendar header HTML - * based on a given date and potentially the provided headerRenderer. - * @method _updateCalendarHeader - * @param {Date} baseDate The date with which to initialize the calendar header. - * @private - */ - _initCalendarHeader : function (baseDate) { - return substitute(substitute(CalendarBase.HEADER_TEMPLATE, - {calheader: this._updateCalendarHeader(baseDate), - calendar_id: this._calendarId}), - CalendarBase.CALENDAR_STRINGS); - }, - - /** - * A rendering assist method that initializes the calendar HTML - * based on a given date. - * @method _initCalendarHTML - * @param {Date} baseDate The date with which to initialize the calendar. - * @private - */ - _initCalendarHTML : function (baseDate) { - // Instantiate the partials holder - var partials = {}, - // Counter for iterative template replacement. - counter = 0; - - // Generate the template for the header - partials["header_template"] = this._initCalendarHeader(baseDate); - partials["calendar_id"] = this._calendarId; - - partials["body_template"] = substitute(substitute (CalendarBase.CONTENT_TEMPLATE, partials), - CalendarBase.CALENDAR_STRINGS); - - // Instantiate the iterative template replacer function - function paneReplacer () { - var singlePane = this._initCalendarPane(ydate.addMonths(baseDate, counter), partials["calendar_id"]+"_pane_"+counter); - counter++; - return singlePane; - } - // Go through all occurrences of the calendar_grid_template token and replace it with an appropriate calendar grid. - var output = partials["body_template"].replace(/\{calendar_grid_template\}/g, Y.bind(paneReplacer, this)); - - // Update the paneNumber count - this._paneNumber = counter; - - return output; - } -}, { - - /** - * The CSS classnames for the calendar templates. - * @property CALENDAR_STRINGS - * @type Object - * @readOnly - * @protected - * @static - */ - CALENDAR_STRINGS: { - calendar_grid_class : CAL_GRID, - calendar_body_class : CAL_BODY, - calendar_hd_class : CAL_HD, - calendar_hd_label_class : CAL_HD_LABEL, - calendar_weekdayrow_class : CAL_WDAYROW, - calendar_weekday_class : CAL_WDAY, - calendar_row_class : CAL_ROW, - calendar_day_class : CAL_DAY, - calendar_dayanchor_class : CAL_ANCHOR, - calendar_pane_class : CAL_PANE, - calendar_right_grid_class : CAL_RIGHT_GRID, - calendar_left_grid_class : CAL_LEFT_GRID, - calendar_status_class : CAL_STATUS - }, - - /* - - ARIA_STATUS_TEMPLATE: '
', - - AriaStatus : null, - - updateStatus : function (statusString) { - - if (!CalendarBase.AriaStatus) { - CalendarBase.AriaStatus = create( - substitute (CalendarBase.ARIA_STATUS_TEMPLATE, - CalendarBase.CALENDAR_STRINGS)); - Y.one("body").append(CalendarBase.AriaStatus); - } - - CalendarBase.AriaStatus.set("text", statusString); - }, - - */ - - /** - * The main content template for calendar. - * @property CONTENT_TEMPLATE - * @type String - * @protected - * @static - */ - CONTENT_TEMPLATE: '
' + - '{header_template}' + - '
' + - '{calendar_grid_template}' + - '
' + - '
', - - /** - * A single pane template for calendar (same as default CONTENT_TEMPLATE) - * @property ONE_PANE_TEMPLATE - * @type String - * @protected - * @readOnly - * @static - */ - ONE_PANE_TEMPLATE: '
' + - '{header_template}' + - '
' + - '{calendar_grid_template}' + - '
' + - '
', - - /** - * A two pane template for calendar. - * @property TWO_PANE_TEMPLATE - * @type String - * @protected - * @readOnly - * @static - */ - TWO_PANE_TEMPLATE: '
' + - '{header_template}' + - '
'+ - '
' + - '{calendar_grid_template}' + - '
' + - '
' + - '
' + - '
' + - '{calendar_grid_template}' + - '
' + - '
' + - '
', - /** - * A three pane template for calendar. - * @property THREE_PANE_TEMPLATE - * @type String - * @protected - * @readOnly - * @static - */ - THREE_PANE_TEMPLATE: '
' + - '{header_template}' + - '
' + - '
' + - '{calendar_grid_template}' + - '
' + - '
' + - '
' + - '{calendar_grid_template}' + - '
' + - '
' + - '
' + - '{calendar_grid_template}' + - '
' + - '
' + - '
', - /** - * A template for the calendar grid. - * @property CALENDAR_GRID_TEMPLATE - * @type String - * @protected - * @static - */ - CALENDAR_GRID_TEMPLATE: '' + - '' + - '{weekday_row_template}' + - '' + - '' + - '{body_template}' + - '' + - '
', - - /** - * A template for the calendar header. - * @property HEADER_TEMPLATE - * @type String - * @protected - * @static - */ - HEADER_TEMPLATE: '
' + - '
' + - '{calheader}' + - '
' + - '
', - - /** - * A template for the row of weekday names. - * @property WEEKDAY_ROW_TEMPLATE - * @type String - * @protected - * @static - */ - WEEKDAY_ROW_TEMPLATE: '' + - '{weekday_row}' + - '', - - /** - * A template for a single row of calendar days. - * @property CALDAY_ROW_TEMPLATE - * @type String - * @protected - * @static - */ - CALDAY_ROW_TEMPLATE: '' + - '{calday_row}' + - '', - - /** - * A template for a single cell with a weekday name. - * @property CALDAY_ROW_TEMPLATE - * @type String - * @protected - * @static - */ - WEEKDAY_TEMPLATE: '{weekdayname}', - - /** - * A template for a single cell with a calendar day. - * @property CALDAY_TEMPLATE - * @type String - * @protected - * @static - */ - CALDAY_TEMPLATE: '' + - '{day_content}' + - '', - - /** - * The identity of the widget. - * - * @property NAME - * @type String - * @default 'calendarBase' - * @readOnly - * @protected - * @static - */ - NAME: 'calendarBase', - - /** - * Static property used to define the default attribute configuration of - * the Widget. - * - * @property ATTRS - * @type {Object} - * @protected - * @static - */ - ATTRS: { - tabIndex: { - value: 1 - }, - /** - * The date corresponding to the current calendar view. Always - * normalized to the first of the month that contains the date - * at assignment time. Used as the first date visible in the - * calendar. - * - * @attribute date - * @type Date - * @default The first of the month containing today's date, as - * set on the end user's system. - */ - date: { - value: new Date(), - setter: function (val) { - var newDate = this._normalizeDate(val); - if (ydate.areEqual(newDate, this.get('date'))) { - return this.get('date'); - } - else { - return newDate; - } - } - }, - - /** - * A setting specifying whether to shows days from the previous - * month in the visible month's grid, if there are empty preceding - * cells available. - * - * @attribute showPrevMonth - * @type boolean - * @default false - */ - showPrevMonth: { - value: false - }, - - /** - * A setting specifying whether to shows days from the next - * month in the visible month's grid, if there are empty - * cells available at the end. - * - * @attribute showNextMonth - * @type boolean - * @default false - */ - showNextMonth: { - value: false - }, - - /** - * Strings and properties derived from the internationalization packages - * for the calendar. - * - * @attribute strings - * @type Object - * @protected - */ - strings : { - valueFn: function() { return Y.Intl.get("calendar-base"); } - }, - - /** - * Custom header renderer for the calendar. - * - * @attribute headerRenderer - * @type String | Function - */ - headerRenderer: { - value: "%B %Y" - }, - - /** - * The name of the rule which all enabled dates should match. - * Either disabledDatesRule or enabledDatesRule should be specified, - * or neither, but not both. - * - * @attribute enabledDatesRule - * @type String - * @default null - */ - enabledDatesRule: { - value: null - }, - - /** - * The name of the rule which all disabled dates should match. - * Either disabledDatesRule or enabledDatesRule should be specified, - * or neither, but not both. - * - * @attribute disabledDatesRule - * @type String - * @default null - */ - disabledDatesRule: { - value: null - }, - - /** - * A read-only attribute providing a list of currently selected dates. - * - * @attribute selectedDates - * @readOnly - * @type Array - */ - selectedDates : { - readOnly: true, - getter: function (val) { - return (this._getSelectedDatesList()); - } - }, - - /** - * An object of the form {rules:Object, filterFunction:Function}, - * providing set of rules and a custom rendering function for - * customizing specific calendar cells. - * - * @attribute customRenderer - * @readOnly - * @type Object - * @default {} - */ - customRenderer : { - lazyAdd: false, - value: {}, - setter: function (val) { - this._rules = val.rules; - this._filterFunction = val.filterFunction; - } - } - } - -}); - - -}, '3.7.3', {"requires": ["widget", "substitute", "datatype-date", "datatype-date-math", "cssgrids"], "lang": ["de", "en", "fr", "ja", "nb-NO", "pt-BR", "ru", "zh-HANT-TW"], "skinnable": true}); diff --git a/lib/yuilib/3.7.3/build/calendar/calendar-coverage.js b/lib/yuilib/3.7.3/build/calendar/calendar-coverage.js deleted file mode 100644 index 6bfa091b67b..00000000000 --- a/lib/yuilib/3.7.3/build/calendar/calendar-coverage.js +++ /dev/null @@ -1,759 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -if (typeof _yuitest_coverage == "undefined"){ - _yuitest_coverage = {}; - _yuitest_coverline = function(src, line){ - var coverage = _yuitest_coverage[src]; - if (!coverage.lines[line]){ - coverage.calledLines++; - } - coverage.lines[line]++; - }; - _yuitest_coverfunc = function(src, name, line){ - var coverage = _yuitest_coverage[src], - funcId = name + ":" + line; - if (!coverage.functions[funcId]){ - coverage.calledFunctions++; - } - coverage.functions[funcId]++; - }; -} -_yuitest_coverage["build/calendar/calendar.js"] = { - lines: {}, - functions: {}, - coveredLines: 0, - calledLines: 0, - coveredFunctions: 0, - calledFunctions: 0, - path: "build/calendar/calendar.js", - code: [] -}; -_yuitest_coverage["build/calendar/calendar.js"].code=["YUI.add('calendar', function (Y, NAME) {","","/**"," * The Calendar component is a UI widget that allows users"," * to view dates in a two-dimensional month grid, as well as"," * to select one or more dates, or ranges of dates. Calendar"," * is generated dynamically and relies on the developer to"," * provide for a progressive enhancement alternative."," *"," *"," * @module calendar"," */","","var getCN = Y.ClassNameManager.getClassName,"," CALENDAR = 'calendar',"," KEY_DOWN = 40,"," KEY_UP = 38,"," KEY_LEFT = 37,"," KEY_RIGHT = 39,"," KEY_ENTER = 13,"," KEY_SPACE = 32,"," CAL_HD = getCN(CALENDAR, 'header'),"," CAL_DAY_SELECTED = getCN(CALENDAR, 'day-selected'),"," CAL_DAY_HILITED = getCN(CALENDAR, 'day-highlighted'),"," CAL_DAY = getCN(CALENDAR, 'day'),"," CAL_PREVMONTH_DAY = getCN(CALENDAR, 'prevmonth-day'),"," CAL_NEXTMONTH_DAY = getCN(CALENDAR, 'nextmonth-day'),"," CAL_GRID = getCN(CALENDAR, 'grid'),"," ydate = Y.DataType.Date,"," delegate = Y.delegate,"," CAL_PANE = getCN(CALENDAR, 'pane'),"," os = Y.UA.os;","","/** Create a calendar view to represent a single or multiple"," * month range of dates, rendered as a grid with date and"," * weekday labels."," * "," * @class Calendar"," * @extends CalendarBase"," * @param config {Object} Configuration object (see Configuration attributes)"," * @constructor"," */","function Calendar(config) {"," Calendar.superclass.constructor.apply ( this, arguments );","}","","Y.Calendar = Y.extend(Calendar, Y.CalendarBase, {",""," _keyEvents: [],",""," _highlightedDateNode: null,",""," /**"," * A property tracking the last selected date on the calendar, for the"," * purposes of multiple selection."," *"," * @property _lastSelectedDate"," * @type Date"," * @default null"," * @private"," */ "," _lastSelectedDate: null,",""," /**"," * Designated initializer. Activates the navigation plugin for the calendar."," *"," * @method initializer"," */ "," initializer : function () {"," this.plug(Y.Plugin.CalendarNavigator);","",""," this._keyEvents = [];"," this._highlightedDateNode = null;"," this._lastSelectedDate = null;"," },",""," /**"," * Overrides the _bindCalendarEvents placeholder in CalendarBase"," * and binds calendar events during bindUI stage."," * @method _bindCalendarEvents"," * @protected"," */ "," _bindCalendarEvents : function () {"," var contentBox = this.get('contentBox'),"," pane = contentBox.one(\".\" + CAL_PANE);"," pane.on(\"selectstart\", this._preventSelectionStart);"," pane.delegate(\"click\", this._clickCalendar, \".\" + CAL_DAY + \", .\" + CAL_PREVMONTH_DAY + \", .\" + CAL_NEXTMONTH_DAY, this);"," pane.delegate(\"keydown\", this._keydownCalendar, \".\" + CAL_GRID, this);"," pane.delegate(\"focus\", this._focusCalendarGrid, \".\" + CAL_GRID, this);"," pane.delegate(\"focus\", this._focusCalendarCell, \".\" + CAL_DAY, this);"," pane.delegate(\"blur\", this._blurCalendarGrid, \".\" + CAL_GRID + \",.\" + CAL_DAY, this);"," },",""," /**"," * Prevents text selection if it is started within the calendar pane"," * @method _preventSelectionStart"," * @param event {Event} The selectstart event"," * @protected"," */ "," _preventSelectionStart : function (event) {"," event.preventDefault();"," },",""," /**"," * Highlights a specific date node with keyboard highlight class"," * @method _highlightDateNode"," * @param oDate {Date} Date corresponding the node to be highlighted"," * @protected"," */ "," _highlightDateNode : function (oDate) {"," this._unhighlightCurrentDateNode();"," var newNode = this._dateToNode(oDate);"," newNode.focus();"," newNode.addClass(CAL_DAY_HILITED);"," },",""," /**"," * Unhighlights a specific date node currently highlighted with keyboard highlight class"," * @method _unhighlightCurrentDateNode"," * @protected"," */ "," _unhighlightCurrentDateNode : function () {"," var allHilitedNodes = this.get(\"contentBox\").all(\".\" + CAL_DAY_HILITED);"," if (allHilitedNodes) {"," allHilitedNodes.removeClass(CAL_DAY_HILITED);"," }"," },",""," /**"," * Returns the grid number for a specific calendar grid (for multi-grid templates)"," * @method _getGridNumber"," * @param gridNode {Node} Node corresponding to a specific grid"," * @protected"," */ "," _getGridNumber : function (gridNode) {"," var idParts = gridNode.get(\"id\").split(\"_\").reverse();"," return parseInt(idParts[0], 10);"," },",""," /**"," * Handler for loss of focus of calendar grid"," * @method _blurCalendarGrid"," * @protected"," */ "," _blurCalendarGrid : function (ev) {"," this._unhighlightCurrentDateNode();"," },","",""," /**"," * Handler for gain of focus of calendar cell"," * @method _focusCalendarCell"," * @protected"," */ "," _focusCalendarCell : function (ev) {"," this._highlightedDateNode = ev.target;"," ev.stopPropagation();"," },",""," /**"," * Handler for gain of focus of calendar grid"," * @method _focusCalendarGrid"," * @protected"," */ "," _focusCalendarGrid : function (ev) { "," this._unhighlightCurrentDateNode();"," this._highlightedDateNode = null;"," },",""," /**"," * Handler for keyboard press on a calendar grid"," * @method _keydownCalendar"," * @protected"," */ "," _keydownCalendar : function (ev) {"," var gridNum = this._getGridNumber(ev.target),"," curDate = !this._highlightedDateNode ? null : this._nodeToDate(this._highlightedDateNode),"," keyCode = ev.keyCode,"," dayNum = 0,"," dir = '';",""," switch(keyCode) {"," case KEY_DOWN: "," dayNum = 7;"," dir = 's';"," break;"," case KEY_UP: "," dayNum = -7;"," dir = 'n';"," break;"," case KEY_LEFT: "," dayNum = -1;"," dir = 'w';"," break;"," case KEY_RIGHT:"," dayNum = 1;"," dir = 'e';"," break;"," case KEY_SPACE: case KEY_ENTER:"," ev.preventDefault();"," if (this._highlightedDateNode) {"," var selMode = this.get(\"selectionMode\");"," if (selMode === \"single\" && !this._highlightedDateNode.hasClass(CAL_DAY_SELECTED)) {"," this._clearSelection(true);"," this._addDateToSelection(curDate);"," }"," else if (selMode === \"multiple\" || selMode === \"multiple-sticky\") {"," if (this._highlightedDateNode.hasClass(CAL_DAY_SELECTED)) {"," this._removeDateFromSelection(curDate);"," }"," else {"," this._addDateToSelection(curDate);"," }"," }"," }"," break;"," }"," ",""," if (keyCode == KEY_DOWN || keyCode == KEY_UP || keyCode == KEY_LEFT || keyCode == KEY_RIGHT) {",""," if (!curDate) {"," curDate = ydate.addMonths(this.get(\"date\"), gridNum);"," dayNum = 0;"," }"," ev.preventDefault();"," var newDate = ydate.addDays(curDate, dayNum),"," startDate = this.get(\"date\"),"," endDate = ydate.addMonths(this.get(\"date\"), this._paneNumber - 1),"," lastPaneDate = new Date(endDate);"," endDate.setDate(ydate.daysInMonth(endDate));"," "," if (ydate.isInRange(newDate, startDate, endDate)) {","/*"," var paneShift = (newDate.getMonth() - curDate.getMonth()) % 10;","",""," if (paneShift != 0) {"," var newGridNum = gridNum + paneShift,"," contentBox = this.get('contentBox'),"," newPane = contentBox.one(\"#\" + this._calendarId + \"_pane_\" + newGridNum);"," newPane.focus();"," }","*/"," this._highlightDateNode(newDate);"," }"," else if (ydate.isGreater(startDate, newDate)) {"," if (!ydate.isGreaterOrEqual(this.get(\"minimumDate\"), startDate)) {"," this.set(\"date\", ydate.addMonths(startDate, -1));"," this._highlightDateNode(newDate);"," }"," }"," else if (ydate.isGreater(newDate, endDate)) {"," if (!ydate.isGreaterOrEqual(lastPaneDate, this.get(\"maximumDate\"))) {"," this.set(\"date\", ydate.addMonths(startDate, 1));"," this._highlightDateNode(newDate);"," }"," }",""," }"," },",""," /**"," * Handles the calendar clicks based on selection mode."," * @method _clickCalendar"," * @param {Event} ev A click event"," * @private"," */ "," _clickCalendar : function (ev) {"," var clickedCell = ev.currentTarget,"," clickedCellIsDay = clickedCell.hasClass(CAL_DAY) && "," !clickedCell.hasClass(CAL_PREVMONTH_DAY) && "," !clickedCell.hasClass(CAL_NEXTMONTH_DAY),"," clickedCellIsSelected = clickedCell.hasClass(CAL_DAY_SELECTED);"," switch (this.get(\"selectionMode\")) {"," case(\"single\"):"," if (clickedCellIsDay) {"," if (!clickedCellIsSelected) {"," this._clearSelection(true); "," this._addDateToSelection(this._nodeToDate(clickedCell));"," }"," }"," break;"," case(\"multiple-sticky\"):"," if (clickedCellIsDay) {"," if (clickedCellIsSelected) {"," this._removeDateFromSelection(this._nodeToDate(clickedCell));"," }"," else {"," this._addDateToSelection(this._nodeToDate(clickedCell));"," }"," }"," break;"," case(\"multiple\"):"," if (clickedCellIsDay) {"," if (!ev.metaKey && !ev.ctrlKey && !ev.shiftKey) {"," this._clearSelection(true);"," this._lastSelectedDate = this._nodeToDate(clickedCell);"," this._addDateToSelection(this._lastSelectedDate);"," }"," else if (((os == 'macintosh' && ev.metaKey) || (os != 'macintosh' && ev.ctrlKey)) && !ev.shiftKey) {"," if (clickedCellIsSelected) {"," this._removeDateFromSelection(this._nodeToDate(clickedCell));"," this._lastSelectedDate = null;"," }"," else {"," this._lastSelectedDate = this._nodeToDate(clickedCell);"," this._addDateToSelection(this._lastSelectedDate);"," }"," }"," else if (((os == 'macintosh' && ev.metaKey) || (os != 'macintosh' && ev.ctrlKey)) && ev.shiftKey) {"," if (this._lastSelectedDate) {"," var selectedDate = this._nodeToDate(clickedCell);"," this._addDateRangeToSelection(selectedDate, this._lastSelectedDate);"," this._lastSelectedDate = selectedDate;"," }"," else {"," this._lastSelectedDate = this._nodeToDate(clickedCell);"," this._addDateToSelection(this._lastSelectedDate);"," }"," "," }"," else if (ev.shiftKey) {"," if (this._lastSelectedDate) {"," var selectedDate = this._nodeToDate(clickedCell);"," this._clearSelection(true);"," this._addDateRangeToSelection(selectedDate, this._lastSelectedDate);"," this._lastSelectedDate = selectedDate;"," }"," else {"," this._clearSelection(true);"," this._lastSelectedDate = this._nodeToDate(clickedCell);"," this._addDateToSelection(this._lastSelectedDate);"," }"," }"," }"," break;"," }",""," if (clickedCellIsDay) {"," /**"," * Fired when a specific date cell in the calendar is clicked. The event carries a "," * payload which includes a `cell` property corresponding to the node of the actual"," * date cell, and a `date` property, with the `Date` that was clicked."," *"," * @event dateClick"," */"," this.fire(\"dateClick\", {cell: clickedCell, date: this._nodeToDate(clickedCell)});"," }"," else if (clickedCell.hasClass(CAL_PREVMONTH_DAY)) {"," /**"," * Fired when any of the previous month's days displayed before the calendar grid"," * are clicked."," *"," * @event prevMonthClick"," */"," this.fire(\"prevMonthClick\");"," }"," else if (clickedCell.hasClass(CAL_NEXTMONTH_DAY)) {"," /**"," * Fired when any of the next month's days displayed after the calendar grid"," * are clicked."," *"," * @event nextMonthClick"," */"," this.fire(\"nextMonthClick\");"," }"," },",""," /**"," * Subtracts one month from the current calendar view."," * @method subtractMonth"," */ "," subtractMonth : function (e) {"," this.set(\"date\", ydate.addMonths(this.get(\"date\"), -1));"," if (e) {"," e.halt();"," }"," },",""," /**"," * Subtracts one year from the current calendar view."," * @method subtractYear"," */ "," subtractYear : function (e) {"," this.set(\"date\", ydate.addYears(this.get(\"date\"), -1));"," if (e) {"," e.halt();"," }"," },",""," /**"," * Adds one month to the current calendar view."," * @method addMonth"," */ "," addMonth : function (e) { "," this.set(\"date\", ydate.addMonths(this.get(\"date\"), 1));"," if (e) {"," e.halt();"," }"," },",""," /**"," * Adds one year to the current calendar view."," * @method addYear"," */ "," addYear : function (e) {"," this.set(\"date\", ydate.addYears(this.get(\"date\"), 1));"," if (e) {"," e.halt();"," }"," }","},","","{"," /**"," * The identity of the widget."," *"," * @property NAME"," * @type String"," * @default 'calendar'"," * @readOnly"," * @protected"," * @static"," */ "," NAME: \"calendar\",",""," /**"," * Static property used to define the default attribute configuration of"," * the Widget."," *"," * @property ATTRS"," * @type {Object}"," * @protected"," * @static"," */ "," ATTRS: {",""," /**"," * A setting specifying the type of selection the calendar allows."," * Possible values include:"," *
    "," *
  • `single` - One date at a time
  • "," *
  • `multiple-sticky` - Multiple dates, selected one at a time (the dates \"stick\"). This option"," * is appropriate for mobile devices, where function keys from the keyboard are not available.
  • "," *
  • `multiple` - Multiple dates, selected with Ctrl/Meta keys for additional single"," * dates, and Shift key for date ranges.
  • "," *"," * @attribute selectionMode"," * @type String"," * @default single"," */"," selectionMode: {"," value: \"single\""," },",""," /**"," * The date corresponding to the current calendar view. Always"," * normalized to the first of the month that contains the date"," * at assignment time. Used as the first date visible in the"," * calendar."," *"," * @attribute date"," * @type Date"," * @default Today's date as set on the user's computer."," */"," date: {"," value: new Date(),"," lazyAdd: false,"," setter: function (val) {",""," var newDate = this._normalizeDate(val),"," newTopDate = ydate.addMonths(newDate, this._paneNumber - 1);"," var minDate = this.get(\"minimumDate\");"," var maxDate = this.get(\"maximumDate\");"," if ((!minDate || ydate.isGreaterOrEqual(newDate, minDate)) && "," (!maxDate || ydate.isGreaterOrEqual(maxDate, newTopDate))) {"," return newDate;"," }",""," else if (minDate && ydate.isGreater(minDate, newDate)) {"," return minDate;"," }",""," else if (maxDate && ydate.isGreater(newTopDate, maxDate)) {"," var actualMaxDate = ydate.addMonths(maxDate, -1*(this._paneNumber - 1));"," return actualMaxDate;"," }"," }"," },",""," /**"," * The minimum date that can be displayed by the calendar. The calendar will not"," * allow dates earlier than this one to be set, and will reset any earlier date to"," * this date. Should be `null` if no minimum date is needed."," *"," * @attribute minimumDate"," * @type Date"," * @default null"," */"," minimumDate: {"," value: null,"," setter: function (val) {"," if (val) {"," var curDate = this.get('date'),"," newMinDate = this._normalizeDate(val);"," if (curDate && !ydate.isGreaterOrEqual(curDate, newMinDate)) {"," this.set('date', newMinDate);"," }"," return newMinDate;"," }"," else {"," return this._normalizeDate(val);"," }"," }"," },",""," /**"," * The maximum date that can be displayed by the calendar. The calendar will not"," * allow dates later than this one to be set, and will reset any later date to"," * this date. Should be `null` if no maximum date is needed."," *"," * @attribute maximumDate"," * @type Date"," * @default null"," */"," maximumDate: {"," value: null,"," setter: function (val) {"," if (val) {"," var curDate = this.get('date'),"," newMaxDate = this._normalizeDate(val);"," if (curDate && !ydate.isGreaterOrEqual(val, ydate.addMonths(curDate, this._paneNumber - 1))) {"," this.set('date', ydate.addMonths(newMaxDate, -1*(this._paneNumber -1)));"," }"," return newMaxDate;"," }"," else {"," return val;"," }"," }"," }"," }","});","","}, '3.7.3', {\"requires\": [\"calendar-base\", \"calendarnavigator\"], \"lang\": [\"de\", \"en\", \"fr\", \"ja\", \"nb-NO\", \"pt-BR\", \"ru\", \"zh-HANT-TW\"], \"skinnable\": true});"]; -_yuitest_coverage["build/calendar/calendar.js"].lines = {"1":0,"14":0,"43":0,"44":0,"47":0,"70":0,"73":0,"74":0,"75":0,"85":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"102":0,"112":0,"113":0,"114":0,"115":0,"124":0,"125":0,"126":0,"137":0,"138":0,"147":0,"157":0,"158":0,"167":0,"168":0,"177":0,"183":0,"185":0,"186":0,"187":0,"189":0,"190":0,"191":0,"193":0,"194":0,"195":0,"197":0,"198":0,"199":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"208":0,"209":0,"210":0,"213":0,"217":0,"221":0,"223":0,"224":0,"225":0,"227":0,"228":0,"232":0,"234":0,"246":0,"248":0,"249":0,"250":0,"251":0,"254":0,"255":0,"256":0,"257":0,"271":0,"276":0,"278":0,"279":0,"280":0,"281":0,"284":0,"286":0,"287":0,"288":0,"291":0,"294":0,"296":0,"297":0,"298":0,"299":0,"300":0,"302":0,"303":0,"304":0,"305":0,"308":0,"309":0,"312":0,"313":0,"314":0,"315":0,"316":0,"319":0,"320":0,"324":0,"325":0,"326":0,"327":0,"328":0,"329":0,"332":0,"333":0,"334":0,"338":0,"341":0,"349":0,"351":0,"358":0,"360":0,"367":0,"376":0,"377":0,"378":0,"387":0,"388":0,"389":0,"398":0,"399":0,"400":0,"409":0,"410":0,"411":0,"473":0,"475":0,"476":0,"477":0,"479":0,"482":0,"483":0,"486":0,"487":0,"488":0,"505":0,"506":0,"508":0,"509":0,"511":0,"514":0,"531":0,"532":0,"534":0,"535":0,"537":0,"540":0}; -_yuitest_coverage["build/calendar/calendar.js"].functions = {"Calendar:43":0,"initializer:69":0,"_bindCalendarEvents:84":0,"_preventSelectionStart:101":0,"_highlightDateNode:111":0,"_unhighlightCurrentDateNode:123":0,"_getGridNumber:136":0,"_blurCalendarGrid:146":0,"_focusCalendarCell:156":0,"_focusCalendarGrid:166":0,"_keydownCalendar:176":0,"_clickCalendar:270":0,"subtractMonth:375":0,"subtractYear:386":0,"addMonth:397":0,"addYear:408":0,"setter:471":0,"setter:504":0,"setter:530":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/calendar/calendar.js"].coveredLines = 153; -_yuitest_coverage["build/calendar/calendar.js"].coveredFunctions = 20; -_yuitest_coverline("build/calendar/calendar.js", 1); -YUI.add('calendar', function (Y, NAME) { - -/** - * The Calendar component is a UI widget that allows users - * to view dates in a two-dimensional month grid, as well as - * to select one or more dates, or ranges of dates. Calendar - * is generated dynamically and relies on the developer to - * provide for a progressive enhancement alternative. - * - * - * @module calendar - */ - -_yuitest_coverfunc("build/calendar/calendar.js", "(anonymous 1)", 1); -_yuitest_coverline("build/calendar/calendar.js", 14); -var getCN = Y.ClassNameManager.getClassName, - CALENDAR = 'calendar', - KEY_DOWN = 40, - KEY_UP = 38, - KEY_LEFT = 37, - KEY_RIGHT = 39, - KEY_ENTER = 13, - KEY_SPACE = 32, - CAL_HD = getCN(CALENDAR, 'header'), - CAL_DAY_SELECTED = getCN(CALENDAR, 'day-selected'), - CAL_DAY_HILITED = getCN(CALENDAR, 'day-highlighted'), - CAL_DAY = getCN(CALENDAR, 'day'), - CAL_PREVMONTH_DAY = getCN(CALENDAR, 'prevmonth-day'), - CAL_NEXTMONTH_DAY = getCN(CALENDAR, 'nextmonth-day'), - CAL_GRID = getCN(CALENDAR, 'grid'), - ydate = Y.DataType.Date, - delegate = Y.delegate, - CAL_PANE = getCN(CALENDAR, 'pane'), - os = Y.UA.os; - -/** Create a calendar view to represent a single or multiple - * month range of dates, rendered as a grid with date and - * weekday labels. - * - * @class Calendar - * @extends CalendarBase - * @param config {Object} Configuration object (see Configuration attributes) - * @constructor - */ -_yuitest_coverline("build/calendar/calendar.js", 43); -function Calendar(config) { - _yuitest_coverfunc("build/calendar/calendar.js", "Calendar", 43); -_yuitest_coverline("build/calendar/calendar.js", 44); -Calendar.superclass.constructor.apply ( this, arguments ); -} - -_yuitest_coverline("build/calendar/calendar.js", 47); -Y.Calendar = Y.extend(Calendar, Y.CalendarBase, { - - _keyEvents: [], - - _highlightedDateNode: null, - - /** - * A property tracking the last selected date on the calendar, for the - * purposes of multiple selection. - * - * @property _lastSelectedDate - * @type Date - * @default null - * @private - */ - _lastSelectedDate: null, - - /** - * Designated initializer. Activates the navigation plugin for the calendar. - * - * @method initializer - */ - initializer : function () { - _yuitest_coverfunc("build/calendar/calendar.js", "initializer", 69); -_yuitest_coverline("build/calendar/calendar.js", 70); -this.plug(Y.Plugin.CalendarNavigator); - - - _yuitest_coverline("build/calendar/calendar.js", 73); -this._keyEvents = []; - _yuitest_coverline("build/calendar/calendar.js", 74); -this._highlightedDateNode = null; - _yuitest_coverline("build/calendar/calendar.js", 75); -this._lastSelectedDate = null; - }, - - /** - * Overrides the _bindCalendarEvents placeholder in CalendarBase - * and binds calendar events during bindUI stage. - * @method _bindCalendarEvents - * @protected - */ - _bindCalendarEvents : function () { - _yuitest_coverfunc("build/calendar/calendar.js", "_bindCalendarEvents", 84); -_yuitest_coverline("build/calendar/calendar.js", 85); -var contentBox = this.get('contentBox'), - pane = contentBox.one("." + CAL_PANE); - _yuitest_coverline("build/calendar/calendar.js", 87); -pane.on("selectstart", this._preventSelectionStart); - _yuitest_coverline("build/calendar/calendar.js", 88); -pane.delegate("click", this._clickCalendar, "." + CAL_DAY + ", ." + CAL_PREVMONTH_DAY + ", ." + CAL_NEXTMONTH_DAY, this); - _yuitest_coverline("build/calendar/calendar.js", 89); -pane.delegate("keydown", this._keydownCalendar, "." + CAL_GRID, this); - _yuitest_coverline("build/calendar/calendar.js", 90); -pane.delegate("focus", this._focusCalendarGrid, "." + CAL_GRID, this); - _yuitest_coverline("build/calendar/calendar.js", 91); -pane.delegate("focus", this._focusCalendarCell, "." + CAL_DAY, this); - _yuitest_coverline("build/calendar/calendar.js", 92); -pane.delegate("blur", this._blurCalendarGrid, "." + CAL_GRID + ",." + CAL_DAY, this); - }, - - /** - * Prevents text selection if it is started within the calendar pane - * @method _preventSelectionStart - * @param event {Event} The selectstart event - * @protected - */ - _preventSelectionStart : function (event) { - _yuitest_coverfunc("build/calendar/calendar.js", "_preventSelectionStart", 101); -_yuitest_coverline("build/calendar/calendar.js", 102); -event.preventDefault(); - }, - - /** - * Highlights a specific date node with keyboard highlight class - * @method _highlightDateNode - * @param oDate {Date} Date corresponding the node to be highlighted - * @protected - */ - _highlightDateNode : function (oDate) { - _yuitest_coverfunc("build/calendar/calendar.js", "_highlightDateNode", 111); -_yuitest_coverline("build/calendar/calendar.js", 112); -this._unhighlightCurrentDateNode(); - _yuitest_coverline("build/calendar/calendar.js", 113); -var newNode = this._dateToNode(oDate); - _yuitest_coverline("build/calendar/calendar.js", 114); -newNode.focus(); - _yuitest_coverline("build/calendar/calendar.js", 115); -newNode.addClass(CAL_DAY_HILITED); - }, - - /** - * Unhighlights a specific date node currently highlighted with keyboard highlight class - * @method _unhighlightCurrentDateNode - * @protected - */ - _unhighlightCurrentDateNode : function () { - _yuitest_coverfunc("build/calendar/calendar.js", "_unhighlightCurrentDateNode", 123); -_yuitest_coverline("build/calendar/calendar.js", 124); -var allHilitedNodes = this.get("contentBox").all("." + CAL_DAY_HILITED); - _yuitest_coverline("build/calendar/calendar.js", 125); -if (allHilitedNodes) { - _yuitest_coverline("build/calendar/calendar.js", 126); -allHilitedNodes.removeClass(CAL_DAY_HILITED); - } - }, - - /** - * Returns the grid number for a specific calendar grid (for multi-grid templates) - * @method _getGridNumber - * @param gridNode {Node} Node corresponding to a specific grid - * @protected - */ - _getGridNumber : function (gridNode) { - _yuitest_coverfunc("build/calendar/calendar.js", "_getGridNumber", 136); -_yuitest_coverline("build/calendar/calendar.js", 137); -var idParts = gridNode.get("id").split("_").reverse(); - _yuitest_coverline("build/calendar/calendar.js", 138); -return parseInt(idParts[0], 10); - }, - - /** - * Handler for loss of focus of calendar grid - * @method _blurCalendarGrid - * @protected - */ - _blurCalendarGrid : function (ev) { - _yuitest_coverfunc("build/calendar/calendar.js", "_blurCalendarGrid", 146); -_yuitest_coverline("build/calendar/calendar.js", 147); -this._unhighlightCurrentDateNode(); - }, - - - /** - * Handler for gain of focus of calendar cell - * @method _focusCalendarCell - * @protected - */ - _focusCalendarCell : function (ev) { - _yuitest_coverfunc("build/calendar/calendar.js", "_focusCalendarCell", 156); -_yuitest_coverline("build/calendar/calendar.js", 157); -this._highlightedDateNode = ev.target; - _yuitest_coverline("build/calendar/calendar.js", 158); -ev.stopPropagation(); - }, - - /** - * Handler for gain of focus of calendar grid - * @method _focusCalendarGrid - * @protected - */ - _focusCalendarGrid : function (ev) { - _yuitest_coverfunc("build/calendar/calendar.js", "_focusCalendarGrid", 166); -_yuitest_coverline("build/calendar/calendar.js", 167); -this._unhighlightCurrentDateNode(); - _yuitest_coverline("build/calendar/calendar.js", 168); -this._highlightedDateNode = null; - }, - - /** - * Handler for keyboard press on a calendar grid - * @method _keydownCalendar - * @protected - */ - _keydownCalendar : function (ev) { - _yuitest_coverfunc("build/calendar/calendar.js", "_keydownCalendar", 176); -_yuitest_coverline("build/calendar/calendar.js", 177); -var gridNum = this._getGridNumber(ev.target), - curDate = !this._highlightedDateNode ? null : this._nodeToDate(this._highlightedDateNode), - keyCode = ev.keyCode, - dayNum = 0, - dir = ''; - - _yuitest_coverline("build/calendar/calendar.js", 183); -switch(keyCode) { - case KEY_DOWN: - _yuitest_coverline("build/calendar/calendar.js", 185); -dayNum = 7; - _yuitest_coverline("build/calendar/calendar.js", 186); -dir = 's'; - _yuitest_coverline("build/calendar/calendar.js", 187); -break; - case KEY_UP: - _yuitest_coverline("build/calendar/calendar.js", 189); -dayNum = -7; - _yuitest_coverline("build/calendar/calendar.js", 190); -dir = 'n'; - _yuitest_coverline("build/calendar/calendar.js", 191); -break; - case KEY_LEFT: - _yuitest_coverline("build/calendar/calendar.js", 193); -dayNum = -1; - _yuitest_coverline("build/calendar/calendar.js", 194); -dir = 'w'; - _yuitest_coverline("build/calendar/calendar.js", 195); -break; - case KEY_RIGHT: - _yuitest_coverline("build/calendar/calendar.js", 197); -dayNum = 1; - _yuitest_coverline("build/calendar/calendar.js", 198); -dir = 'e'; - _yuitest_coverline("build/calendar/calendar.js", 199); -break; - case KEY_SPACE: case KEY_ENTER: - _yuitest_coverline("build/calendar/calendar.js", 201); -ev.preventDefault(); - _yuitest_coverline("build/calendar/calendar.js", 202); -if (this._highlightedDateNode) { - _yuitest_coverline("build/calendar/calendar.js", 203); -var selMode = this.get("selectionMode"); - _yuitest_coverline("build/calendar/calendar.js", 204); -if (selMode === "single" && !this._highlightedDateNode.hasClass(CAL_DAY_SELECTED)) { - _yuitest_coverline("build/calendar/calendar.js", 205); -this._clearSelection(true); - _yuitest_coverline("build/calendar/calendar.js", 206); -this._addDateToSelection(curDate); - } - else {_yuitest_coverline("build/calendar/calendar.js", 208); -if (selMode === "multiple" || selMode === "multiple-sticky") { - _yuitest_coverline("build/calendar/calendar.js", 209); -if (this._highlightedDateNode.hasClass(CAL_DAY_SELECTED)) { - _yuitest_coverline("build/calendar/calendar.js", 210); -this._removeDateFromSelection(curDate); - } - else { - _yuitest_coverline("build/calendar/calendar.js", 213); -this._addDateToSelection(curDate); - } - }} - } - _yuitest_coverline("build/calendar/calendar.js", 217); -break; - } - - - _yuitest_coverline("build/calendar/calendar.js", 221); -if (keyCode == KEY_DOWN || keyCode == KEY_UP || keyCode == KEY_LEFT || keyCode == KEY_RIGHT) { - - _yuitest_coverline("build/calendar/calendar.js", 223); -if (!curDate) { - _yuitest_coverline("build/calendar/calendar.js", 224); -curDate = ydate.addMonths(this.get("date"), gridNum); - _yuitest_coverline("build/calendar/calendar.js", 225); -dayNum = 0; - } - _yuitest_coverline("build/calendar/calendar.js", 227); -ev.preventDefault(); - _yuitest_coverline("build/calendar/calendar.js", 228); -var newDate = ydate.addDays(curDate, dayNum), - startDate = this.get("date"), - endDate = ydate.addMonths(this.get("date"), this._paneNumber - 1), - lastPaneDate = new Date(endDate); - _yuitest_coverline("build/calendar/calendar.js", 232); -endDate.setDate(ydate.daysInMonth(endDate)); - - _yuitest_coverline("build/calendar/calendar.js", 234); -if (ydate.isInRange(newDate, startDate, endDate)) { -/* - var paneShift = (newDate.getMonth() - curDate.getMonth()) % 10; - - - if (paneShift != 0) { - var newGridNum = gridNum + paneShift, - contentBox = this.get('contentBox'), - newPane = contentBox.one("#" + this._calendarId + "_pane_" + newGridNum); - newPane.focus(); - } -*/ - _yuitest_coverline("build/calendar/calendar.js", 246); -this._highlightDateNode(newDate); - } - else {_yuitest_coverline("build/calendar/calendar.js", 248); -if (ydate.isGreater(startDate, newDate)) { - _yuitest_coverline("build/calendar/calendar.js", 249); -if (!ydate.isGreaterOrEqual(this.get("minimumDate"), startDate)) { - _yuitest_coverline("build/calendar/calendar.js", 250); -this.set("date", ydate.addMonths(startDate, -1)); - _yuitest_coverline("build/calendar/calendar.js", 251); -this._highlightDateNode(newDate); - } - } - else {_yuitest_coverline("build/calendar/calendar.js", 254); -if (ydate.isGreater(newDate, endDate)) { - _yuitest_coverline("build/calendar/calendar.js", 255); -if (!ydate.isGreaterOrEqual(lastPaneDate, this.get("maximumDate"))) { - _yuitest_coverline("build/calendar/calendar.js", 256); -this.set("date", ydate.addMonths(startDate, 1)); - _yuitest_coverline("build/calendar/calendar.js", 257); -this._highlightDateNode(newDate); - } - }}} - - } - }, - - /** - * Handles the calendar clicks based on selection mode. - * @method _clickCalendar - * @param {Event} ev A click event - * @private - */ - _clickCalendar : function (ev) { - _yuitest_coverfunc("build/calendar/calendar.js", "_clickCalendar", 270); -_yuitest_coverline("build/calendar/calendar.js", 271); -var clickedCell = ev.currentTarget, - clickedCellIsDay = clickedCell.hasClass(CAL_DAY) && - !clickedCell.hasClass(CAL_PREVMONTH_DAY) && - !clickedCell.hasClass(CAL_NEXTMONTH_DAY), - clickedCellIsSelected = clickedCell.hasClass(CAL_DAY_SELECTED); - _yuitest_coverline("build/calendar/calendar.js", 276); -switch (this.get("selectionMode")) { - case("single"): - _yuitest_coverline("build/calendar/calendar.js", 278); -if (clickedCellIsDay) { - _yuitest_coverline("build/calendar/calendar.js", 279); -if (!clickedCellIsSelected) { - _yuitest_coverline("build/calendar/calendar.js", 280); -this._clearSelection(true); - _yuitest_coverline("build/calendar/calendar.js", 281); -this._addDateToSelection(this._nodeToDate(clickedCell)); - } - } - _yuitest_coverline("build/calendar/calendar.js", 284); -break; - case("multiple-sticky"): - _yuitest_coverline("build/calendar/calendar.js", 286); -if (clickedCellIsDay) { - _yuitest_coverline("build/calendar/calendar.js", 287); -if (clickedCellIsSelected) { - _yuitest_coverline("build/calendar/calendar.js", 288); -this._removeDateFromSelection(this._nodeToDate(clickedCell)); - } - else { - _yuitest_coverline("build/calendar/calendar.js", 291); -this._addDateToSelection(this._nodeToDate(clickedCell)); - } - } - _yuitest_coverline("build/calendar/calendar.js", 294); -break; - case("multiple"): - _yuitest_coverline("build/calendar/calendar.js", 296); -if (clickedCellIsDay) { - _yuitest_coverline("build/calendar/calendar.js", 297); -if (!ev.metaKey && !ev.ctrlKey && !ev.shiftKey) { - _yuitest_coverline("build/calendar/calendar.js", 298); -this._clearSelection(true); - _yuitest_coverline("build/calendar/calendar.js", 299); -this._lastSelectedDate = this._nodeToDate(clickedCell); - _yuitest_coverline("build/calendar/calendar.js", 300); -this._addDateToSelection(this._lastSelectedDate); - } - else {_yuitest_coverline("build/calendar/calendar.js", 302); -if (((os == 'macintosh' && ev.metaKey) || (os != 'macintosh' && ev.ctrlKey)) && !ev.shiftKey) { - _yuitest_coverline("build/calendar/calendar.js", 303); -if (clickedCellIsSelected) { - _yuitest_coverline("build/calendar/calendar.js", 304); -this._removeDateFromSelection(this._nodeToDate(clickedCell)); - _yuitest_coverline("build/calendar/calendar.js", 305); -this._lastSelectedDate = null; - } - else { - _yuitest_coverline("build/calendar/calendar.js", 308); -this._lastSelectedDate = this._nodeToDate(clickedCell); - _yuitest_coverline("build/calendar/calendar.js", 309); -this._addDateToSelection(this._lastSelectedDate); - } - } - else {_yuitest_coverline("build/calendar/calendar.js", 312); -if (((os == 'macintosh' && ev.metaKey) || (os != 'macintosh' && ev.ctrlKey)) && ev.shiftKey) { - _yuitest_coverline("build/calendar/calendar.js", 313); -if (this._lastSelectedDate) { - _yuitest_coverline("build/calendar/calendar.js", 314); -var selectedDate = this._nodeToDate(clickedCell); - _yuitest_coverline("build/calendar/calendar.js", 315); -this._addDateRangeToSelection(selectedDate, this._lastSelectedDate); - _yuitest_coverline("build/calendar/calendar.js", 316); -this._lastSelectedDate = selectedDate; - } - else { - _yuitest_coverline("build/calendar/calendar.js", 319); -this._lastSelectedDate = this._nodeToDate(clickedCell); - _yuitest_coverline("build/calendar/calendar.js", 320); -this._addDateToSelection(this._lastSelectedDate); - } - - } - else {_yuitest_coverline("build/calendar/calendar.js", 324); -if (ev.shiftKey) { - _yuitest_coverline("build/calendar/calendar.js", 325); -if (this._lastSelectedDate) { - _yuitest_coverline("build/calendar/calendar.js", 326); -var selectedDate = this._nodeToDate(clickedCell); - _yuitest_coverline("build/calendar/calendar.js", 327); -this._clearSelection(true); - _yuitest_coverline("build/calendar/calendar.js", 328); -this._addDateRangeToSelection(selectedDate, this._lastSelectedDate); - _yuitest_coverline("build/calendar/calendar.js", 329); -this._lastSelectedDate = selectedDate; - } - else { - _yuitest_coverline("build/calendar/calendar.js", 332); -this._clearSelection(true); - _yuitest_coverline("build/calendar/calendar.js", 333); -this._lastSelectedDate = this._nodeToDate(clickedCell); - _yuitest_coverline("build/calendar/calendar.js", 334); -this._addDateToSelection(this._lastSelectedDate); - } - }}}} - } - _yuitest_coverline("build/calendar/calendar.js", 338); -break; - } - - _yuitest_coverline("build/calendar/calendar.js", 341); -if (clickedCellIsDay) { - /** - * Fired when a specific date cell in the calendar is clicked. The event carries a - * payload which includes a `cell` property corresponding to the node of the actual - * date cell, and a `date` property, with the `Date` that was clicked. - * - * @event dateClick - */ - _yuitest_coverline("build/calendar/calendar.js", 349); -this.fire("dateClick", {cell: clickedCell, date: this._nodeToDate(clickedCell)}); - } - else {_yuitest_coverline("build/calendar/calendar.js", 351); -if (clickedCell.hasClass(CAL_PREVMONTH_DAY)) { - /** - * Fired when any of the previous month's days displayed before the calendar grid - * are clicked. - * - * @event prevMonthClick - */ - _yuitest_coverline("build/calendar/calendar.js", 358); -this.fire("prevMonthClick"); - } - else {_yuitest_coverline("build/calendar/calendar.js", 360); -if (clickedCell.hasClass(CAL_NEXTMONTH_DAY)) { - /** - * Fired when any of the next month's days displayed after the calendar grid - * are clicked. - * - * @event nextMonthClick - */ - _yuitest_coverline("build/calendar/calendar.js", 367); -this.fire("nextMonthClick"); - }}} - }, - - /** - * Subtracts one month from the current calendar view. - * @method subtractMonth - */ - subtractMonth : function (e) { - _yuitest_coverfunc("build/calendar/calendar.js", "subtractMonth", 375); -_yuitest_coverline("build/calendar/calendar.js", 376); -this.set("date", ydate.addMonths(this.get("date"), -1)); - _yuitest_coverline("build/calendar/calendar.js", 377); -if (e) { - _yuitest_coverline("build/calendar/calendar.js", 378); -e.halt(); - } - }, - - /** - * Subtracts one year from the current calendar view. - * @method subtractYear - */ - subtractYear : function (e) { - _yuitest_coverfunc("build/calendar/calendar.js", "subtractYear", 386); -_yuitest_coverline("build/calendar/calendar.js", 387); -this.set("date", ydate.addYears(this.get("date"), -1)); - _yuitest_coverline("build/calendar/calendar.js", 388); -if (e) { - _yuitest_coverline("build/calendar/calendar.js", 389); -e.halt(); - } - }, - - /** - * Adds one month to the current calendar view. - * @method addMonth - */ - addMonth : function (e) { - _yuitest_coverfunc("build/calendar/calendar.js", "addMonth", 397); -_yuitest_coverline("build/calendar/calendar.js", 398); -this.set("date", ydate.addMonths(this.get("date"), 1)); - _yuitest_coverline("build/calendar/calendar.js", 399); -if (e) { - _yuitest_coverline("build/calendar/calendar.js", 400); -e.halt(); - } - }, - - /** - * Adds one year to the current calendar view. - * @method addYear - */ - addYear : function (e) { - _yuitest_coverfunc("build/calendar/calendar.js", "addYear", 408); -_yuitest_coverline("build/calendar/calendar.js", 409); -this.set("date", ydate.addYears(this.get("date"), 1)); - _yuitest_coverline("build/calendar/calendar.js", 410); -if (e) { - _yuitest_coverline("build/calendar/calendar.js", 411); -e.halt(); - } - } -}, - -{ - /** - * The identity of the widget. - * - * @property NAME - * @type String - * @default 'calendar' - * @readOnly - * @protected - * @static - */ - NAME: "calendar", - - /** - * Static property used to define the default attribute configuration of - * the Widget. - * - * @property ATTRS - * @type {Object} - * @protected - * @static - */ - ATTRS: { - - /** - * A setting specifying the type of selection the calendar allows. - * Possible values include: - *
      - *
    • `single` - One date at a time
    • - *
    • `multiple-sticky` - Multiple dates, selected one at a time (the dates "stick"). This option - * is appropriate for mobile devices, where function keys from the keyboard are not available.
    • - *
    • `multiple` - Multiple dates, selected with Ctrl/Meta keys for additional single - * dates, and Shift key for date ranges.
    • - * - * @attribute selectionMode - * @type String - * @default single - */ - selectionMode: { - value: "single" - }, - - /** - * The date corresponding to the current calendar view. Always - * normalized to the first of the month that contains the date - * at assignment time. Used as the first date visible in the - * calendar. - * - * @attribute date - * @type Date - * @default Today's date as set on the user's computer. - */ - date: { - value: new Date(), - lazyAdd: false, - setter: function (val) { - - _yuitest_coverfunc("build/calendar/calendar.js", "setter", 471); -_yuitest_coverline("build/calendar/calendar.js", 473); -var newDate = this._normalizeDate(val), - newTopDate = ydate.addMonths(newDate, this._paneNumber - 1); - _yuitest_coverline("build/calendar/calendar.js", 475); -var minDate = this.get("minimumDate"); - _yuitest_coverline("build/calendar/calendar.js", 476); -var maxDate = this.get("maximumDate"); - _yuitest_coverline("build/calendar/calendar.js", 477); -if ((!minDate || ydate.isGreaterOrEqual(newDate, minDate)) && - (!maxDate || ydate.isGreaterOrEqual(maxDate, newTopDate))) { - _yuitest_coverline("build/calendar/calendar.js", 479); -return newDate; - } - - else {_yuitest_coverline("build/calendar/calendar.js", 482); -if (minDate && ydate.isGreater(minDate, newDate)) { - _yuitest_coverline("build/calendar/calendar.js", 483); -return minDate; - } - - else {_yuitest_coverline("build/calendar/calendar.js", 486); -if (maxDate && ydate.isGreater(newTopDate, maxDate)) { - _yuitest_coverline("build/calendar/calendar.js", 487); -var actualMaxDate = ydate.addMonths(maxDate, -1*(this._paneNumber - 1)); - _yuitest_coverline("build/calendar/calendar.js", 488); -return actualMaxDate; - }}} - } - }, - - /** - * The minimum date that can be displayed by the calendar. The calendar will not - * allow dates earlier than this one to be set, and will reset any earlier date to - * this date. Should be `null` if no minimum date is needed. - * - * @attribute minimumDate - * @type Date - * @default null - */ - minimumDate: { - value: null, - setter: function (val) { - _yuitest_coverfunc("build/calendar/calendar.js", "setter", 504); -_yuitest_coverline("build/calendar/calendar.js", 505); -if (val) { - _yuitest_coverline("build/calendar/calendar.js", 506); -var curDate = this.get('date'), - newMinDate = this._normalizeDate(val); - _yuitest_coverline("build/calendar/calendar.js", 508); -if (curDate && !ydate.isGreaterOrEqual(curDate, newMinDate)) { - _yuitest_coverline("build/calendar/calendar.js", 509); -this.set('date', newMinDate); - } - _yuitest_coverline("build/calendar/calendar.js", 511); -return newMinDate; - } - else { - _yuitest_coverline("build/calendar/calendar.js", 514); -return this._normalizeDate(val); - } - } - }, - - /** - * The maximum date that can be displayed by the calendar. The calendar will not - * allow dates later than this one to be set, and will reset any later date to - * this date. Should be `null` if no maximum date is needed. - * - * @attribute maximumDate - * @type Date - * @default null - */ - maximumDate: { - value: null, - setter: function (val) { - _yuitest_coverfunc("build/calendar/calendar.js", "setter", 530); -_yuitest_coverline("build/calendar/calendar.js", 531); -if (val) { - _yuitest_coverline("build/calendar/calendar.js", 532); -var curDate = this.get('date'), - newMaxDate = this._normalizeDate(val); - _yuitest_coverline("build/calendar/calendar.js", 534); -if (curDate && !ydate.isGreaterOrEqual(val, ydate.addMonths(curDate, this._paneNumber - 1))) { - _yuitest_coverline("build/calendar/calendar.js", 535); -this.set('date', ydate.addMonths(newMaxDate, -1*(this._paneNumber -1))); - } - _yuitest_coverline("build/calendar/calendar.js", 537); -return newMaxDate; - } - else { - _yuitest_coverline("build/calendar/calendar.js", 540); -return val; - } - } - } - } -}); - -}, '3.7.3', {"requires": ["calendar-base", "calendarnavigator"], "lang": ["de", "en", "fr", "ja", "nb-NO", "pt-BR", "ru", "zh-HANT-TW"], "skinnable": true}); diff --git a/lib/yuilib/3.7.3/build/calendar/calendar-debug.js b/lib/yuilib/3.7.3/build/calendar/calendar-debug.js deleted file mode 100644 index fa7ae8c17b2..00000000000 --- a/lib/yuilib/3.7.3/build/calendar/calendar-debug.js +++ /dev/null @@ -1,553 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add('calendar', function (Y, NAME) { - -/** - * The Calendar component is a UI widget that allows users - * to view dates in a two-dimensional month grid, as well as - * to select one or more dates, or ranges of dates. Calendar - * is generated dynamically and relies on the developer to - * provide for a progressive enhancement alternative. - * - * - * @module calendar - */ - -var getCN = Y.ClassNameManager.getClassName, - CALENDAR = 'calendar', - KEY_DOWN = 40, - KEY_UP = 38, - KEY_LEFT = 37, - KEY_RIGHT = 39, - KEY_ENTER = 13, - KEY_SPACE = 32, - CAL_HD = getCN(CALENDAR, 'header'), - CAL_DAY_SELECTED = getCN(CALENDAR, 'day-selected'), - CAL_DAY_HILITED = getCN(CALENDAR, 'day-highlighted'), - CAL_DAY = getCN(CALENDAR, 'day'), - CAL_PREVMONTH_DAY = getCN(CALENDAR, 'prevmonth-day'), - CAL_NEXTMONTH_DAY = getCN(CALENDAR, 'nextmonth-day'), - CAL_GRID = getCN(CALENDAR, 'grid'), - ydate = Y.DataType.Date, - delegate = Y.delegate, - CAL_PANE = getCN(CALENDAR, 'pane'), - os = Y.UA.os; - -/** Create a calendar view to represent a single or multiple - * month range of dates, rendered as a grid with date and - * weekday labels. - * - * @class Calendar - * @extends CalendarBase - * @param config {Object} Configuration object (see Configuration attributes) - * @constructor - */ -function Calendar(config) { - Calendar.superclass.constructor.apply ( this, arguments ); -} - -Y.Calendar = Y.extend(Calendar, Y.CalendarBase, { - - _keyEvents: [], - - _highlightedDateNode: null, - - /** - * A property tracking the last selected date on the calendar, for the - * purposes of multiple selection. - * - * @property _lastSelectedDate - * @type Date - * @default null - * @private - */ - _lastSelectedDate: null, - - /** - * Designated initializer. Activates the navigation plugin for the calendar. - * - * @method initializer - */ - initializer : function () { - this.plug(Y.Plugin.CalendarNavigator); - - - this._keyEvents = []; - this._highlightedDateNode = null; - this._lastSelectedDate = null; - }, - - /** - * Overrides the _bindCalendarEvents placeholder in CalendarBase - * and binds calendar events during bindUI stage. - * @method _bindCalendarEvents - * @protected - */ - _bindCalendarEvents : function () { - var contentBox = this.get('contentBox'), - pane = contentBox.one("." + CAL_PANE); - pane.on("selectstart", this._preventSelectionStart); - pane.delegate("click", this._clickCalendar, "." + CAL_DAY + ", ." + CAL_PREVMONTH_DAY + ", ." + CAL_NEXTMONTH_DAY, this); - pane.delegate("keydown", this._keydownCalendar, "." + CAL_GRID, this); - pane.delegate("focus", this._focusCalendarGrid, "." + CAL_GRID, this); - pane.delegate("focus", this._focusCalendarCell, "." + CAL_DAY, this); - pane.delegate("blur", this._blurCalendarGrid, "." + CAL_GRID + ",." + CAL_DAY, this); - }, - - /** - * Prevents text selection if it is started within the calendar pane - * @method _preventSelectionStart - * @param event {Event} The selectstart event - * @protected - */ - _preventSelectionStart : function (event) { - event.preventDefault(); - }, - - /** - * Highlights a specific date node with keyboard highlight class - * @method _highlightDateNode - * @param oDate {Date} Date corresponding the node to be highlighted - * @protected - */ - _highlightDateNode : function (oDate) { - this._unhighlightCurrentDateNode(); - var newNode = this._dateToNode(oDate); - newNode.focus(); - newNode.addClass(CAL_DAY_HILITED); - }, - - /** - * Unhighlights a specific date node currently highlighted with keyboard highlight class - * @method _unhighlightCurrentDateNode - * @protected - */ - _unhighlightCurrentDateNode : function () { - var allHilitedNodes = this.get("contentBox").all("." + CAL_DAY_HILITED); - if (allHilitedNodes) { - allHilitedNodes.removeClass(CAL_DAY_HILITED); - } - }, - - /** - * Returns the grid number for a specific calendar grid (for multi-grid templates) - * @method _getGridNumber - * @param gridNode {Node} Node corresponding to a specific grid - * @protected - */ - _getGridNumber : function (gridNode) { - var idParts = gridNode.get("id").split("_").reverse(); - return parseInt(idParts[0], 10); - }, - - /** - * Handler for loss of focus of calendar grid - * @method _blurCalendarGrid - * @protected - */ - _blurCalendarGrid : function (ev) { - this._unhighlightCurrentDateNode(); - }, - - - /** - * Handler for gain of focus of calendar cell - * @method _focusCalendarCell - * @protected - */ - _focusCalendarCell : function (ev) { - this._highlightedDateNode = ev.target; - ev.stopPropagation(); - }, - - /** - * Handler for gain of focus of calendar grid - * @method _focusCalendarGrid - * @protected - */ - _focusCalendarGrid : function (ev) { - this._unhighlightCurrentDateNode(); - this._highlightedDateNode = null; - }, - - /** - * Handler for keyboard press on a calendar grid - * @method _keydownCalendar - * @protected - */ - _keydownCalendar : function (ev) { - var gridNum = this._getGridNumber(ev.target), - curDate = !this._highlightedDateNode ? null : this._nodeToDate(this._highlightedDateNode), - keyCode = ev.keyCode, - dayNum = 0, - dir = ''; - - switch(keyCode) { - case KEY_DOWN: - dayNum = 7; - dir = 's'; - break; - case KEY_UP: - dayNum = -7; - dir = 'n'; - break; - case KEY_LEFT: - dayNum = -1; - dir = 'w'; - break; - case KEY_RIGHT: - dayNum = 1; - dir = 'e'; - break; - case KEY_SPACE: case KEY_ENTER: - ev.preventDefault(); - if (this._highlightedDateNode) { - var selMode = this.get("selectionMode"); - if (selMode === "single" && !this._highlightedDateNode.hasClass(CAL_DAY_SELECTED)) { - this._clearSelection(true); - this._addDateToSelection(curDate); - } - else if (selMode === "multiple" || selMode === "multiple-sticky") { - if (this._highlightedDateNode.hasClass(CAL_DAY_SELECTED)) { - this._removeDateFromSelection(curDate); - } - else { - this._addDateToSelection(curDate); - } - } - } - break; - } - - - if (keyCode == KEY_DOWN || keyCode == KEY_UP || keyCode == KEY_LEFT || keyCode == KEY_RIGHT) { - - if (!curDate) { - curDate = ydate.addMonths(this.get("date"), gridNum); - dayNum = 0; - } - ev.preventDefault(); - var newDate = ydate.addDays(curDate, dayNum), - startDate = this.get("date"), - endDate = ydate.addMonths(this.get("date"), this._paneNumber - 1), - lastPaneDate = new Date(endDate); - endDate.setDate(ydate.daysInMonth(endDate)); - - if (ydate.isInRange(newDate, startDate, endDate)) { -/* - var paneShift = (newDate.getMonth() - curDate.getMonth()) % 10; - - - if (paneShift != 0) { - var newGridNum = gridNum + paneShift, - contentBox = this.get('contentBox'), - newPane = contentBox.one("#" + this._calendarId + "_pane_" + newGridNum); - newPane.focus(); - } -*/ - this._highlightDateNode(newDate); - } - else if (ydate.isGreater(startDate, newDate)) { - if (!ydate.isGreaterOrEqual(this.get("minimumDate"), startDate)) { - this.set("date", ydate.addMonths(startDate, -1)); - this._highlightDateNode(newDate); - } - } - else if (ydate.isGreater(newDate, endDate)) { - if (!ydate.isGreaterOrEqual(lastPaneDate, this.get("maximumDate"))) { - this.set("date", ydate.addMonths(startDate, 1)); - this._highlightDateNode(newDate); - } - } - - } - }, - - /** - * Handles the calendar clicks based on selection mode. - * @method _clickCalendar - * @param {Event} ev A click event - * @private - */ - _clickCalendar : function (ev) { - var clickedCell = ev.currentTarget, - clickedCellIsDay = clickedCell.hasClass(CAL_DAY) && - !clickedCell.hasClass(CAL_PREVMONTH_DAY) && - !clickedCell.hasClass(CAL_NEXTMONTH_DAY), - clickedCellIsSelected = clickedCell.hasClass(CAL_DAY_SELECTED); - switch (this.get("selectionMode")) { - case("single"): - if (clickedCellIsDay) { - if (!clickedCellIsSelected) { - this._clearSelection(true); - this._addDateToSelection(this._nodeToDate(clickedCell)); - } - } - break; - case("multiple-sticky"): - if (clickedCellIsDay) { - if (clickedCellIsSelected) { - this._removeDateFromSelection(this._nodeToDate(clickedCell)); - } - else { - this._addDateToSelection(this._nodeToDate(clickedCell)); - } - } - break; - case("multiple"): - if (clickedCellIsDay) { - if (!ev.metaKey && !ev.ctrlKey && !ev.shiftKey) { - this._clearSelection(true); - this._lastSelectedDate = this._nodeToDate(clickedCell); - this._addDateToSelection(this._lastSelectedDate); - } - else if (((os == 'macintosh' && ev.metaKey) || (os != 'macintosh' && ev.ctrlKey)) && !ev.shiftKey) { - if (clickedCellIsSelected) { - this._removeDateFromSelection(this._nodeToDate(clickedCell)); - this._lastSelectedDate = null; - } - else { - this._lastSelectedDate = this._nodeToDate(clickedCell); - this._addDateToSelection(this._lastSelectedDate); - } - } - else if (((os == 'macintosh' && ev.metaKey) || (os != 'macintosh' && ev.ctrlKey)) && ev.shiftKey) { - if (this._lastSelectedDate) { - var selectedDate = this._nodeToDate(clickedCell); - this._addDateRangeToSelection(selectedDate, this._lastSelectedDate); - this._lastSelectedDate = selectedDate; - } - else { - this._lastSelectedDate = this._nodeToDate(clickedCell); - this._addDateToSelection(this._lastSelectedDate); - } - - } - else if (ev.shiftKey) { - if (this._lastSelectedDate) { - var selectedDate = this._nodeToDate(clickedCell); - this._clearSelection(true); - this._addDateRangeToSelection(selectedDate, this._lastSelectedDate); - this._lastSelectedDate = selectedDate; - } - else { - this._clearSelection(true); - this._lastSelectedDate = this._nodeToDate(clickedCell); - this._addDateToSelection(this._lastSelectedDate); - } - } - } - break; - } - - if (clickedCellIsDay) { - /** - * Fired when a specific date cell in the calendar is clicked. The event carries a - * payload which includes a `cell` property corresponding to the node of the actual - * date cell, and a `date` property, with the `Date` that was clicked. - * - * @event dateClick - */ - this.fire("dateClick", {cell: clickedCell, date: this._nodeToDate(clickedCell)}); - } - else if (clickedCell.hasClass(CAL_PREVMONTH_DAY)) { - /** - * Fired when any of the previous month's days displayed before the calendar grid - * are clicked. - * - * @event prevMonthClick - */ - this.fire("prevMonthClick"); - } - else if (clickedCell.hasClass(CAL_NEXTMONTH_DAY)) { - /** - * Fired when any of the next month's days displayed after the calendar grid - * are clicked. - * - * @event nextMonthClick - */ - this.fire("nextMonthClick"); - } - }, - - /** - * Subtracts one month from the current calendar view. - * @method subtractMonth - */ - subtractMonth : function (e) { - this.set("date", ydate.addMonths(this.get("date"), -1)); - if (e) { - e.halt(); - } - }, - - /** - * Subtracts one year from the current calendar view. - * @method subtractYear - */ - subtractYear : function (e) { - this.set("date", ydate.addYears(this.get("date"), -1)); - if (e) { - e.halt(); - } - }, - - /** - * Adds one month to the current calendar view. - * @method addMonth - */ - addMonth : function (e) { - this.set("date", ydate.addMonths(this.get("date"), 1)); - if (e) { - e.halt(); - } - }, - - /** - * Adds one year to the current calendar view. - * @method addYear - */ - addYear : function (e) { - this.set("date", ydate.addYears(this.get("date"), 1)); - if (e) { - e.halt(); - } - } -}, - -{ - /** - * The identity of the widget. - * - * @property NAME - * @type String - * @default 'calendar' - * @readOnly - * @protected - * @static - */ - NAME: "calendar", - - /** - * Static property used to define the default attribute configuration of - * the Widget. - * - * @property ATTRS - * @type {Object} - * @protected - * @static - */ - ATTRS: { - - /** - * A setting specifying the type of selection the calendar allows. - * Possible values include: - *
        - *
      • `single` - One date at a time
      • - *
      • `multiple-sticky` - Multiple dates, selected one at a time (the dates "stick"). This option - * is appropriate for mobile devices, where function keys from the keyboard are not available.
      • - *
      • `multiple` - Multiple dates, selected with Ctrl/Meta keys for additional single - * dates, and Shift key for date ranges.
      • - * - * @attribute selectionMode - * @type String - * @default single - */ - selectionMode: { - value: "single" - }, - - /** - * The date corresponding to the current calendar view. Always - * normalized to the first of the month that contains the date - * at assignment time. Used as the first date visible in the - * calendar. - * - * @attribute date - * @type Date - * @default Today's date as set on the user's computer. - */ - date: { - value: new Date(), - lazyAdd: false, - setter: function (val) { - - var newDate = this._normalizeDate(val), - newTopDate = ydate.addMonths(newDate, this._paneNumber - 1); - var minDate = this.get("minimumDate"); - var maxDate = this.get("maximumDate"); - if ((!minDate || ydate.isGreaterOrEqual(newDate, minDate)) && - (!maxDate || ydate.isGreaterOrEqual(maxDate, newTopDate))) { - return newDate; - } - - else if (minDate && ydate.isGreater(minDate, newDate)) { - return minDate; - } - - else if (maxDate && ydate.isGreater(newTopDate, maxDate)) { - var actualMaxDate = ydate.addMonths(maxDate, -1*(this._paneNumber - 1)); - return actualMaxDate; - } - } - }, - - /** - * The minimum date that can be displayed by the calendar. The calendar will not - * allow dates earlier than this one to be set, and will reset any earlier date to - * this date. Should be `null` if no minimum date is needed. - * - * @attribute minimumDate - * @type Date - * @default null - */ - minimumDate: { - value: null, - setter: function (val) { - if (val) { - var curDate = this.get('date'), - newMinDate = this._normalizeDate(val); - if (curDate && !ydate.isGreaterOrEqual(curDate, newMinDate)) { - this.set('date', newMinDate); - } - return newMinDate; - } - else { - return this._normalizeDate(val); - } - } - }, - - /** - * The maximum date that can be displayed by the calendar. The calendar will not - * allow dates later than this one to be set, and will reset any later date to - * this date. Should be `null` if no maximum date is needed. - * - * @attribute maximumDate - * @type Date - * @default null - */ - maximumDate: { - value: null, - setter: function (val) { - if (val) { - var curDate = this.get('date'), - newMaxDate = this._normalizeDate(val); - if (curDate && !ydate.isGreaterOrEqual(val, ydate.addMonths(curDate, this._paneNumber - 1))) { - this.set('date', ydate.addMonths(newMaxDate, -1*(this._paneNumber -1))); - } - return newMaxDate; - } - else { - return val; - } - } - } - } -}); - -}, '3.7.3', {"requires": ["calendar-base", "calendarnavigator"], "lang": ["de", "en", "fr", "ja", "nb-NO", "pt-BR", "ru", "zh-HANT-TW"], "skinnable": true}); diff --git a/lib/yuilib/3.7.3/build/calendar/calendar-min.js b/lib/yuilib/3.7.3/build/calendar/calendar-min.js deleted file mode 100644 index 099cee8cf0e..00000000000 --- a/lib/yuilib/3.7.3/build/calendar/calendar-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("calendar",function(e,t){function E(e){E.superclass.constructor.apply(this,arguments)}var n=e.ClassNameManager.getClassName,r="calendar",i=40,s=38,o=37,u=39,a=13,f=32,l=n(r,"header"),c=n(r,"day-selected"),h=n(r,"day-highlighted"),p=n(r,"day"),d=n(r,"prevmonth-day"),v=n(r,"nextmonth-day"),m=n(r,"grid"),g=e.DataType.Date,y=e.delegate,b=n(r,"pane"),w=e.UA.os;e.Calendar=e.extend(E,e.CalendarBase,{_keyEvents:[],_highlightedDateNode:null,_lastSelectedDate:null,initializer:function(){this.plug(e.Plugin.CalendarNavigator),this._keyEvents=[],this._highlightedDateNode=null,this._lastSelectedDate=null},_bindCalendarEvents:function(){var e=this.get("contentBox"),t=e.one("."+b);t.on("selectstart",this._preventSelectionStart),t.delegate("click",this._clickCalendar,"."+p+", ."+d+", ."+v,this),t.delegate("keydown",this._keydownCalendar,"."+m,this),t.delegate("focus",this._focusCalendarGrid,"."+m,this),t.delegate("focus",this._focusCalendarCell,"."+p,this),t.delegate("blur",this._blurCalendarGrid,"."+m+",."+p,this)},_preventSelectionStart:function(e){e.preventDefault()},_highlightDateNode:function(e){this._unhighlightCurrentDateNode();var t=this._dateToNode(e);t.focus(),t.addClass(h)},_unhighlightCurrentDateNode:function(){var e=this.get("contentBox").all("."+h);e&&e.removeClass(h)},_getGridNumber:function(e){var t=e.get("id").split("_").reverse();return parseInt(t[0],10)},_blurCalendarGrid:function(e){this._unhighlightCurrentDateNode()},_focusCalendarCell:function(e){this._highlightedDateNode=e.target,e.stopPropagation()},_focusCalendarGrid:function(e){this._unhighlightCurrentDateNode(),this._highlightedDateNode=null},_keydownCalendar:function(e){var t=this._getGridNumber(e.target),n=this._highlightedDateNode?this._nodeToDate(this._highlightedDateNode):null,r=e.keyCode,l=0,h="";switch(r){case i:l=7,h="s";break;case s:l=-7,h="n";break;case o:l=-1,h="w";break;case u:l=1,h="e";break;case f:case a:e.preventDefault();if(this._highlightedDateNode){var p=this.get("selectionMode");if(p==="single"&&!this._highlightedDateNode.hasClass(c))this._clearSelection(!0),this._addDateToSelection(n);else if(p==="multiple"||p==="multiple-sticky")this._highlightedDateNode.hasClass(c)?this._removeDateFromSelection(n):this._addDateToSelection(n)}}if(r==i||r==s||r==o||r==u){n||(n=g.addMonths(this.get("date"),t),l=0),e.preventDefault();var d=g.addDays(n,l),v=this.get("date"),m=g.addMonths(this.get("date"),this._paneNumber-1),y=new Date(m);m.setDate(g.daysInMonth(m)),g.isInRange(d,v,m)?this._highlightDateNode(d):g.isGreater(v,d)?g.isGreaterOrEqual(this.get("minimumDate"),v)||(this.set("date",g.addMonths(v,-1)),this._highlightDateNode(d)):g.isGreater(d,m)&&(g.isGreaterOrEqual(y,this.get("maximumDate"))||(this.set("date",g.addMonths(v,1)),this._highlightDateNode(d)))}},_clickCalendar:function(e){var t=e.currentTarget,n=t.hasClass(p)&&!t.hasClass(d)&&!t.hasClass(v),r=t.hasClass(c);switch(this.get("selectionMode")){case"single":n&&(r||(this._clearSelection(!0),this._addDateToSelection(this._nodeToDate(t))));break;case"multiple-sticky":n&&(r?this._removeDateFromSelection(this._nodeToDate(t)):this._addDateToSelection(this._nodeToDate(t)));break;case"multiple":if(n)if(!e.metaKey&&!e.ctrlKey&&!e.shiftKey)this._clearSelection(!0),this._lastSelectedDate=this._nodeToDate(t),this._addDateToSelection(this._lastSelectedDate);else if((w=="macintosh"&&e.metaKey||w!="macintosh"&&e.ctrlKey)&&!e.shiftKey)r?(this._removeDateFromSelection(this._nodeToDate(t)),this._lastSelectedDate=null):(this._lastSelectedDate=this._nodeToDate(t),this._addDateToSelection(this._lastSelectedDate));else if((w=="macintosh"&&e.metaKey||w!="macintosh"&&e.ctrlKey)&&e.shiftKey)if(this._lastSelectedDate){var i=this._nodeToDate(t);this._addDateRangeToSelection(i,this._lastSelectedDate),this._lastSelectedDate=i}else this._lastSelectedDate=this._nodeToDate(t),this._addDateToSelection(this._lastSelectedDate);else if(e.shiftKey)if(this._lastSelectedDate){var i=this._nodeToDate(t);this._clearSelection(!0),this._addDateRangeToSelection(i,this._lastSelectedDate),this._lastSelectedDate=i}else this._clearSelection(!0),this._lastSelectedDate=this._nodeToDate(t),this._addDateToSelection(this._lastSelectedDate)}n?this.fire("dateClick",{cell:t,date:this._nodeToDate(t)}):t.hasClass(d)?this.fire("prevMonthClick"):t.hasClass(v)&&this.fire("nextMonthClick")},subtractMonth:function(e){this.set("date",g.addMonths(this.get("date"),-1)),e&&e.halt()},subtractYear:function(e){this.set("date",g.addYears(this.get("date"),-1)),e&&e.halt()},addMonth:function(e){this.set("date",g.addMonths(this.get("date"),1)),e&&e.halt()},addYear:function(e){this.set("date",g.addYears(this.get("date"),1)),e&&e.halt()}},{NAME:"calendar",ATTRS:{selectionMode:{value:"single"},date:{value:new Date,lazyAdd:!1,setter:function(e){var t=this._normalizeDate(e),n=g.addMonths(t,this._paneNumber-1),r=this.get("minimumDate"),i=this.get("maximumDate");if((!r||g.isGreaterOrEqual(t,r))&&(!i||g.isGreaterOrEqual(i,n)))return t;if(r&&g.isGreater(r,t))return r;if(i&&g.isGreater(n,i)){var s=g.addMonths(i,-1*(this._paneNumber-1));return s}}},minimumDate:{value:null,setter:function(e){if(e){var t=this.get("date"),n=this._normalizeDate(e);return t&&!g.isGreaterOrEqual(t,n)&&this.set("date",n),n}return this._normalizeDate(e)}},maximumDate:{value:null,setter:function(e){if(e){var t=this.get("date"),n=this._normalizeDate(e);return t&&!g.isGreaterOrEqual(e,g.addMonths(t,this._paneNumber-1))&&this.set("date",g.addMonths(n,-1*(this._paneNumber-1))),n}return e}}}})},"3.7.3",{requires:["calendar-base","calendarnavigator"],lang:["de","en","fr","ja","nb-NO","pt-BR","ru","zh-HANT-TW"],skinnable:!0}); diff --git a/lib/yuilib/3.7.3/build/calendar/calendar.js b/lib/yuilib/3.7.3/build/calendar/calendar.js deleted file mode 100644 index fa7ae8c17b2..00000000000 --- a/lib/yuilib/3.7.3/build/calendar/calendar.js +++ /dev/null @@ -1,553 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add('calendar', function (Y, NAME) { - -/** - * The Calendar component is a UI widget that allows users - * to view dates in a two-dimensional month grid, as well as - * to select one or more dates, or ranges of dates. Calendar - * is generated dynamically and relies on the developer to - * provide for a progressive enhancement alternative. - * - * - * @module calendar - */ - -var getCN = Y.ClassNameManager.getClassName, - CALENDAR = 'calendar', - KEY_DOWN = 40, - KEY_UP = 38, - KEY_LEFT = 37, - KEY_RIGHT = 39, - KEY_ENTER = 13, - KEY_SPACE = 32, - CAL_HD = getCN(CALENDAR, 'header'), - CAL_DAY_SELECTED = getCN(CALENDAR, 'day-selected'), - CAL_DAY_HILITED = getCN(CALENDAR, 'day-highlighted'), - CAL_DAY = getCN(CALENDAR, 'day'), - CAL_PREVMONTH_DAY = getCN(CALENDAR, 'prevmonth-day'), - CAL_NEXTMONTH_DAY = getCN(CALENDAR, 'nextmonth-day'), - CAL_GRID = getCN(CALENDAR, 'grid'), - ydate = Y.DataType.Date, - delegate = Y.delegate, - CAL_PANE = getCN(CALENDAR, 'pane'), - os = Y.UA.os; - -/** Create a calendar view to represent a single or multiple - * month range of dates, rendered as a grid with date and - * weekday labels. - * - * @class Calendar - * @extends CalendarBase - * @param config {Object} Configuration object (see Configuration attributes) - * @constructor - */ -function Calendar(config) { - Calendar.superclass.constructor.apply ( this, arguments ); -} - -Y.Calendar = Y.extend(Calendar, Y.CalendarBase, { - - _keyEvents: [], - - _highlightedDateNode: null, - - /** - * A property tracking the last selected date on the calendar, for the - * purposes of multiple selection. - * - * @property _lastSelectedDate - * @type Date - * @default null - * @private - */ - _lastSelectedDate: null, - - /** - * Designated initializer. Activates the navigation plugin for the calendar. - * - * @method initializer - */ - initializer : function () { - this.plug(Y.Plugin.CalendarNavigator); - - - this._keyEvents = []; - this._highlightedDateNode = null; - this._lastSelectedDate = null; - }, - - /** - * Overrides the _bindCalendarEvents placeholder in CalendarBase - * and binds calendar events during bindUI stage. - * @method _bindCalendarEvents - * @protected - */ - _bindCalendarEvents : function () { - var contentBox = this.get('contentBox'), - pane = contentBox.one("." + CAL_PANE); - pane.on("selectstart", this._preventSelectionStart); - pane.delegate("click", this._clickCalendar, "." + CAL_DAY + ", ." + CAL_PREVMONTH_DAY + ", ." + CAL_NEXTMONTH_DAY, this); - pane.delegate("keydown", this._keydownCalendar, "." + CAL_GRID, this); - pane.delegate("focus", this._focusCalendarGrid, "." + CAL_GRID, this); - pane.delegate("focus", this._focusCalendarCell, "." + CAL_DAY, this); - pane.delegate("blur", this._blurCalendarGrid, "." + CAL_GRID + ",." + CAL_DAY, this); - }, - - /** - * Prevents text selection if it is started within the calendar pane - * @method _preventSelectionStart - * @param event {Event} The selectstart event - * @protected - */ - _preventSelectionStart : function (event) { - event.preventDefault(); - }, - - /** - * Highlights a specific date node with keyboard highlight class - * @method _highlightDateNode - * @param oDate {Date} Date corresponding the node to be highlighted - * @protected - */ - _highlightDateNode : function (oDate) { - this._unhighlightCurrentDateNode(); - var newNode = this._dateToNode(oDate); - newNode.focus(); - newNode.addClass(CAL_DAY_HILITED); - }, - - /** - * Unhighlights a specific date node currently highlighted with keyboard highlight class - * @method _unhighlightCurrentDateNode - * @protected - */ - _unhighlightCurrentDateNode : function () { - var allHilitedNodes = this.get("contentBox").all("." + CAL_DAY_HILITED); - if (allHilitedNodes) { - allHilitedNodes.removeClass(CAL_DAY_HILITED); - } - }, - - /** - * Returns the grid number for a specific calendar grid (for multi-grid templates) - * @method _getGridNumber - * @param gridNode {Node} Node corresponding to a specific grid - * @protected - */ - _getGridNumber : function (gridNode) { - var idParts = gridNode.get("id").split("_").reverse(); - return parseInt(idParts[0], 10); - }, - - /** - * Handler for loss of focus of calendar grid - * @method _blurCalendarGrid - * @protected - */ - _blurCalendarGrid : function (ev) { - this._unhighlightCurrentDateNode(); - }, - - - /** - * Handler for gain of focus of calendar cell - * @method _focusCalendarCell - * @protected - */ - _focusCalendarCell : function (ev) { - this._highlightedDateNode = ev.target; - ev.stopPropagation(); - }, - - /** - * Handler for gain of focus of calendar grid - * @method _focusCalendarGrid - * @protected - */ - _focusCalendarGrid : function (ev) { - this._unhighlightCurrentDateNode(); - this._highlightedDateNode = null; - }, - - /** - * Handler for keyboard press on a calendar grid - * @method _keydownCalendar - * @protected - */ - _keydownCalendar : function (ev) { - var gridNum = this._getGridNumber(ev.target), - curDate = !this._highlightedDateNode ? null : this._nodeToDate(this._highlightedDateNode), - keyCode = ev.keyCode, - dayNum = 0, - dir = ''; - - switch(keyCode) { - case KEY_DOWN: - dayNum = 7; - dir = 's'; - break; - case KEY_UP: - dayNum = -7; - dir = 'n'; - break; - case KEY_LEFT: - dayNum = -1; - dir = 'w'; - break; - case KEY_RIGHT: - dayNum = 1; - dir = 'e'; - break; - case KEY_SPACE: case KEY_ENTER: - ev.preventDefault(); - if (this._highlightedDateNode) { - var selMode = this.get("selectionMode"); - if (selMode === "single" && !this._highlightedDateNode.hasClass(CAL_DAY_SELECTED)) { - this._clearSelection(true); - this._addDateToSelection(curDate); - } - else if (selMode === "multiple" || selMode === "multiple-sticky") { - if (this._highlightedDateNode.hasClass(CAL_DAY_SELECTED)) { - this._removeDateFromSelection(curDate); - } - else { - this._addDateToSelection(curDate); - } - } - } - break; - } - - - if (keyCode == KEY_DOWN || keyCode == KEY_UP || keyCode == KEY_LEFT || keyCode == KEY_RIGHT) { - - if (!curDate) { - curDate = ydate.addMonths(this.get("date"), gridNum); - dayNum = 0; - } - ev.preventDefault(); - var newDate = ydate.addDays(curDate, dayNum), - startDate = this.get("date"), - endDate = ydate.addMonths(this.get("date"), this._paneNumber - 1), - lastPaneDate = new Date(endDate); - endDate.setDate(ydate.daysInMonth(endDate)); - - if (ydate.isInRange(newDate, startDate, endDate)) { -/* - var paneShift = (newDate.getMonth() - curDate.getMonth()) % 10; - - - if (paneShift != 0) { - var newGridNum = gridNum + paneShift, - contentBox = this.get('contentBox'), - newPane = contentBox.one("#" + this._calendarId + "_pane_" + newGridNum); - newPane.focus(); - } -*/ - this._highlightDateNode(newDate); - } - else if (ydate.isGreater(startDate, newDate)) { - if (!ydate.isGreaterOrEqual(this.get("minimumDate"), startDate)) { - this.set("date", ydate.addMonths(startDate, -1)); - this._highlightDateNode(newDate); - } - } - else if (ydate.isGreater(newDate, endDate)) { - if (!ydate.isGreaterOrEqual(lastPaneDate, this.get("maximumDate"))) { - this.set("date", ydate.addMonths(startDate, 1)); - this._highlightDateNode(newDate); - } - } - - } - }, - - /** - * Handles the calendar clicks based on selection mode. - * @method _clickCalendar - * @param {Event} ev A click event - * @private - */ - _clickCalendar : function (ev) { - var clickedCell = ev.currentTarget, - clickedCellIsDay = clickedCell.hasClass(CAL_DAY) && - !clickedCell.hasClass(CAL_PREVMONTH_DAY) && - !clickedCell.hasClass(CAL_NEXTMONTH_DAY), - clickedCellIsSelected = clickedCell.hasClass(CAL_DAY_SELECTED); - switch (this.get("selectionMode")) { - case("single"): - if (clickedCellIsDay) { - if (!clickedCellIsSelected) { - this._clearSelection(true); - this._addDateToSelection(this._nodeToDate(clickedCell)); - } - } - break; - case("multiple-sticky"): - if (clickedCellIsDay) { - if (clickedCellIsSelected) { - this._removeDateFromSelection(this._nodeToDate(clickedCell)); - } - else { - this._addDateToSelection(this._nodeToDate(clickedCell)); - } - } - break; - case("multiple"): - if (clickedCellIsDay) { - if (!ev.metaKey && !ev.ctrlKey && !ev.shiftKey) { - this._clearSelection(true); - this._lastSelectedDate = this._nodeToDate(clickedCell); - this._addDateToSelection(this._lastSelectedDate); - } - else if (((os == 'macintosh' && ev.metaKey) || (os != 'macintosh' && ev.ctrlKey)) && !ev.shiftKey) { - if (clickedCellIsSelected) { - this._removeDateFromSelection(this._nodeToDate(clickedCell)); - this._lastSelectedDate = null; - } - else { - this._lastSelectedDate = this._nodeToDate(clickedCell); - this._addDateToSelection(this._lastSelectedDate); - } - } - else if (((os == 'macintosh' && ev.metaKey) || (os != 'macintosh' && ev.ctrlKey)) && ev.shiftKey) { - if (this._lastSelectedDate) { - var selectedDate = this._nodeToDate(clickedCell); - this._addDateRangeToSelection(selectedDate, this._lastSelectedDate); - this._lastSelectedDate = selectedDate; - } - else { - this._lastSelectedDate = this._nodeToDate(clickedCell); - this._addDateToSelection(this._lastSelectedDate); - } - - } - else if (ev.shiftKey) { - if (this._lastSelectedDate) { - var selectedDate = this._nodeToDate(clickedCell); - this._clearSelection(true); - this._addDateRangeToSelection(selectedDate, this._lastSelectedDate); - this._lastSelectedDate = selectedDate; - } - else { - this._clearSelection(true); - this._lastSelectedDate = this._nodeToDate(clickedCell); - this._addDateToSelection(this._lastSelectedDate); - } - } - } - break; - } - - if (clickedCellIsDay) { - /** - * Fired when a specific date cell in the calendar is clicked. The event carries a - * payload which includes a `cell` property corresponding to the node of the actual - * date cell, and a `date` property, with the `Date` that was clicked. - * - * @event dateClick - */ - this.fire("dateClick", {cell: clickedCell, date: this._nodeToDate(clickedCell)}); - } - else if (clickedCell.hasClass(CAL_PREVMONTH_DAY)) { - /** - * Fired when any of the previous month's days displayed before the calendar grid - * are clicked. - * - * @event prevMonthClick - */ - this.fire("prevMonthClick"); - } - else if (clickedCell.hasClass(CAL_NEXTMONTH_DAY)) { - /** - * Fired when any of the next month's days displayed after the calendar grid - * are clicked. - * - * @event nextMonthClick - */ - this.fire("nextMonthClick"); - } - }, - - /** - * Subtracts one month from the current calendar view. - * @method subtractMonth - */ - subtractMonth : function (e) { - this.set("date", ydate.addMonths(this.get("date"), -1)); - if (e) { - e.halt(); - } - }, - - /** - * Subtracts one year from the current calendar view. - * @method subtractYear - */ - subtractYear : function (e) { - this.set("date", ydate.addYears(this.get("date"), -1)); - if (e) { - e.halt(); - } - }, - - /** - * Adds one month to the current calendar view. - * @method addMonth - */ - addMonth : function (e) { - this.set("date", ydate.addMonths(this.get("date"), 1)); - if (e) { - e.halt(); - } - }, - - /** - * Adds one year to the current calendar view. - * @method addYear - */ - addYear : function (e) { - this.set("date", ydate.addYears(this.get("date"), 1)); - if (e) { - e.halt(); - } - } -}, - -{ - /** - * The identity of the widget. - * - * @property NAME - * @type String - * @default 'calendar' - * @readOnly - * @protected - * @static - */ - NAME: "calendar", - - /** - * Static property used to define the default attribute configuration of - * the Widget. - * - * @property ATTRS - * @type {Object} - * @protected - * @static - */ - ATTRS: { - - /** - * A setting specifying the type of selection the calendar allows. - * Possible values include: - *
          - *
        • `single` - One date at a time
        • - *
        • `multiple-sticky` - Multiple dates, selected one at a time (the dates "stick"). This option - * is appropriate for mobile devices, where function keys from the keyboard are not available.
        • - *
        • `multiple` - Multiple dates, selected with Ctrl/Meta keys for additional single - * dates, and Shift key for date ranges.
        • - * - * @attribute selectionMode - * @type String - * @default single - */ - selectionMode: { - value: "single" - }, - - /** - * The date corresponding to the current calendar view. Always - * normalized to the first of the month that contains the date - * at assignment time. Used as the first date visible in the - * calendar. - * - * @attribute date - * @type Date - * @default Today's date as set on the user's computer. - */ - date: { - value: new Date(), - lazyAdd: false, - setter: function (val) { - - var newDate = this._normalizeDate(val), - newTopDate = ydate.addMonths(newDate, this._paneNumber - 1); - var minDate = this.get("minimumDate"); - var maxDate = this.get("maximumDate"); - if ((!minDate || ydate.isGreaterOrEqual(newDate, minDate)) && - (!maxDate || ydate.isGreaterOrEqual(maxDate, newTopDate))) { - return newDate; - } - - else if (minDate && ydate.isGreater(minDate, newDate)) { - return minDate; - } - - else if (maxDate && ydate.isGreater(newTopDate, maxDate)) { - var actualMaxDate = ydate.addMonths(maxDate, -1*(this._paneNumber - 1)); - return actualMaxDate; - } - } - }, - - /** - * The minimum date that can be displayed by the calendar. The calendar will not - * allow dates earlier than this one to be set, and will reset any earlier date to - * this date. Should be `null` if no minimum date is needed. - * - * @attribute minimumDate - * @type Date - * @default null - */ - minimumDate: { - value: null, - setter: function (val) { - if (val) { - var curDate = this.get('date'), - newMinDate = this._normalizeDate(val); - if (curDate && !ydate.isGreaterOrEqual(curDate, newMinDate)) { - this.set('date', newMinDate); - } - return newMinDate; - } - else { - return this._normalizeDate(val); - } - } - }, - - /** - * The maximum date that can be displayed by the calendar. The calendar will not - * allow dates later than this one to be set, and will reset any later date to - * this date. Should be `null` if no maximum date is needed. - * - * @attribute maximumDate - * @type Date - * @default null - */ - maximumDate: { - value: null, - setter: function (val) { - if (val) { - var curDate = this.get('date'), - newMaxDate = this._normalizeDate(val); - if (curDate && !ydate.isGreaterOrEqual(val, ydate.addMonths(curDate, this._paneNumber - 1))) { - this.set('date', ydate.addMonths(newMaxDate, -1*(this._paneNumber -1))); - } - return newMaxDate; - } - else { - return val; - } - } - } - } -}); - -}, '3.7.3', {"requires": ["calendar-base", "calendarnavigator"], "lang": ["de", "en", "fr", "ja", "nb-NO", "pt-BR", "ru", "zh-HANT-TW"], "skinnable": true}); diff --git a/lib/yuilib/3.7.3/build/calendarnavigator/calendarnavigator-min.js b/lib/yuilib/3.7.3/build/calendarnavigator/calendarnavigator-min.js deleted file mode 100644 index 0373c3f2059..00000000000 --- a/lib/yuilib/3.7.3/build/calendarnavigator/calendarnavigator-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("calendarnavigator",function(e,t){function m(e){m.superclass.constructor.apply(this,arguments)}var n="contentBox",r="host",i="rendered",s=e.ClassNameManager.getClassName,o=e.substitute,u=e.Node,a=u.create,f="calendar",l="calendarnav",c=s(f,"header"),h=s(l,"prevmonth"),p=s(l,"nextmonth"),d=s(l,"month-disabled"),v=e.DataType.Date;m.NS="navigator",m.NAME="pluginCalendarNavigator",m.ATTRS={shiftByMonths:{value:1}},m.CALENDARNAV_STRINGS={prev_month_class:h,next_month_class:p},m.PREV_MONTH_CONTROL_TEMPLATE='<',m.NEXT_MONTH_CONTROL_TEMPLATE='>',e.extend(m,e.Plugin.Base,{_eventAttachments:{},_controls:{},initializer:function(e){this._controls={},this._eventAttachments={},this.afterHostMethod("renderUI",this._initNavigationControls)},destructor:function(){},_focusNavigation:function(e){e.currentTarget.focus()},_subtractMonths:function(e){if(e.type==="click"||e.type==="keydown"&&(e.keyCode==13||e.keyCode==32)){var t=this.get(r),n=t.get("date");t.set("date",v.addMonths(n,-1*this.get("shiftByMonths"))),e.preventDefault()}},_addMonths:function(e){if(e.type==="click"||e.type==="keydown"&&(e.keyCode==13||e.keyCode==32)){var t=this.get(r),n=t.get("date");t.set("date",v.addMonths(n,this.get("shiftByMonths"))),e.preventDefault()}},_updateControlState:function(){var e=this.get(r);v.areEqual(e.get("minimumDate"),e.get("date"))?(this._eventAttachments.prevMonth&&(this._eventAttachments.prevMonth.detach(),this._eventAttachments.prevMonth=!1),this._controls.prevMonth.hasClass(d)||this._controls.prevMonth.addClass(d).setAttribute("aria-disabled","true")):(this._eventAttachments.prevMonth||(this._eventAttachments.prevMonth=this._controls.prevMonth.on(["click","keydown"],this._subtractMonths,this)),this._controls.prevMonth.hasClass(d)&&this._controls.prevMonth.removeClass(d).setAttribute("aria-disabled","false")),v.areEqual(e.get("maximumDate"),v.addMonths(e.get("date"),e._paneNumber-1))?(this._eventAttachments.nextMonth&&(this._eventAttachments.nextMonth.detach(),this._eventAttachments.nextMonth=!1),this._controls.nextMonth.hasClass(d)||this._controls.nextMonth.addClass(d).setAttribute("aria-disabled","true")):(this._eventAttachments.nextMonth||(this._eventAttachments.nextMonth=this._controls.nextMonth.on(["click","keydown"],this._addMonths,this)),this._controls.nextMonth.hasClass(d)&&this._controls.nextMonth.removeClass(d).setAttribute("aria-disabled","false")),this._controls.prevMonth.on(["click","keydown"],this._focusNavigation,this),this._controls.nextMonth.on(["click","keydown"],this._focusNavigation,this)},_renderPrevControls:function(){var e=a(o(m.PREV_MONTH_CONTROL_TEMPLATE,m.CALENDARNAV_STRINGS));return e.on("selectstart",this.get(r)._preventSelectionStart),e},_renderNextControls:function(){var e=a(o(m.NEXT_MONTH_CONTROL_TEMPLATE,m.CALENDARNAV_STRINGS));return e.on("selectstart",this.get(r)._preventSelectionStart),e},_initNavigationControls:function(){var e=this.get(r);m.CALENDARNAV_STRINGS.control_tabindex=e.get("tabIndex"),m.CALENDARNAV_STRINGS.prev_month_arialabel="Go to previous month",m.CALENDARNAV_STRINGS.next_month_arialabel="Go to next month";var t=e.get(n).one("."+c);this._controls.prevMonth=this._renderPrevControls(),this._controls.nextMonth=this._renderNextControls(),this._updateControlState(),e.after("dateChange",this._updateControlState,this),t.prepend(this._controls.prevMonth),t.append(this._controls.nextMonth)}}),e.namespace("Plugin").CalendarNavigator=m},"3.7.3",{requires:["plugin","classnamemanager","datatype-date","node","substitute"],skinnable:!0}); diff --git a/lib/yuilib/3.7.3/build/cookie/cookie-coverage.js b/lib/yuilib/3.7.3/build/cookie/cookie-coverage.js deleted file mode 100644 index 6a5f5b71674..00000000000 --- a/lib/yuilib/3.7.3/build/cookie/cookie-coverage.js +++ /dev/null @@ -1,678 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -if (typeof _yuitest_coverage == "undefined"){ - _yuitest_coverage = {}; - _yuitest_coverline = function(src, line){ - var coverage = _yuitest_coverage[src]; - if (!coverage.lines[line]){ - coverage.calledLines++; - } - coverage.lines[line]++; - }; - _yuitest_coverfunc = function(src, name, line){ - var coverage = _yuitest_coverage[src], - funcId = name + ":" + line; - if (!coverage.functions[funcId]){ - coverage.calledFunctions++; - } - coverage.functions[funcId]++; - }; -} -_yuitest_coverage["build/cookie/cookie.js"] = { - lines: {}, - functions: {}, - coveredLines: 0, - calledLines: 0, - coveredFunctions: 0, - calledFunctions: 0, - path: "build/cookie/cookie.js", - code: [] -}; -_yuitest_coverage["build/cookie/cookie.js"].code=["YUI.add('cookie', function (Y, NAME) {","","/**"," * Utilities for cookie management"," * @module cookie"," */",""," //shortcuts"," var L = Y.Lang,"," O = Y.Object,"," NULL = null,"," "," //shortcuts to functions"," isString = L.isString,"," isObject = L.isObject,"," isUndefined = L.isUndefined,"," isFunction = L.isFunction,"," encode = encodeURIComponent,"," decode = decodeURIComponent,"," "," //shortcut to document"," doc = Y.config.doc;"," "," /*"," * Throws an error message."," */"," function error(message){"," throw new TypeError(message);"," } "," "," /*"," * Checks the validity of a cookie name."," */"," function validateCookieName(name){"," if (!isString(name) || name === \"\"){"," error(\"Cookie name must be a non-empty string.\");"," } "," }"," "," /*"," * Checks the validity of a subcookie name."," */ "," function validateSubcookieName(subName){"," if (!isString(subName) || subName === \"\"){"," error(\"Subcookie name must be a non-empty string.\");"," } "," }"," "," /**"," * Cookie utility."," * @class Cookie"," * @static"," */"," Y.Cookie = {"," "," //-------------------------------------------------------------------------"," // Private Methods"," //-------------------------------------------------------------------------"," "," /**"," * Creates a cookie string that can be assigned into document.cookie."," * @param {String} name The name of the cookie."," * @param {String} value The value of the cookie."," * @param {Boolean} encodeValue True to encode the value, false to leave as-is."," * @param {Object} options (Optional) Options for the cookie."," * @return {String} The formatted cookie string."," * @method _createCookieString"," * @private"," * @static"," */"," _createCookieString : function (name /*:String*/, value /*:Variant*/, encodeValue /*:Boolean*/, options /*:Object*/) /*:String*/ {"," "," options = options || {};"," "," var text /*:String*/ = encode(name) + \"=\" + (encodeValue ? encode(value) : value),"," expires = options.expires,"," path = options.path,"," domain = options.domain;"," "," "," if (isObject(options)){"," //expiration date"," if (expires instanceof Date){"," text += \"; expires=\" + expires.toUTCString();"," }"," "," //path"," if (isString(path) && path !== \"\"){"," text += \"; path=\" + path;"," }"," "," //domain"," if (isString(domain) && domain !== \"\"){"," text += \"; domain=\" + domain;"," }"," "," //secure"," if (options.secure === true){"," text += \"; secure\";"," }"," }"," "," return text;"," },"," "," /**"," * Formats a cookie value for an object containing multiple values."," * @param {Object} hash An object of key-value pairs to create a string for."," * @return {String} A string suitable for use as a cookie value."," * @method _createCookieHashString"," * @private"," * @static"," */"," _createCookieHashString : function (hash /*:Object*/) /*:String*/ {"," if (!isObject(hash)){"," error(\"Cookie._createCookieHashString(): Argument must be an object.\");"," }"," "," var text /*:Array*/ = [];",""," O.each(hash, function(value, key){"," if (!isFunction(value) && !isUndefined(value)){"," text.push(encode(key) + \"=\" + encode(String(value)));"," } "," });"," "," return text.join(\"&\");"," },"," "," /**"," * Parses a cookie hash string into an object."," * @param {String} text The cookie hash string to parse (format: n1=v1&n2=v2)."," * @return {Object} An object containing entries for each cookie value."," * @method _parseCookieHash"," * @private"," * @static"," */"," _parseCookieHash : function (text) {"," "," var hashParts = text.split(\"&\"),"," hashPart = NULL,"," hash = {};"," "," if (text.length){"," for (var i=0, len=hashParts.length; i < len; i++){"," hashPart = hashParts[i].split(\"=\");"," hash[decode(hashPart[0])] = decode(hashPart[1]);"," }"," }"," "," return hash; "," },"," "," /**"," * Parses a cookie string into an object representing all accessible cookies."," * @param {String} text The cookie string to parse."," * @param {Boolean} shouldDecode (Optional) Indicates if the cookie values should be decoded or not. Default is true."," * @return {Object} An object containing entries for each accessible cookie."," * @method _parseCookieString"," * @private"," * @static"," */"," _parseCookieString : function (text /*:String*/, shouldDecode /*:Boolean*/) /*:Object*/ {"," "," var cookies /*:Object*/ = {}; "," "," if (isString(text) && text.length > 0) {"," "," var decodeValue = (shouldDecode === false ? function(s){return s;} : decode), "," cookieParts = text.split(/;\\s/g),"," cookieName = NULL,"," cookieValue = NULL,"," cookieNameValue = NULL;"," "," for (var i=0, len=cookieParts.length; i < len; i++){"," "," //check for normally-formatted cookie (name-value)"," cookieNameValue = cookieParts[i].match(/([^=]+)=/i);"," if (cookieNameValue instanceof Array){"," try {"," cookieName = decode(cookieNameValue[1]);"," cookieValue = decodeValue(cookieParts[i].substring(cookieNameValue[1].length+1));"," } catch (ex){"," //intentionally ignore the cookie - the encoding is wrong"," }"," } else {"," //means the cookie does not have an \"=\", so treat it as a boolean flag"," cookieName = decode(cookieParts[i]);"," cookieValue = \"\";"," }"," cookies[cookieName] = cookieValue;"," }",""," }"," "," return cookies;"," }, "," "," /**"," * Sets the document object that the cookie utility uses for setting"," * cookies. This method is necessary to ensure that the cookie utility"," * unit tests can pass even when run on a domain instead of locally."," * This method should not be used otherwise; you should use "," * Y.config.doc to change the document that the cookie"," * utility uses for everyday purposes."," * @param {Object} newDoc The object to use as the document."," * @return {void}"," * @method _setDoc"," * @private"," */ "," _setDoc: function(newDoc){"," doc = newDoc;"," },"," "," //-------------------------------------------------------------------------"," // Public Methods"," //-------------------------------------------------------------------------"," "," /**"," * Determines if the cookie with the given name exists. This is useful for"," * Boolean cookies (those that do not follow the name=value convention)."," * @param {String} name The name of the cookie to check."," * @return {Boolean} True if the cookie exists, false if not."," * @method exists"," * @static"," */"," exists: function(name) {"," "," validateCookieName(name); //throws error"," "," var cookies = this._parseCookieString(doc.cookie, true);"," "," return cookies.hasOwnProperty(name);"," }, "," "," /**"," * Returns the cookie value for the given name."," * @param {String} name The name of the cookie to retrieve."," * @param {Function|Object} options (Optional) An object containing one or more"," * cookie options: raw (true/false) and converter (a function)."," * The converter function is run on the value before returning it. The"," * function is not used if the cookie doesn't exist. The function can be"," * passed instead of the options object for backwards compatibility. When"," * raw is set to true, the cookie value is not URI decoded."," * @return {Variant} If no converter is specified, returns a string or null if"," * the cookie doesn't exist. If the converter is specified, returns the value"," * returned from the converter or null if the cookie doesn't exist."," * @method get"," * @static"," */"," get : function (name, options) {"," "," validateCookieName(name); //throws error "," "," var cookies,"," cookie,"," converter;"," "," //if options is a function, then it's the converter"," if (isFunction(options)) {"," converter = options;"," options = {};"," } else if (isObject(options)) {"," converter = options.converter;"," } else {"," options = {};"," }"," "," cookies = this._parseCookieString(doc.cookie, !options.raw);"," cookie = cookies[name];"," "," //should return null, not undefined if the cookie doesn't exist"," if (isUndefined(cookie)) {"," return NULL;"," }"," "," if (!isFunction(converter)){"," return cookie;"," } else {"," return converter(cookie);"," }"," },"," "," /**"," * Returns the value of a subcookie."," * @param {String} name The name of the cookie to retrieve."," * @param {String} subName The name of the subcookie to retrieve."," * @param {Function} converter (Optional) A function to run on the value before returning"," * it. The function is not used if the cookie doesn't exist."," * @return {Variant} If the cookie doesn't exist, null is returned. If the subcookie"," * doesn't exist, null if also returned. If no converter is specified and the"," * subcookie exists, a string is returned. If a converter is specified and the"," * subcookie exists, the value returned from the converter is returned."," * @method getSub"," * @static"," */"," getSub : function (name /*:String*/, subName /*:String*/, converter /*:Function*/) /*:Variant*/ {"," "," var hash /*:Variant*/ = this.getSubs(name); "," "," if (hash !== NULL) {"," "," validateSubcookieName(subName); //throws error"," "," if (isUndefined(hash[subName])){"," return NULL;"," } "," "," if (!isFunction(converter)){"," return hash[subName];"," } else {"," return converter(hash[subName]);"," }"," } else {"," return NULL;"," }"," "," },"," "," /**"," * Returns an object containing name-value pairs stored in the cookie with the given name."," * @param {String} name The name of the cookie to retrieve."," * @return {Object} An object of name-value pairs if the cookie with the given name"," * exists, null if it does not."," * @method getSubs"," * @static"," */"," getSubs : function (name) {"," "," validateCookieName(name); //throws error"," "," var cookies = this._parseCookieString(doc.cookie, false);"," if (isString(cookies[name])){"," return this._parseCookieHash(cookies[name]);"," }"," return NULL;"," },"," "," /**"," * Removes a cookie from the machine by setting its expiration date to"," * sometime in the past."," * @param {String} name The name of the cookie to remove."," * @param {Object} options (Optional) An object containing one or more"," * cookie options: path (a string), domain (a string), "," * and secure (true/false). The expires option will be overwritten"," * by the method."," * @return {String} The created cookie string."," * @method remove"," * @static"," */"," remove : function (name, options) {"," "," validateCookieName(name); //throws error"," "," //set options"," options = Y.merge(options || {}, {"," expires: new Date(0)"," });"," "," //set cookie"," return this.set(name, \"\", options);"," },"," "," /**"," * Removes a sub cookie with a given name."," * @param {String} name The name of the cookie in which the subcookie exists."," * @param {String} subName The name of the subcookie to remove."," * @param {Object} options (Optional) An object containing one or more"," * cookie options: path (a string), domain (a string), expires (a Date object),"," * removeIfEmpty (true/false), and secure (true/false). This must be the same"," * settings as the original subcookie."," * @return {String} The created cookie string."," * @method removeSub"," * @static"," */"," removeSub : function(name, subName, options) {"," "," validateCookieName(name); //throws error"," "," validateSubcookieName(subName); //throws error"," "," options = options || {};"," "," //get all subcookies for this cookie"," var subs = this.getSubs(name);"," "," //delete the indicated subcookie"," if (isObject(subs) && subs.hasOwnProperty(subName)){"," delete subs[subName];"," "," if (!options.removeIfEmpty) {"," //reset the cookie"," "," return this.setSubs(name, subs, options);"," } else {"," //reset the cookie if there are subcookies left, else remove"," for (var key in subs){"," if (subs.hasOwnProperty(key) && !isFunction(subs[key]) && !isUndefined(subs[key])){"," return this.setSubs(name, subs, options);"," }"," }"," "," return this.remove(name, options);"," } "," } else {"," return \"\";"," }"," "," },"," "," /**"," * Sets a cookie with a given name and value."," * @param {String} name The name of the cookie to set."," * @param {Variant} value The value to set for the cookie."," * @param {Object} options (Optional) An object containing one or more"," * cookie options: path (a string), domain (a string), expires (a Date object),"," * secure (true/false), and raw (true/false). Setting raw to true indicates"," * that the cookie should not be URI encoded before being set."," * @return {String} The created cookie string."," * @method set"," * @static"," */"," set : function (name, value, options) {"," "," validateCookieName(name); //throws error"," "," if (isUndefined(value)){"," error(\"Cookie.set(): Value cannot be undefined.\");"," }"," "," options = options || {};"," "," var text = this._createCookieString(name, value, !options.raw, options);"," doc.cookie = text;"," return text;"," },"," "," /**"," * Sets a sub cookie with a given name to a particular value."," * @param {String} name The name of the cookie to set."," * @param {String} subName The name of the subcookie to set."," * @param {Variant} value The value to set."," * @param {Object} options (Optional) An object containing one or more"," * cookie options: path (a string), domain (a string), expires (a Date object),"," * and secure (true/false)."," * @return {String} The created cookie string."," * @method setSub"," * @static"," */"," setSub : function (name, subName, value, options) {",""," validateCookieName(name); //throws error"," "," validateSubcookieName(subName); //throws error"," "," if (isUndefined(value)){"," error(\"Cookie.setSub(): Subcookie value cannot be undefined.\");"," }"," "," var hash = this.getSubs(name);"," "," if (!isObject(hash)){"," hash = {};"," }"," "," hash[subName] = value; "," "," return this.setSubs(name, hash, options);"," "," },"," "," /**"," * Sets a cookie with a given name to contain a hash of name-value pairs."," * @param {String} name The name of the cookie to set."," * @param {Object} value An object containing name-value pairs."," * @param {Object} options (Optional) An object containing one or more"," * cookie options: path (a string), domain (a string), expires (a Date object),"," * and secure (true/false)."," * @return {String} The created cookie string."," * @method setSubs"," * @static"," */"," setSubs : function (name, value, options) {"," "," validateCookieName(name); //throws error"," "," if (!isObject(value)){"," error(\"Cookie.setSubs(): Cookie value must be an object.\");"," }"," "," var text /*:String*/ = this._createCookieString(name, this._createCookieHashString(value), false, options);"," doc.cookie = text;"," return text; "," } "," "," };","","","}, '3.7.3', {\"requires\": [\"yui-base\"]});"]; -_yuitest_coverage["build/cookie/cookie.js"].lines = {"1":0,"9":0,"27":0,"28":0,"34":0,"35":0,"36":0,"43":0,"44":0,"45":0,"54":0,"73":0,"75":0,"81":0,"83":0,"84":0,"88":0,"89":0,"93":0,"94":0,"98":0,"99":0,"103":0,"115":0,"116":0,"119":0,"121":0,"122":0,"123":0,"127":0,"140":0,"144":0,"145":0,"146":0,"147":0,"151":0,"165":0,"167":0,"169":0,"175":0,"178":0,"179":0,"180":0,"181":0,"182":0,"188":0,"189":0,"191":0,"196":0,"212":0,"229":0,"231":0,"233":0,"253":0,"255":0,"260":0,"261":0,"262":0,"263":0,"264":0,"266":0,"269":0,"270":0,"273":0,"274":0,"277":0,"278":0,"280":0,"299":0,"301":0,"303":0,"305":0,"306":0,"309":0,"310":0,"312":0,"315":0,"330":0,"332":0,"333":0,"334":0,"336":0,"353":0,"356":0,"361":0,"378":0,"380":0,"382":0,"385":0,"388":0,"389":0,"391":0,"394":0,"397":0,"398":0,"399":0,"403":0,"406":0,"425":0,"427":0,"428":0,"431":0,"433":0,"434":0,"435":0,"452":0,"454":0,"456":0,"457":0,"460":0,"462":0,"463":0,"466":0,"468":0,"485":0,"487":0,"488":0,"491":0,"492":0,"493":0}; -_yuitest_coverage["build/cookie/cookie.js"].functions = {"error:27":0,"validateCookieName:34":0,"validateSubcookieName:43":0,"_createCookieString:71":0,"(anonymous 2):121":0,"_createCookieHashString:114":0,"_parseCookieHash:138":0,"(anonymous 3):169":0,"_parseCookieString:163":0,"_setDoc:211":0,"exists:227":0,"get:251":0,"getSub:297":0,"getSubs:328":0,"remove:351":0,"removeSub:376":0,"set:423":0,"setSub:450":0,"setSubs:483":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/cookie/cookie.js"].coveredLines = 120; -_yuitest_coverage["build/cookie/cookie.js"].coveredFunctions = 20; -_yuitest_coverline("build/cookie/cookie.js", 1); -YUI.add('cookie', function (Y, NAME) { - -/** - * Utilities for cookie management - * @module cookie - */ - - //shortcuts - _yuitest_coverfunc("build/cookie/cookie.js", "(anonymous 1)", 1); -_yuitest_coverline("build/cookie/cookie.js", 9); -var L = Y.Lang, - O = Y.Object, - NULL = null, - - //shortcuts to functions - isString = L.isString, - isObject = L.isObject, - isUndefined = L.isUndefined, - isFunction = L.isFunction, - encode = encodeURIComponent, - decode = decodeURIComponent, - - //shortcut to document - doc = Y.config.doc; - - /* - * Throws an error message. - */ - _yuitest_coverline("build/cookie/cookie.js", 27); -function error(message){ - _yuitest_coverfunc("build/cookie/cookie.js", "error", 27); -_yuitest_coverline("build/cookie/cookie.js", 28); -throw new TypeError(message); - } - - /* - * Checks the validity of a cookie name. - */ - _yuitest_coverline("build/cookie/cookie.js", 34); -function validateCookieName(name){ - _yuitest_coverfunc("build/cookie/cookie.js", "validateCookieName", 34); -_yuitest_coverline("build/cookie/cookie.js", 35); -if (!isString(name) || name === ""){ - _yuitest_coverline("build/cookie/cookie.js", 36); -error("Cookie name must be a non-empty string."); - } - } - - /* - * Checks the validity of a subcookie name. - */ - _yuitest_coverline("build/cookie/cookie.js", 43); -function validateSubcookieName(subName){ - _yuitest_coverfunc("build/cookie/cookie.js", "validateSubcookieName", 43); -_yuitest_coverline("build/cookie/cookie.js", 44); -if (!isString(subName) || subName === ""){ - _yuitest_coverline("build/cookie/cookie.js", 45); -error("Subcookie name must be a non-empty string."); - } - } - - /** - * Cookie utility. - * @class Cookie - * @static - */ - _yuitest_coverline("build/cookie/cookie.js", 54); -Y.Cookie = { - - //------------------------------------------------------------------------- - // Private Methods - //------------------------------------------------------------------------- - - /** - * Creates a cookie string that can be assigned into document.cookie. - * @param {String} name The name of the cookie. - * @param {String} value The value of the cookie. - * @param {Boolean} encodeValue True to encode the value, false to leave as-is. - * @param {Object} options (Optional) Options for the cookie. - * @return {String} The formatted cookie string. - * @method _createCookieString - * @private - * @static - */ - _createCookieString : function (name /*:String*/, value /*:Variant*/, encodeValue /*:Boolean*/, options /*:Object*/) /*:String*/ { - - _yuitest_coverfunc("build/cookie/cookie.js", "_createCookieString", 71); -_yuitest_coverline("build/cookie/cookie.js", 73); -options = options || {}; - - _yuitest_coverline("build/cookie/cookie.js", 75); -var text /*:String*/ = encode(name) + "=" + (encodeValue ? encode(value) : value), - expires = options.expires, - path = options.path, - domain = options.domain; - - - _yuitest_coverline("build/cookie/cookie.js", 81); -if (isObject(options)){ - //expiration date - _yuitest_coverline("build/cookie/cookie.js", 83); -if (expires instanceof Date){ - _yuitest_coverline("build/cookie/cookie.js", 84); -text += "; expires=" + expires.toUTCString(); - } - - //path - _yuitest_coverline("build/cookie/cookie.js", 88); -if (isString(path) && path !== ""){ - _yuitest_coverline("build/cookie/cookie.js", 89); -text += "; path=" + path; - } - - //domain - _yuitest_coverline("build/cookie/cookie.js", 93); -if (isString(domain) && domain !== ""){ - _yuitest_coverline("build/cookie/cookie.js", 94); -text += "; domain=" + domain; - } - - //secure - _yuitest_coverline("build/cookie/cookie.js", 98); -if (options.secure === true){ - _yuitest_coverline("build/cookie/cookie.js", 99); -text += "; secure"; - } - } - - _yuitest_coverline("build/cookie/cookie.js", 103); -return text; - }, - - /** - * Formats a cookie value for an object containing multiple values. - * @param {Object} hash An object of key-value pairs to create a string for. - * @return {String} A string suitable for use as a cookie value. - * @method _createCookieHashString - * @private - * @static - */ - _createCookieHashString : function (hash /*:Object*/) /*:String*/ { - _yuitest_coverfunc("build/cookie/cookie.js", "_createCookieHashString", 114); -_yuitest_coverline("build/cookie/cookie.js", 115); -if (!isObject(hash)){ - _yuitest_coverline("build/cookie/cookie.js", 116); -error("Cookie._createCookieHashString(): Argument must be an object."); - } - - _yuitest_coverline("build/cookie/cookie.js", 119); -var text /*:Array*/ = []; - - _yuitest_coverline("build/cookie/cookie.js", 121); -O.each(hash, function(value, key){ - _yuitest_coverfunc("build/cookie/cookie.js", "(anonymous 2)", 121); -_yuitest_coverline("build/cookie/cookie.js", 122); -if (!isFunction(value) && !isUndefined(value)){ - _yuitest_coverline("build/cookie/cookie.js", 123); -text.push(encode(key) + "=" + encode(String(value))); - } - }); - - _yuitest_coverline("build/cookie/cookie.js", 127); -return text.join("&"); - }, - - /** - * Parses a cookie hash string into an object. - * @param {String} text The cookie hash string to parse (format: n1=v1&n2=v2). - * @return {Object} An object containing entries for each cookie value. - * @method _parseCookieHash - * @private - * @static - */ - _parseCookieHash : function (text) { - - _yuitest_coverfunc("build/cookie/cookie.js", "_parseCookieHash", 138); -_yuitest_coverline("build/cookie/cookie.js", 140); -var hashParts = text.split("&"), - hashPart = NULL, - hash = {}; - - _yuitest_coverline("build/cookie/cookie.js", 144); -if (text.length){ - _yuitest_coverline("build/cookie/cookie.js", 145); -for (var i=0, len=hashParts.length; i < len; i++){ - _yuitest_coverline("build/cookie/cookie.js", 146); -hashPart = hashParts[i].split("="); - _yuitest_coverline("build/cookie/cookie.js", 147); -hash[decode(hashPart[0])] = decode(hashPart[1]); - } - } - - _yuitest_coverline("build/cookie/cookie.js", 151); -return hash; - }, - - /** - * Parses a cookie string into an object representing all accessible cookies. - * @param {String} text The cookie string to parse. - * @param {Boolean} shouldDecode (Optional) Indicates if the cookie values should be decoded or not. Default is true. - * @return {Object} An object containing entries for each accessible cookie. - * @method _parseCookieString - * @private - * @static - */ - _parseCookieString : function (text /*:String*/, shouldDecode /*:Boolean*/) /*:Object*/ { - - _yuitest_coverfunc("build/cookie/cookie.js", "_parseCookieString", 163); -_yuitest_coverline("build/cookie/cookie.js", 165); -var cookies /*:Object*/ = {}; - - _yuitest_coverline("build/cookie/cookie.js", 167); -if (isString(text) && text.length > 0) { - - _yuitest_coverline("build/cookie/cookie.js", 169); -var decodeValue = (shouldDecode === false ? function(s){_yuitest_coverfunc("build/cookie/cookie.js", "(anonymous 3)", 169); -return s;} : decode), - cookieParts = text.split(/;\s/g), - cookieName = NULL, - cookieValue = NULL, - cookieNameValue = NULL; - - _yuitest_coverline("build/cookie/cookie.js", 175); -for (var i=0, len=cookieParts.length; i < len; i++){ - - //check for normally-formatted cookie (name-value) - _yuitest_coverline("build/cookie/cookie.js", 178); -cookieNameValue = cookieParts[i].match(/([^=]+)=/i); - _yuitest_coverline("build/cookie/cookie.js", 179); -if (cookieNameValue instanceof Array){ - _yuitest_coverline("build/cookie/cookie.js", 180); -try { - _yuitest_coverline("build/cookie/cookie.js", 181); -cookieName = decode(cookieNameValue[1]); - _yuitest_coverline("build/cookie/cookie.js", 182); -cookieValue = decodeValue(cookieParts[i].substring(cookieNameValue[1].length+1)); - } catch (ex){ - //intentionally ignore the cookie - the encoding is wrong - } - } else { - //means the cookie does not have an "=", so treat it as a boolean flag - _yuitest_coverline("build/cookie/cookie.js", 188); -cookieName = decode(cookieParts[i]); - _yuitest_coverline("build/cookie/cookie.js", 189); -cookieValue = ""; - } - _yuitest_coverline("build/cookie/cookie.js", 191); -cookies[cookieName] = cookieValue; - } - - } - - _yuitest_coverline("build/cookie/cookie.js", 196); -return cookies; - }, - - /** - * Sets the document object that the cookie utility uses for setting - * cookies. This method is necessary to ensure that the cookie utility - * unit tests can pass even when run on a domain instead of locally. - * This method should not be used otherwise; you should use - * Y.config.doc to change the document that the cookie - * utility uses for everyday purposes. - * @param {Object} newDoc The object to use as the document. - * @return {void} - * @method _setDoc - * @private - */ - _setDoc: function(newDoc){ - _yuitest_coverfunc("build/cookie/cookie.js", "_setDoc", 211); -_yuitest_coverline("build/cookie/cookie.js", 212); -doc = newDoc; - }, - - //------------------------------------------------------------------------- - // Public Methods - //------------------------------------------------------------------------- - - /** - * Determines if the cookie with the given name exists. This is useful for - * Boolean cookies (those that do not follow the name=value convention). - * @param {String} name The name of the cookie to check. - * @return {Boolean} True if the cookie exists, false if not. - * @method exists - * @static - */ - exists: function(name) { - - _yuitest_coverfunc("build/cookie/cookie.js", "exists", 227); -_yuitest_coverline("build/cookie/cookie.js", 229); -validateCookieName(name); //throws error - - _yuitest_coverline("build/cookie/cookie.js", 231); -var cookies = this._parseCookieString(doc.cookie, true); - - _yuitest_coverline("build/cookie/cookie.js", 233); -return cookies.hasOwnProperty(name); - }, - - /** - * Returns the cookie value for the given name. - * @param {String} name The name of the cookie to retrieve. - * @param {Function|Object} options (Optional) An object containing one or more - * cookie options: raw (true/false) and converter (a function). - * The converter function is run on the value before returning it. The - * function is not used if the cookie doesn't exist. The function can be - * passed instead of the options object for backwards compatibility. When - * raw is set to true, the cookie value is not URI decoded. - * @return {Variant} If no converter is specified, returns a string or null if - * the cookie doesn't exist. If the converter is specified, returns the value - * returned from the converter or null if the cookie doesn't exist. - * @method get - * @static - */ - get : function (name, options) { - - _yuitest_coverfunc("build/cookie/cookie.js", "get", 251); -_yuitest_coverline("build/cookie/cookie.js", 253); -validateCookieName(name); //throws error - - _yuitest_coverline("build/cookie/cookie.js", 255); -var cookies, - cookie, - converter; - - //if options is a function, then it's the converter - _yuitest_coverline("build/cookie/cookie.js", 260); -if (isFunction(options)) { - _yuitest_coverline("build/cookie/cookie.js", 261); -converter = options; - _yuitest_coverline("build/cookie/cookie.js", 262); -options = {}; - } else {_yuitest_coverline("build/cookie/cookie.js", 263); -if (isObject(options)) { - _yuitest_coverline("build/cookie/cookie.js", 264); -converter = options.converter; - } else { - _yuitest_coverline("build/cookie/cookie.js", 266); -options = {}; - }} - - _yuitest_coverline("build/cookie/cookie.js", 269); -cookies = this._parseCookieString(doc.cookie, !options.raw); - _yuitest_coverline("build/cookie/cookie.js", 270); -cookie = cookies[name]; - - //should return null, not undefined if the cookie doesn't exist - _yuitest_coverline("build/cookie/cookie.js", 273); -if (isUndefined(cookie)) { - _yuitest_coverline("build/cookie/cookie.js", 274); -return NULL; - } - - _yuitest_coverline("build/cookie/cookie.js", 277); -if (!isFunction(converter)){ - _yuitest_coverline("build/cookie/cookie.js", 278); -return cookie; - } else { - _yuitest_coverline("build/cookie/cookie.js", 280); -return converter(cookie); - } - }, - - /** - * Returns the value of a subcookie. - * @param {String} name The name of the cookie to retrieve. - * @param {String} subName The name of the subcookie to retrieve. - * @param {Function} converter (Optional) A function to run on the value before returning - * it. The function is not used if the cookie doesn't exist. - * @return {Variant} If the cookie doesn't exist, null is returned. If the subcookie - * doesn't exist, null if also returned. If no converter is specified and the - * subcookie exists, a string is returned. If a converter is specified and the - * subcookie exists, the value returned from the converter is returned. - * @method getSub - * @static - */ - getSub : function (name /*:String*/, subName /*:String*/, converter /*:Function*/) /*:Variant*/ { - - _yuitest_coverfunc("build/cookie/cookie.js", "getSub", 297); -_yuitest_coverline("build/cookie/cookie.js", 299); -var hash /*:Variant*/ = this.getSubs(name); - - _yuitest_coverline("build/cookie/cookie.js", 301); -if (hash !== NULL) { - - _yuitest_coverline("build/cookie/cookie.js", 303); -validateSubcookieName(subName); //throws error - - _yuitest_coverline("build/cookie/cookie.js", 305); -if (isUndefined(hash[subName])){ - _yuitest_coverline("build/cookie/cookie.js", 306); -return NULL; - } - - _yuitest_coverline("build/cookie/cookie.js", 309); -if (!isFunction(converter)){ - _yuitest_coverline("build/cookie/cookie.js", 310); -return hash[subName]; - } else { - _yuitest_coverline("build/cookie/cookie.js", 312); -return converter(hash[subName]); - } - } else { - _yuitest_coverline("build/cookie/cookie.js", 315); -return NULL; - } - - }, - - /** - * Returns an object containing name-value pairs stored in the cookie with the given name. - * @param {String} name The name of the cookie to retrieve. - * @return {Object} An object of name-value pairs if the cookie with the given name - * exists, null if it does not. - * @method getSubs - * @static - */ - getSubs : function (name) { - - _yuitest_coverfunc("build/cookie/cookie.js", "getSubs", 328); -_yuitest_coverline("build/cookie/cookie.js", 330); -validateCookieName(name); //throws error - - _yuitest_coverline("build/cookie/cookie.js", 332); -var cookies = this._parseCookieString(doc.cookie, false); - _yuitest_coverline("build/cookie/cookie.js", 333); -if (isString(cookies[name])){ - _yuitest_coverline("build/cookie/cookie.js", 334); -return this._parseCookieHash(cookies[name]); - } - _yuitest_coverline("build/cookie/cookie.js", 336); -return NULL; - }, - - /** - * Removes a cookie from the machine by setting its expiration date to - * sometime in the past. - * @param {String} name The name of the cookie to remove. - * @param {Object} options (Optional) An object containing one or more - * cookie options: path (a string), domain (a string), - * and secure (true/false). The expires option will be overwritten - * by the method. - * @return {String} The created cookie string. - * @method remove - * @static - */ - remove : function (name, options) { - - _yuitest_coverfunc("build/cookie/cookie.js", "remove", 351); -_yuitest_coverline("build/cookie/cookie.js", 353); -validateCookieName(name); //throws error - - //set options - _yuitest_coverline("build/cookie/cookie.js", 356); -options = Y.merge(options || {}, { - expires: new Date(0) - }); - - //set cookie - _yuitest_coverline("build/cookie/cookie.js", 361); -return this.set(name, "", options); - }, - - /** - * Removes a sub cookie with a given name. - * @param {String} name The name of the cookie in which the subcookie exists. - * @param {String} subName The name of the subcookie to remove. - * @param {Object} options (Optional) An object containing one or more - * cookie options: path (a string), domain (a string), expires (a Date object), - * removeIfEmpty (true/false), and secure (true/false). This must be the same - * settings as the original subcookie. - * @return {String} The created cookie string. - * @method removeSub - * @static - */ - removeSub : function(name, subName, options) { - - _yuitest_coverfunc("build/cookie/cookie.js", "removeSub", 376); -_yuitest_coverline("build/cookie/cookie.js", 378); -validateCookieName(name); //throws error - - _yuitest_coverline("build/cookie/cookie.js", 380); -validateSubcookieName(subName); //throws error - - _yuitest_coverline("build/cookie/cookie.js", 382); -options = options || {}; - - //get all subcookies for this cookie - _yuitest_coverline("build/cookie/cookie.js", 385); -var subs = this.getSubs(name); - - //delete the indicated subcookie - _yuitest_coverline("build/cookie/cookie.js", 388); -if (isObject(subs) && subs.hasOwnProperty(subName)){ - _yuitest_coverline("build/cookie/cookie.js", 389); -delete subs[subName]; - - _yuitest_coverline("build/cookie/cookie.js", 391); -if (!options.removeIfEmpty) { - //reset the cookie - - _yuitest_coverline("build/cookie/cookie.js", 394); -return this.setSubs(name, subs, options); - } else { - //reset the cookie if there are subcookies left, else remove - _yuitest_coverline("build/cookie/cookie.js", 397); -for (var key in subs){ - _yuitest_coverline("build/cookie/cookie.js", 398); -if (subs.hasOwnProperty(key) && !isFunction(subs[key]) && !isUndefined(subs[key])){ - _yuitest_coverline("build/cookie/cookie.js", 399); -return this.setSubs(name, subs, options); - } - } - - _yuitest_coverline("build/cookie/cookie.js", 403); -return this.remove(name, options); - } - } else { - _yuitest_coverline("build/cookie/cookie.js", 406); -return ""; - } - - }, - - /** - * Sets a cookie with a given name and value. - * @param {String} name The name of the cookie to set. - * @param {Variant} value The value to set for the cookie. - * @param {Object} options (Optional) An object containing one or more - * cookie options: path (a string), domain (a string), expires (a Date object), - * secure (true/false), and raw (true/false). Setting raw to true indicates - * that the cookie should not be URI encoded before being set. - * @return {String} The created cookie string. - * @method set - * @static - */ - set : function (name, value, options) { - - _yuitest_coverfunc("build/cookie/cookie.js", "set", 423); -_yuitest_coverline("build/cookie/cookie.js", 425); -validateCookieName(name); //throws error - - _yuitest_coverline("build/cookie/cookie.js", 427); -if (isUndefined(value)){ - _yuitest_coverline("build/cookie/cookie.js", 428); -error("Cookie.set(): Value cannot be undefined."); - } - - _yuitest_coverline("build/cookie/cookie.js", 431); -options = options || {}; - - _yuitest_coverline("build/cookie/cookie.js", 433); -var text = this._createCookieString(name, value, !options.raw, options); - _yuitest_coverline("build/cookie/cookie.js", 434); -doc.cookie = text; - _yuitest_coverline("build/cookie/cookie.js", 435); -return text; - }, - - /** - * Sets a sub cookie with a given name to a particular value. - * @param {String} name The name of the cookie to set. - * @param {String} subName The name of the subcookie to set. - * @param {Variant} value The value to set. - * @param {Object} options (Optional) An object containing one or more - * cookie options: path (a string), domain (a string), expires (a Date object), - * and secure (true/false). - * @return {String} The created cookie string. - * @method setSub - * @static - */ - setSub : function (name, subName, value, options) { - - _yuitest_coverfunc("build/cookie/cookie.js", "setSub", 450); -_yuitest_coverline("build/cookie/cookie.js", 452); -validateCookieName(name); //throws error - - _yuitest_coverline("build/cookie/cookie.js", 454); -validateSubcookieName(subName); //throws error - - _yuitest_coverline("build/cookie/cookie.js", 456); -if (isUndefined(value)){ - _yuitest_coverline("build/cookie/cookie.js", 457); -error("Cookie.setSub(): Subcookie value cannot be undefined."); - } - - _yuitest_coverline("build/cookie/cookie.js", 460); -var hash = this.getSubs(name); - - _yuitest_coverline("build/cookie/cookie.js", 462); -if (!isObject(hash)){ - _yuitest_coverline("build/cookie/cookie.js", 463); -hash = {}; - } - - _yuitest_coverline("build/cookie/cookie.js", 466); -hash[subName] = value; - - _yuitest_coverline("build/cookie/cookie.js", 468); -return this.setSubs(name, hash, options); - - }, - - /** - * Sets a cookie with a given name to contain a hash of name-value pairs. - * @param {String} name The name of the cookie to set. - * @param {Object} value An object containing name-value pairs. - * @param {Object} options (Optional) An object containing one or more - * cookie options: path (a string), domain (a string), expires (a Date object), - * and secure (true/false). - * @return {String} The created cookie string. - * @method setSubs - * @static - */ - setSubs : function (name, value, options) { - - _yuitest_coverfunc("build/cookie/cookie.js", "setSubs", 483); -_yuitest_coverline("build/cookie/cookie.js", 485); -validateCookieName(name); //throws error - - _yuitest_coverline("build/cookie/cookie.js", 487); -if (!isObject(value)){ - _yuitest_coverline("build/cookie/cookie.js", 488); -error("Cookie.setSubs(): Cookie value must be an object."); - } - - _yuitest_coverline("build/cookie/cookie.js", 491); -var text /*:String*/ = this._createCookieString(name, this._createCookieHashString(value), false, options); - _yuitest_coverline("build/cookie/cookie.js", 492); -doc.cookie = text; - _yuitest_coverline("build/cookie/cookie.js", 493); -return text; - } - - }; - - -}, '3.7.3', {"requires": ["yui-base"]}); diff --git a/lib/yuilib/3.7.3/build/cookie/cookie-min.js b/lib/yuilib/3.7.3/build/cookie/cookie-min.js deleted file mode 100644 index 8ef3cad124f..00000000000 --- a/lib/yuilib/3.7.3/build/cookie/cookie-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("cookie",function(e,t){function h(e){throw new TypeError(e)}function p(e){(!s(e)||e==="")&&h("Cookie name must be a non-empty string.")}function d(e){(!s(e)||e==="")&&h("Subcookie name must be a non-empty string.")}var n=e.Lang,r=e.Object,i=null,s=n.isString,o=n.isObject,u=n.isUndefined,a=n.isFunction,f=encodeURIComponent,l=decodeURIComponent,c=e.config.doc;e.Cookie={_createCookieString:function(e,t,n,r){r=r||{};var i=f(e)+"="+(n?f(t):t),u=r.expires,a=r.path,l=r.domain;return o(r)&&(u instanceof Date&&(i+="; expires="+u.toUTCString()),s(a)&&a!==""&&(i+="; path="+a),s(l)&&l!==""&&(i+="; domain="+l),r.secure===!0&&(i+="; secure")),i},_createCookieHashString:function(e){o(e)||h("Cookie._createCookieHashString(): Argument must be an object.");var t=[];return r.each(e,function(e,n){!a(e)&&!u(e)&&t.push(f(n)+"="+f(String(e)))}),t.join("&")},_parseCookieHash:function(e){var t=e.split("&"),n=i,r={};if(e.length)for(var s=0,o=t.length;s0){var r=t===!1?function(e){return e}:l,o=e.split(/;\s/g),u=i,a=i,f=i;for(var c=0,h=o.length;c{content}',ROW_TEMPLATE:"{content}",THEAD_TEMPLATE:'',getClassName:function(){var t=this.host,n=t&&t.constructor.NAME||this.constructor.NAME;return t&&t.getClassName?t.getClassName.apply(t,arguments):e.ClassNameManager.getClassName.apply(e.ClassNameManager,[n].concat(s(arguments,0,!0)))},render:function(){var t=this.get("container"),n=this.theadNode||(this.theadNode=this._createTHeadNode()),i=this.columns,s={_colspan:1,_rowspan:1,abbr:""},o,u,a,f,l,c,h,p;if(n&&i){c="";if(i.length)for(o=0,u=i.length;o=h){if(r.length>1){o=r[r.length-2],l=o[0][o[1]],l._colspan=0;for(c=0,h=u.length;c=0;--p)l=r[p][0][r[p][1]],a._headers.unshift(l.id);if(f&&f.length){r.push([f,-1]);break}a._rowspan=s-r.length+1}c>=h&&r.pop()}}for(c=0,h=n.length;co[c]-a&&(e[1]=o[c]-a),o[f]>t[1]&&(e[1]=o[f]),t[0]>o[l]-p&&(e[0]=o[l]-p),o[h]>t[0]&&(e[0]=o[h]),e},inRegion:function(e){e=e||this.get(s).get(n).getXY();var t=this._checkRegion([e[0],e[1]]),r=!1;return e[0]===t[0]&&e[1]===t[1]&&(r=!0),r},align:function(){var e=this.get(s),t=[e.actXY[0],e.actXY[1]],n=this.getRegion(!0);this.get("stickX")&&(t[1]=e.startXY[1]-e.deltaXY[1]),this.get("stickY")&&(t[0]=e.startXY[0]-e.deltaXY[0]),n&&(t=this._checkRegion(t)),t=this._checkTicks(t,n),e.actXY=t},drag:function(){var t=this.get(s),n=this.get("tickX"),r=this.get("tickY"),i=[t.actXY[0],t.actXY[1]];(e.Lang.isNumber(n)||this.get(o))&&this._lastTickXFired!==i[0]&&(this._tickAlignX(),this._lastTickXFired=i[0]),(e.Lang.isNumber(r)||this.get(u))&&this._lastTickYFired!==i[1]&&(this._tickAlignY(),this._lastTickYFired=i[1])},_checkTicks:function(e,t){var n=this.get(s),r=n.startXY[0]-n.deltaXY[0],i=n.startXY[1]-n.deltaXY[1],p=this.get("tickX"),d=this.get("tickY");return p&&!this.get(o)&&(e[0]=a._calcTicks(e[0],r,p,t[h],t[l])),d&&!this.get(u)&&(e[1]=a._calcTicks(e[1],i,d,t[f],t[c])),this.get(o)&&(e[0]=a._calcTickArray(e[0],this.get(o),t[h],t[l])),this.get(u)&&(e[1]=a._calcTickArray(e[1],this.get(u),t[f],t[c])),e},_tickAlignX:function(){this.fire(v)},_tickAlignY:function(){this.fire(m)}},e.namespace("Plugin"),e.extend(g,e.Base,d),e.Plugin.DDConstrained=g,e.mix(a,{_calcTicks:function(e,t,n,r,i){var s=(e-t)/n,o=Math.floor(s),u=Math.ceil(s);return(o!==0||u!==0)&&s>=o&&s<=u&&(e=t+n*o,r&&i&&(ei&&(e=t+n*(o-1)))),e},_calcTickArray:function(e,t,n,r){var i=0,s=t.length,o=0,u,a,f;if(!t||t.length===0)return e;if(t[0]>=e)return t[0];for(i=0;i=e)return u=e-t[i],a=t[o]-e,f=a>u?t[i]:t[o],n&&r&&f>r&&(t[i]?f=t[i]:f=t[s-1]),f}return t[t.length-1]}})},"3.7.3",{requires:["dd-drag"]}); diff --git a/lib/yuilib/3.7.3/build/dd-ddm-base/dd-ddm-base-min.js b/lib/yuilib/3.7.3/build/dd-ddm-base/dd-ddm-base-min.js deleted file mode 100644 index deac6e8612c..00000000000 --- a/lib/yuilib/3.7.3/build/dd-ddm-base/dd-ddm-base-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("dd-ddm-base",function(e,t){var n=function(){n.superclass.constructor.apply(this,arguments)};n.NAME="ddm",n.ATTRS={dragCursor:{value:"move"},clickPixelThresh:{value:3},clickTimeThresh:{value:1e3},throttleTime:{value:-1},dragMode:{value:"point",setter:function(e){return this._setDragMode(e),e}}},e.extend(n,e.Base,{_createPG:function(){},_active:null,_setDragMode:function(t){t===null&&(t=e.DD.DDM.get("dragMode"));switch(t){case 1:case"intersect":return 1;case 2:case"strict":return 2;case 0:case"point":return 0}return 0},CSS_PREFIX:e.ClassNameManager.getClassName("dd"),_activateTargets:function(){},_drags:[],activeDrag:!1,_regDrag:function(e){return this.getDrag(e.get("node"))?!1:(this._active||this._setupListeners(),this._drags.push(e),!0)},_unregDrag:function(t){var n=[];e.each(this._drags,function(e){e!==t&&(n[n.length]=e)}),this._drags=n},_setupListeners:function(){this._createPG(),this._active=!0;var t=e.one(e.config.doc);t.on("mousemove",e.throttle(e.bind(this._docMove,this),this.get("throttleTime"))),t.on("mouseup",e.bind(this._end,this))},_start:function(){this.fire("ddm:start"),this._startDrag()},_startDrag:function(){},_endDrag:function(){},_dropMove:function(){},_end:function(){this.activeDrag&&(this._shimming=!1,this._endDrag(),this.fire("ddm:end"),this.activeDrag.end.call(this.activeDrag),this.activeDrag=null)},stopDrag:function(){return this.activeDrag&&this._end(),this},_shimming:!1,_docMove:function(e){this._shimming||this._move(e)},_move:function(e){this.activeDrag&&(this.activeDrag._move.call(this.activeDrag,e),this._dropMove())},cssSizestoObject:function(e){var t=e.split(" ");switch(t.length){case 1:t[1]=t[2]=t[3]=t[0];break;case 2:t[2]=t[0],t[3]=t[1];break;case 3:t[3]=t[1]}return{top:parseInt(t[0],10),right:parseInt(t[1],10),bottom:parseInt(t[2],10),left:parseInt(t[3],10)}},getDrag:function(t){var n=!1,r=e.one(t);return r instanceof e.Node&&e.each(this._drags,function(e){r.compareTo(e.get("node"))&&(n=e)}),n},swapPosition:function(t,n){t=e.DD.DDM.getNode(t),n=e.DD.DDM.getNode(n);var r=t.getXY(),i=n.getXY();return t.setXY(i),n.setXY(r),t},getNode:function(t){return t instanceof e.Node?t:(t&&t.get?e.Widget&&t instanceof e.Widget?t=t.get("boundingBox"):t=t.get("node"):t=e.one(t),t)},swapNode:function(t,n){t=e.DD.DDM.getNode(t),n=e.DD.DDM.getNode(n);var r=n.get("parentNode"),i=n.get("nextSibling");return i===t?r.insertBefore(t,n):n===t.get("nextSibling")?r.insertBefore(n,t):(t.get("parentNode").replaceChild(n,t),r.insertBefore(t,i)),t}}),e.namespace("DD"),e.DD.DDM=new n},"3.7.3",{requires:["node","base","yui-throttle","classnamemanager"]}); diff --git a/lib/yuilib/3.7.3/build/dd-ddm-drop/dd-ddm-drop-min.js b/lib/yuilib/3.7.3/build/dd-ddm-drop/dd-ddm-drop-min.js deleted file mode 100644 index 1ba41fefe1e..00000000000 --- a/lib/yuilib/3.7.3/build/dd-ddm-drop/dd-ddm-drop-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("dd-ddm-drop",function(e,t){e.mix(e.DD.DDM,{_noShim:!1,_activeShims:[],_hasActiveShim:function(){return this._noShim?!0:this._activeShims.length},_addActiveShim:function(e){this._activeShims[this._activeShims.length]=e},_removeActiveShim:function(t){var n=[];e.each(this._activeShims,function(e){e._yuid!==t._yuid&&(n[n.length]=e)}),this._activeShims=n},syncActiveShims:function(t){e.later(0,this,function(t){var n=t?this.targets:this._lookup();e.each(n,function(e){e.sizeShim.call(e)},this)},t)},mode:0,POINT:0,INTERSECT:1,STRICT:2,useHash:!0,activeDrop:null,validDrops:[],otherDrops:{},targets:[],_addValid:function(e){return this.validDrops[this.validDrops.length]=e,this},_removeValid:function(t){var n=[];return e.each(this.validDrops,function(e){e!==t&&(n[n.length]=e)}),this.validDrops=n,this},isOverTarget:function(e){if(this.activeDrag&&e){var t=this.activeDrag.mouseXY,n,r=this.activeDrag.get("dragMode"),i,s=e.shim;if(t&&this.activeDrag){i=this.activeDrag.region;if(r===this.STRICT)return this.activeDrag.get("dragNode").inRegion(e.region,!0,i);if(e&&e.shim)return r===this.INTERSECT&&this._noShim?(n=i||this.activeDrag.get("node"),e.get("node").intersect(n,e.region).inRegion):(this._noShim&&(s=e.get("node")),s.intersect({top:t[1],bottom:t[1],left:t[0],right:t[0]},e.region).inRegion)}}return!1},clearCache:function(){this.validDrops=[],this.otherDrops={},this._activeShims=[]},_activateTargets:function(){this._noShim=!0,this.clearCache(),e.each(this.targets,function(e){e._activateShim([]),e.get("noShim")===!0&&(this._noShim=!1)},this),this._handleTargetOver()},getBestMatch:function(t,n){var r=null,i=0,s;return e.each(t,function(e){var t=this.activeDrag.get("dragNode").intersect(e.get("node"));e.region.area=t.area,t.inRegion&&t.area>i&&(i=t.area,r=e)},this),n?(s=[],e.each(t,function(e){e!==r&&(s[s.length]=e)},this),[r,s]):r},_deactivateTargets:function(){var t=[],n,r=this.activeDrag,i=this.activeDrop;r&&i&&this.otherDrops[i]?(r.get("dragMode")?(n=this.getBestMatch(this.otherDrops,!0),i=n[0],t=n[1]):(t=this.otherDrops,delete t[i]),r.get("node").removeClass(this.CSS_PREFIX+"-drag-over"),i&&(i.fire("drop:hit",{drag:r,drop:i,others:t}),r.fire("drag:drophit",{drag:r,drop:i,others:t}))):r&&r.get("dragging")&&(r.get("node").removeClass(this.CSS_PREFIX+"-drag-over"),r.fire("drag:dropmiss",{pageX:r.lastXY[0],pageY:r.lastXY[1]})),this.activeDrop=null,e.each(this.targets,function(e){e._deactivateShim([])},this)},_dropMove:function(){this._hasActiveShim()?this._handleTargetOver():e.each(this.otherDrops,function(e){e._handleOut.apply(e,[])})},_lookup:function(){if(!this.useHash||this._noShim)return this.validDrops;var t=[];return e.each(this.validDrops,function(e){e.shim&&e.shim.inViewportRegion(!1,e.region)&&(t[t.length]=e)}),t},_handleTargetOver:function(){var t=this._lookup();e.each(t,function(e){e._handleTargetOver.call(e)},this)},_regTarget:function(e){this.targets[this.targets.length]=e},_unregTarget:function(t){var n=[],r;e.each(this.targets,function(e){e!==t&&(n[n.length]=e)},this),this.targets=n,r=[],e.each(this.validDrops,function(e){e!==t&&(r[r.length]=e)}),this.validDrops=r},getDrop:function(t){var n=!1,r=e.one(t);return r instanceof e.Node&&e.each(this.targets,function(e){r.compareTo(e.get("node"))&&(n=e)}),n}},!0)},"3.7.3",{requires:["dd-ddm"]}); diff --git a/lib/yuilib/3.7.3/build/dd-drag/dd-drag-coverage.js b/lib/yuilib/3.7.3/build/dd-drag/dd-drag-coverage.js deleted file mode 100644 index b739aad492f..00000000000 --- a/lib/yuilib/3.7.3/build/dd-drag/dd-drag-coverage.js +++ /dev/null @@ -1,1639 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -if (typeof _yuitest_coverage == "undefined"){ - _yuitest_coverage = {}; - _yuitest_coverline = function(src, line){ - var coverage = _yuitest_coverage[src]; - if (!coverage.lines[line]){ - coverage.calledLines++; - } - coverage.lines[line]++; - }; - _yuitest_coverfunc = function(src, name, line){ - var coverage = _yuitest_coverage[src], - funcId = name + ":" + line; - if (!coverage.functions[funcId]){ - coverage.calledFunctions++; - } - coverage.functions[funcId]++; - }; -} -_yuitest_coverage["build/dd-drag/dd-drag.js"] = { - lines: {}, - functions: {}, - coveredLines: 0, - calledLines: 0, - coveredFunctions: 0, - calledFunctions: 0, - path: "build/dd-drag/dd-drag.js", - code: [] -}; -_yuitest_coverage["build/dd-drag/dd-drag.js"].code=["YUI.add('dd-drag', function (Y, NAME) {","",""," /**"," * Provides the ability to drag a Node."," * @module dd"," * @submodule dd-drag"," */"," /**"," * Provides the ability to drag a Node."," * @class Drag"," * @extends Base"," * @constructor"," * @namespace DD"," */",""," var DDM = Y.DD.DDM,"," NODE = 'node',"," DRAGGING = 'dragging',"," DRAG_NODE = 'dragNode',"," OFFSET_HEIGHT = 'offsetHeight',"," OFFSET_WIDTH = 'offsetWidth',"," /**"," * @event drag:mouseup"," * @description Handles the mouseup DOM event, does nothing internally just fires."," * @bubbles DDM"," * @type {CustomEvent}"," */"," /**"," * @event drag:mouseDown"," * @description Handles the mousedown DOM event, checks to see if you have a valid handle then starts the drag timers."," * @preventable _defMouseDownFn"," * @param {EventFacade} event An Event Facade object with the following specific property added:"," *
          ev
          The original mousedown event.
          "," * @bubbles DDM"," * @type {CustomEvent}"," */"," EV_MOUSE_DOWN = 'drag:mouseDown',"," /**"," * @event drag:afterMouseDown"," * @description Fires after the mousedown event has been cleared."," * @param {EventFacade} event An Event Facade object with the following specific property added:"," *
          ev
          The original mousedown event.
          "," * @bubbles DDM"," * @type {CustomEvent}"," */"," EV_AFTER_MOUSE_DOWN = 'drag:afterMouseDown',"," /**"," * @event drag:removeHandle"," * @description Fires after a handle is removed."," * @param {EventFacade} event An Event Facade object with the following specific property added:"," *
          handle
          The handle that was removed.
          "," * @bubbles DDM"," * @type {CustomEvent}"," */"," EV_REMOVE_HANDLE = 'drag:removeHandle',"," /**"," * @event drag:addHandle"," * @description Fires after a handle is added."," * @param {EventFacade} event An Event Facade object with the following specific property added:"," *
          handle
          The handle that was added.
          "," * @bubbles DDM"," * @type {CustomEvent}"," */"," EV_ADD_HANDLE = 'drag:addHandle',"," /**"," * @event drag:removeInvalid"," * @description Fires after an invalid selector is removed."," * @param {EventFacade} event An Event Facade object with the following specific property added:"," *
          handle
          The handle that was removed.
          "," * @bubbles DDM"," * @type {CustomEvent}"," */"," EV_REMOVE_INVALID = 'drag:removeInvalid',"," /**"," * @event drag:addInvalid"," * @description Fires after an invalid selector is added."," * @param {EventFacade} event An Event Facade object with the following specific property added:"," *
          handle
          The handle that was added.
          "," * @bubbles DDM"," * @type {CustomEvent}"," */"," EV_ADD_INVALID = 'drag:addInvalid',"," /**"," * @event drag:start"," * @description Fires at the start of a drag operation."," * @param {EventFacade} event An Event Facade object with the following specific property added:"," *
          "," *
          pageX
          The original node position X.
          "," *
          pageY
          The original node position Y.
          "," *
          startTime
          The startTime of the event. getTime on the current Date object.
          "," *
          "," * @bubbles DDM"," * @type {CustomEvent}"," */"," EV_START = 'drag:start',"," /**"," * @event drag:end"," * @description Fires at the end of a drag operation."," * @param {EventFacade} event An Event Facade object with the following specific property added:"," *
          "," *
          pageX
          The current node position X.
          "," *
          pageY
          The current node position Y.
          "," *
          startTime
          The startTime of the event, from the start event.
          "," *
          endTime
          The endTime of the event. getTime on the current Date object.
          "," *
          "," * @bubbles DDM"," * @type {CustomEvent}"," */"," EV_END = 'drag:end',"," /**"," * @event drag:drag"," * @description Fires every mousemove during a drag operation."," * @param {EventFacade} event An Event Facade object with the following specific property added:"," *
          "," *
          pageX
          The current node position X.
          "," *
          pageY
          The current node position Y.
          "," *
          scroll
          Should a scroll action occur.
          "," *
          info
          Object hash containing calculated XY arrays: start, xy, delta, offset
          "," *
          "," * @bubbles DDM"," * @type {CustomEvent}"," */"," EV_DRAG = 'drag:drag',"," /**"," * @event drag:align"," * @preventable _defAlignFn"," * @description Fires when this node is aligned."," * @param {EventFacade} event An Event Facade object with the following specific property added:"," *
          "," *
          pageX
          The current node position X.
          "," *
          pageY
          The current node position Y.
          "," *
          "," * @bubbles DDM"," * @type {CustomEvent}"," */"," EV_ALIGN = 'drag:align',"," /**"," * @event drag:over"," * @description Fires when this node is over a Drop Target. (Fired from dd-drop)"," * @param {EventFacade} event An Event Facade object with the following specific property added:"," *
          "," *
          drop
          The drop object at the time of the event.
          "," *
          drag
          The drag object at the time of the event.
          "," *
          "," * @bubbles DDM"," * @type {CustomEvent}"," */"," /**"," * @event drag:enter"," * @description Fires when this node enters a Drop Target. (Fired from dd-drop)"," * @param {EventFacade} event An Event Facade object with the following specific property added:"," *
          "," *
          drop
          The drop object at the time of the event.
          "," *
          drag
          The drag object at the time of the event.
          "," *
          "," * @bubbles DDM"," * @type {CustomEvent}"," */"," /**"," * @event drag:exit"," * @description Fires when this node exits a Drop Target. (Fired from dd-drop)"," * @param {EventFacade} event An Event Facade object with the following specific property added:"," *
          "," *
          drop
          The drop object at the time of the event.
          "," *
          "," * @bubbles DDM"," * @type {CustomEvent}"," */"," /**"," * @event drag:drophit"," * @description Fires when this node is dropped on a valid Drop Target. (Fired from dd-ddm-drop)"," * @param {EventFacade} event An Event Facade object with the following specific property added:"," *
          "," *
          drop
          The best guess on what was dropped on.
          "," *
          drag
          The drag object at the time of the event.
          "," *
          others
          An array of all the other drop targets that was dropped on.
          "," *
          "," * @bubbles DDM"," * @type {CustomEvent}"," */"," /**"," * @event drag:dropmiss"," * @description Fires when this node is dropped on an invalid Drop Target. (Fired from dd-ddm-drop)"," * @param {EventFacade} event An Event Facade object with the following specific property added:"," *
          "," *
          pageX
          The current node position X.
          "," *
          pageY
          The current node position Y.
          "," *
          "," * @bubbles DDM"," * @type {CustomEvent}"," */",""," Drag = function(o) {"," this._lazyAddAttrs = false;"," Drag.superclass.constructor.apply(this, arguments);",""," var valid = DDM._regDrag(this);"," if (!valid) {"," Y.error('Failed to register node, already in use: ' + o.node);"," }"," };",""," Drag.NAME = 'drag';",""," /**"," * This property defaults to \"mousedown\", but when drag-gestures is loaded, it is changed to \"gesturemovestart\""," * @static"," * @property START_EVENT"," */"," Drag.START_EVENT = 'mousedown';",""," Drag.ATTRS = {"," /**"," * @attribute node"," * @description Y.Node instance to use as the element to initiate a drag operation"," * @type Node"," */"," node: {"," setter: function(node) {"," if (this._canDrag(node)) {"," return node;"," }"," var n = Y.one(node);"," if (!n) {"," Y.error('DD.Drag: Invalid Node Given: ' + node);"," }"," return n;"," }"," },"," /**"," * @attribute dragNode"," * @description Y.Node instance to use as the draggable element, defaults to node"," * @type Node"," */"," dragNode: {"," setter: function(node) {"," if (this._canDrag(node)) {"," return node;"," }"," var n = Y.one(node);"," if (!n) {"," Y.error('DD.Drag: Invalid dragNode Given: ' + node);"," }"," return n;"," }"," },"," /**"," * @attribute offsetNode"," * @description Offset the drag element by the difference in cursor position: default true"," * @type Boolean"," */"," offsetNode: {"," value: true"," },"," /**"," * @attribute startCentered"," * @description Center the dragNode to the mouse position on drag:start: default false"," * @type Boolean"," */"," startCentered: {"," value: false"," },"," /**"," * @attribute clickPixelThresh"," * @description The number of pixels to move to start a drag operation, default is 3."," * @type Number"," */"," clickPixelThresh: {"," value: DDM.get('clickPixelThresh')"," },"," /**"," * @attribute clickTimeThresh"," * @description The number of milliseconds a mousedown has to pass to start a drag operation, default is 1000."," * @type Number"," */"," clickTimeThresh: {"," value: DDM.get('clickTimeThresh')"," },"," /**"," * @attribute lock"," * @description Set to lock this drag element so that it can't be dragged: default false."," * @type Boolean"," */"," lock: {"," value: false,"," setter: function(lock) {"," if (lock) {"," this.get(NODE).addClass(DDM.CSS_PREFIX + '-locked');"," } else {"," this.get(NODE).removeClass(DDM.CSS_PREFIX + '-locked');"," }"," return lock;"," }"," },"," /**"," * @attribute data"," * @description A payload holder to store arbitrary data about this drag object, can be used to store any value."," * @type Mixed"," */"," data: {"," value: false"," },"," /**"," * @attribute move"," * @description If this is false, the drag element will not move with the cursor: default true. Can be used to \"resize\" the element."," * @type Boolean"," */"," move: {"," value: true"," },"," /**"," * @attribute useShim"," * @description Use the protective shim on all drag operations: default true. Only works with dd-ddm, not dd-ddm-base."," * @type Boolean"," */"," useShim: {"," value: true"," },"," /**"," * Config option is set by Drag to inform you of which handle fired the drag event (in the case that there are several handles): default false."," * @attribute activeHandle"," * @type Node"," */"," activeHandle: {"," value: false"," },"," /**"," * By default a drag operation will only begin if the mousedown occurred with the primary mouse button."," * Setting this to false will allow for all mousedown events to trigger a drag."," * @attribute primaryButtonOnly"," * @type Boolean"," */"," primaryButtonOnly: {"," value: true"," },"," /**"," * This attribute is not meant to be used by the implementor, it is meant to be used as an Event tracker so you can listen for it to change."," * @attribute dragging"," * @type Boolean"," */"," dragging: {"," value: false"," },"," parent: {"," value: false"," },"," /**"," * @attribute target"," * @description This attribute only works if the dd-drop module has been loaded. It will make this node a drop target as well as draggable."," * @type Boolean"," */"," target: {"," value: false,"," setter: function(config) {"," this._handleTarget(config);"," return config;"," }"," },"," /**"," * This attribute only works if the dd-drop module is active. It will set the dragMode (point, intersect, strict) of this Drag instance."," * @attribute dragMode"," * @type String"," */"," dragMode: {"," value: null,"," setter: function(mode) {"," return DDM._setDragMode(mode);"," }"," },"," /**"," * @attribute groups"," * @description Array of groups to add this drag into."," * @type Array"," */"," groups: {"," value: ['default'],"," getter: function() {"," if (!this._groups) {"," this._groups = {};"," }"," var ret = [];"," Y.each(this._groups, function(v, k) {"," ret[ret.length] = k;"," });"," return ret;"," },"," setter: function(g) {"," this._groups = {};"," Y.each(g, function(v) {"," this._groups[v] = true;"," }, this);"," return g;"," }"," },"," /**"," * @attribute handles"," * @description Array of valid handles to add. Adding something here will set all handles, even if previously added with addHandle"," * @type Array"," */"," handles: {"," value: null,"," setter: function(g) {"," if (g) {"," this._handles = {};"," Y.each(g, function(v) {"," var key = v;"," if (v instanceof Y.Node || v instanceof Y.NodeList) {"," key = v._yuid;"," }"," this._handles[key] = v;"," }, this);"," } else {"," this._handles = null;"," }"," return g;"," }"," },"," /**"," * Controls the default bubble parent for this Drag instance. Default: Y.DD.DDM. Set to false to disable bubbling. Use bubbleTargets in config"," * @deprecated"," * @attribute bubbles"," * @type Object"," */"," bubbles: {"," setter: function(t) {"," this.addTarget(t);"," return t;"," }"," },"," /**"," * @attribute haltDown"," * @description Should the mousedown event be halted. Default: true"," * @type Boolean"," */"," haltDown: {"," value: true"," }"," };",""," Y.extend(Drag, Y.Base, {"," /**"," * Checks the object for the methods needed to drag the object around."," * Normally this would be a node instance, but in the case of Graphics, it"," * may be an SVG node or something similar."," * @method _canDrag"," * @private"," * @param {Object} n The object to check"," * @return {Boolean} True or false if the Object contains the methods needed to Drag"," */"," _canDrag: function(n) {"," if (n && n.setXY && n.getXY && n.test && n.contains) {"," return true;"," }"," return false;"," },"," /**"," * @private"," * @property _bubbleTargets"," * @description The default bubbleTarget for this object. Default: Y.DD.DDM"," */"," _bubbleTargets: Y.DD.DDM,"," /**"," * @method addToGroup"," * @description Add this Drag instance to a group, this should be used for on-the-fly group additions."," * @param {String} g The group to add this Drag Instance to."," * @return {Self}"," * @chainable"," */"," addToGroup: function(g) {"," this._groups[g] = true;"," DDM._activateTargets();"," return this;"," },"," /**"," * @method removeFromGroup"," * @description Remove this Drag instance from a group, this should be used for on-the-fly group removals."," * @param {String} g The group to remove this Drag Instance from."," * @return {Self}"," * @chainable"," */"," removeFromGroup: function(g) {"," delete this._groups[g];"," DDM._activateTargets();"," return this;"," },"," /**"," * @property target"," * @description This will be a reference to the Drop instance associated with this drag if the target: true config attribute is set.."," * @type {Object}"," */"," target: null,"," /**"," * @private"," * @method _handleTarget"," * @description Attribute handler for the target config attribute."," * @param {Boolean/Object} config The Config"," */"," _handleTarget: function(config) {"," if (Y.DD.Drop) {"," if (config === false) {"," if (this.target) {"," DDM._unregTarget(this.target);"," this.target = null;"," }"," } else {"," if (!Y.Lang.isObject(config)) {"," config = {};"," }"," config.bubbleTargets = config.bubbleTargets || Y.Object.values(this._yuievt.targets);"," config.node = this.get(NODE);"," config.groups = config.groups || this.get('groups');"," this.target = new Y.DD.Drop(config);"," }"," }"," },"," /**"," * @private"," * @property _groups"," * @description Storage Array for the groups this drag belongs to."," * @type {Array}"," */"," _groups: null,"," /**"," * @private"," * @method _createEvents"," * @description This method creates all the events for this Event Target and publishes them so we get Event Bubbling."," */"," _createEvents: function() {",""," this.publish(EV_MOUSE_DOWN, {"," defaultFn: this._defMouseDownFn,"," queuable: false,"," emitFacade: true,"," bubbles: true,"," prefix: 'drag'"," });",""," this.publish(EV_ALIGN, {"," defaultFn: this._defAlignFn,"," queuable: false,"," emitFacade: true,"," bubbles: true,"," prefix: 'drag'"," });",""," this.publish(EV_DRAG, {"," defaultFn: this._defDragFn,"," queuable: false,"," emitFacade: true,"," bubbles: true,"," prefix: 'drag'"," });",""," this.publish(EV_END, {"," defaultFn: this._defEndFn,"," preventedFn: this._prevEndFn,"," queuable: false,"," emitFacade: true,"," bubbles: true,"," prefix: 'drag'"," });",""," var ev = ["," EV_AFTER_MOUSE_DOWN,"," EV_REMOVE_HANDLE,"," EV_ADD_HANDLE,"," EV_REMOVE_INVALID,"," EV_ADD_INVALID,"," EV_START,"," 'drag:drophit',"," 'drag:dropmiss',"," 'drag:over',"," 'drag:enter',"," 'drag:exit'"," ];",""," Y.each(ev, function(v) {"," this.publish(v, {"," type: v,"," emitFacade: true,"," bubbles: true,"," preventable: false,"," queuable: false,"," prefix: 'drag'"," });"," }, this);"," },"," /**"," * @private"," * @property _ev_md"," * @description A private reference to the mousedown DOM event"," * @type {EventFacade}"," */"," _ev_md: null,"," /**"," * @private"," * @property _startTime"," * @description The getTime of the mousedown event. Not used, just here in case someone wants/needs to use it."," * @type Date"," */"," _startTime: null,"," /**"," * @private"," * @property _endTime"," * @description The getTime of the mouseup event. Not used, just here in case someone wants/needs to use it."," * @type Date"," */"," _endTime: null,"," /**"," * @private"," * @property _handles"," * @description A private hash of the valid drag handles"," * @type {Object}"," */"," _handles: null,"," /**"," * @private"," * @property _invalids"," * @description A private hash of the invalid selector strings"," * @type {Object}"," */"," _invalids: null,"," /**"," * A private hash of the default invalid selector strings: {'textarea': true, 'input': true, 'a': true, 'button': true, 'select': true}"," * @private"," * @property _invalidsDefault"," * @type {Object}"," */"," _invalidsDefault: {'textarea': true, 'input': true, 'a': true, 'button': true, 'select': true },"," /**"," * @private"," * @property _dragThreshMet"," * @description Private flag to see if the drag threshhold was met"," * @type {Boolean}"," */"," _dragThreshMet: null,"," /**"," * @private"," * @property _fromTimeout"," * @description Flag to determine if the drag operation came from a timeout"," * @type {Boolean}"," */"," _fromTimeout: null,"," /**"," * @private"," * @property _clickTimeout"," * @description Holder for the setTimeout call"," * @type {Boolean}"," */"," _clickTimeout: null,"," /**"," * @property deltaXY"," * @description The offset of the mouse position to the element's position"," * @type {Array}"," */"," deltaXY: null,"," /**"," * @property startXY"," * @description The initial mouse position"," * @type {Array}"," */"," startXY: null,"," /**"," * @property nodeXY"," * @description The initial element position"," * @type {Array}"," */"," nodeXY: null,"," /**"," * @property lastXY"," * @description The position of the element as it's moving (for offset calculations)"," * @type {Array}"," */"," lastXY: null,"," /**"," * @property actXY"," * @description The xy that the node will be set to. Changing this will alter the position as it's dragged."," * @type {Array}"," */"," actXY: null,"," /**"," * @property realXY"," * @description The real xy position of the node."," * @type {Array}"," */"," realXY: null,"," /**"," * @property mouseXY"," * @description The XY coords of the mousemove"," * @type {Array}"," */"," mouseXY: null,"," /**"," * @property region"," * @description A region object associated with this drag, used for checking regions while dragging."," * @type Object"," */"," region: null,"," /**"," * @private"," * @method _handleMouseUp"," * @description Handler for the mouseup DOM event"," * @param {EventFacade} ev The Event"," */"," _handleMouseUp: function() {"," this.fire('drag:mouseup');"," this._fixIEMouseUp();"," if (DDM.activeDrag) {"," DDM._end();"," }"," },"," /**"," * The function we use as the ondragstart handler when we start a drag"," * in Internet Explorer. This keeps IE from blowing up on images as drag handles."," * @private"," * @method _fixDragStart"," * @param {Event} e The Event"," */"," _fixDragStart: function(e) {"," if (this.validClick(e)) {"," e.preventDefault();"," }"," },"," /**"," * @private"," * @method _ieSelectFix"," * @description The function we use as the onselectstart handler when we start a drag in Internet Explorer"," */"," _ieSelectFix: function() {"," return false;"," },"," /**"," * @private"," * @property _ieSelectBack"," * @description We will hold a copy of the current \"onselectstart\" method on this property, and reset it after we are done using it."," */"," _ieSelectBack: null,"," /**"," * @private"," * @method _fixIEMouseDown"," * @description This method copies the onselectstart listner on the document to the _ieSelectFix property"," */"," _fixIEMouseDown: function() {"," if (Y.UA.ie) {"," this._ieSelectBack = Y.config.doc.body.onselectstart;"," Y.config.doc.body.onselectstart = this._ieSelectFix;"," }"," },"," /**"," * @private"," * @method _fixIEMouseUp"," * @description This method copies the _ieSelectFix property back to the onselectstart listner on the document."," */"," _fixIEMouseUp: function() {"," if (Y.UA.ie) {"," Y.config.doc.body.onselectstart = this._ieSelectBack;"," }"," },"," /**"," * @private"," * @method _handleMouseDownEvent"," * @description Handler for the mousedown DOM event"," * @param {EventFacade} ev The Event"," */"," _handleMouseDownEvent: function(ev) {"," this.fire(EV_MOUSE_DOWN, { ev: ev });"," },"," /**"," * @private"," * @method _defMouseDownFn"," * @description Handler for the mousedown DOM event"," * @param {EventFacade} e The Event"," */"," _defMouseDownFn: function(e) {"," var ev = e.ev;",""," this._dragThreshMet = false;"," this._ev_md = ev;",""," if (this.get('primaryButtonOnly') && ev.button > 1) {"," return false;"," }"," if (this.validClick(ev)) {"," this._fixIEMouseDown(ev);"," if (Drag.START_EVENT.indexOf('gesture') !== 0) {"," //Only do these if it's not a gesture"," if (this.get('haltDown')) {"," ev.halt();"," } else {"," ev.preventDefault();"," }"," }",""," this._setStartPosition([ev.pageX, ev.pageY]);",""," DDM.activeDrag = this;",""," this._clickTimeout = Y.later(this.get('clickTimeThresh'), this, this._timeoutCheck);"," }"," this.fire(EV_AFTER_MOUSE_DOWN, { ev: ev });"," },"," /**"," * Method first checks to see if we have handles, if so it validates the click"," * against the handle. Then if it finds a valid handle, it checks it against"," * the invalid handles list. Returns true if a good handle was used, false otherwise."," * @method validClick"," * @param {EventFacade} ev The Event"," * @return {Boolean}"," */"," validClick: function(ev) {"," var r = false, n = false,"," tar = ev.target,"," hTest = null,"," els = null,"," nlist = null,"," set = false;"," if (this._handles) {"," Y.each(this._handles, function(i, n) {"," if (i instanceof Y.Node || i instanceof Y.NodeList) {"," if (!r) {"," nlist = i;"," if (nlist instanceof Y.Node) {"," nlist = new Y.NodeList(i._node);"," }"," nlist.each(function(nl) {"," if (nl.contains(tar)) {"," r = true;"," }"," });"," }"," } else if (Y.Lang.isString(n)) {"," //Am I this or am I inside this"," if (tar.test(n + ', ' + n + ' *') && !hTest) {"," hTest = n;"," r = true;"," }"," }"," });"," } else {"," n = this.get(NODE);"," if (n.contains(tar) || n.compareTo(tar)) {"," r = true;"," }"," }"," if (r) {"," if (this._invalids) {"," Y.each(this._invalids, function(i, n) {"," if (Y.Lang.isString(n)) {"," //Am I this or am I inside this"," if (tar.test(n + ', ' + n + ' *')) {"," r = false;"," }"," }"," });"," }"," }"," if (r) {"," if (hTest) {"," els = ev.currentTarget.all(hTest);"," set = false;"," els.each(function(n) {"," if ((n.contains(tar) || n.compareTo(tar)) && !set) {"," set = true;"," this.set('activeHandle', n);"," }"," }, this);"," } else {"," this.set('activeHandle', this.get(NODE));"," }"," }"," return r;"," },"," /**"," * @private"," * @method _setStartPosition"," * @description Sets the current position of the Element and calculates the offset"," * @param {Array} xy The XY coords to set the position to."," */"," _setStartPosition: function(xy) {"," this.startXY = xy;",""," this.nodeXY = this.lastXY = this.realXY = this.get(NODE).getXY();",""," if (this.get('offsetNode')) {"," this.deltaXY = [(this.startXY[0] - this.nodeXY[0]), (this.startXY[1] - this.nodeXY[1])];"," } else {"," this.deltaXY = [0, 0];"," }"," },"," /**"," * @private"," * @method _timeoutCheck"," * @description The method passed to setTimeout to determine if the clickTimeThreshold was met."," */"," _timeoutCheck: function() {"," if (!this.get('lock') && !this._dragThreshMet && this._ev_md) {"," this._fromTimeout = this._dragThreshMet = true;"," this.start();"," this._alignNode([this._ev_md.pageX, this._ev_md.pageY], true);"," }"," },"," /**"," * @method removeHandle"," * @description Remove a Selector added by addHandle"," * @param {String} str The selector for the handle to be removed."," * @return {Self}"," * @chainable"," */"," removeHandle: function(str) {"," var key = str;"," if (str instanceof Y.Node || str instanceof Y.NodeList) {"," key = str._yuid;"," }"," if (this._handles[key]) {"," delete this._handles[key];"," this.fire(EV_REMOVE_HANDLE, { handle: str });"," }"," return this;"," },"," /**"," * @method addHandle"," * @description Add a handle to a drag element. Drag only initiates when a mousedown happens on this element."," * @param {String} str The selector to test for a valid handle. Must be a child of the element."," * @return {Self}"," * @chainable"," */"," addHandle: function(str) {"," if (!this._handles) {"," this._handles = {};"," }"," var key = str;"," if (str instanceof Y.Node || str instanceof Y.NodeList) {"," key = str._yuid;"," }"," this._handles[key] = str;"," this.fire(EV_ADD_HANDLE, { handle: str });"," return this;"," },"," /**"," * @method removeInvalid"," * @description Remove an invalid handle added by addInvalid"," * @param {String} str The invalid handle to remove from the internal list."," * @return {Self}"," * @chainable"," */"," removeInvalid: function(str) {"," if (this._invalids[str]) {"," this._invalids[str] = null;"," delete this._invalids[str];"," this.fire(EV_REMOVE_INVALID, { handle: str });"," }"," return this;"," },"," /**"," * @method addInvalid"," * @description Add a selector string to test the handle against. If the test passes the drag operation will not continue."," * @param {String} str The selector to test against to determine if this is an invalid drag handle."," * @return {Self}"," * @chainable"," */"," addInvalid: function(str) {"," if (Y.Lang.isString(str)) {"," this._invalids[str] = true;"," this.fire(EV_ADD_INVALID, { handle: str });"," }"," return this;"," },"," /**"," * @private"," * @method initializer"," * @description Internal init handler"," */"," initializer: function() {",""," this.get(NODE).dd = this;",""," if (!this.get(NODE).get('id')) {"," var id = Y.stamp(this.get(NODE));"," this.get(NODE).set('id', id);"," }",""," this.actXY = [];",""," this._invalids = Y.clone(this._invalidsDefault, true);",""," this._createEvents();",""," if (!this.get(DRAG_NODE)) {"," this.set(DRAG_NODE, this.get(NODE));"," }",""," //Fix for #2528096"," //Don't prep the DD instance until all plugins are loaded."," this.on('initializedChange', Y.bind(this._prep, this));",""," //Shouldn't have to do this.."," this.set('groups', this.get('groups'));"," },"," /**"," * @private"," * @method _prep"," * @description Attach event listners and add classname"," */"," _prep: function() {"," this._dragThreshMet = false;"," var node = this.get(NODE);"," node.addClass(DDM.CSS_PREFIX + '-draggable');"," node.on(Drag.START_EVENT, Y.bind(this._handleMouseDownEvent, this));"," node.on('mouseup', Y.bind(this._handleMouseUp, this));"," node.on('dragstart', Y.bind(this._fixDragStart, this));"," },"," /**"," * @private"," * @method _unprep"," * @description Detach event listeners and remove classname"," */"," _unprep: function() {"," var node = this.get(NODE);"," node.removeClass(DDM.CSS_PREFIX + '-draggable');"," node.detachAll('mouseup');"," node.detachAll('dragstart');"," node.detachAll(Drag.START_EVENT);"," this.mouseXY = [];"," this.deltaXY = [0,0];"," this.startXY = [];"," this.nodeXY = [];"," this.lastXY = [];"," this.actXY = [];"," this.realXY = [];"," },"," /**"," * @method start"," * @description Starts the drag operation"," * @return {Self}"," * @chainable"," */"," start: function() {"," if (!this.get('lock') && !this.get(DRAGGING)) {"," var node = this.get(NODE), ow, oh, xy;"," this._startTime = (new Date()).getTime();",""," DDM._start();"," node.addClass(DDM.CSS_PREFIX + '-dragging');"," this.fire(EV_START, {"," pageX: this.nodeXY[0],"," pageY: this.nodeXY[1],"," startTime: this._startTime"," });"," node = this.get(DRAG_NODE);"," xy = this.nodeXY;",""," ow = node.get(OFFSET_WIDTH);"," oh = node.get(OFFSET_HEIGHT);",""," if (this.get('startCentered')) {"," this._setStartPosition([xy[0] + (ow / 2), xy[1] + (oh / 2)]);"," }","",""," this.region = {"," '0': xy[0],"," '1': xy[1],"," area: 0,"," top: xy[1],"," right: xy[0] + ow,"," bottom: xy[1] + oh,"," left: xy[0]"," };"," this.set(DRAGGING, true);"," }"," return this;"," },"," /**"," * @method end"," * @description Ends the drag operation"," * @return {Self}"," * @chainable"," */"," end: function() {"," this._endTime = (new Date()).getTime();"," if (this._clickTimeout) {"," this._clickTimeout.cancel();"," }"," this._dragThreshMet = this._fromTimeout = false;",""," if (!this.get('lock') && this.get(DRAGGING)) {"," this.fire(EV_END, {"," pageX: this.lastXY[0],"," pageY: this.lastXY[1],"," startTime: this._startTime,"," endTime: this._endTime"," });"," }"," this.get(NODE).removeClass(DDM.CSS_PREFIX + '-dragging');"," this.set(DRAGGING, false);"," this.deltaXY = [0, 0];",""," return this;"," },"," /**"," * @private"," * @method _defEndFn"," * @description Handler for fixing the selection in IE"," */"," _defEndFn: function() {"," this._fixIEMouseUp();"," this._ev_md = null;"," },"," /**"," * @private"," * @method _prevEndFn"," * @description Handler for preventing the drag:end event. It will reset the node back to it's start position"," */"," _prevEndFn: function() {"," this._fixIEMouseUp();"," //Bug #1852577"," this.get(DRAG_NODE).setXY(this.nodeXY);"," this._ev_md = null;"," this.region = null;"," },"," /**"," * @private"," * @method _align"," * @description Calculates the offsets and set's the XY that the element will move to."," * @param {Array} xy The xy coords to align with."," */"," _align: function(xy) {"," this.fire(EV_ALIGN, {pageX: xy[0], pageY: xy[1] });"," },"," /**"," * @private"," * @method _defAlignFn"," * @description Calculates the offsets and set's the XY that the element will move to."," * @param {EventFacade} e The drag:align event."," */"," _defAlignFn: function(e) {"," this.actXY = [e.pageX - this.deltaXY[0], e.pageY - this.deltaXY[1]];"," },"," /**"," * @private"," * @method _alignNode"," * @description This method performs the alignment before the element move."," * @param {Array} eXY The XY to move the element to, usually comes from the mousemove DOM event."," */"," _alignNode: function(eXY, scroll) {"," this._align(eXY);"," if (!scroll) {"," this._moveNode();"," }"," },"," /**"," * @private"," * @method _moveNode"," * @description This method performs the actual element move."," */"," _moveNode: function(scroll) {"," //if (!this.get(DRAGGING)) {"," // return;"," //}"," var diffXY = [], diffXY2 = [], startXY = this.nodeXY, xy = this.actXY;",""," diffXY[0] = (xy[0] - this.lastXY[0]);"," diffXY[1] = (xy[1] - this.lastXY[1]);",""," diffXY2[0] = (xy[0] - this.nodeXY[0]);"," diffXY2[1] = (xy[1] - this.nodeXY[1]);","",""," this.region = {"," '0': xy[0],"," '1': xy[1],"," area: 0,"," top: xy[1],"," right: xy[0] + this.get(DRAG_NODE).get(OFFSET_WIDTH),"," bottom: xy[1] + this.get(DRAG_NODE).get(OFFSET_HEIGHT),"," left: xy[0]"," };",""," this.fire(EV_DRAG, {"," pageX: xy[0],"," pageY: xy[1],"," scroll: scroll,"," info: {"," start: startXY,"," xy: xy,"," delta: diffXY,"," offset: diffXY2"," }"," });",""," this.lastXY = xy;"," },"," /**"," * @private"," * @method _defDragFn"," * @description Default function for drag:drag. Fired from _moveNode."," * @param {EventFacade} ev The drag:drag event"," */"," _defDragFn: function(e) {"," if (this.get('move')) {"," if (e.scroll && e.scroll.node) {"," e.scroll.node.set('scrollTop', e.scroll.top);"," e.scroll.node.set('scrollLeft', e.scroll.left);"," }"," this.get(DRAG_NODE).setXY([e.pageX, e.pageY]);"," this.realXY = [e.pageX, e.pageY];"," }"," },"," /**"," * @private"," * @method _move"," * @description Fired from DragDropMgr (DDM) on mousemove."," * @param {EventFacade} ev The mousemove DOM event"," */"," _move: function(ev) {"," if (this.get('lock')) {"," return false;"," }",""," this.mouseXY = [ev.pageX, ev.pageY];"," if (!this._dragThreshMet) {"," var diffX = Math.abs(this.startXY[0] - ev.pageX),"," diffY = Math.abs(this.startXY[1] - ev.pageY);"," if (diffX > this.get('clickPixelThresh') || diffY > this.get('clickPixelThresh')) {"," this._dragThreshMet = true;"," this.start();"," //This only happens on gestures to stop the page from scrolling"," if (ev && ev.preventDefault) {"," ev.preventDefault();"," }"," this._alignNode([ev.pageX, ev.pageY]);"," }"," } else {"," if (this._clickTimeout) {"," this._clickTimeout.cancel();"," }"," this._alignNode([ev.pageX, ev.pageY]);"," }"," },"," /**"," * @method stopDrag"," * @description Method will forcefully stop a drag operation. For example calling this from inside an ESC keypress handler will stop this drag."," * @return {Self}"," * @chainable"," */"," stopDrag: function() {"," if (this.get(DRAGGING)) {"," DDM._end();"," }"," return this;"," },"," /**"," * @private"," * @method destructor"," * @description Lifecycle destructor, unreg the drag from the DDM and remove listeners"," */"," destructor: function() {"," this._unprep();"," if (this.target) {"," this.target.destroy();"," }"," DDM._unregDrag(this);"," }"," });"," Y.namespace('DD');"," Y.DD.Drag = Drag;","","","","","}, '3.7.3', {\"requires\": [\"dd-ddm-base\"]});"]; -_yuitest_coverage["build/dd-drag/dd-drag.js"].lines = {"1":0,"17":0,"195":0,"196":0,"198":0,"199":0,"200":0,"204":0,"211":0,"213":0,"221":0,"222":0,"224":0,"225":0,"226":0,"228":0,"238":0,"239":0,"241":0,"242":0,"243":0,"245":0,"288":0,"289":0,"291":0,"293":0,"356":0,"357":0,"368":0,"379":0,"380":0,"382":0,"383":0,"384":0,"386":0,"389":0,"390":0,"391":0,"393":0,"404":0,"405":0,"406":0,"407":0,"408":0,"409":0,"411":0,"414":0,"416":0,"427":0,"428":0,"441":0,"452":0,"453":0,"455":0,"471":0,"472":0,"473":0,"483":0,"484":0,"485":0,"500":0,"501":0,"502":0,"503":0,"504":0,"507":0,"508":0,"510":0,"511":0,"512":0,"513":0,"531":0,"539":0,"547":0,"555":0,"564":0,"578":0,"579":0,"707":0,"708":0,"709":0,"710":0,"721":0,"722":0,"731":0,"745":0,"746":0,"747":0,"756":0,"757":0,"767":0,"776":0,"778":0,"779":0,"781":0,"782":0,"784":0,"785":0,"786":0,"788":0,"789":0,"791":0,"795":0,"797":0,"799":0,"801":0,"812":0,"818":0,"819":0,"820":0,"821":0,"822":0,"823":0,"824":0,"826":0,"827":0,"828":0,"832":0,"834":0,"835":0,"836":0,"841":0,"842":0,"843":0,"846":0,"847":0,"848":0,"849":0,"851":0,"852":0,"858":0,"859":0,"860":0,"861":0,"862":0,"863":0,"864":0,"865":0,"869":0,"872":0,"881":0,"883":0,"885":0,"886":0,"888":0,"897":0,"898":0,"899":0,"900":0,"911":0,"912":0,"913":0,"915":0,"916":0,"917":0,"919":0,"929":0,"930":0,"932":0,"933":0,"934":0,"936":0,"937":0,"938":0,"948":0,"949":0,"950":0,"951":0,"953":0,"963":0,"964":0,"965":0,"967":0,"976":0,"978":0,"979":0,"980":0,"983":0,"985":0,"987":0,"989":0,"990":0,"995":0,"998":0,"1006":0,"1007":0,"1008":0,"1009":0,"1010":0,"1011":0,"1019":0,"1020":0,"1021":0,"1022":0,"1023":0,"1024":0,"1025":0,"1026":0,"1027":0,"1028":0,"1029":0,"1030":0,"1039":0,"1040":0,"1041":0,"1043":0,"1044":0,"1045":0,"1050":0,"1051":0,"1053":0,"1054":0,"1056":0,"1057":0,"1061":0,"1070":0,"1072":0,"1081":0,"1082":0,"1083":0,"1085":0,"1087":0,"1088":0,"1095":0,"1096":0,"1097":0,"1099":0,"1107":0,"1108":0,"1116":0,"1118":0,"1119":0,"1120":0,"1129":0,"1138":0,"1147":0,"1148":0,"1149":0,"1161":0,"1163":0,"1164":0,"1166":0,"1167":0,"1170":0,"1180":0,"1192":0,"1201":0,"1202":0,"1203":0,"1204":0,"1206":0,"1207":0,"1217":0,"1218":0,"1221":0,"1222":0,"1223":0,"1225":0,"1226":0,"1227":0,"1229":0,"1230":0,"1232":0,"1235":0,"1236":0,"1238":0,"1248":0,"1249":0,"1251":0,"1259":0,"1260":0,"1261":0,"1263":0,"1266":0,"1267":0}; -_yuitest_coverage["build/dd-drag/dd-drag.js"].functions = {"Drag:194":0,"setter:220":0,"setter:237":0,"setter:287":0,"setter:355":0,"setter:367":0,"(anonymous 2):383":0,"getter:378":0,"(anonymous 3):390":0,"setter:388":0,"(anonymous 4):406":0,"setter:403":0,"setter:426":0,"_canDrag:451":0,"addToGroup:470":0,"removeFromGroup:482":0,"_handleTarget:499":0,"(anonymous 5):578":0,"_createEvents:529":0,"_handleMouseUp:706":0,"_fixDragStart:720":0,"_ieSelectFix:730":0,"_fixIEMouseDown:744":0,"_fixIEMouseUp:755":0,"_handleMouseDownEvent:766":0,"_defMouseDownFn:775":0,"(anonymous 7):826":0,"(anonymous 6):819":0,"(anonymous 8):848":0,"(anonymous 9):862":0,"validClick:811":0,"_setStartPosition:880":0,"_timeoutCheck:896":0,"removeHandle:910":0,"addHandle:928":0,"removeInvalid:947":0,"addInvalid:962":0,"initializer:974":0,"_prep:1005":0,"_unprep:1018":0,"start:1038":0,"end:1080":0,"_defEndFn:1106":0,"_prevEndFn:1115":0,"_align:1128":0,"_defAlignFn:1137":0,"_alignNode:1146":0,"_moveNode:1157":0,"_defDragFn:1200":0,"_move:1216":0,"stopDrag:1247":0,"destructor:1258":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/dd-drag/dd-drag.js"].coveredLines = 275; -_yuitest_coverage["build/dd-drag/dd-drag.js"].coveredFunctions = 53; -_yuitest_coverline("build/dd-drag/dd-drag.js", 1); -YUI.add('dd-drag', function (Y, NAME) { - - - /** - * Provides the ability to drag a Node. - * @module dd - * @submodule dd-drag - */ - /** - * Provides the ability to drag a Node. - * @class Drag - * @extends Base - * @constructor - * @namespace DD - */ - - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "(anonymous 1)", 1); -_yuitest_coverline("build/dd-drag/dd-drag.js", 17); -var DDM = Y.DD.DDM, - NODE = 'node', - DRAGGING = 'dragging', - DRAG_NODE = 'dragNode', - OFFSET_HEIGHT = 'offsetHeight', - OFFSET_WIDTH = 'offsetWidth', - /** - * @event drag:mouseup - * @description Handles the mouseup DOM event, does nothing internally just fires. - * @bubbles DDM - * @type {CustomEvent} - */ - /** - * @event drag:mouseDown - * @description Handles the mousedown DOM event, checks to see if you have a valid handle then starts the drag timers. - * @preventable _defMouseDownFn - * @param {EventFacade} event An Event Facade object with the following specific property added: - *
          ev
          The original mousedown event.
          - * @bubbles DDM - * @type {CustomEvent} - */ - EV_MOUSE_DOWN = 'drag:mouseDown', - /** - * @event drag:afterMouseDown - * @description Fires after the mousedown event has been cleared. - * @param {EventFacade} event An Event Facade object with the following specific property added: - *
          ev
          The original mousedown event.
          - * @bubbles DDM - * @type {CustomEvent} - */ - EV_AFTER_MOUSE_DOWN = 'drag:afterMouseDown', - /** - * @event drag:removeHandle - * @description Fires after a handle is removed. - * @param {EventFacade} event An Event Facade object with the following specific property added: - *
          handle
          The handle that was removed.
          - * @bubbles DDM - * @type {CustomEvent} - */ - EV_REMOVE_HANDLE = 'drag:removeHandle', - /** - * @event drag:addHandle - * @description Fires after a handle is added. - * @param {EventFacade} event An Event Facade object with the following specific property added: - *
          handle
          The handle that was added.
          - * @bubbles DDM - * @type {CustomEvent} - */ - EV_ADD_HANDLE = 'drag:addHandle', - /** - * @event drag:removeInvalid - * @description Fires after an invalid selector is removed. - * @param {EventFacade} event An Event Facade object with the following specific property added: - *
          handle
          The handle that was removed.
          - * @bubbles DDM - * @type {CustomEvent} - */ - EV_REMOVE_INVALID = 'drag:removeInvalid', - /** - * @event drag:addInvalid - * @description Fires after an invalid selector is added. - * @param {EventFacade} event An Event Facade object with the following specific property added: - *
          handle
          The handle that was added.
          - * @bubbles DDM - * @type {CustomEvent} - */ - EV_ADD_INVALID = 'drag:addInvalid', - /** - * @event drag:start - * @description Fires at the start of a drag operation. - * @param {EventFacade} event An Event Facade object with the following specific property added: - *
          - *
          pageX
          The original node position X.
          - *
          pageY
          The original node position Y.
          - *
          startTime
          The startTime of the event. getTime on the current Date object.
          - *
          - * @bubbles DDM - * @type {CustomEvent} - */ - EV_START = 'drag:start', - /** - * @event drag:end - * @description Fires at the end of a drag operation. - * @param {EventFacade} event An Event Facade object with the following specific property added: - *
          - *
          pageX
          The current node position X.
          - *
          pageY
          The current node position Y.
          - *
          startTime
          The startTime of the event, from the start event.
          - *
          endTime
          The endTime of the event. getTime on the current Date object.
          - *
          - * @bubbles DDM - * @type {CustomEvent} - */ - EV_END = 'drag:end', - /** - * @event drag:drag - * @description Fires every mousemove during a drag operation. - * @param {EventFacade} event An Event Facade object with the following specific property added: - *
          - *
          pageX
          The current node position X.
          - *
          pageY
          The current node position Y.
          - *
          scroll
          Should a scroll action occur.
          - *
          info
          Object hash containing calculated XY arrays: start, xy, delta, offset
          - *
          - * @bubbles DDM - * @type {CustomEvent} - */ - EV_DRAG = 'drag:drag', - /** - * @event drag:align - * @preventable _defAlignFn - * @description Fires when this node is aligned. - * @param {EventFacade} event An Event Facade object with the following specific property added: - *
          - *
          pageX
          The current node position X.
          - *
          pageY
          The current node position Y.
          - *
          - * @bubbles DDM - * @type {CustomEvent} - */ - EV_ALIGN = 'drag:align', - /** - * @event drag:over - * @description Fires when this node is over a Drop Target. (Fired from dd-drop) - * @param {EventFacade} event An Event Facade object with the following specific property added: - *
          - *
          drop
          The drop object at the time of the event.
          - *
          drag
          The drag object at the time of the event.
          - *
          - * @bubbles DDM - * @type {CustomEvent} - */ - /** - * @event drag:enter - * @description Fires when this node enters a Drop Target. (Fired from dd-drop) - * @param {EventFacade} event An Event Facade object with the following specific property added: - *
          - *
          drop
          The drop object at the time of the event.
          - *
          drag
          The drag object at the time of the event.
          - *
          - * @bubbles DDM - * @type {CustomEvent} - */ - /** - * @event drag:exit - * @description Fires when this node exits a Drop Target. (Fired from dd-drop) - * @param {EventFacade} event An Event Facade object with the following specific property added: - *
          - *
          drop
          The drop object at the time of the event.
          - *
          - * @bubbles DDM - * @type {CustomEvent} - */ - /** - * @event drag:drophit - * @description Fires when this node is dropped on a valid Drop Target. (Fired from dd-ddm-drop) - * @param {EventFacade} event An Event Facade object with the following specific property added: - *
          - *
          drop
          The best guess on what was dropped on.
          - *
          drag
          The drag object at the time of the event.
          - *
          others
          An array of all the other drop targets that was dropped on.
          - *
          - * @bubbles DDM - * @type {CustomEvent} - */ - /** - * @event drag:dropmiss - * @description Fires when this node is dropped on an invalid Drop Target. (Fired from dd-ddm-drop) - * @param {EventFacade} event An Event Facade object with the following specific property added: - *
          - *
          pageX
          The current node position X.
          - *
          pageY
          The current node position Y.
          - *
          - * @bubbles DDM - * @type {CustomEvent} - */ - - Drag = function(o) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "Drag", 194); -_yuitest_coverline("build/dd-drag/dd-drag.js", 195); -this._lazyAddAttrs = false; - _yuitest_coverline("build/dd-drag/dd-drag.js", 196); -Drag.superclass.constructor.apply(this, arguments); - - _yuitest_coverline("build/dd-drag/dd-drag.js", 198); -var valid = DDM._regDrag(this); - _yuitest_coverline("build/dd-drag/dd-drag.js", 199); -if (!valid) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 200); -Y.error('Failed to register node, already in use: ' + o.node); - } - }; - - _yuitest_coverline("build/dd-drag/dd-drag.js", 204); -Drag.NAME = 'drag'; - - /** - * This property defaults to "mousedown", but when drag-gestures is loaded, it is changed to "gesturemovestart" - * @static - * @property START_EVENT - */ - _yuitest_coverline("build/dd-drag/dd-drag.js", 211); -Drag.START_EVENT = 'mousedown'; - - _yuitest_coverline("build/dd-drag/dd-drag.js", 213); -Drag.ATTRS = { - /** - * @attribute node - * @description Y.Node instance to use as the element to initiate a drag operation - * @type Node - */ - node: { - setter: function(node) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "setter", 220); -_yuitest_coverline("build/dd-drag/dd-drag.js", 221); -if (this._canDrag(node)) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 222); -return node; - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 224); -var n = Y.one(node); - _yuitest_coverline("build/dd-drag/dd-drag.js", 225); -if (!n) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 226); -Y.error('DD.Drag: Invalid Node Given: ' + node); - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 228); -return n; - } - }, - /** - * @attribute dragNode - * @description Y.Node instance to use as the draggable element, defaults to node - * @type Node - */ - dragNode: { - setter: function(node) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "setter", 237); -_yuitest_coverline("build/dd-drag/dd-drag.js", 238); -if (this._canDrag(node)) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 239); -return node; - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 241); -var n = Y.one(node); - _yuitest_coverline("build/dd-drag/dd-drag.js", 242); -if (!n) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 243); -Y.error('DD.Drag: Invalid dragNode Given: ' + node); - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 245); -return n; - } - }, - /** - * @attribute offsetNode - * @description Offset the drag element by the difference in cursor position: default true - * @type Boolean - */ - offsetNode: { - value: true - }, - /** - * @attribute startCentered - * @description Center the dragNode to the mouse position on drag:start: default false - * @type Boolean - */ - startCentered: { - value: false - }, - /** - * @attribute clickPixelThresh - * @description The number of pixels to move to start a drag operation, default is 3. - * @type Number - */ - clickPixelThresh: { - value: DDM.get('clickPixelThresh') - }, - /** - * @attribute clickTimeThresh - * @description The number of milliseconds a mousedown has to pass to start a drag operation, default is 1000. - * @type Number - */ - clickTimeThresh: { - value: DDM.get('clickTimeThresh') - }, - /** - * @attribute lock - * @description Set to lock this drag element so that it can't be dragged: default false. - * @type Boolean - */ - lock: { - value: false, - setter: function(lock) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "setter", 287); -_yuitest_coverline("build/dd-drag/dd-drag.js", 288); -if (lock) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 289); -this.get(NODE).addClass(DDM.CSS_PREFIX + '-locked'); - } else { - _yuitest_coverline("build/dd-drag/dd-drag.js", 291); -this.get(NODE).removeClass(DDM.CSS_PREFIX + '-locked'); - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 293); -return lock; - } - }, - /** - * @attribute data - * @description A payload holder to store arbitrary data about this drag object, can be used to store any value. - * @type Mixed - */ - data: { - value: false - }, - /** - * @attribute move - * @description If this is false, the drag element will not move with the cursor: default true. Can be used to "resize" the element. - * @type Boolean - */ - move: { - value: true - }, - /** - * @attribute useShim - * @description Use the protective shim on all drag operations: default true. Only works with dd-ddm, not dd-ddm-base. - * @type Boolean - */ - useShim: { - value: true - }, - /** - * Config option is set by Drag to inform you of which handle fired the drag event (in the case that there are several handles): default false. - * @attribute activeHandle - * @type Node - */ - activeHandle: { - value: false - }, - /** - * By default a drag operation will only begin if the mousedown occurred with the primary mouse button. - * Setting this to false will allow for all mousedown events to trigger a drag. - * @attribute primaryButtonOnly - * @type Boolean - */ - primaryButtonOnly: { - value: true - }, - /** - * This attribute is not meant to be used by the implementor, it is meant to be used as an Event tracker so you can listen for it to change. - * @attribute dragging - * @type Boolean - */ - dragging: { - value: false - }, - parent: { - value: false - }, - /** - * @attribute target - * @description This attribute only works if the dd-drop module has been loaded. It will make this node a drop target as well as draggable. - * @type Boolean - */ - target: { - value: false, - setter: function(config) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "setter", 355); -_yuitest_coverline("build/dd-drag/dd-drag.js", 356); -this._handleTarget(config); - _yuitest_coverline("build/dd-drag/dd-drag.js", 357); -return config; - } - }, - /** - * This attribute only works if the dd-drop module is active. It will set the dragMode (point, intersect, strict) of this Drag instance. - * @attribute dragMode - * @type String - */ - dragMode: { - value: null, - setter: function(mode) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "setter", 367); -_yuitest_coverline("build/dd-drag/dd-drag.js", 368); -return DDM._setDragMode(mode); - } - }, - /** - * @attribute groups - * @description Array of groups to add this drag into. - * @type Array - */ - groups: { - value: ['default'], - getter: function() { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "getter", 378); -_yuitest_coverline("build/dd-drag/dd-drag.js", 379); -if (!this._groups) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 380); -this._groups = {}; - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 382); -var ret = []; - _yuitest_coverline("build/dd-drag/dd-drag.js", 383); -Y.each(this._groups, function(v, k) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "(anonymous 2)", 383); -_yuitest_coverline("build/dd-drag/dd-drag.js", 384); -ret[ret.length] = k; - }); - _yuitest_coverline("build/dd-drag/dd-drag.js", 386); -return ret; - }, - setter: function(g) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "setter", 388); -_yuitest_coverline("build/dd-drag/dd-drag.js", 389); -this._groups = {}; - _yuitest_coverline("build/dd-drag/dd-drag.js", 390); -Y.each(g, function(v) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "(anonymous 3)", 390); -_yuitest_coverline("build/dd-drag/dd-drag.js", 391); -this._groups[v] = true; - }, this); - _yuitest_coverline("build/dd-drag/dd-drag.js", 393); -return g; - } - }, - /** - * @attribute handles - * @description Array of valid handles to add. Adding something here will set all handles, even if previously added with addHandle - * @type Array - */ - handles: { - value: null, - setter: function(g) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "setter", 403); -_yuitest_coverline("build/dd-drag/dd-drag.js", 404); -if (g) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 405); -this._handles = {}; - _yuitest_coverline("build/dd-drag/dd-drag.js", 406); -Y.each(g, function(v) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "(anonymous 4)", 406); -_yuitest_coverline("build/dd-drag/dd-drag.js", 407); -var key = v; - _yuitest_coverline("build/dd-drag/dd-drag.js", 408); -if (v instanceof Y.Node || v instanceof Y.NodeList) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 409); -key = v._yuid; - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 411); -this._handles[key] = v; - }, this); - } else { - _yuitest_coverline("build/dd-drag/dd-drag.js", 414); -this._handles = null; - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 416); -return g; - } - }, - /** - * Controls the default bubble parent for this Drag instance. Default: Y.DD.DDM. Set to false to disable bubbling. Use bubbleTargets in config - * @deprecated - * @attribute bubbles - * @type Object - */ - bubbles: { - setter: function(t) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "setter", 426); -_yuitest_coverline("build/dd-drag/dd-drag.js", 427); -this.addTarget(t); - _yuitest_coverline("build/dd-drag/dd-drag.js", 428); -return t; - } - }, - /** - * @attribute haltDown - * @description Should the mousedown event be halted. Default: true - * @type Boolean - */ - haltDown: { - value: true - } - }; - - _yuitest_coverline("build/dd-drag/dd-drag.js", 441); -Y.extend(Drag, Y.Base, { - /** - * Checks the object for the methods needed to drag the object around. - * Normally this would be a node instance, but in the case of Graphics, it - * may be an SVG node or something similar. - * @method _canDrag - * @private - * @param {Object} n The object to check - * @return {Boolean} True or false if the Object contains the methods needed to Drag - */ - _canDrag: function(n) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_canDrag", 451); -_yuitest_coverline("build/dd-drag/dd-drag.js", 452); -if (n && n.setXY && n.getXY && n.test && n.contains) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 453); -return true; - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 455); -return false; - }, - /** - * @private - * @property _bubbleTargets - * @description The default bubbleTarget for this object. Default: Y.DD.DDM - */ - _bubbleTargets: Y.DD.DDM, - /** - * @method addToGroup - * @description Add this Drag instance to a group, this should be used for on-the-fly group additions. - * @param {String} g The group to add this Drag Instance to. - * @return {Self} - * @chainable - */ - addToGroup: function(g) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "addToGroup", 470); -_yuitest_coverline("build/dd-drag/dd-drag.js", 471); -this._groups[g] = true; - _yuitest_coverline("build/dd-drag/dd-drag.js", 472); -DDM._activateTargets(); - _yuitest_coverline("build/dd-drag/dd-drag.js", 473); -return this; - }, - /** - * @method removeFromGroup - * @description Remove this Drag instance from a group, this should be used for on-the-fly group removals. - * @param {String} g The group to remove this Drag Instance from. - * @return {Self} - * @chainable - */ - removeFromGroup: function(g) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "removeFromGroup", 482); -_yuitest_coverline("build/dd-drag/dd-drag.js", 483); -delete this._groups[g]; - _yuitest_coverline("build/dd-drag/dd-drag.js", 484); -DDM._activateTargets(); - _yuitest_coverline("build/dd-drag/dd-drag.js", 485); -return this; - }, - /** - * @property target - * @description This will be a reference to the Drop instance associated with this drag if the target: true config attribute is set.. - * @type {Object} - */ - target: null, - /** - * @private - * @method _handleTarget - * @description Attribute handler for the target config attribute. - * @param {Boolean/Object} config The Config - */ - _handleTarget: function(config) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_handleTarget", 499); -_yuitest_coverline("build/dd-drag/dd-drag.js", 500); -if (Y.DD.Drop) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 501); -if (config === false) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 502); -if (this.target) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 503); -DDM._unregTarget(this.target); - _yuitest_coverline("build/dd-drag/dd-drag.js", 504); -this.target = null; - } - } else { - _yuitest_coverline("build/dd-drag/dd-drag.js", 507); -if (!Y.Lang.isObject(config)) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 508); -config = {}; - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 510); -config.bubbleTargets = config.bubbleTargets || Y.Object.values(this._yuievt.targets); - _yuitest_coverline("build/dd-drag/dd-drag.js", 511); -config.node = this.get(NODE); - _yuitest_coverline("build/dd-drag/dd-drag.js", 512); -config.groups = config.groups || this.get('groups'); - _yuitest_coverline("build/dd-drag/dd-drag.js", 513); -this.target = new Y.DD.Drop(config); - } - } - }, - /** - * @private - * @property _groups - * @description Storage Array for the groups this drag belongs to. - * @type {Array} - */ - _groups: null, - /** - * @private - * @method _createEvents - * @description This method creates all the events for this Event Target and publishes them so we get Event Bubbling. - */ - _createEvents: function() { - - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_createEvents", 529); -_yuitest_coverline("build/dd-drag/dd-drag.js", 531); -this.publish(EV_MOUSE_DOWN, { - defaultFn: this._defMouseDownFn, - queuable: false, - emitFacade: true, - bubbles: true, - prefix: 'drag' - }); - - _yuitest_coverline("build/dd-drag/dd-drag.js", 539); -this.publish(EV_ALIGN, { - defaultFn: this._defAlignFn, - queuable: false, - emitFacade: true, - bubbles: true, - prefix: 'drag' - }); - - _yuitest_coverline("build/dd-drag/dd-drag.js", 547); -this.publish(EV_DRAG, { - defaultFn: this._defDragFn, - queuable: false, - emitFacade: true, - bubbles: true, - prefix: 'drag' - }); - - _yuitest_coverline("build/dd-drag/dd-drag.js", 555); -this.publish(EV_END, { - defaultFn: this._defEndFn, - preventedFn: this._prevEndFn, - queuable: false, - emitFacade: true, - bubbles: true, - prefix: 'drag' - }); - - _yuitest_coverline("build/dd-drag/dd-drag.js", 564); -var ev = [ - EV_AFTER_MOUSE_DOWN, - EV_REMOVE_HANDLE, - EV_ADD_HANDLE, - EV_REMOVE_INVALID, - EV_ADD_INVALID, - EV_START, - 'drag:drophit', - 'drag:dropmiss', - 'drag:over', - 'drag:enter', - 'drag:exit' - ]; - - _yuitest_coverline("build/dd-drag/dd-drag.js", 578); -Y.each(ev, function(v) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "(anonymous 5)", 578); -_yuitest_coverline("build/dd-drag/dd-drag.js", 579); -this.publish(v, { - type: v, - emitFacade: true, - bubbles: true, - preventable: false, - queuable: false, - prefix: 'drag' - }); - }, this); - }, - /** - * @private - * @property _ev_md - * @description A private reference to the mousedown DOM event - * @type {EventFacade} - */ - _ev_md: null, - /** - * @private - * @property _startTime - * @description The getTime of the mousedown event. Not used, just here in case someone wants/needs to use it. - * @type Date - */ - _startTime: null, - /** - * @private - * @property _endTime - * @description The getTime of the mouseup event. Not used, just here in case someone wants/needs to use it. - * @type Date - */ - _endTime: null, - /** - * @private - * @property _handles - * @description A private hash of the valid drag handles - * @type {Object} - */ - _handles: null, - /** - * @private - * @property _invalids - * @description A private hash of the invalid selector strings - * @type {Object} - */ - _invalids: null, - /** - * A private hash of the default invalid selector strings: {'textarea': true, 'input': true, 'a': true, 'button': true, 'select': true} - * @private - * @property _invalidsDefault - * @type {Object} - */ - _invalidsDefault: {'textarea': true, 'input': true, 'a': true, 'button': true, 'select': true }, - /** - * @private - * @property _dragThreshMet - * @description Private flag to see if the drag threshhold was met - * @type {Boolean} - */ - _dragThreshMet: null, - /** - * @private - * @property _fromTimeout - * @description Flag to determine if the drag operation came from a timeout - * @type {Boolean} - */ - _fromTimeout: null, - /** - * @private - * @property _clickTimeout - * @description Holder for the setTimeout call - * @type {Boolean} - */ - _clickTimeout: null, - /** - * @property deltaXY - * @description The offset of the mouse position to the element's position - * @type {Array} - */ - deltaXY: null, - /** - * @property startXY - * @description The initial mouse position - * @type {Array} - */ - startXY: null, - /** - * @property nodeXY - * @description The initial element position - * @type {Array} - */ - nodeXY: null, - /** - * @property lastXY - * @description The position of the element as it's moving (for offset calculations) - * @type {Array} - */ - lastXY: null, - /** - * @property actXY - * @description The xy that the node will be set to. Changing this will alter the position as it's dragged. - * @type {Array} - */ - actXY: null, - /** - * @property realXY - * @description The real xy position of the node. - * @type {Array} - */ - realXY: null, - /** - * @property mouseXY - * @description The XY coords of the mousemove - * @type {Array} - */ - mouseXY: null, - /** - * @property region - * @description A region object associated with this drag, used for checking regions while dragging. - * @type Object - */ - region: null, - /** - * @private - * @method _handleMouseUp - * @description Handler for the mouseup DOM event - * @param {EventFacade} ev The Event - */ - _handleMouseUp: function() { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_handleMouseUp", 706); -_yuitest_coverline("build/dd-drag/dd-drag.js", 707); -this.fire('drag:mouseup'); - _yuitest_coverline("build/dd-drag/dd-drag.js", 708); -this._fixIEMouseUp(); - _yuitest_coverline("build/dd-drag/dd-drag.js", 709); -if (DDM.activeDrag) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 710); -DDM._end(); - } - }, - /** - * The function we use as the ondragstart handler when we start a drag - * in Internet Explorer. This keeps IE from blowing up on images as drag handles. - * @private - * @method _fixDragStart - * @param {Event} e The Event - */ - _fixDragStart: function(e) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_fixDragStart", 720); -_yuitest_coverline("build/dd-drag/dd-drag.js", 721); -if (this.validClick(e)) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 722); -e.preventDefault(); - } - }, - /** - * @private - * @method _ieSelectFix - * @description The function we use as the onselectstart handler when we start a drag in Internet Explorer - */ - _ieSelectFix: function() { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_ieSelectFix", 730); -_yuitest_coverline("build/dd-drag/dd-drag.js", 731); -return false; - }, - /** - * @private - * @property _ieSelectBack - * @description We will hold a copy of the current "onselectstart" method on this property, and reset it after we are done using it. - */ - _ieSelectBack: null, - /** - * @private - * @method _fixIEMouseDown - * @description This method copies the onselectstart listner on the document to the _ieSelectFix property - */ - _fixIEMouseDown: function() { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_fixIEMouseDown", 744); -_yuitest_coverline("build/dd-drag/dd-drag.js", 745); -if (Y.UA.ie) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 746); -this._ieSelectBack = Y.config.doc.body.onselectstart; - _yuitest_coverline("build/dd-drag/dd-drag.js", 747); -Y.config.doc.body.onselectstart = this._ieSelectFix; - } - }, - /** - * @private - * @method _fixIEMouseUp - * @description This method copies the _ieSelectFix property back to the onselectstart listner on the document. - */ - _fixIEMouseUp: function() { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_fixIEMouseUp", 755); -_yuitest_coverline("build/dd-drag/dd-drag.js", 756); -if (Y.UA.ie) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 757); -Y.config.doc.body.onselectstart = this._ieSelectBack; - } - }, - /** - * @private - * @method _handleMouseDownEvent - * @description Handler for the mousedown DOM event - * @param {EventFacade} ev The Event - */ - _handleMouseDownEvent: function(ev) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_handleMouseDownEvent", 766); -_yuitest_coverline("build/dd-drag/dd-drag.js", 767); -this.fire(EV_MOUSE_DOWN, { ev: ev }); - }, - /** - * @private - * @method _defMouseDownFn - * @description Handler for the mousedown DOM event - * @param {EventFacade} e The Event - */ - _defMouseDownFn: function(e) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_defMouseDownFn", 775); -_yuitest_coverline("build/dd-drag/dd-drag.js", 776); -var ev = e.ev; - - _yuitest_coverline("build/dd-drag/dd-drag.js", 778); -this._dragThreshMet = false; - _yuitest_coverline("build/dd-drag/dd-drag.js", 779); -this._ev_md = ev; - - _yuitest_coverline("build/dd-drag/dd-drag.js", 781); -if (this.get('primaryButtonOnly') && ev.button > 1) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 782); -return false; - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 784); -if (this.validClick(ev)) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 785); -this._fixIEMouseDown(ev); - _yuitest_coverline("build/dd-drag/dd-drag.js", 786); -if (Drag.START_EVENT.indexOf('gesture') !== 0) { - //Only do these if it's not a gesture - _yuitest_coverline("build/dd-drag/dd-drag.js", 788); -if (this.get('haltDown')) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 789); -ev.halt(); - } else { - _yuitest_coverline("build/dd-drag/dd-drag.js", 791); -ev.preventDefault(); - } - } - - _yuitest_coverline("build/dd-drag/dd-drag.js", 795); -this._setStartPosition([ev.pageX, ev.pageY]); - - _yuitest_coverline("build/dd-drag/dd-drag.js", 797); -DDM.activeDrag = this; - - _yuitest_coverline("build/dd-drag/dd-drag.js", 799); -this._clickTimeout = Y.later(this.get('clickTimeThresh'), this, this._timeoutCheck); - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 801); -this.fire(EV_AFTER_MOUSE_DOWN, { ev: ev }); - }, - /** - * Method first checks to see if we have handles, if so it validates the click - * against the handle. Then if it finds a valid handle, it checks it against - * the invalid handles list. Returns true if a good handle was used, false otherwise. - * @method validClick - * @param {EventFacade} ev The Event - * @return {Boolean} - */ - validClick: function(ev) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "validClick", 811); -_yuitest_coverline("build/dd-drag/dd-drag.js", 812); -var r = false, n = false, - tar = ev.target, - hTest = null, - els = null, - nlist = null, - set = false; - _yuitest_coverline("build/dd-drag/dd-drag.js", 818); -if (this._handles) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 819); -Y.each(this._handles, function(i, n) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "(anonymous 6)", 819); -_yuitest_coverline("build/dd-drag/dd-drag.js", 820); -if (i instanceof Y.Node || i instanceof Y.NodeList) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 821); -if (!r) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 822); -nlist = i; - _yuitest_coverline("build/dd-drag/dd-drag.js", 823); -if (nlist instanceof Y.Node) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 824); -nlist = new Y.NodeList(i._node); - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 826); -nlist.each(function(nl) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "(anonymous 7)", 826); -_yuitest_coverline("build/dd-drag/dd-drag.js", 827); -if (nl.contains(tar)) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 828); -r = true; - } - }); - } - } else {_yuitest_coverline("build/dd-drag/dd-drag.js", 832); -if (Y.Lang.isString(n)) { - //Am I this or am I inside this - _yuitest_coverline("build/dd-drag/dd-drag.js", 834); -if (tar.test(n + ', ' + n + ' *') && !hTest) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 835); -hTest = n; - _yuitest_coverline("build/dd-drag/dd-drag.js", 836); -r = true; - } - }} - }); - } else { - _yuitest_coverline("build/dd-drag/dd-drag.js", 841); -n = this.get(NODE); - _yuitest_coverline("build/dd-drag/dd-drag.js", 842); -if (n.contains(tar) || n.compareTo(tar)) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 843); -r = true; - } - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 846); -if (r) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 847); -if (this._invalids) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 848); -Y.each(this._invalids, function(i, n) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "(anonymous 8)", 848); -_yuitest_coverline("build/dd-drag/dd-drag.js", 849); -if (Y.Lang.isString(n)) { - //Am I this or am I inside this - _yuitest_coverline("build/dd-drag/dd-drag.js", 851); -if (tar.test(n + ', ' + n + ' *')) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 852); -r = false; - } - } - }); - } - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 858); -if (r) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 859); -if (hTest) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 860); -els = ev.currentTarget.all(hTest); - _yuitest_coverline("build/dd-drag/dd-drag.js", 861); -set = false; - _yuitest_coverline("build/dd-drag/dd-drag.js", 862); -els.each(function(n) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "(anonymous 9)", 862); -_yuitest_coverline("build/dd-drag/dd-drag.js", 863); -if ((n.contains(tar) || n.compareTo(tar)) && !set) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 864); -set = true; - _yuitest_coverline("build/dd-drag/dd-drag.js", 865); -this.set('activeHandle', n); - } - }, this); - } else { - _yuitest_coverline("build/dd-drag/dd-drag.js", 869); -this.set('activeHandle', this.get(NODE)); - } - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 872); -return r; - }, - /** - * @private - * @method _setStartPosition - * @description Sets the current position of the Element and calculates the offset - * @param {Array} xy The XY coords to set the position to. - */ - _setStartPosition: function(xy) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_setStartPosition", 880); -_yuitest_coverline("build/dd-drag/dd-drag.js", 881); -this.startXY = xy; - - _yuitest_coverline("build/dd-drag/dd-drag.js", 883); -this.nodeXY = this.lastXY = this.realXY = this.get(NODE).getXY(); - - _yuitest_coverline("build/dd-drag/dd-drag.js", 885); -if (this.get('offsetNode')) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 886); -this.deltaXY = [(this.startXY[0] - this.nodeXY[0]), (this.startXY[1] - this.nodeXY[1])]; - } else { - _yuitest_coverline("build/dd-drag/dd-drag.js", 888); -this.deltaXY = [0, 0]; - } - }, - /** - * @private - * @method _timeoutCheck - * @description The method passed to setTimeout to determine if the clickTimeThreshold was met. - */ - _timeoutCheck: function() { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_timeoutCheck", 896); -_yuitest_coverline("build/dd-drag/dd-drag.js", 897); -if (!this.get('lock') && !this._dragThreshMet && this._ev_md) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 898); -this._fromTimeout = this._dragThreshMet = true; - _yuitest_coverline("build/dd-drag/dd-drag.js", 899); -this.start(); - _yuitest_coverline("build/dd-drag/dd-drag.js", 900); -this._alignNode([this._ev_md.pageX, this._ev_md.pageY], true); - } - }, - /** - * @method removeHandle - * @description Remove a Selector added by addHandle - * @param {String} str The selector for the handle to be removed. - * @return {Self} - * @chainable - */ - removeHandle: function(str) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "removeHandle", 910); -_yuitest_coverline("build/dd-drag/dd-drag.js", 911); -var key = str; - _yuitest_coverline("build/dd-drag/dd-drag.js", 912); -if (str instanceof Y.Node || str instanceof Y.NodeList) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 913); -key = str._yuid; - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 915); -if (this._handles[key]) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 916); -delete this._handles[key]; - _yuitest_coverline("build/dd-drag/dd-drag.js", 917); -this.fire(EV_REMOVE_HANDLE, { handle: str }); - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 919); -return this; - }, - /** - * @method addHandle - * @description Add a handle to a drag element. Drag only initiates when a mousedown happens on this element. - * @param {String} str The selector to test for a valid handle. Must be a child of the element. - * @return {Self} - * @chainable - */ - addHandle: function(str) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "addHandle", 928); -_yuitest_coverline("build/dd-drag/dd-drag.js", 929); -if (!this._handles) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 930); -this._handles = {}; - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 932); -var key = str; - _yuitest_coverline("build/dd-drag/dd-drag.js", 933); -if (str instanceof Y.Node || str instanceof Y.NodeList) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 934); -key = str._yuid; - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 936); -this._handles[key] = str; - _yuitest_coverline("build/dd-drag/dd-drag.js", 937); -this.fire(EV_ADD_HANDLE, { handle: str }); - _yuitest_coverline("build/dd-drag/dd-drag.js", 938); -return this; - }, - /** - * @method removeInvalid - * @description Remove an invalid handle added by addInvalid - * @param {String} str The invalid handle to remove from the internal list. - * @return {Self} - * @chainable - */ - removeInvalid: function(str) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "removeInvalid", 947); -_yuitest_coverline("build/dd-drag/dd-drag.js", 948); -if (this._invalids[str]) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 949); -this._invalids[str] = null; - _yuitest_coverline("build/dd-drag/dd-drag.js", 950); -delete this._invalids[str]; - _yuitest_coverline("build/dd-drag/dd-drag.js", 951); -this.fire(EV_REMOVE_INVALID, { handle: str }); - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 953); -return this; - }, - /** - * @method addInvalid - * @description Add a selector string to test the handle against. If the test passes the drag operation will not continue. - * @param {String} str The selector to test against to determine if this is an invalid drag handle. - * @return {Self} - * @chainable - */ - addInvalid: function(str) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "addInvalid", 962); -_yuitest_coverline("build/dd-drag/dd-drag.js", 963); -if (Y.Lang.isString(str)) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 964); -this._invalids[str] = true; - _yuitest_coverline("build/dd-drag/dd-drag.js", 965); -this.fire(EV_ADD_INVALID, { handle: str }); - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 967); -return this; - }, - /** - * @private - * @method initializer - * @description Internal init handler - */ - initializer: function() { - - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "initializer", 974); -_yuitest_coverline("build/dd-drag/dd-drag.js", 976); -this.get(NODE).dd = this; - - _yuitest_coverline("build/dd-drag/dd-drag.js", 978); -if (!this.get(NODE).get('id')) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 979); -var id = Y.stamp(this.get(NODE)); - _yuitest_coverline("build/dd-drag/dd-drag.js", 980); -this.get(NODE).set('id', id); - } - - _yuitest_coverline("build/dd-drag/dd-drag.js", 983); -this.actXY = []; - - _yuitest_coverline("build/dd-drag/dd-drag.js", 985); -this._invalids = Y.clone(this._invalidsDefault, true); - - _yuitest_coverline("build/dd-drag/dd-drag.js", 987); -this._createEvents(); - - _yuitest_coverline("build/dd-drag/dd-drag.js", 989); -if (!this.get(DRAG_NODE)) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 990); -this.set(DRAG_NODE, this.get(NODE)); - } - - //Fix for #2528096 - //Don't prep the DD instance until all plugins are loaded. - _yuitest_coverline("build/dd-drag/dd-drag.js", 995); -this.on('initializedChange', Y.bind(this._prep, this)); - - //Shouldn't have to do this.. - _yuitest_coverline("build/dd-drag/dd-drag.js", 998); -this.set('groups', this.get('groups')); - }, - /** - * @private - * @method _prep - * @description Attach event listners and add classname - */ - _prep: function() { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_prep", 1005); -_yuitest_coverline("build/dd-drag/dd-drag.js", 1006); -this._dragThreshMet = false; - _yuitest_coverline("build/dd-drag/dd-drag.js", 1007); -var node = this.get(NODE); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1008); -node.addClass(DDM.CSS_PREFIX + '-draggable'); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1009); -node.on(Drag.START_EVENT, Y.bind(this._handleMouseDownEvent, this)); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1010); -node.on('mouseup', Y.bind(this._handleMouseUp, this)); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1011); -node.on('dragstart', Y.bind(this._fixDragStart, this)); - }, - /** - * @private - * @method _unprep - * @description Detach event listeners and remove classname - */ - _unprep: function() { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_unprep", 1018); -_yuitest_coverline("build/dd-drag/dd-drag.js", 1019); -var node = this.get(NODE); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1020); -node.removeClass(DDM.CSS_PREFIX + '-draggable'); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1021); -node.detachAll('mouseup'); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1022); -node.detachAll('dragstart'); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1023); -node.detachAll(Drag.START_EVENT); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1024); -this.mouseXY = []; - _yuitest_coverline("build/dd-drag/dd-drag.js", 1025); -this.deltaXY = [0,0]; - _yuitest_coverline("build/dd-drag/dd-drag.js", 1026); -this.startXY = []; - _yuitest_coverline("build/dd-drag/dd-drag.js", 1027); -this.nodeXY = []; - _yuitest_coverline("build/dd-drag/dd-drag.js", 1028); -this.lastXY = []; - _yuitest_coverline("build/dd-drag/dd-drag.js", 1029); -this.actXY = []; - _yuitest_coverline("build/dd-drag/dd-drag.js", 1030); -this.realXY = []; - }, - /** - * @method start - * @description Starts the drag operation - * @return {Self} - * @chainable - */ - start: function() { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "start", 1038); -_yuitest_coverline("build/dd-drag/dd-drag.js", 1039); -if (!this.get('lock') && !this.get(DRAGGING)) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 1040); -var node = this.get(NODE), ow, oh, xy; - _yuitest_coverline("build/dd-drag/dd-drag.js", 1041); -this._startTime = (new Date()).getTime(); - - _yuitest_coverline("build/dd-drag/dd-drag.js", 1043); -DDM._start(); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1044); -node.addClass(DDM.CSS_PREFIX + '-dragging'); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1045); -this.fire(EV_START, { - pageX: this.nodeXY[0], - pageY: this.nodeXY[1], - startTime: this._startTime - }); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1050); -node = this.get(DRAG_NODE); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1051); -xy = this.nodeXY; - - _yuitest_coverline("build/dd-drag/dd-drag.js", 1053); -ow = node.get(OFFSET_WIDTH); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1054); -oh = node.get(OFFSET_HEIGHT); - - _yuitest_coverline("build/dd-drag/dd-drag.js", 1056); -if (this.get('startCentered')) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 1057); -this._setStartPosition([xy[0] + (ow / 2), xy[1] + (oh / 2)]); - } - - - _yuitest_coverline("build/dd-drag/dd-drag.js", 1061); -this.region = { - '0': xy[0], - '1': xy[1], - area: 0, - top: xy[1], - right: xy[0] + ow, - bottom: xy[1] + oh, - left: xy[0] - }; - _yuitest_coverline("build/dd-drag/dd-drag.js", 1070); -this.set(DRAGGING, true); - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 1072); -return this; - }, - /** - * @method end - * @description Ends the drag operation - * @return {Self} - * @chainable - */ - end: function() { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "end", 1080); -_yuitest_coverline("build/dd-drag/dd-drag.js", 1081); -this._endTime = (new Date()).getTime(); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1082); -if (this._clickTimeout) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 1083); -this._clickTimeout.cancel(); - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 1085); -this._dragThreshMet = this._fromTimeout = false; - - _yuitest_coverline("build/dd-drag/dd-drag.js", 1087); -if (!this.get('lock') && this.get(DRAGGING)) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 1088); -this.fire(EV_END, { - pageX: this.lastXY[0], - pageY: this.lastXY[1], - startTime: this._startTime, - endTime: this._endTime - }); - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 1095); -this.get(NODE).removeClass(DDM.CSS_PREFIX + '-dragging'); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1096); -this.set(DRAGGING, false); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1097); -this.deltaXY = [0, 0]; - - _yuitest_coverline("build/dd-drag/dd-drag.js", 1099); -return this; - }, - /** - * @private - * @method _defEndFn - * @description Handler for fixing the selection in IE - */ - _defEndFn: function() { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_defEndFn", 1106); -_yuitest_coverline("build/dd-drag/dd-drag.js", 1107); -this._fixIEMouseUp(); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1108); -this._ev_md = null; - }, - /** - * @private - * @method _prevEndFn - * @description Handler for preventing the drag:end event. It will reset the node back to it's start position - */ - _prevEndFn: function() { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_prevEndFn", 1115); -_yuitest_coverline("build/dd-drag/dd-drag.js", 1116); -this._fixIEMouseUp(); - //Bug #1852577 - _yuitest_coverline("build/dd-drag/dd-drag.js", 1118); -this.get(DRAG_NODE).setXY(this.nodeXY); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1119); -this._ev_md = null; - _yuitest_coverline("build/dd-drag/dd-drag.js", 1120); -this.region = null; - }, - /** - * @private - * @method _align - * @description Calculates the offsets and set's the XY that the element will move to. - * @param {Array} xy The xy coords to align with. - */ - _align: function(xy) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_align", 1128); -_yuitest_coverline("build/dd-drag/dd-drag.js", 1129); -this.fire(EV_ALIGN, {pageX: xy[0], pageY: xy[1] }); - }, - /** - * @private - * @method _defAlignFn - * @description Calculates the offsets and set's the XY that the element will move to. - * @param {EventFacade} e The drag:align event. - */ - _defAlignFn: function(e) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_defAlignFn", 1137); -_yuitest_coverline("build/dd-drag/dd-drag.js", 1138); -this.actXY = [e.pageX - this.deltaXY[0], e.pageY - this.deltaXY[1]]; - }, - /** - * @private - * @method _alignNode - * @description This method performs the alignment before the element move. - * @param {Array} eXY The XY to move the element to, usually comes from the mousemove DOM event. - */ - _alignNode: function(eXY, scroll) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_alignNode", 1146); -_yuitest_coverline("build/dd-drag/dd-drag.js", 1147); -this._align(eXY); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1148); -if (!scroll) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 1149); -this._moveNode(); - } - }, - /** - * @private - * @method _moveNode - * @description This method performs the actual element move. - */ - _moveNode: function(scroll) { - //if (!this.get(DRAGGING)) { - // return; - //} - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_moveNode", 1157); -_yuitest_coverline("build/dd-drag/dd-drag.js", 1161); -var diffXY = [], diffXY2 = [], startXY = this.nodeXY, xy = this.actXY; - - _yuitest_coverline("build/dd-drag/dd-drag.js", 1163); -diffXY[0] = (xy[0] - this.lastXY[0]); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1164); -diffXY[1] = (xy[1] - this.lastXY[1]); - - _yuitest_coverline("build/dd-drag/dd-drag.js", 1166); -diffXY2[0] = (xy[0] - this.nodeXY[0]); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1167); -diffXY2[1] = (xy[1] - this.nodeXY[1]); - - - _yuitest_coverline("build/dd-drag/dd-drag.js", 1170); -this.region = { - '0': xy[0], - '1': xy[1], - area: 0, - top: xy[1], - right: xy[0] + this.get(DRAG_NODE).get(OFFSET_WIDTH), - bottom: xy[1] + this.get(DRAG_NODE).get(OFFSET_HEIGHT), - left: xy[0] - }; - - _yuitest_coverline("build/dd-drag/dd-drag.js", 1180); -this.fire(EV_DRAG, { - pageX: xy[0], - pageY: xy[1], - scroll: scroll, - info: { - start: startXY, - xy: xy, - delta: diffXY, - offset: diffXY2 - } - }); - - _yuitest_coverline("build/dd-drag/dd-drag.js", 1192); -this.lastXY = xy; - }, - /** - * @private - * @method _defDragFn - * @description Default function for drag:drag. Fired from _moveNode. - * @param {EventFacade} ev The drag:drag event - */ - _defDragFn: function(e) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_defDragFn", 1200); -_yuitest_coverline("build/dd-drag/dd-drag.js", 1201); -if (this.get('move')) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 1202); -if (e.scroll && e.scroll.node) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 1203); -e.scroll.node.set('scrollTop', e.scroll.top); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1204); -e.scroll.node.set('scrollLeft', e.scroll.left); - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 1206); -this.get(DRAG_NODE).setXY([e.pageX, e.pageY]); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1207); -this.realXY = [e.pageX, e.pageY]; - } - }, - /** - * @private - * @method _move - * @description Fired from DragDropMgr (DDM) on mousemove. - * @param {EventFacade} ev The mousemove DOM event - */ - _move: function(ev) { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "_move", 1216); -_yuitest_coverline("build/dd-drag/dd-drag.js", 1217); -if (this.get('lock')) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 1218); -return false; - } - - _yuitest_coverline("build/dd-drag/dd-drag.js", 1221); -this.mouseXY = [ev.pageX, ev.pageY]; - _yuitest_coverline("build/dd-drag/dd-drag.js", 1222); -if (!this._dragThreshMet) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 1223); -var diffX = Math.abs(this.startXY[0] - ev.pageX), - diffY = Math.abs(this.startXY[1] - ev.pageY); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1225); -if (diffX > this.get('clickPixelThresh') || diffY > this.get('clickPixelThresh')) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 1226); -this._dragThreshMet = true; - _yuitest_coverline("build/dd-drag/dd-drag.js", 1227); -this.start(); - //This only happens on gestures to stop the page from scrolling - _yuitest_coverline("build/dd-drag/dd-drag.js", 1229); -if (ev && ev.preventDefault) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 1230); -ev.preventDefault(); - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 1232); -this._alignNode([ev.pageX, ev.pageY]); - } - } else { - _yuitest_coverline("build/dd-drag/dd-drag.js", 1235); -if (this._clickTimeout) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 1236); -this._clickTimeout.cancel(); - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 1238); -this._alignNode([ev.pageX, ev.pageY]); - } - }, - /** - * @method stopDrag - * @description Method will forcefully stop a drag operation. For example calling this from inside an ESC keypress handler will stop this drag. - * @return {Self} - * @chainable - */ - stopDrag: function() { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "stopDrag", 1247); -_yuitest_coverline("build/dd-drag/dd-drag.js", 1248); -if (this.get(DRAGGING)) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 1249); -DDM._end(); - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 1251); -return this; - }, - /** - * @private - * @method destructor - * @description Lifecycle destructor, unreg the drag from the DDM and remove listeners - */ - destructor: function() { - _yuitest_coverfunc("build/dd-drag/dd-drag.js", "destructor", 1258); -_yuitest_coverline("build/dd-drag/dd-drag.js", 1259); -this._unprep(); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1260); -if (this.target) { - _yuitest_coverline("build/dd-drag/dd-drag.js", 1261); -this.target.destroy(); - } - _yuitest_coverline("build/dd-drag/dd-drag.js", 1263); -DDM._unregDrag(this); - } - }); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1266); -Y.namespace('DD'); - _yuitest_coverline("build/dd-drag/dd-drag.js", 1267); -Y.DD.Drag = Drag; - - - - -}, '3.7.3', {"requires": ["dd-ddm-base"]}); diff --git a/lib/yuilib/3.7.3/build/dd-drag/dd-drag-min.js b/lib/yuilib/3.7.3/build/dd-drag/dd-drag-min.js deleted file mode 100644 index 6413c409e44..00000000000 --- a/lib/yuilib/3.7.3/build/dd-drag/dd-drag-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("dd-drag",function(e,t){var n=e.DD.DDM,r="node",i="dragging",s="dragNode",o="offsetHeight",u="offsetWidth",a="drag:mouseDown",f="drag:afterMouseDown",l="drag:removeHandle",c="drag:addHandle",h="drag:removeInvalid",p="drag:addInvalid",d="drag:start",v="drag:end",m="drag:drag",g="drag:align",y=function(t){this._lazyAddAttrs=!1,y.superclass.constructor.apply(this,arguments);var r=n._regDrag(this);r||e.error("Failed to register node, already in use: "+t.node)};y.NAME="drag",y.START_EVENT="mousedown",y.ATTRS={node:{setter:function(t){if(this._canDrag(t))return t;var n=e.one(t);return n||e.error("DD.Drag: Invalid Node Given: "+t),n}},dragNode:{setter:function(t){if(this._canDrag(t))return t;var n=e.one(t);return n||e.error("DD.Drag: Invalid dragNode Given: "+t),n}},offsetNode:{value:!0},startCentered:{value:!1},clickPixelThresh:{value:n.get("clickPixelThresh")},clickTimeThresh:{value:n.get("clickTimeThresh")},lock:{value:!1,setter:function(e){return e?this.get(r).addClass(n.CSS_PREFIX+"-locked"):this.get(r).removeClass(n.CSS_PREFIX+"-locked"),e}},data:{value:!1},move:{value:!0},useShim:{value:!0},activeHandle:{value:!1},primaryButtonOnly:{value:!0},dragging:{value:!1},parent:{value:!1},target:{value:!1,setter:function(e){return this._handleTarget(e),e}},dragMode:{value:null,setter:function(e){return n._setDragMode(e)}},groups:{value:["default"],getter:function(){this._groups||(this._groups={});var t=[];return e.each(this._groups,function(e,n){t[t.length]=n}),t},setter:function(t){return this._groups={},e.each(t,function(e){this._groups[e]=!0},this),t}},handles:{value:null,setter:function(t){return t?(this._handles={},e.each(t,function(t){var n=t;if(t instanceof e.Node||t instanceof e.NodeList)n=t._yuid;this._handles[n]=t},this)):this._handles=null,t}},bubbles:{setter:function(e){return this.addTarget(e),e}},haltDown:{value:!0}},e.extend(y,e.Base,{_canDrag:function(e){return e&&e.setXY&&e.getXY&&e.test&&e.contains?!0:!1},_bubbleTargets:e.DD.DDM,addToGroup:function(e){return this._groups[e]=!0,n._activateTargets(),this},removeFromGroup:function(e){return delete this._groups[e],n._activateTargets(),this},target:null,_handleTarget:function(t){e.DD.Drop&&(t===!1?this.target&&(n._unregTarget(this.target),this.target=null):(e.Lang.isObject(t)||(t={}),t.bubbleTargets=t.bubbleTargets||e.Object.values(this._yuievt.targets),t.node=this.get(r),t.groups=t.groups||this.get("groups"),this.target=new e.DD.Drop(t)))},_groups:null,_createEvents:function(){this.publish(a,{defaultFn:this._defMouseDownFn,queuable:!1,emitFacade:!0,bubbles:!0,prefix:"drag"}),this.publish(g,{defaultFn:this._defAlignFn,queuable:!1,emitFacade:!0,bubbles:!0,prefix:"drag"}),this.publish(m,{defaultFn:this._defDragFn,queuable:!1,emitFacade:!0,bubbles:!0,prefix:"drag"}),this.publish(v,{defaultFn:this._defEndFn,preventedFn:this._prevEndFn,queuable:!1,emitFacade:!0,bubbles:!0,prefix:"drag"});var t=[f,l,c,h,p,d,"drag:drophit","drag:dropmiss","drag:over","drag:enter","drag:exit"];e.each(t,function(e){this.publish(e,{type:e,emitFacade:!0,bubbles:!0,preventable:!1,queuable:!1,prefix:"drag"})},this)},_ev_md:null,_startTime:null,_endTime:null,_handles:null,_invalids:null,_invalidsDefault:{textarea:!0,input:!0,a:!0,button:!0,select:!0},_dragThreshMet:null,_fromTimeout:null,_clickTimeout:null,deltaXY:null,startXY:null,nodeXY:null,lastXY:null,actXY:null,realXY:null,mouseXY:null,region:null,_handleMouseUp:function(){this.fire("drag:mouseup"),this._fixIEMouseUp(),n.activeDrag&&n._end()},_fixDragStart:function(e){this.validClick(e)&&e.preventDefault()},_ieSelectFix:function(){return!1},_ieSelectBack:null,_fixIEMouseDown:function(){e.UA.ie&&(this._ieSelectBack=e.config.doc.body.onselectstart,e.config.doc.body.onselectstart=this._ieSelectFix)},_fixIEMouseUp:function(){e.UA.ie&&(e.config.doc.body.onselectstart=this._ieSelectBack)},_handleMouseDownEvent:function(e){this.fire(a,{ev:e})},_defMouseDownFn:function(t){var r=t.ev;this._dragThreshMet=!1,this._ev_md=r;if(this.get("primaryButtonOnly")&&r.button>1)return!1;this.validClick(r)&&(this._fixIEMouseDown(r),y.START_EVENT.indexOf("gesture")!==0&&(this.get("haltDown")?r.halt():r.preventDefault()),this._setStartPosition([r.pageX,r.pageY]),n.activeDrag=this,this._clickTimeout=e.later(this.get("clickTimeThresh"),this,this._timeoutCheck)),this.fire(f,{ev:r})},validClick:function(t){var n=!1,i=!1,s=t.target,o=null,u=null,a=null,f=!1;if(this._handles)e.each(this._handles,function(t,r){t instanceof e.Node||t instanceof e.NodeList?n||(a=t,a instanceof e.Node&&(a=new e.NodeList(t._node)),a.each(function(e){e.contains(s)&&(n=!0)})):e.Lang.isString(r)&&s.test(r+", "+r+" *")&&!o&&(o=r,n=!0)});else{i=this.get(r);if(i.contains(s)||i.compareTo(s))n=!0}return n&&this._invalids&&e.each(this._invalids,function(t,r){e.Lang.isString(r)&&s.test(r+", "+r+" *")&&(n=!1)}),n&&(o?(u=t.currentTarget.all(o),f=!1,u.each(function(e){(e.contains(s)||e.compareTo(s))&&!f&&(f=!0,this.set("activeHandle",e))},this)):this.set("activeHandle",this.get(r))),n},_setStartPosition:function(e){this.startXY=e,this.nodeXY=this.lastXY=this.realXY=this.get(r).getXY(),this.get("offsetNode")?this.deltaXY=[this.startXY[0]-this.nodeXY[0],this.startXY[1]-this.nodeXY[1]]:this.deltaXY=[0,0]},_timeoutCheck:function(){!this.get("lock")&&!this._dragThreshMet&&this._ev_md&&(this._fromTimeout=this._dragThreshMet=!0,this.start(),this._alignNode([this._ev_md.pageX,this._ev_md.pageY],!0))},removeHandle:function(t){var n=t;if(t instanceof e.Node||t instanceof e.NodeList)n=t._yuid;return this._handles[n]&&(delete this._handles[n],this.fire(l,{handle:t})),this},addHandle:function(t){this._handles||(this._handles={});var n=t;if(t instanceof e.Node||t instanceof e.NodeList)n=t._yuid;return this._handles[n]=t,this.fire(c,{handle:t}),this},removeInvalid:function(e){return this._invalids[e]&&(this._invalids[e]=null,delete this._invalids[e],this.fire(h,{handle:e})),this},addInvalid:function(t){return e.Lang.isString(t)&&(this._invalids[t]=!0,this.fire(p,{handle:t})),this},initializer:function(){this.get(r).dd=this;if(!this.get(r).get("id")){var t=e.stamp(this.get(r));this.get(r).set("id",t)}this.actXY=[],this._invalids=e.clone(this._invalidsDefault,!0),this._createEvents(),this.get(s)||this.set(s,this.get(r)),this.on("initializedChange",e.bind(this._prep,this)),this.set("groups",this.get("groups"))},_prep:function(){this._dragThreshMet=!1;var t=this.get(r);t.addClass(n.CSS_PREFIX+"-draggable"),t.on(y.START_EVENT,e.bind(this._handleMouseDownEvent,this)),t.on("mouseup",e.bind(this._handleMouseUp,this)),t.on("dragstart",e.bind(this._fixDragStart,this))},_unprep:function(){var e=this.get(r);e.removeClass(n.CSS_PREFIX+"-draggable"),e.detachAll("mouseup"),e.detachAll("dragstart"),e.detachAll(y.START_EVENT),this.mouseXY=[],this.deltaXY=[0,0],this.startXY=[],this.nodeXY=[],this.lastXY=[],this.actXY=[],this.realXY=[]},start:function(){if(!this.get("lock")&&!this.get(i)){var e=this.get(r),t,a,f;this._startTime=(new Date).getTime(),n._start(),e.addClass(n.CSS_PREFIX+"-dragging"),this.fire(d,{pageX:this.nodeXY[0],pageY:this.nodeXY[1],startTime:this._startTime}),e=this.get(s),f=this.nodeXY,t=e.get(u),a=e.get(o),this.get("startCentered")&&this._setStartPosition([f[0]+t/2,f[1]+a/2]),this.region={0:f[0],1:f[1],area:0,top:f[1],right:f[0]+t,bottom:f[1]+a,left:f[0]},this.set(i,!0)}return this},end:function(){return this._endTime=(new Date).getTime(),this._clickTimeout&&this._clickTimeout.cancel(),this._dragThreshMet=this._fromTimeout=!1,!this.get("lock")&&this.get(i)&&this.fire(v,{pageX:this.lastXY[0],pageY:this.lastXY[1],startTime:this._startTime,endTime:this._endTime}),this.get(r).removeClass(n.CSS_PREFIX+"-dragging"),this.set(i,!1),this.deltaXY=[0,0],this},_defEndFn:function(){this._fixIEMouseUp(),this._ev_md=null},_prevEndFn:function(){this._fixIEMouseUp(),this.get(s).setXY(this.nodeXY),this._ev_md=null,this.region=null},_align:function(e){this.fire(g,{pageX:e[0],pageY:e[1]})},_defAlignFn:function(e){this.actXY=[e.pageX-this.deltaXY[0],e.pageY-this.deltaXY[1]]},_alignNode:function(e,t){this._align(e),t||this._moveNode()},_moveNode:function(e){var t=[],n=[],r=this.nodeXY,i=this.actXY;t[0]=i[0]-this.lastXY[0],t[1]=i[1]-this.lastXY[1],n[0]=i[0]-this.nodeXY[0],n[1]=i[1]-this.nodeXY[1],this.region={0:i[0],1:i[1],area:0,top:i[1],right:i[0]+this.get(s).get(u),bottom:i[1]+this.get(s).get(o),left:i[0]},this.fire(m,{pageX:i[0],pageY:i[1],scroll:e,info:{start:r,xy:i,delta:t,offset:n}}),this.lastXY=i},_defDragFn:function(e){this.get("move")&&(e.scroll&&e.scroll.node&&(e.scroll.node.set("scrollTop",e.scroll.top),e.scroll.node.set("scrollLeft",e.scroll.left)),this.get(s).setXY([e.pageX,e.pageY]),this.realXY=[e.pageX,e.pageY])},_move:function(e){if(this.get("lock"))return!1;this.mouseXY=[e.pageX,e.pageY];if(!this._dragThreshMet){var t=Math.abs(this.startXY[0]-e.pageX),n=Math.abs(this.startXY[1]-e.pageY);if(t>this.get("clickPixelThresh")||n>this.get("clickPixelThresh"))this._dragThreshMet=!0,this.start(),e&&e.preventDefault&&e.preventDefault(),this._alignNode([e.pageX,e.pageY])}else this._clickTimeout&&this._clickTimeout.cancel(),this._alignNode([e.pageX,e.pageY])},stopDrag:function(){return this.get(i)&&n._end(),this},destructor:function(){this._unprep(),this.target&&this.target.destroy(),n._unregDrag(this)}}),e.namespace("DD"),e.DD.Drag=y},"3.7.3",{requires:["dd-ddm-base"]}); diff --git a/lib/yuilib/3.7.3/build/dd-drop/dd-drop-coverage.js b/lib/yuilib/3.7.3/build/dd-drop/dd-drop-coverage.js deleted file mode 100644 index 05c4431962d..00000000000 --- a/lib/yuilib/3.7.3/build/dd-drop/dd-drop-coverage.js +++ /dev/null @@ -1,780 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -if (typeof _yuitest_coverage == "undefined"){ - _yuitest_coverage = {}; - _yuitest_coverline = function(src, line){ - var coverage = _yuitest_coverage[src]; - if (!coverage.lines[line]){ - coverage.calledLines++; - } - coverage.lines[line]++; - }; - _yuitest_coverfunc = function(src, name, line){ - var coverage = _yuitest_coverage[src], - funcId = name + ":" + line; - if (!coverage.functions[funcId]){ - coverage.calledFunctions++; - } - coverage.functions[funcId]++; - }; -} -_yuitest_coverage["build/dd-drop/dd-drop.js"] = { - lines: {}, - functions: {}, - coveredLines: 0, - calledLines: 0, - coveredFunctions: 0, - calledFunctions: 0, - path: "build/dd-drop/dd-drop.js", - code: [] -}; -_yuitest_coverage["build/dd-drop/dd-drop.js"].code=["YUI.add('dd-drop', function (Y, NAME) {","",""," /**"," * Provides the ability to create a Drop Target."," * @module dd"," * @submodule dd-drop"," */"," /**"," * Provides the ability to create a Drop Target."," * @class Drop"," * @extends Base"," * @constructor"," * @namespace DD"," */",""," var NODE = 'node',"," DDM = Y.DD.DDM,"," OFFSET_HEIGHT = 'offsetHeight',"," OFFSET_WIDTH = 'offsetWidth',"," /**"," * @event drop:over"," * @description Fires when a drag element is over this target."," * @param {EventFacade} event An Event Facade object with the following specific property added:"," *
          "," *
          drop
          The drop object at the time of the event.
          "," *
          drag
          The drag object at the time of the event.
          "," *
          "," * @bubbles DDM"," * @type {CustomEvent}"," */"," EV_DROP_OVER = 'drop:over',"," /**"," * @event drop:enter"," * @description Fires when a drag element enters this target."," * @param {EventFacade} event An Event Facade object with the following specific property added:"," *
          "," *
          drop
          The drop object at the time of the event.
          "," *
          drag
          The drag object at the time of the event.
          "," *
          "," * @bubbles DDM"," * @type {CustomEvent}"," */"," EV_DROP_ENTER = 'drop:enter',"," /**"," * @event drop:exit"," * @description Fires when a drag element exits this target."," * @param {EventFacade} event An Event Facade object"," * @bubbles DDM"," * @type {CustomEvent}"," */"," EV_DROP_EXIT = 'drop:exit',",""," /**"," * @event drop:hit"," * @description Fires when a draggable node is dropped on this Drop Target. (Fired from dd-ddm-drop)"," * @param {EventFacade} event An Event Facade object with the following specific property added:"," *
          "," *
          drop
          The best guess on what was dropped on.
          "," *
          drag
          The drag object at the time of the event.
          "," *
          others
          An array of all the other drop targets that was dropped on.
          "," *
          "," * @bubbles DDM"," * @type {CustomEvent}"," */","",""," Drop = function() {"," this._lazyAddAttrs = false;"," Drop.superclass.constructor.apply(this, arguments);","",""," //DD init speed up."," Y.on('domready', Y.bind(function() {"," Y.later(100, this, this._createShim);"," }, this));"," DDM._regTarget(this);",""," /* TODO"," if (Dom.getStyle(this.el, 'position') == 'fixed') {"," Event.on(window, 'scroll', function() {"," this.activateShim();"," }, this, true);"," }"," */"," };",""," Drop.NAME = 'drop';",""," Drop.ATTRS = {"," /**"," * @attribute node"," * @description Y.Node instanace to use as the element to make a Drop Target"," * @type Node"," */"," node: {"," setter: function(node) {"," var n = Y.one(node);"," if (!n) {"," Y.error('DD.Drop: Invalid Node Given: ' + node);"," }"," return n;"," }"," },"," /**"," * @attribute groups"," * @description Array of groups to add this drop into."," * @type Array"," */"," groups: {"," value: ['default'],"," getter: function() {"," if (!this._groups) {"," this._groups = {};"," }"," var ret = [];"," Y.each(this._groups, function(v, k) {"," ret[ret.length] = k;"," });"," return ret;"," },"," setter: function(g) {"," this._groups = {};"," Y.each(g, function(v) {"," this._groups[v] = true;"," }, this);"," return g;"," }"," },"," /**"," * @attribute padding"," * @description CSS style padding to make the Drop Target bigger than the node."," * @type String"," */"," padding: {"," value: '0',"," setter: function(p) {"," return DDM.cssSizestoObject(p);"," }"," },"," /**"," * @attribute lock"," * @description Set to lock this drop element."," * @type Boolean"," */"," lock: {"," value: false,"," setter: function(lock) {"," if (lock) {"," this.get(NODE).addClass(DDM.CSS_PREFIX + '-drop-locked');"," } else {"," this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-locked');"," }"," return lock;"," }"," },"," /**"," * Controls the default bubble parent for this Drop instance. Default: Y.DD.DDM. Set to false to disable bubbling."," * Use bubbleTargets in config."," * @deprecated"," * @attribute bubbles"," * @type Object"," */"," bubbles: {"," setter: function(t) {"," this.addTarget(t);"," return t;"," }"," },"," /**"," * @deprecated"," * @attribute useShim"," * @description Use the Drop shim. Default: true"," * @type Boolean"," */"," useShim: {"," value: true,"," setter: function(v) {"," Y.DD.DDM._noShim = !v;"," return v;"," }"," }"," };",""," Y.extend(Drop, Y.Base, {"," /**"," * @private"," * @property _bubbleTargets"," * @description The default bubbleTarget for this object. Default: Y.DD.DDM"," */"," _bubbleTargets: Y.DD.DDM,"," /**"," * @method addToGroup"," * @description Add this Drop instance to a group, this should be used for on-the-fly group additions."," * @param {String} g The group to add this Drop Instance to."," * @return {Self}"," * @chainable"," */"," addToGroup: function(g) {"," this._groups[g] = true;"," return this;"," },"," /**"," * @method removeFromGroup"," * @description Remove this Drop instance from a group, this should be used for on-the-fly group removals."," * @param {String} g The group to remove this Drop Instance from."," * @return {Self}"," * @chainable"," */"," removeFromGroup: function(g) {"," delete this._groups[g];"," return this;"," },"," /**"," * @private"," * @method _createEvents"," * @description This method creates all the events for this Event Target and publishes them so we get Event Bubbling."," */"," _createEvents: function() {",""," var ev = ["," EV_DROP_OVER,"," EV_DROP_ENTER,"," EV_DROP_EXIT,"," 'drop:hit'"," ];",""," Y.each(ev, function(v) {"," this.publish(v, {"," type: v,"," emitFacade: true,"," preventable: false,"," bubbles: true,"," queuable: false,"," prefix: 'drop'"," });"," }, this);"," },"," /**"," * @private"," * @property _valid"," * @description Flag for determining if the target is valid in this operation."," * @type Boolean"," */"," _valid: null,"," /**"," * @private"," * @property _groups"," * @description The groups this target belongs to."," * @type Array"," */"," _groups: null,"," /**"," * @property shim"," * @description Node reference to the targets shim"," * @type {Object}"," */"," shim: null,"," /**"," * @property region"," * @description A region object associated with this target, used for checking regions while dragging."," * @type Object"," */"," region: null,"," /**"," * @property overTarget"," * @description This flag is tripped when a drag element is over this target."," * @type Boolean"," */"," overTarget: null,"," /**"," * @method inGroup"," * @description Check if this target is in one of the supplied groups."," * @param {Array} groups The groups to check against"," * @return Boolean"," */"," inGroup: function(groups) {"," this._valid = false;"," var ret = false;"," Y.each(groups, function(v) {"," if (this._groups[v]) {"," ret = true;"," this._valid = true;"," }"," }, this);"," return ret;"," },"," /**"," * @private"," * @method initializer"," * @description Private lifecycle method"," */"," initializer: function() {"," Y.later(100, this, this._createEvents);",""," var node = this.get(NODE), id;"," if (!node.get('id')) {"," id = Y.stamp(node);"," node.set('id', id);"," }"," node.addClass(DDM.CSS_PREFIX + '-drop');"," //Shouldn't have to do this.."," this.set('groups', this.get('groups'));"," },"," /**"," * @private"," * @method destructor"," * @description Lifecycle destructor, unreg the drag from the DDM and remove listeners"," */"," destructor: function() {"," DDM._unregTarget(this);"," if (this.shim && (this.shim !== this.get(NODE))) {"," this.shim.detachAll();"," this.shim.remove();"," this.shim = null;"," }"," this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop');"," this.detachAll();"," },"," /**"," * @private"," * @method _deactivateShim"," * @description Removes classes from the target, resets some flags and sets the shims deactive position [-999, -999]"," */"," _deactivateShim: function() {"," if (!this.shim) {"," return false;"," }"," this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-active-valid');"," this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-active-invalid');"," this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-over');",""," if (this.get('useShim')) {"," this.shim.setStyles({"," top: '-999px',"," left: '-999px',"," zIndex: '1'"," });"," }"," this.overTarget = false;"," },"," /**"," * @private"," * @method _activateShim"," * @description Activates the shim and adds some interaction CSS classes"," */"," _activateShim: function() {"," if (!DDM.activeDrag) {"," return false; //Nothing is dragging, no reason to activate."," }"," if (this.get(NODE) === DDM.activeDrag.get(NODE)) {"," return false;"," }"," if (this.get('lock')) {"," return false;"," }"," var node = this.get(NODE);"," //TODO Visibility Check.."," //if (this.inGroup(DDM.activeDrag.get('groups')) && this.get(NODE).isVisible()) {"," if (this.inGroup(DDM.activeDrag.get('groups'))) {"," node.removeClass(DDM.CSS_PREFIX + '-drop-active-invalid');"," node.addClass(DDM.CSS_PREFIX + '-drop-active-valid');"," DDM._addValid(this);"," this.overTarget = false;"," if (!this.get('useShim')) {"," this.shim = this.get(NODE);"," }"," this.sizeShim();"," } else {"," DDM._removeValid(this);"," node.removeClass(DDM.CSS_PREFIX + '-drop-active-valid');"," node.addClass(DDM.CSS_PREFIX + '-drop-active-invalid');"," }"," },"," /**"," * Positions and sizes the shim with the raw data from the node,"," * this can be used to programatically adjust the Targets shim for Animation.."," * @method sizeShim"," */"," sizeShim: function() {"," if (!DDM.activeDrag) {"," return false; //Nothing is dragging, no reason to activate."," }"," if (this.get(NODE) === DDM.activeDrag.get(NODE)) {"," return false;"," }"," //if (this.get('lock') || !this.get('useShim')) {"," if (this.get('lock')) {"," return false;"," }"," if (!this.shim) {"," Y.later(100, this, this.sizeShim);"," return false;"," }"," var node = this.get(NODE),"," nh = node.get(OFFSET_HEIGHT),"," nw = node.get(OFFSET_WIDTH),"," xy = node.getXY(),"," p = this.get('padding'),"," dd, dH, dW;","",""," //Apply padding"," nw = nw + p.left + p.right;"," nh = nh + p.top + p.bottom;"," xy[0] = xy[0] - p.left;"," xy[1] = xy[1] - p.top;","",""," if (DDM.activeDrag.get('dragMode') === DDM.INTERSECT) {"," //Intersect Mode, make the shim bigger"," dd = DDM.activeDrag;"," dH = dd.get(NODE).get(OFFSET_HEIGHT);"," dW = dd.get(NODE).get(OFFSET_WIDTH);",""," nh = (nh + dH);"," nw = (nw + dW);"," xy[0] = xy[0] - (dW - dd.deltaXY[0]);"," xy[1] = xy[1] - (dH - dd.deltaXY[1]);",""," }",""," if (this.get('useShim')) {"," //Set the style on the shim"," this.shim.setStyles({"," height: nh + 'px',"," width: nw + 'px',"," top: xy[1] + 'px',"," left: xy[0] + 'px'"," });"," }",""," //Create the region to be used by intersect when a drag node is over us."," this.region = {"," '0': xy[0],"," '1': xy[1],"," area: 0,"," top: xy[1],"," right: xy[0] + nw,"," bottom: xy[1] + nh,"," left: xy[0]"," };"," },"," /**"," * @private"," * @method _createShim"," * @description Creates the Target shim and adds it to the DDM's playground.."," */"," _createShim: function() {"," //No playground, defer"," if (!DDM._pg) {"," Y.later(10, this, this._createShim);"," return;"," }"," //Shim already here, cancel"," if (this.shim) {"," return;"," }"," var s = this.get('node');",""," if (this.get('useShim')) {"," s = Y.Node.create('
          ');"," s.setStyles({"," height: this.get(NODE).get(OFFSET_HEIGHT) + 'px',"," width: this.get(NODE).get(OFFSET_WIDTH) + 'px',"," backgroundColor: 'yellow',"," opacity: '.5',"," zIndex: '1',"," overflow: 'hidden',"," top: '-900px',"," left: '-900px',"," position: 'absolute'"," });",""," DDM._pg.appendChild(s);",""," s.on('mouseover', Y.bind(this._handleOverEvent, this));"," s.on('mouseout', Y.bind(this._handleOutEvent, this));"," }","",""," this.shim = s;"," },"," /**"," * @private"," * @method _handleOverTarget"," * @description This handles the over target call made from this object or from the DDM"," */"," _handleTargetOver: function() {"," if (DDM.isOverTarget(this)) {"," this.get(NODE).addClass(DDM.CSS_PREFIX + '-drop-over');"," DDM.activeDrop = this;"," DDM.otherDrops[this] = this;"," if (this.overTarget) {"," DDM.activeDrag.fire('drag:over', { drop: this, drag: DDM.activeDrag });"," this.fire(EV_DROP_OVER, { drop: this, drag: DDM.activeDrag });"," } else {"," //Prevent an enter before a start.."," if (DDM.activeDrag.get('dragging')) {"," this.overTarget = true;"," this.fire(EV_DROP_ENTER, { drop: this, drag: DDM.activeDrag });"," DDM.activeDrag.fire('drag:enter', { drop: this, drag: DDM.activeDrag });"," DDM.activeDrag.get(NODE).addClass(DDM.CSS_PREFIX + '-drag-over');"," //TODO - Is this needed??"," //DDM._handleTargetOver();"," }"," }"," } else {"," this._handleOut();"," }"," },"," /**"," * @private"," * @method _handleOverEvent"," * @description Handles the mouseover DOM event on the Target Shim"," */"," _handleOverEvent: function() {"," this.shim.setStyle('zIndex', '999');"," DDM._addActiveShim(this);"," },"," /**"," * @private"," * @method _handleOutEvent"," * @description Handles the mouseout DOM event on the Target Shim"," */"," _handleOutEvent: function() {"," this.shim.setStyle('zIndex', '1');"," DDM._removeActiveShim(this);"," },"," /**"," * @private"," * @method _handleOut"," * @description Handles out of target calls/checks"," */"," _handleOut: function(force) {"," if (!DDM.isOverTarget(this) || force) {"," if (this.overTarget) {"," this.overTarget = false;"," if (!force) {"," DDM._removeActiveShim(this);"," }"," if (DDM.activeDrag) {"," this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-over');"," DDM.activeDrag.get(NODE).removeClass(DDM.CSS_PREFIX + '-drag-over');"," this.fire(EV_DROP_EXIT, { drop: this, drag: DDM.activeDrag });"," DDM.activeDrag.fire('drag:exit', { drop: this, drag: DDM.activeDrag });"," delete DDM.otherDrops[this];"," }"," }"," }"," }"," });",""," Y.DD.Drop = Drop;","","","","","}, '3.7.3', {\"requires\": [\"dd-drag\", \"dd-ddm-drop\"]});"]; -_yuitest_coverage["build/dd-drop/dd-drop.js"].lines = {"1":0,"17":0,"69":0,"70":0,"74":0,"75":0,"77":0,"88":0,"90":0,"98":0,"99":0,"100":0,"102":0,"113":0,"114":0,"116":0,"117":0,"118":0,"120":0,"123":0,"124":0,"125":0,"127":0,"138":0,"149":0,"150":0,"152":0,"154":0,"166":0,"167":0,"179":0,"180":0,"185":0,"200":0,"201":0,"211":0,"212":0,"221":0,"228":0,"229":0,"278":0,"279":0,"280":0,"281":0,"282":0,"283":0,"286":0,"294":0,"296":0,"297":0,"298":0,"299":0,"301":0,"303":0,"311":0,"312":0,"313":0,"314":0,"315":0,"317":0,"318":0,"326":0,"327":0,"329":0,"330":0,"331":0,"333":0,"334":0,"340":0,"348":0,"349":0,"351":0,"352":0,"354":0,"355":0,"357":0,"360":0,"361":0,"362":0,"363":0,"364":0,"365":0,"366":0,"368":0,"370":0,"371":0,"372":0,"381":0,"382":0,"384":0,"385":0,"388":0,"389":0,"391":0,"392":0,"393":0,"395":0,"404":0,"405":0,"406":0,"407":0,"410":0,"412":0,"413":0,"414":0,"416":0,"417":0,"418":0,"419":0,"423":0,"425":0,"434":0,"451":0,"452":0,"453":0,"456":0,"457":0,"459":0,"461":0,"462":0,"463":0,"475":0,"477":0,"478":0,"482":0,"490":0,"491":0,"492":0,"493":0,"494":0,"495":0,"496":0,"499":0,"500":0,"501":0,"502":0,"503":0,"509":0,"518":0,"519":0,"527":0,"528":0,"536":0,"537":0,"538":0,"539":0,"540":0,"542":0,"543":0,"544":0,"545":0,"546":0,"547":0,"554":0}; -_yuitest_coverage["build/dd-drop/dd-drop.js"].functions = {"(anonymous 2):74":0,"Drop:68":0,"setter:97":0,"(anonymous 3):117":0,"getter:112":0,"(anonymous 4):124":0,"setter:122":0,"setter:137":0,"setter:148":0,"setter:165":0,"setter:178":0,"addToGroup:199":0,"removeFromGroup:210":0,"(anonymous 5):228":0,"_createEvents:219":0,"(anonymous 6):280":0,"inGroup:277":0,"initializer:293":0,"destructor:310":0,"_deactivateShim:325":0,"_activateShim:347":0,"sizeShim:380":0,"_createShim:449":0,"_handleTargetOver:489":0,"_handleOverEvent:517":0,"_handleOutEvent:526":0,"_handleOut:535":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/dd-drop/dd-drop.js"].coveredLines = 154; -_yuitest_coverage["build/dd-drop/dd-drop.js"].coveredFunctions = 28; -_yuitest_coverline("build/dd-drop/dd-drop.js", 1); -YUI.add('dd-drop', function (Y, NAME) { - - - /** - * Provides the ability to create a Drop Target. - * @module dd - * @submodule dd-drop - */ - /** - * Provides the ability to create a Drop Target. - * @class Drop - * @extends Base - * @constructor - * @namespace DD - */ - - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "(anonymous 1)", 1); -_yuitest_coverline("build/dd-drop/dd-drop.js", 17); -var NODE = 'node', - DDM = Y.DD.DDM, - OFFSET_HEIGHT = 'offsetHeight', - OFFSET_WIDTH = 'offsetWidth', - /** - * @event drop:over - * @description Fires when a drag element is over this target. - * @param {EventFacade} event An Event Facade object with the following specific property added: - *
          - *
          drop
          The drop object at the time of the event.
          - *
          drag
          The drag object at the time of the event.
          - *
          - * @bubbles DDM - * @type {CustomEvent} - */ - EV_DROP_OVER = 'drop:over', - /** - * @event drop:enter - * @description Fires when a drag element enters this target. - * @param {EventFacade} event An Event Facade object with the following specific property added: - *
          - *
          drop
          The drop object at the time of the event.
          - *
          drag
          The drag object at the time of the event.
          - *
          - * @bubbles DDM - * @type {CustomEvent} - */ - EV_DROP_ENTER = 'drop:enter', - /** - * @event drop:exit - * @description Fires when a drag element exits this target. - * @param {EventFacade} event An Event Facade object - * @bubbles DDM - * @type {CustomEvent} - */ - EV_DROP_EXIT = 'drop:exit', - - /** - * @event drop:hit - * @description Fires when a draggable node is dropped on this Drop Target. (Fired from dd-ddm-drop) - * @param {EventFacade} event An Event Facade object with the following specific property added: - *
          - *
          drop
          The best guess on what was dropped on.
          - *
          drag
          The drag object at the time of the event.
          - *
          others
          An array of all the other drop targets that was dropped on.
          - *
          - * @bubbles DDM - * @type {CustomEvent} - */ - - - Drop = function() { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "Drop", 68); -_yuitest_coverline("build/dd-drop/dd-drop.js", 69); -this._lazyAddAttrs = false; - _yuitest_coverline("build/dd-drop/dd-drop.js", 70); -Drop.superclass.constructor.apply(this, arguments); - - - //DD init speed up. - _yuitest_coverline("build/dd-drop/dd-drop.js", 74); -Y.on('domready', Y.bind(function() { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "(anonymous 2)", 74); -_yuitest_coverline("build/dd-drop/dd-drop.js", 75); -Y.later(100, this, this._createShim); - }, this)); - _yuitest_coverline("build/dd-drop/dd-drop.js", 77); -DDM._regTarget(this); - - /* TODO - if (Dom.getStyle(this.el, 'position') == 'fixed') { - Event.on(window, 'scroll', function() { - this.activateShim(); - }, this, true); - } - */ - }; - - _yuitest_coverline("build/dd-drop/dd-drop.js", 88); -Drop.NAME = 'drop'; - - _yuitest_coverline("build/dd-drop/dd-drop.js", 90); -Drop.ATTRS = { - /** - * @attribute node - * @description Y.Node instanace to use as the element to make a Drop Target - * @type Node - */ - node: { - setter: function(node) { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "setter", 97); -_yuitest_coverline("build/dd-drop/dd-drop.js", 98); -var n = Y.one(node); - _yuitest_coverline("build/dd-drop/dd-drop.js", 99); -if (!n) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 100); -Y.error('DD.Drop: Invalid Node Given: ' + node); - } - _yuitest_coverline("build/dd-drop/dd-drop.js", 102); -return n; - } - }, - /** - * @attribute groups - * @description Array of groups to add this drop into. - * @type Array - */ - groups: { - value: ['default'], - getter: function() { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "getter", 112); -_yuitest_coverline("build/dd-drop/dd-drop.js", 113); -if (!this._groups) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 114); -this._groups = {}; - } - _yuitest_coverline("build/dd-drop/dd-drop.js", 116); -var ret = []; - _yuitest_coverline("build/dd-drop/dd-drop.js", 117); -Y.each(this._groups, function(v, k) { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "(anonymous 3)", 117); -_yuitest_coverline("build/dd-drop/dd-drop.js", 118); -ret[ret.length] = k; - }); - _yuitest_coverline("build/dd-drop/dd-drop.js", 120); -return ret; - }, - setter: function(g) { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "setter", 122); -_yuitest_coverline("build/dd-drop/dd-drop.js", 123); -this._groups = {}; - _yuitest_coverline("build/dd-drop/dd-drop.js", 124); -Y.each(g, function(v) { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "(anonymous 4)", 124); -_yuitest_coverline("build/dd-drop/dd-drop.js", 125); -this._groups[v] = true; - }, this); - _yuitest_coverline("build/dd-drop/dd-drop.js", 127); -return g; - } - }, - /** - * @attribute padding - * @description CSS style padding to make the Drop Target bigger than the node. - * @type String - */ - padding: { - value: '0', - setter: function(p) { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "setter", 137); -_yuitest_coverline("build/dd-drop/dd-drop.js", 138); -return DDM.cssSizestoObject(p); - } - }, - /** - * @attribute lock - * @description Set to lock this drop element. - * @type Boolean - */ - lock: { - value: false, - setter: function(lock) { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "setter", 148); -_yuitest_coverline("build/dd-drop/dd-drop.js", 149); -if (lock) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 150); -this.get(NODE).addClass(DDM.CSS_PREFIX + '-drop-locked'); - } else { - _yuitest_coverline("build/dd-drop/dd-drop.js", 152); -this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-locked'); - } - _yuitest_coverline("build/dd-drop/dd-drop.js", 154); -return lock; - } - }, - /** - * Controls the default bubble parent for this Drop instance. Default: Y.DD.DDM. Set to false to disable bubbling. - * Use bubbleTargets in config. - * @deprecated - * @attribute bubbles - * @type Object - */ - bubbles: { - setter: function(t) { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "setter", 165); -_yuitest_coverline("build/dd-drop/dd-drop.js", 166); -this.addTarget(t); - _yuitest_coverline("build/dd-drop/dd-drop.js", 167); -return t; - } - }, - /** - * @deprecated - * @attribute useShim - * @description Use the Drop shim. Default: true - * @type Boolean - */ - useShim: { - value: true, - setter: function(v) { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "setter", 178); -_yuitest_coverline("build/dd-drop/dd-drop.js", 179); -Y.DD.DDM._noShim = !v; - _yuitest_coverline("build/dd-drop/dd-drop.js", 180); -return v; - } - } - }; - - _yuitest_coverline("build/dd-drop/dd-drop.js", 185); -Y.extend(Drop, Y.Base, { - /** - * @private - * @property _bubbleTargets - * @description The default bubbleTarget for this object. Default: Y.DD.DDM - */ - _bubbleTargets: Y.DD.DDM, - /** - * @method addToGroup - * @description Add this Drop instance to a group, this should be used for on-the-fly group additions. - * @param {String} g The group to add this Drop Instance to. - * @return {Self} - * @chainable - */ - addToGroup: function(g) { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "addToGroup", 199); -_yuitest_coverline("build/dd-drop/dd-drop.js", 200); -this._groups[g] = true; - _yuitest_coverline("build/dd-drop/dd-drop.js", 201); -return this; - }, - /** - * @method removeFromGroup - * @description Remove this Drop instance from a group, this should be used for on-the-fly group removals. - * @param {String} g The group to remove this Drop Instance from. - * @return {Self} - * @chainable - */ - removeFromGroup: function(g) { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "removeFromGroup", 210); -_yuitest_coverline("build/dd-drop/dd-drop.js", 211); -delete this._groups[g]; - _yuitest_coverline("build/dd-drop/dd-drop.js", 212); -return this; - }, - /** - * @private - * @method _createEvents - * @description This method creates all the events for this Event Target and publishes them so we get Event Bubbling. - */ - _createEvents: function() { - - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "_createEvents", 219); -_yuitest_coverline("build/dd-drop/dd-drop.js", 221); -var ev = [ - EV_DROP_OVER, - EV_DROP_ENTER, - EV_DROP_EXIT, - 'drop:hit' - ]; - - _yuitest_coverline("build/dd-drop/dd-drop.js", 228); -Y.each(ev, function(v) { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "(anonymous 5)", 228); -_yuitest_coverline("build/dd-drop/dd-drop.js", 229); -this.publish(v, { - type: v, - emitFacade: true, - preventable: false, - bubbles: true, - queuable: false, - prefix: 'drop' - }); - }, this); - }, - /** - * @private - * @property _valid - * @description Flag for determining if the target is valid in this operation. - * @type Boolean - */ - _valid: null, - /** - * @private - * @property _groups - * @description The groups this target belongs to. - * @type Array - */ - _groups: null, - /** - * @property shim - * @description Node reference to the targets shim - * @type {Object} - */ - shim: null, - /** - * @property region - * @description A region object associated with this target, used for checking regions while dragging. - * @type Object - */ - region: null, - /** - * @property overTarget - * @description This flag is tripped when a drag element is over this target. - * @type Boolean - */ - overTarget: null, - /** - * @method inGroup - * @description Check if this target is in one of the supplied groups. - * @param {Array} groups The groups to check against - * @return Boolean - */ - inGroup: function(groups) { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "inGroup", 277); -_yuitest_coverline("build/dd-drop/dd-drop.js", 278); -this._valid = false; - _yuitest_coverline("build/dd-drop/dd-drop.js", 279); -var ret = false; - _yuitest_coverline("build/dd-drop/dd-drop.js", 280); -Y.each(groups, function(v) { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "(anonymous 6)", 280); -_yuitest_coverline("build/dd-drop/dd-drop.js", 281); -if (this._groups[v]) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 282); -ret = true; - _yuitest_coverline("build/dd-drop/dd-drop.js", 283); -this._valid = true; - } - }, this); - _yuitest_coverline("build/dd-drop/dd-drop.js", 286); -return ret; - }, - /** - * @private - * @method initializer - * @description Private lifecycle method - */ - initializer: function() { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "initializer", 293); -_yuitest_coverline("build/dd-drop/dd-drop.js", 294); -Y.later(100, this, this._createEvents); - - _yuitest_coverline("build/dd-drop/dd-drop.js", 296); -var node = this.get(NODE), id; - _yuitest_coverline("build/dd-drop/dd-drop.js", 297); -if (!node.get('id')) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 298); -id = Y.stamp(node); - _yuitest_coverline("build/dd-drop/dd-drop.js", 299); -node.set('id', id); - } - _yuitest_coverline("build/dd-drop/dd-drop.js", 301); -node.addClass(DDM.CSS_PREFIX + '-drop'); - //Shouldn't have to do this.. - _yuitest_coverline("build/dd-drop/dd-drop.js", 303); -this.set('groups', this.get('groups')); - }, - /** - * @private - * @method destructor - * @description Lifecycle destructor, unreg the drag from the DDM and remove listeners - */ - destructor: function() { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "destructor", 310); -_yuitest_coverline("build/dd-drop/dd-drop.js", 311); -DDM._unregTarget(this); - _yuitest_coverline("build/dd-drop/dd-drop.js", 312); -if (this.shim && (this.shim !== this.get(NODE))) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 313); -this.shim.detachAll(); - _yuitest_coverline("build/dd-drop/dd-drop.js", 314); -this.shim.remove(); - _yuitest_coverline("build/dd-drop/dd-drop.js", 315); -this.shim = null; - } - _yuitest_coverline("build/dd-drop/dd-drop.js", 317); -this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop'); - _yuitest_coverline("build/dd-drop/dd-drop.js", 318); -this.detachAll(); - }, - /** - * @private - * @method _deactivateShim - * @description Removes classes from the target, resets some flags and sets the shims deactive position [-999, -999] - */ - _deactivateShim: function() { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "_deactivateShim", 325); -_yuitest_coverline("build/dd-drop/dd-drop.js", 326); -if (!this.shim) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 327); -return false; - } - _yuitest_coverline("build/dd-drop/dd-drop.js", 329); -this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-active-valid'); - _yuitest_coverline("build/dd-drop/dd-drop.js", 330); -this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-active-invalid'); - _yuitest_coverline("build/dd-drop/dd-drop.js", 331); -this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-over'); - - _yuitest_coverline("build/dd-drop/dd-drop.js", 333); -if (this.get('useShim')) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 334); -this.shim.setStyles({ - top: '-999px', - left: '-999px', - zIndex: '1' - }); - } - _yuitest_coverline("build/dd-drop/dd-drop.js", 340); -this.overTarget = false; - }, - /** - * @private - * @method _activateShim - * @description Activates the shim and adds some interaction CSS classes - */ - _activateShim: function() { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "_activateShim", 347); -_yuitest_coverline("build/dd-drop/dd-drop.js", 348); -if (!DDM.activeDrag) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 349); -return false; //Nothing is dragging, no reason to activate. - } - _yuitest_coverline("build/dd-drop/dd-drop.js", 351); -if (this.get(NODE) === DDM.activeDrag.get(NODE)) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 352); -return false; - } - _yuitest_coverline("build/dd-drop/dd-drop.js", 354); -if (this.get('lock')) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 355); -return false; - } - _yuitest_coverline("build/dd-drop/dd-drop.js", 357); -var node = this.get(NODE); - //TODO Visibility Check.. - //if (this.inGroup(DDM.activeDrag.get('groups')) && this.get(NODE).isVisible()) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 360); -if (this.inGroup(DDM.activeDrag.get('groups'))) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 361); -node.removeClass(DDM.CSS_PREFIX + '-drop-active-invalid'); - _yuitest_coverline("build/dd-drop/dd-drop.js", 362); -node.addClass(DDM.CSS_PREFIX + '-drop-active-valid'); - _yuitest_coverline("build/dd-drop/dd-drop.js", 363); -DDM._addValid(this); - _yuitest_coverline("build/dd-drop/dd-drop.js", 364); -this.overTarget = false; - _yuitest_coverline("build/dd-drop/dd-drop.js", 365); -if (!this.get('useShim')) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 366); -this.shim = this.get(NODE); - } - _yuitest_coverline("build/dd-drop/dd-drop.js", 368); -this.sizeShim(); - } else { - _yuitest_coverline("build/dd-drop/dd-drop.js", 370); -DDM._removeValid(this); - _yuitest_coverline("build/dd-drop/dd-drop.js", 371); -node.removeClass(DDM.CSS_PREFIX + '-drop-active-valid'); - _yuitest_coverline("build/dd-drop/dd-drop.js", 372); -node.addClass(DDM.CSS_PREFIX + '-drop-active-invalid'); - } - }, - /** - * Positions and sizes the shim with the raw data from the node, - * this can be used to programatically adjust the Targets shim for Animation.. - * @method sizeShim - */ - sizeShim: function() { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "sizeShim", 380); -_yuitest_coverline("build/dd-drop/dd-drop.js", 381); -if (!DDM.activeDrag) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 382); -return false; //Nothing is dragging, no reason to activate. - } - _yuitest_coverline("build/dd-drop/dd-drop.js", 384); -if (this.get(NODE) === DDM.activeDrag.get(NODE)) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 385); -return false; - } - //if (this.get('lock') || !this.get('useShim')) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 388); -if (this.get('lock')) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 389); -return false; - } - _yuitest_coverline("build/dd-drop/dd-drop.js", 391); -if (!this.shim) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 392); -Y.later(100, this, this.sizeShim); - _yuitest_coverline("build/dd-drop/dd-drop.js", 393); -return false; - } - _yuitest_coverline("build/dd-drop/dd-drop.js", 395); -var node = this.get(NODE), - nh = node.get(OFFSET_HEIGHT), - nw = node.get(OFFSET_WIDTH), - xy = node.getXY(), - p = this.get('padding'), - dd, dH, dW; - - - //Apply padding - _yuitest_coverline("build/dd-drop/dd-drop.js", 404); -nw = nw + p.left + p.right; - _yuitest_coverline("build/dd-drop/dd-drop.js", 405); -nh = nh + p.top + p.bottom; - _yuitest_coverline("build/dd-drop/dd-drop.js", 406); -xy[0] = xy[0] - p.left; - _yuitest_coverline("build/dd-drop/dd-drop.js", 407); -xy[1] = xy[1] - p.top; - - - _yuitest_coverline("build/dd-drop/dd-drop.js", 410); -if (DDM.activeDrag.get('dragMode') === DDM.INTERSECT) { - //Intersect Mode, make the shim bigger - _yuitest_coverline("build/dd-drop/dd-drop.js", 412); -dd = DDM.activeDrag; - _yuitest_coverline("build/dd-drop/dd-drop.js", 413); -dH = dd.get(NODE).get(OFFSET_HEIGHT); - _yuitest_coverline("build/dd-drop/dd-drop.js", 414); -dW = dd.get(NODE).get(OFFSET_WIDTH); - - _yuitest_coverline("build/dd-drop/dd-drop.js", 416); -nh = (nh + dH); - _yuitest_coverline("build/dd-drop/dd-drop.js", 417); -nw = (nw + dW); - _yuitest_coverline("build/dd-drop/dd-drop.js", 418); -xy[0] = xy[0] - (dW - dd.deltaXY[0]); - _yuitest_coverline("build/dd-drop/dd-drop.js", 419); -xy[1] = xy[1] - (dH - dd.deltaXY[1]); - - } - - _yuitest_coverline("build/dd-drop/dd-drop.js", 423); -if (this.get('useShim')) { - //Set the style on the shim - _yuitest_coverline("build/dd-drop/dd-drop.js", 425); -this.shim.setStyles({ - height: nh + 'px', - width: nw + 'px', - top: xy[1] + 'px', - left: xy[0] + 'px' - }); - } - - //Create the region to be used by intersect when a drag node is over us. - _yuitest_coverline("build/dd-drop/dd-drop.js", 434); -this.region = { - '0': xy[0], - '1': xy[1], - area: 0, - top: xy[1], - right: xy[0] + nw, - bottom: xy[1] + nh, - left: xy[0] - }; - }, - /** - * @private - * @method _createShim - * @description Creates the Target shim and adds it to the DDM's playground.. - */ - _createShim: function() { - //No playground, defer - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "_createShim", 449); -_yuitest_coverline("build/dd-drop/dd-drop.js", 451); -if (!DDM._pg) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 452); -Y.later(10, this, this._createShim); - _yuitest_coverline("build/dd-drop/dd-drop.js", 453); -return; - } - //Shim already here, cancel - _yuitest_coverline("build/dd-drop/dd-drop.js", 456); -if (this.shim) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 457); -return; - } - _yuitest_coverline("build/dd-drop/dd-drop.js", 459); -var s = this.get('node'); - - _yuitest_coverline("build/dd-drop/dd-drop.js", 461); -if (this.get('useShim')) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 462); -s = Y.Node.create('
          '); - _yuitest_coverline("build/dd-drop/dd-drop.js", 463); -s.setStyles({ - height: this.get(NODE).get(OFFSET_HEIGHT) + 'px', - width: this.get(NODE).get(OFFSET_WIDTH) + 'px', - backgroundColor: 'yellow', - opacity: '.5', - zIndex: '1', - overflow: 'hidden', - top: '-900px', - left: '-900px', - position: 'absolute' - }); - - _yuitest_coverline("build/dd-drop/dd-drop.js", 475); -DDM._pg.appendChild(s); - - _yuitest_coverline("build/dd-drop/dd-drop.js", 477); -s.on('mouseover', Y.bind(this._handleOverEvent, this)); - _yuitest_coverline("build/dd-drop/dd-drop.js", 478); -s.on('mouseout', Y.bind(this._handleOutEvent, this)); - } - - - _yuitest_coverline("build/dd-drop/dd-drop.js", 482); -this.shim = s; - }, - /** - * @private - * @method _handleOverTarget - * @description This handles the over target call made from this object or from the DDM - */ - _handleTargetOver: function() { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "_handleTargetOver", 489); -_yuitest_coverline("build/dd-drop/dd-drop.js", 490); -if (DDM.isOverTarget(this)) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 491); -this.get(NODE).addClass(DDM.CSS_PREFIX + '-drop-over'); - _yuitest_coverline("build/dd-drop/dd-drop.js", 492); -DDM.activeDrop = this; - _yuitest_coverline("build/dd-drop/dd-drop.js", 493); -DDM.otherDrops[this] = this; - _yuitest_coverline("build/dd-drop/dd-drop.js", 494); -if (this.overTarget) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 495); -DDM.activeDrag.fire('drag:over', { drop: this, drag: DDM.activeDrag }); - _yuitest_coverline("build/dd-drop/dd-drop.js", 496); -this.fire(EV_DROP_OVER, { drop: this, drag: DDM.activeDrag }); - } else { - //Prevent an enter before a start.. - _yuitest_coverline("build/dd-drop/dd-drop.js", 499); -if (DDM.activeDrag.get('dragging')) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 500); -this.overTarget = true; - _yuitest_coverline("build/dd-drop/dd-drop.js", 501); -this.fire(EV_DROP_ENTER, { drop: this, drag: DDM.activeDrag }); - _yuitest_coverline("build/dd-drop/dd-drop.js", 502); -DDM.activeDrag.fire('drag:enter', { drop: this, drag: DDM.activeDrag }); - _yuitest_coverline("build/dd-drop/dd-drop.js", 503); -DDM.activeDrag.get(NODE).addClass(DDM.CSS_PREFIX + '-drag-over'); - //TODO - Is this needed?? - //DDM._handleTargetOver(); - } - } - } else { - _yuitest_coverline("build/dd-drop/dd-drop.js", 509); -this._handleOut(); - } - }, - /** - * @private - * @method _handleOverEvent - * @description Handles the mouseover DOM event on the Target Shim - */ - _handleOverEvent: function() { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "_handleOverEvent", 517); -_yuitest_coverline("build/dd-drop/dd-drop.js", 518); -this.shim.setStyle('zIndex', '999'); - _yuitest_coverline("build/dd-drop/dd-drop.js", 519); -DDM._addActiveShim(this); - }, - /** - * @private - * @method _handleOutEvent - * @description Handles the mouseout DOM event on the Target Shim - */ - _handleOutEvent: function() { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "_handleOutEvent", 526); -_yuitest_coverline("build/dd-drop/dd-drop.js", 527); -this.shim.setStyle('zIndex', '1'); - _yuitest_coverline("build/dd-drop/dd-drop.js", 528); -DDM._removeActiveShim(this); - }, - /** - * @private - * @method _handleOut - * @description Handles out of target calls/checks - */ - _handleOut: function(force) { - _yuitest_coverfunc("build/dd-drop/dd-drop.js", "_handleOut", 535); -_yuitest_coverline("build/dd-drop/dd-drop.js", 536); -if (!DDM.isOverTarget(this) || force) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 537); -if (this.overTarget) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 538); -this.overTarget = false; - _yuitest_coverline("build/dd-drop/dd-drop.js", 539); -if (!force) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 540); -DDM._removeActiveShim(this); - } - _yuitest_coverline("build/dd-drop/dd-drop.js", 542); -if (DDM.activeDrag) { - _yuitest_coverline("build/dd-drop/dd-drop.js", 543); -this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-over'); - _yuitest_coverline("build/dd-drop/dd-drop.js", 544); -DDM.activeDrag.get(NODE).removeClass(DDM.CSS_PREFIX + '-drag-over'); - _yuitest_coverline("build/dd-drop/dd-drop.js", 545); -this.fire(EV_DROP_EXIT, { drop: this, drag: DDM.activeDrag }); - _yuitest_coverline("build/dd-drop/dd-drop.js", 546); -DDM.activeDrag.fire('drag:exit', { drop: this, drag: DDM.activeDrag }); - _yuitest_coverline("build/dd-drop/dd-drop.js", 547); -delete DDM.otherDrops[this]; - } - } - } - } - }); - - _yuitest_coverline("build/dd-drop/dd-drop.js", 554); -Y.DD.Drop = Drop; - - - - -}, '3.7.3', {"requires": ["dd-drag", "dd-ddm-drop"]}); diff --git a/lib/yuilib/3.7.3/build/dd-drop/dd-drop-min.js b/lib/yuilib/3.7.3/build/dd-drop/dd-drop-min.js deleted file mode 100644 index 3aaf6e974bf..00000000000 --- a/lib/yuilib/3.7.3/build/dd-drop/dd-drop-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("dd-drop",function(e,t){var n="node",r=e.DD.DDM,i="offsetHeight",s="offsetWidth",o="drop:over",u="drop:enter",a="drop:exit",f=function(){this._lazyAddAttrs=!1,f.superclass.constructor.apply(this,arguments),e.on("domready",e.bind(function(){e.later(100,this,this._createShim)},this)),r._regTarget(this)};f.NAME="drop",f.ATTRS={node:{setter:function(t){var n=e.one(t);return n||e.error("DD.Drop: Invalid Node Given: "+t),n}},groups:{value:["default"],getter:function(){this._groups||(this._groups={});var t=[];return e.each(this._groups,function(e,n){t[t.length]=n}),t},setter:function(t){return this._groups={},e.each(t,function(e){this._groups[e]=!0},this),t}},padding:{value:"0",setter:function(e){return r.cssSizestoObject(e)}},lock:{value:!1,setter:function(e){return e?this.get(n).addClass(r.CSS_PREFIX+"-drop-locked"):this.get(n).removeClass(r.CSS_PREFIX+"-drop-locked"),e}},bubbles:{setter:function(e){return this.addTarget(e),e}},useShim:{value:!0,setter:function(t){return e.DD.DDM._noShim=!t,t}}},e.extend(f,e.Base,{_bubbleTargets:e.DD.DDM,addToGroup:function(e){return this._groups[e]=!0,this},removeFromGroup:function(e){return delete this._groups[e],this},_createEvents:function(){var t=[o,u,a,"drop:hit"];e.each(t,function(e){this.publish(e,{type:e,emitFacade:!0,preventable:!1,bubbles:!0,queuable:!1,prefix:"drop"})},this)},_valid:null,_groups:null,shim:null,region:null,overTarget:null,inGroup:function(t){this._valid=!1;var n=!1;return e.each(t,function(e){this._groups[e]&&(n=!0,this._valid=!0)},this),n},initializer:function(){e.later(100,this,this._createEvents);var t=this.get(n),i;t.get("id")||(i=e.stamp(t),t.set("id",i)),t.addClass(r.CSS_PREFIX+"-drop"),this.set("groups",this.get("groups"))},destructor:function(){r._unregTarget(this),this.shim&&this.shim!==this.get(n)&&(this.shim.detachAll(),this.shim.remove(),this.shim=null),this.get(n).removeClass(r.CSS_PREFIX+"-drop"),this.detachAll()},_deactivateShim:function(){if(!this.shim)return!1;this.get(n).removeClass(r.CSS_PREFIX+"-drop-active-valid"),this.get(n).removeClass(r.CSS_PREFIX+"-drop-active-invalid"),this.get(n).removeClass(r.CSS_PREFIX+"-drop-over"),this.get("useShim")&&this.shim.setStyles({top:"-999px",left:"-999px",zIndex:"1"}),this.overTarget=!1},_activateShim:function(){if(!r.activeDrag)return!1;if(this.get(n)===r.activeDrag.get(n))return!1;if(this.get("lock"))return!1;var e=this.get(n);this.inGroup(r.activeDrag.get("groups"))?(e.removeClass(r.CSS_PREFIX+"-drop-active-invalid"),e.addClass(r.CSS_PREFIX+"-drop-active-valid"),r._addValid(this),this.overTarget=!1,this.get("useShim")||(this.shim=this.get(n)),this.sizeShim()):(r._removeValid(this),e.removeClass(r.CSS_PREFIX+"-drop-active-valid"),e.addClass(r.CSS_PREFIX+"-drop-active-invalid"))},sizeShim:function(){if(!r.activeDrag)return!1;if(this.get(n)===r.activeDrag.get(n))return!1;if(this.get("lock"))return!1;if(!this.shim)return e.later(100,this,this.sizeShim),!1;var t=this.get(n),o=t.get(i),u=t.get(s),a=t.getXY(),f=this.get("padding"),l,c,h;u=u+f.left+f.right,o=o+f.top+f.bottom,a[0]=a[0]-f.left,a[1]=a[1]-f.top,r.activeDrag.get("dragMode")===r.INTERSECT&&(l=r.activeDrag,c=l.get(n).get(i),h=l.get(n).get(s),o+=c,u+=h,a[0]=a[0]-(h-l.deltaXY[0]),a[1]=a[1]-(c-l.deltaXY[1])),this.get("useShim")&&this.shim.setStyles({height:o+"px",width:u+"px",top:a[1]+"px",left:a[0]+"px"}),this.region={0:a[0],1:a[1],area:0,top:a[1],right:a[0]+u,bottom:a[1]+o,left:a[0]}},_createShim:function(){if(!r._pg){e.later(10,this,this._createShim);return}if(this.shim)return;var t=this.get("node");this.get("useShim")&&(t=e.Node.create('
          '),t.setStyles({height:this.get(n).get(i)+"px",width:this.get(n).get(s)+"px",backgroundColor:"yellow",opacity:".5",zIndex:"1",overflow:"hidden",top:"-900px",left:"-900px",position:"absolute"}),r._pg.appendChild(t),t.on("mouseover",e.bind(this._handleOverEvent,this)),t.on("mouseout",e.bind(this._handleOutEvent,this))),this.shim=t},_handleTargetOver:function(){r.isOverTarget(this)?(this.get(n).addClass(r.CSS_PREFIX+"-drop-over"),r.activeDrop=this,r.otherDrops[this]=this,this.overTarget?(r.activeDrag.fire("drag:over",{drop:this,drag:r.activeDrag}),this.fire(o,{drop:this,drag:r.activeDrag})):r.activeDrag.get("dragging")&&(this.overTarget=!0,this.fire(u,{drop:this,drag:r.activeDrag}),r.activeDrag.fire("drag:enter",{drop:this,drag:r.activeDrag}),r.activeDrag.get(n).addClass(r.CSS_PREFIX+"-drag-over"))):this._handleOut()},_handleOverEvent:function(){this.shim.setStyle("zIndex","999"),r._addActiveShim(this)},_handleOutEvent:function(){this.shim.setStyle("zIndex","1"),r._removeActiveShim(this)},_handleOut:function(e){(!r.isOverTarget(this)||e)&&this.overTarget&&(this.overTarget=!1,e||r._removeActiveShim(this),r.activeDrag&&(this.get(n).removeClass(r.CSS_PREFIX+"-drop-over"),r.activeDrag.get(n).removeClass(r.CSS_PREFIX+"-drag-over"),this.fire(a,{drop:this,drag:r.activeDrag}),r.activeDrag.fire("drag:exit",{drop:this,drag:r.activeDrag}),delete r.otherDrops[this]))}}),e.DD.Drop=f},"3.7.3",{requires:["dd-drag","dd-ddm-drop"]}); diff --git a/lib/yuilib/3.7.3/build/dd-proxy/dd-proxy-min.js b/lib/yuilib/3.7.3/build/dd-proxy/dd-proxy-min.js deleted file mode 100644 index b3234d8688e..00000000000 --- a/lib/yuilib/3.7.3/build/dd-proxy/dd-proxy-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("dd-proxy",function(e,t){var n=e.DD.DDM,r="node",i="dragNode",s="host",o=!0,u,a=function(){a.superclass.constructor.apply(this,arguments)};a.NAME="DDProxy",a.NS="proxy",a.ATTRS={host:{},moveOnEnd:{value:o},hideOnEnd:{value:o},resizeFrame:{value:o},positionProxy:{value:o},borderStyle:{value:"1px solid #808080"},cloneNode:{value:!1}},u={_hands:null,_init:function(){if(!n._proxy){n._createFrame(),e.on("domready",e.bind(this._init,this));return}this._hands||(this._hands=[]);var t,o,u=this.get(s),a=u.get(i);a.compareTo(u.get(r))&&n._proxy&&u.set(i,n._proxy),e.each(this._hands,function(e){e.detach()}),t=n.on("ddm:start",e.bind(function(){n.activeDrag===u&&n._setFrame(u)},this)),o=n.on("ddm:end",e.bind(function(){u.get("dragging")&&(this.get("moveOnEnd")&&u.get(r).setXY(u.lastXY),this.get("hideOnEnd")&&u.get(i).setStyle("display","none"),this.get("cloneNode")&&(u.get(i).remove(),u.set(i,n._proxy)))},this)),this._hands=[t,o]},initializer:function(){this._init()},destructor:function(){var t=this.get(s);e.each(this._hands,function(e){e.detach()}),t.set(i,t.get(r))},clone:function(){var t=this.get(s),n=t.get(r),o=n.cloneNode(!0);return delete o._yuid,o.setAttribute("id",e.guid()),o.setStyle("position","absolute"),n.get("parentNode").appendChild(o),t.set(i,o),o}},e.namespace("Plugin"),e.extend(a,e.Base,u),e.Plugin.DDProxy=a,e.mix(n,{_createFrame:function(){if(!n._proxy){n._proxy=o;var t=e.Node.create("
          "),r=e.one("body");t.setStyles({position:"absolute",display:"none",zIndex:"999",top:"-999px",left:"-999px"}),r.prepend(t),t.set("id",e.guid()),t.addClass(n.CSS_PREFIX+"-proxy"),n._proxy=t}},_setFrame:function(e){var t=e.get(r),s=e.get(i),o,u="auto";o=n.activeDrag.get("activeHandle"),o&&(u=o.getStyle("cursor")),u==="auto"&&(u=n.get("dragCursor")),s.setStyles({visibility:"hidden",display:"block",cursor:u,border:e.proxy.get("borderStyle")}),e.proxy.get("cloneNode")&&(s=e.proxy.clone()),e.proxy.get("resizeFrame")&&s.setStyles({height:t.get("offsetHeight")+"px",width:t.get("offsetWidth")+"px"}),e.proxy.get("positionProxy")&&s.setXY(e.nodeXY),s.setStyle("visibility","visible")}})},"3.7.3",{requires:["dd-drag"]}); diff --git a/lib/yuilib/3.7.3/build/event-simulate/event-simulate-min.js b/lib/yuilib/3.7.3/build/event-simulate/event-simulate-min.js deleted file mode 100644 index eaa183f1f49..00000000000 --- a/lib/yuilib/3.7.3/build/event-simulate/event-simulate-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("event-simulate",function(e,t){(function(){function p(t,u,a,f,l,c,h,p,d,v,m){t||e.error("simulateKeyEvent(): Invalid target.");if(r(u)){u=u.toLowerCase();switch(u){case"textevent":u="keypress";break;case"keyup":case"keydown":case"keypress":break;default:e.error("simulateKeyEvent(): Event type '"+u+"' not supported.")}}else e.error("simulateKeyEvent(): Event type must be a string.");i(a)||(a=!0),i(f)||(f=!0),s(l)||(l=e.config.win),i(c)||(c=!1),i(h)||(h=!1),i(p)||(p=!1),i(d)||(d=!1),o(v)||(v=0),o(m)||(m=0);var g=null;if(n(e.config.doc.createEvent)){try{g=e.config.doc.createEvent("KeyEvents"),g.initKeyEvent(u,a,f,l,c,h,p,d,v,m)}catch(y){try{g=e.config.doc.createEvent("Events")}catch(b){g=e.config.doc.createEvent("UIEvents")}finally{g.initEvent(u,a,f),g.view=l,g.altKey=h,g.ctrlKey=c,g.shiftKey=p,g.metaKey=d,g.keyCode=v,g.charCode=m}}t.dispatchEvent(g)}else s(e.config.doc.createEventObject)?(g=e.config.doc.createEventObject(),g.bubbles=a,g.cancelable=f,g.view=l,g.ctrlKey=c,g.altKey=h,g.shiftKey=p,g.metaKey=d,g.keyCode=m>0?m:v,t.fireEvent("on"+u,g)):e.error("simulateKeyEvent(): No event simulation framework present.")}function d(t,a,f,l,c,h,p,d,v,m,g,y,b,w,E,S){t||e.error("simulateMouseEvent(): Invalid target."),r(a)?(a=a.toLowerCase(),u[a]||e.error("simulateMouseEvent(): Event type '"+a+"' not supported.")):e.error("simulateMouseEvent(): Event type must be a string."),i(f)||(f=!0),i(l)||(l=a!="mousemove"),s(c)||(c=e.config.win),o(h)||(h=1),o(p)||(p=0),o(d)||(d=0),o(v)||(v=0),o(m)||(m=0),i(g)||(g=!1),i(y)||(y=!1),i(b)||(b=!1),i(w)||(w=!1),o(E)||(E=0),S=S||null;var x=null;if(n(e.config.doc.createEvent))x=e.config.doc.createEvent("MouseEvents"),x.initMouseEvent?x.initMouseEvent(a,f,l,c,h,p,d,v,m,g,y,b,w,E,S):(x=e.config.doc.createEvent("UIEvents"),x.initEvent(a,f,l),x.view=c,x.detail=h,x.screenX=p,x.screenY=d,x.clientX=v,x.clientY=m,x.ctrlKey=g,x.altKey=y,x.metaKey=w,x.shiftKey=b,x.button=E,x.relatedTarget=S),S&&!x.relatedTarget&&(a=="mouseout"?x.toElement=S:a=="mouseover"&&(x.fromElement=S)),t.dispatchEvent(x);else if(s(e.config.doc.createEventObject)){x=e.config.doc.createEventObject(),x.bubbles=f,x.cancelable=l,x.view=c,x.detail=h,x.screenX=p,x.screenY=d,x.clientX=v,x.clientY=m,x.ctrlKey=g,x.altKey=y,x.metaKey=w,x.shiftKey=b;switch(E){case 0:x.button=1;break;case 1:x.button=4;break;case 2:break;default:x.button=0}x.relatedTarget=S,t.fireEvent("on"+a,x)}else e.error("simulateMouseEvent(): No event simulation framework present.")}function v(t,u,a,c,h,p){t||e.error("simulateUIEvent(): Invalid target."),r(u)?(u=u.toLowerCase(),f[u]||e.error("simulateUIEvent(): Event type '"+u+"' not supported.")):e.error("simulateUIEvent(): Event type must be a string.");var d=null;i(a)||(a=u in l),i(c)||(c=u=="submit"),s(h)||(h=e.config.win),o(p)||(p=1),n(e.config.doc.createEvent)?(d=e.config.doc.createEvent("UIEvents"),d.initUIEvent(u,a,c,h,p),t.dispatchEvent(d)):s(e.config.doc.createEventObject)?(d=e.config.doc.createEventObject(),d.bubbles=a,d.cancelable=c,d.view=h,d.detail=p,t.fireEvent("on"+u,d)):e.error("simulateUIEvent(): No event simulation framework present.")}function m(t,n,r,i,s,o,u,a,f,l,c,p,d,v,m,g){var y;(!e.UA.ios||e.UA.ios<2)&&e.error("simulateGestureEvent(): Native gesture DOM eventframe is not available in this platform."),t||e.error("simulateGestureEvent(): Invalid target."),e.Lang.isString(n)?(n=n.toLowerCase(),h[n]||e.error("simulateTouchEvent(): Event type '"+n+"' not supported.")):e.error("simulateGestureEvent(): Event type must be a string."),e.Lang.isBoolean(r)||(r=!0),e.Lang.isBoolean(i)||(i=!0),e.Lang.isObject(s)||(s=e.config.win),e.Lang.isNumber(o)||(o=2),e.Lang.isNumber(u)||(u=0),e.Lang.isNumber(a)||(a=0),e.Lang.isNumber(f)||(f=0),e.Lang.isNumber(l)||(l=0),e.Lang.isBoolean(c)||(c=!1),e.Lang.isBoolean(p)||(p=!1),e.Lang.isBoolean(d)||(d=!1),e.Lang.isBoolean(v)||(v=!1),e.Lang.isNumber(m)||(m=1),e.Lang.isNumber(g)||(g=0),y=e.config.doc.createEvent("GestureEvent"),y.initGestureEvent(n,r,i,s,o,u,a,f,l,c,p,d,v,t,m,g),t.dispatchEvent(y)}function g(t,n,r,i,s,o,u,a,f,l,h,p,d,v,m,g,y,b,w){var E;t||e.error("simulateTouchEvent(): Invalid target."),e.Lang.isString(n)?(n=n.toLowerCase(),c[n]||e.error("simulateTouchEvent(): Event type '"+n+"' not supported.")):e.error("simulateTouchEvent(): Event type must be a string."),n==="touchstart"||n==="touchmove"?m.length===0&&e.error("simulateTouchEvent(): No touch object in touches"):n==="touchend"&&y.length===0&&e.error("simulateTouchEvent(): No touch object in changedTouches"),e.Lang.isBoolean(r)||(r=!0),e.Lang.isBoolean(i)||(i=n!="touchcancel"),e.Lang.isObject(s)||(s=e.config.win),e.Lang.isNumber(o)||(o=1),e.Lang.isNumber(u)||(u=0),e.Lang.isNumber(a)||(a=0),e.Lang.isNumber(f)||(f=0),e.Lang.isNumber(l)||(l=0),e.Lang.isBoolean(h)||(h=!1),e.Lang.isBoolean(p)||(p=!1),e.Lang.isBoolean(d)||(d=!1),e.Lang.isBoolean(v)||(v=!1),e.Lang.isNumber(b)||(b=1),e.Lang.isNumber(w)||(w=0),e.Lang.isFunction(e.config.doc.createEvent)?(e.UA.android?e.UA.android<4?(E=e.config.doc.createEvent("MouseEvents"),E.initMouseEvent(n,r,i,s,o,u,a,f,l,h,p,d,v,0,t),E.touches=m,E.targetTouches=g,E.changedTouches=y):(E=e.config.doc.createEvent("TouchEvent"),E.initTouchEvent(m,g,y,n,s,u,a,f,l,h,p,d,v)):e.UA.ios?e.UA.ios>=2?(E=e.config.doc.createEvent("TouchEvent"),E.initTouchEvent(n,r,i,s,o,u,a,f,l,h,p,d,v,m,g,y,b,w)):e.error("simulateTouchEvent(): No touch event simulation framework present for iOS, "+e.UA.ios+"."):e.error("simulateTouchEvent(): Not supported agent yet, "+e.UA.userAgent),t.dispatchEvent(E)):e.error("simulateTouchEvent(): No event simulation framework present.")}var t=e.Lang,n=t.isFunction,r=t.isString,i=t.isBoolean,s=t.isObject,o=t.isNumber,u={click:1,dblclick:1,mouseover:1,mouseout:1,mousedown:1,mouseup:1,mousemove:1,contextmenu:1},a={keydown:1,keyup:1,keypress:1},f={submit:1,blur:1,change:1,focus:1,resize:1,scroll:1,select:1},l={scroll:1,resize:1,reset:1,submit:1,change:1,select:1,error:1,abort:1},c={touchstart:1,touchmove:1,touchend:1,touchcancel:1},h={gesturestart:1,gesturechange:1,gestureend:1};e.mix(l,u),e.mix(l,a),e.mix(l,c),e.Event.simulate=function(t,n,r){r=r||{},u[n]?d(t,n,r.bubbles,r.cancelable,r.view,r.detail,r.screenX,r.screenY,r.clientX,r.clientY,r.ctrlKey,r.altKey,r.shiftKey,r.metaKey,r.button,r.relatedTarget):a[n]?p(t,n,r.bubbles,r.cancelable,r.view,r.ctrlKey,r.altKey,r.shiftKey,r.metaKey,r.keyCode,r.charCode):f[n]?v(t,n,r.bubbles,r.cancelable,r.view,r.detail):c[n]?e.config.win&&"ontouchstart"in e.config.win&&!e.UA.phantomjs&&!(e.UA.chrome&&e.UA.chrome<6)?g(t,n,r.bubbles,r.cancelable,r.view,r.detail,r.screenX,r.screenY,r.clientX,r.clientY,r.ctrlKey,r.altKey,r.shiftKey,r.metaKey,r.touches,r.targetTouches,r.changedTouches,r.scale,r.rotation):e.error("simulate(): Event '"+n+"' can't be simulated. Use gesture-simulate module instead."):e.UA.ios&&e.UA.ios>=2&&h[n]?m(t,n,r.bubbles,r.cancelable,r.view,r.detail,r.screenX,r.screenY,r.clientX,r.clientY,r.ctrlKey,r.altKey,r.shiftKey,r.metaKey,r.scale,r.rotation):e.error("simulate(): Event '"+n+"' can't be simulated.")}})()},"3.7.3",{requires:["event-base"]}); diff --git a/lib/yuilib/3.7.3/build/event-tap/event-tap-min.js b/lib/yuilib/3.7.3/build/event-tap/event-tap-min.js deleted file mode 100644 index 7ca5c7452d5..00000000000 --- a/lib/yuilib/3.7.3/build/event-tap/event-tap-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("event-tap",function(e,t){function l(t,n,r,i){n=r?n:[n.START,n.MOVE,n.END,n.CANCEL],e.Array.each(n,function(e,n,r){var i=t[e];i&&(i.detach(),t[e]=null)})}var n=e.config.doc,r=!!n&&!!n.createTouch,i=r?"touchstart":"mousedown",s=r?"touchmove":"mousemove",o=r?"touchend":"mouseup",u=r?"touchcancel":"mousecancel",a="tap",f={START:"Y_TAP_ON_START_HANDLE",MOVE:"Y_TAP_ON_MOVE_HANDLE",END:"Y_TAP_ON_END_HANDLE",CANCEL:"Y_TAP_ON_CANCEL_HANDLE"};e.Event.define(a,{on:function(e,t,n){t[f.START]=e.on(i,this.touchStart,this,e,t,n)},detach:function(e,t,n){l(t,f)},delegate:function(e,t,n,r){t[f.START]=e.delegate(i,function(r){this.touchStart(r,e,t,n,!0)},r,this)},detachDelegate:function(e,t,n){l(t,f)},touchStart:function(e,t,n,i,a){var l={canceled:!1};if(e.button&&e.button===3)return;if(e.touches&&e.touches.length!==1)return;l.node=a?e.currentTarget:t,r&&e.touches?l.startXY=[e.touches[0].pageX,e.touches[0].pageY]:l.startXY=[e.pageX,e.pageY],n[f.MOVE]=t.once(s,this.touchMove,this,t,n,i,a,l),n[f.END]=t.once(o,this.touchEnd,this,t,n,i,a,l),n[f.CANCEL]=t.once(u,this.touchMove,this,t,n,i,a,l)},touchMove:function(e,t,n,r,i,s){l(n,[f.MOVE,f.END,f.CANCEL],!0,s),s.cancelled=!0},touchEnd:function(e,t,n,i,s,o){var u=o.startXY,c,h;r&&e.changedTouches?(c=[e.changedTouches[0].pageX,e.changedTouches[0].pageY],h=[e.changedTouches[0].clientX,e.changedTouches[0].clientY]):(c=[e.pageX,e.pageY],h=[e.clientX,e.clientY]),l(n,[f.MOVE,f.END,f.CANCEL],!0,o),Math.abs(c[0]-u[0])===0&&Math.abs(c[1]-u[1])===0&&(e.type=a,e.pageX=c[0],e.pageY=c[1],e.clientX=h[0],e.clientY=h[1],e.currentTarget=o.node,i.fire(e))}})},"3.7.3",{requires:["node-base","event-base","event-touch","event-synthetic"]}); diff --git a/lib/yuilib/3.7.3/build/get-nodejs/get-coverage.js b/lib/yuilib/3.7.3/build/get-nodejs/get-coverage.js deleted file mode 100644 index a1b442ec3fa..00000000000 --- a/lib/yuilib/3.7.3/build/get-nodejs/get-coverage.js +++ /dev/null @@ -1,313 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -if (typeof _yuitest_coverage == "undefined"){ - _yuitest_coverage = {}; - _yuitest_coverline = function(src, line){ - var coverage = _yuitest_coverage[src]; - if (!coverage.lines[line]){ - coverage.calledLines++; - } - coverage.lines[line]++; - }; - _yuitest_coverfunc = function(src, name, line){ - var coverage = _yuitest_coverage[src], - funcId = name + ":" + line; - if (!coverage.functions[funcId]){ - coverage.calledFunctions++; - } - coverage.functions[funcId]++; - }; -} -_yuitest_coverage["/build/get/get.js"] = { - lines: {}, - functions: {}, - coveredLines: 0, - calledLines: 0, - coveredFunctions: 0, - calledFunctions: 0, - path: "/build/get/get.js", - code: [] -}; -_yuitest_coverage["/build/get/get.js"].code=["YUI.add('get', function(Y) {",""," /**"," * NodeJS specific Get module used to load remote resources. It contains the same signature as the default Get module so there is no code change needed."," * @module get-nodejs"," * @class GetNodeJS"," */"," "," var path = require('path'),"," vm = require('vm'),"," fs = require('fs'),"," request = require('request'),"," existsSync = fs.existsSync || path.existsSync;","",""," Y.Get = function() {"," };",""," //Setup the default config base path"," Y.config.base = path.join(__dirname, '../');",""," YUI.require = require;"," YUI.process = process;"," "," /**"," * Escape the path for Windows, they need to be double encoded when used as `__dirname` or `__filename`"," * @method escapeWinPath"," * @protected"," * @param {String} p The path to modify"," * @return {String} The encoded path"," */"," var escapeWinPath = function(p) {"," return p.replace(/\\\\/g, '\\\\\\\\');"," };",""," /**"," * Takes the raw JS files and wraps them to be executed in the YUI context so they can be loaded"," * into the YUI object"," * @method _exec"," * @private"," * @param {String} data The JS to execute"," * @param {String} url The path to the file that was parsed"," * @param {Callback} cb The callback to execute when this is completed"," * @param {Error} cb.err=null Error object"," * @param {String} cb.url The URL that was just parsed"," */",""," Y.Get._exec = function(data, url, cb) {"," var dirName = escapeWinPath(path.dirname(url));"," var fileName = escapeWinPath(url);",""," if (dirName.match(/^https?:\\/\\//)) {"," dirName = '.';"," fileName = 'remoteResource';"," }",""," var mod = \"(function(YUI) { var __dirname = '\" + dirName + \"'; \"+"," \"var __filename = '\" + fileName + \"'; \" +"," \"var process = YUI.process;\" +"," \"var require = function(file) {\" +"," \" if (file.indexOf('./') === 0) {\" +"," \" file = __dirname + file.replace('./', '/'); }\" +"," \" return YUI.require(file); }; \" +"," data + \" ;return YUI; })\";"," "," //var mod = \"(function(YUI) { \" + data + \";return YUI; })\";"," var script = vm.createScript(mod, url);"," var fn = script.runInThisContext(mod);"," YUI = fn(YUI);"," cb(null, url);"," };"," "," /**"," * Fetches the content from a remote URL or a file from disc and passes the content"," * off to `_exec` for parsing"," * @method _include"," * @private"," * @param {String} url The URL/File path to fetch the content from"," * @param {Callback} cb The callback to fire once the content has been executed via `_exec`"," */"," Y.Get._include = function(url, cb) {"," var self = this;",""," if (url.match(/^https?:\\/\\//)) {"," var cfg = {"," url: url,"," timeout: self.timeout"," };"," request(cfg, function (err, response, body) {"," if (err) {"," cb(err, url);"," } else {"," Y.Get._exec(body, url, cb);"," }"," });"," } else {"," if (Y.config.useSync) {"," //Needs to be in useSync"," if (existsSync(url)) {"," var mod = fs.readFileSync(url,'utf8');"," Y.Get._exec(mod, url, cb);"," } else {"," cb('Path does not exist: ' + url, url);"," }"," } else {"," fs.readFile(url, 'utf8', function(err, mod) {"," if (err) {"," cb(err, url);"," } else {"," Y.Get._exec(mod, url, cb);"," }"," });"," }"," }"," "," };","",""," var end = function(cb, msg, result) {"," if (Y.Lang.isFunction(cb.onEnd)) {"," cb.onEnd.call(Y, msg, result);"," }"," }, pass = function(cb) {"," if (Y.Lang.isFunction(cb.onSuccess)) {"," cb.onSuccess.call(Y, cb);"," }"," end(cb, 'success', 'success');"," }, fail = function(cb, er) {"," er.errors = [er];"," if (Y.Lang.isFunction(cb.onFailure)) {"," cb.onFailure.call(Y, er, cb);"," }"," end(cb, er, 'fail');"," };","",""," /**"," * Override for Get.script for loading local or remote YUI modules."," * @method js"," * @param {Array|String} s The URL's to load into this context"," * @param {Object} options Transaction options"," */"," Y.Get.js = function(s, options) {"," var A = Y.Array,"," self = this,"," urls = A(s), url, i, l = urls.length, c= 0,"," check = function() {"," if (c === l) {"," pass(options);"," }"," };","","",""," for (i=0; iThe `Graphics` module provides a JavaScript API for creating shapes in a variety of formats across "," * a browser test baseline. "," * Based on device and browser capabilities, `Graphics` leverages SVG, "," * Canvas and VML "," * to render its graphical elements.

          "," *"," *

          The `Graphics` module features a `Graphic` class that allows you to easily create and manage shapes. "," * Currently, a `Graphic` instance can be used to create predifined shapes and free-form polygons with fill "," * and stroke properties.

          "," *"," *

          The `Graphics` module normalizes an API through the use of alias and implementation classes that share"," * interfaces. Each alias class points to an appropriate implementation class dependent on the browser's "," * capabilities. There should rarely, if ever, be a need to interact directly with an implementation class.

          "," *"," *

          Below is a list of available classes. "," *

          "," * You can also extend the `Shape` class to create your own custom shape classes.

          "," * @module graphics"," * @main graphics"," */","var SETTER = \"setter\","," PluginHost = Y.Plugin.Host,"," VALUE = \"value\","," VALUEFN = \"valueFn\","," READONLY = \"readOnly\","," Y_LANG = Y.Lang,"," STR = \"string\","," WRITE_ONCE = \"writeOnce\","," GraphicBase,"," AttributeLite;"," "," /**"," * AttributeLite provides Attribute-like getters and setters for shape classes in the Graphics module. It provides a get/set API without the event infastructure."," * This class is temporary and a work in progress."," *"," * @class AttributeLite"," * @constructor"," */"," AttributeLite = function()"," {"," var host = this; // help compression"," "," // Perf tweak - avoid creating event literals if not required."," host._ATTR_E_FACADE = {};"," "," Y.EventTarget.call(this, {emitFacade:true});"," host._state = {};"," host.prototype = Y.mix(AttributeLite.prototype, host.prototype);"," };",""," AttributeLite.prototype = {"," /**"," * Initializes the attributes for a shape. If an attribute config is passed into the constructor of the host, "," * the initial values will be overwritten."," *"," * @method addAttrs"," * @param {Object} cfg Optional object containing attributes key value pairs to be set."," */"," addAttrs: function(cfg)"," {"," var host = this,"," attrConfig = this.constructor.ATTRS, "," attr,"," i,"," fn,"," state = host._state;"," for(i in attrConfig)"," {"," if(attrConfig.hasOwnProperty(i))"," {"," attr = attrConfig[i];"," if(attr.hasOwnProperty(VALUE))"," {"," state[i] = attr.value;"," }"," else if(attr.hasOwnProperty(VALUEFN))"," {"," fn = attr.valueFn;"," if(Y_LANG.isString(fn))"," {"," state[i] = host[fn].apply(host);"," }"," else"," {"," state[i] = fn.apply(host);"," }"," }"," }"," }"," host._state = state;"," for(i in attrConfig)"," {"," if(attrConfig.hasOwnProperty(i))"," {"," attr = attrConfig[i];"," if(attr.hasOwnProperty(READONLY) && attr.readOnly)"," {"," continue;"," }",""," if(attr.hasOwnProperty(WRITE_ONCE) && attr.writeOnce)"," {"," attr.readOnly = true;"," }",""," if(cfg && cfg.hasOwnProperty(i))"," {"," if(attr.hasOwnProperty(SETTER))"," {"," host._state[i] = attr.setter.apply(host, [cfg[i]]);"," }"," else"," {"," host._state[i] = cfg[i];"," }"," }"," }"," }"," },",""," /**"," * For a given item, returns the value of the property requested, or undefined if not found."," *"," * @method get"," * @param name {String} The name of the item"," * @return {Any} The value of the supplied property."," */"," get: function(attr)"," {"," var host = this,"," getter,"," attrConfig = host.constructor.ATTRS;"," if(attrConfig && attrConfig[attr])"," {"," getter = attrConfig[attr].getter;"," if(getter)"," {"," if(typeof getter == STR)"," {"," return host[getter].apply(host);"," }"," return attrConfig[attr].getter.apply(host);"," }",""," return host._state[attr];"," }"," return null;"," },"," "," /**"," * Sets the value of an attribute."," *"," * @method set"," * @param {String|Object} name The name of the attribute. Alternatively, an object of key value pairs can "," * be passed in to set multiple attributes at once."," * @param {Any} value The value to set the attribute to. This value is ignored if an object is received as "," * the name param."," */"," set: function(attr, val)"," {"," var i;"," if(Y_LANG.isObject(attr))"," {"," for(i in attr)"," {"," if(attr.hasOwnProperty(i))"," {"," this._set(i, attr[i]);"," }"," }"," }"," else"," {"," this._set.apply(this, arguments);"," }"," },",""," /**"," * Provides setter logic. Used by `set`."," *"," * @method _set"," * @param {String|Object} name The name of the attribute. Alternatively, an object of key value pairs can "," * be passed in to set multiple attributes at once."," * @param {Any} value The value to set the attribute to. This value is ignored if an object is received as "," * the name param."," * @protected"," */"," _set: function(attr, val)"," {"," var host = this,"," setter,"," args,"," attrConfig = host.constructor.ATTRS;"," if(attrConfig && attrConfig.hasOwnProperty(attr))"," {"," setter = attrConfig[attr].setter;"," if(setter)"," {"," args = [val];"," if(typeof setter == STR)"," {"," val = host[setter].apply(host, args);"," }"," else"," {"," val = attrConfig[attr].setter.apply(host, args);"," }"," }"," host._state[attr] = val;"," }"," }"," };"," Y.mix(AttributeLite, Y.EventTarget, false, null, 1);"," Y.AttributeLite = AttributeLite;",""," /**"," * GraphicBase serves as the base class for the graphic layer. It serves the same purpose as"," * Base but uses a lightweight getter/setter class instead of Attribute."," * This class is temporary and a work in progress."," *"," * @class GraphicBase"," * @constructor"," * @param {Object} cfg Key value pairs for attributes"," */"," GraphicBase = function(cfg)"," {"," var host = this,"," PluginHost = Y.Plugin && Y.Plugin.Host; "," if (host._initPlugins && PluginHost) {"," PluginHost.call(host);"," }"," "," host.name = host.constructor.NAME;"," host._eventPrefix = host.constructor.EVENT_PREFIX || host.constructor.NAME;"," AttributeLite.call(host);"," host.addAttrs(cfg);"," host.init.apply(this, arguments);"," if (host._initPlugins) {"," // Need to initPlugins manually, to handle constructor parsing, static Plug parsing"," host._initPlugins(cfg);"," }"," host.initialized = true;"," };",""," GraphicBase.NAME = \"baseGraphic\";",""," GraphicBase.prototype = {"," /**"," * Init method, invoked during construction."," * Fires an init event after calling `initializer` on implementers."," *"," * @method init"," * @protected "," */"," init: function()"," {"," this.publish(\"init\", {"," fireOnce:true"," });"," this.initializer.apply(this, arguments);"," this.fire(\"init\", {cfg: arguments[0]});"," },",""," /**"," * Camel case concatanates two strings."," *"," * @method _camelCaseConcat"," * @param {String} prefix The first string"," * @param {String} name The second string"," * @return String"," * @private"," */"," _camelCaseConcat: function(prefix, name)"," {"," return prefix + name.charAt(0).toUpperCase() + name.slice(1);"," }"," };","//Straightup augment, no wrapper functions","Y.mix(GraphicBase, Y.AttributeLite, false, null, 1);","Y.mix(GraphicBase, PluginHost, false, null, 1);","GraphicBase.prototype.constructor = GraphicBase;","GraphicBase.plug = PluginHost.plug;","GraphicBase.unplug = PluginHost.unplug;","Y.GraphicBase = GraphicBase;","","","/**"," * `Drawing` provides a set of drawing methods used by `Path` and custom shape classes. "," * `Drawing` has the following implementations based on browser capability."," * "," *"," * @class Drawing"," * @constructor"," */"," /**"," * Draws a line segment using the current line style from the current drawing position to the specified x and y coordinates."," * "," * @method lineTo"," * @param {Number} point1 x-coordinate for the end point."," * @param {Number} point2 y-coordinate for the end point."," */"," /**"," * Moves the current drawing position to specified x and y coordinates."," *"," * @method moveTo"," * @param {Number} x x-coordinate for the end point."," * @param {Number} y y-coordinate for the end point."," */"," /**"," * Draws a bezier curve."," *"," * @method curveTo"," * @param {Number} cp1x x-coordinate for the first control point."," * @param {Number} cp1y y-coordinate for the first control point."," * @param {Number} cp2x x-coordinate for the second control point."," * @param {Number} cp2y y-coordinate for the second control point."," * @param {Number} x x-coordinate for the end point."," * @param {Number} y y-coordinate for the end point."," */"," /**"," * Draws a quadratic bezier curve."," *"," * @method quadraticCurveTo"," * @param {Number} cpx x-coordinate for the control point."," * @param {Number} cpy y-coordinate for the control point."," * @param {Number} x x-coordinate for the end point."," * @param {Number} y y-coordinate for the end point."," */"," /**"," * Draws a rectangle."," *"," * @method drawRect"," * @param {Number} x x-coordinate"," * @param {Number} y y-coordinate"," * @param {Number} w width"," * @param {Number} h height"," */"," /**"," * Draws a rectangle with rounded corners."," * "," * @method drawRoundRect"," * @param {Number} x x-coordinate"," * @param {Number} y y-coordinate"," * @param {Number} w width"," * @param {Number} h height"," * @param {Number} ew width of the ellipse used to draw the rounded corners"," * @param {Number} eh height of the ellipse used to draw the rounded corners"," */"," /**"," * Completes a drawing operation. "," *"," * @method end"," */"," /**"," * Clears the path."," *"," * @method clear"," */","/**"," *

          Base class for creating shapes.

          "," *

          `Shape` is an abstract class and is not meant to be used directly. The following classes extend"," * `Shape`."," *"," *

          "," *"," * `Shape` can also be extended to create custom shape classes.

          "," *"," * `Shape` has the following implementations based on browser capability."," * "," *"," * It is not necessary to interact with these classes directly. `Shape` will point to the appropriate implemention.

          "," *"," * @class Shape"," * @constructor"," * @param {Object} cfg (optional) Attribute configs"," */"," /**"," * Init method, invoked during construction."," * Calls `initializer` method."," *"," * @method init"," * @protected"," */"," /**"," * Initializes the shape"," *"," * @private"," * @method initializer"," */"," /**"," * Add a class name to each node."," *"," * @method addClass"," * @param {String} className the class name to add to the node's class attribute "," */"," /**"," * Removes a class name from each node."," *"," * @method removeClass"," * @param {String} className the class name to remove from the node's class attribute"," */"," /**"," * Gets the current position of the node in page coordinates."," *"," * @method getXY"," * @return Array The XY position of the shape."," */"," /**"," * Set the position of the shape in page coordinates, regardless of how the node is positioned."," *"," * @method setXY"," * @param {Array} Contains x & y values for new position (coordinates are page-based)"," */"," /**"," * Determines whether the node is an ancestor of another HTML element in the DOM hierarchy. "," *"," * @method contains"," * @param {Shape | HTMLElement} needle The possible node or descendent"," * @return Boolean Whether or not this shape is the needle or its ancestor."," */"," /**"," * Compares nodes to determine if they match."," * Node instances can be compared to each other and/or HTMLElements."," * @method compareTo"," * @param {HTMLElement | Node} refNode The reference node to compare to the node."," * @return {Boolean} True if the nodes match, false if they do not."," */"," /**"," * Test if the supplied node matches the supplied selector."," *"," * @method test"," * @param {String} selector The CSS selector to test against."," * @return Boolean Wheter or not the shape matches the selector."," */"," /**"," * Sets the value of an attribute."," *"," * @method set"," * @param {String|Object} name The name of the attribute. Alternatively, an object of key value pairs can "," * be passed in to set multiple attributes at once."," * @param {Any} value The value to set the attribute to. This value is ignored if an object is received as "," * the name param."," */"," /**"," * Specifies a 2d translation."," *"," * @method translate"," * @param {Number} x The value to transate on the x-axis."," * @param {Number} y The value to translate on the y-axis."," */"," /**"," * Translates the shape along the x-axis. When translating x and y coordinates,"," * use the `translate` method."," *"," * @method translateX"," * @param {Number} x The value to translate."," */"," /**"," * Translates the shape along the y-axis. When translating x and y coordinates,"," * use the `translate` method."," *"," * @method translateY"," * @param {Number} y The value to translate."," */"," /**"," * Skews the shape around the x-axis and y-axis."," *"," * @method skew"," * @param {Number} x The value to skew on the x-axis."," * @param {Number} y The value to skew on the y-axis."," */"," /**"," * Skews the shape around the x-axis."," *"," * @method skewX"," * @param {Number} x x-coordinate"," */"," /**"," * Skews the shape around the y-axis."," *"," * @method skewY"," * @param {Number} y y-coordinate"," */"," /**"," * Rotates the shape clockwise around it transformOrigin."," *"," * @method rotate"," * @param {Number} deg The degree of the rotation."," */"," /**"," * Specifies a 2d scaling operation."," *"," * @method scale"," * @param {Number} val"," */"," /**"," * Returns the bounds for a shape."," *"," * Calculates the a new bounding box from the original corner coordinates (base on size and position) and the transform matrix."," * The calculated bounding box is used by the graphic instance to calculate its viewBox. "," *"," * @method getBounds"," * @return Object"," */"," /**"," * Destroys the instance."," *"," * @method destroy"," */"," /**"," * An array of x, y values which indicates the transformOrigin in which to rotate the shape. Valid values range between 0 and 1 representing a "," * fraction of the shape's corresponding bounding box dimension. The default value is [0.5, 0.5]."," *"," * @config transformOrigin"," * @type Array"," */"," /**"," *

          A string containing, in order, transform operations applied to the shape instance. The `transform` string can contain the following values:"," * "," *

          "," *
          rotate
          Rotates the shape clockwise around it transformOrigin.
          "," *
          translate
          Specifies a 2d translation.
          "," *
          skew
          Skews the shape around the x-axis and y-axis.
          "," *
          scale
          Specifies a 2d scaling operation.
          "," *
          translateX
          Translates the shape along the x-axis.
          "," *
          translateY
          Translates the shape along the y-axis.
          "," *
          skewX
          Skews the shape around the x-axis.
          "," *
          skewY
          Skews the shape around the y-axis.
          "," *
          "," *

          "," *

          Applying transforms through the transform attribute will reset the transform matrix and apply a new transform. The shape class also contains corresponding methods for each transform"," * that will apply the transform to the current matrix. The below code illustrates how you might use the `transform` attribute to instantiate a recangle with a rotation of 45 degrees.

          "," var myRect = new Y.Rect({"," type:\"rect\","," width: 50,"," height: 40,"," transform: \"rotate(45)\""," };"," *

          The code below would apply `translate` and `rotate` to an existing shape.

          "," "," myRect.set(\"transform\", \"translate(40, 50) rotate(45)\");"," * @config transform"," * @type String "," */"," /**"," * Unique id for class instance."," *"," * @config id"," * @type String"," */"," /**"," * Indicates the x position of shape."," *"," * @config x"," * @type Number"," */"," /**"," * Indicates the y position of shape."," *"," * @config y"," * @type Number"," */"," /**"," * Indicates the width of the shape"," *"," * @config width"," * @type Number"," */"," /**"," * Indicates the height of the shape"," * "," * @config height"," * @type Number"," */"," /**"," * Indicates whether the shape is visible."," *"," * @config visible"," * @type Boolean"," */"," /**"," * Contains information about the fill of the shape. "," *
          "," *
          color
          The color of the fill.
          "," *
          opacity
          Number between 0 and 1 that indicates the opacity of the fill. The default value is 1.
          "," *
          type
          Type of fill."," *
          "," *
          solid
          Solid single color fill. (default)
          "," *
          linear
          Linear gradient fill.
          "," *
          radial
          Radial gradient fill.
          "," *
          "," *
          "," *
          "," *

          If a `linear` or `radial` is specified as the fill type. The following additional property is used:"," *

          "," *
          stops
          An array of objects containing the following properties:"," *
          "," *
          color
          The color of the stop.
          "," *
          opacity
          Number between 0 and 1 that indicates the opacity of the stop. The default value is 1. Note: No effect for IE 6 - 8
          "," *
          offset
          Number between 0 and 1 indicating where the color stop is positioned.
          "," *
          "," *
          "," *

          Linear gradients also have the following property:

          "," *
          rotation
          Linear gradients flow left to right by default. The rotation property allows you to change the flow by rotation. (e.g. A rotation of 180 would make the gradient pain from right to left.)
          "," *

          Radial gradients have the following additional properties:

          "," *
          r
          Radius of the gradient circle.
          "," *
          fx
          Focal point x-coordinate of the gradient.
          "," *
          fy
          Focal point y-coordinate of the gradient.
          "," *
          cx
          "," *

          The x-coordinate of the center of the gradient circle. Determines where the color stop begins. The default value 0.5.

          "," *

          Note: Currently, this property is not implemented for corresponding `CanvasShape` and `VMLShape` classes which are used on Android or IE 6 - 8.

          "," *
          "," *
          cy
          "," *

          The y-coordinate of the center of the gradient circle. Determines where the color stop begins. The default value 0.5.

          "," *

          Note: Currently, this property is not implemented for corresponding `CanvasShape` and `VMLShape` classes which are used on Android or IE 6 - 8.

          "," *
          "," *
          "," *"," * @config fill"," * @type Object "," */"," /**"," * Contains information about the stroke of the shape."," *
          "," *
          color
          The color of the stroke.
          "," *
          weight
          Number that indicates the width of the stroke.
          "," *
          opacity
          Number between 0 and 1 that indicates the opacity of the stroke. The default value is 1.
          "," *
          dashstyle
          Indicates whether to draw a dashed stroke. When set to \"none\", a solid stroke is drawn. When set to an array, the first index indicates the"," * length of the dash. The second index indicates the length of gap."," *
          linecap
          Specifies the linecap for the stroke. The following values can be specified:"," *
          "," *
          butt (default)
          Specifies a butt linecap.
          "," *
          square
          Specifies a sqare linecap.
          "," *
          round
          Specifies a round linecap.
          "," *
          "," *
          "," *
          linejoin
          Specifies a linejoin for the stroke. The following values can be specified:"," *
          "," *
          round (default)
          Specifies that the linejoin will be round.
          "," *
          bevel
          Specifies a bevel for the linejoin.
          "," *
          miter limit
          An integer specifying the miter limit of a miter linejoin. If you want to specify a linejoin of miter, you simply specify the limit as opposed to having"," * separate miter and miter limit values.
          "," *
          "," *
          "," *
          "," *"," * @config stroke"," * @type Object"," */"," /**"," * Dom node for the shape."," *"," * @config node"," * @type HTMLElement"," * @readOnly"," */"," /**"," * Represents an SVG Path string. This will be parsed and added to shape's API to represent the SVG data across all implementations. Note that when using VML or SVG "," * implementations, part of this content will be added to the DOM using respective VML/SVG attributes. If your content comes from an untrusted source, you will need "," * to ensure that no malicious code is included in that content. "," *"," * @config data"," * @type String"," */"," /**"," * Reference to the parent graphic instance"," *"," * @config graphic"," * @type Graphic"," * @readOnly"," */","","/**"," *

          Creates circle shape with editable attributes.

          "," *

          `Circle` instances can be created using the `addShape` method of the `Graphic` class. "," * The method's `cfg` argument contains a `type` attribute. Assigning \"circle\" or `Y.Circle` to this attribute will create a `Circle` instance. Required attributes"," * for instantiating a `Circle` are `type` and `radius`. Optional attributes include:"," *

          "," * "," * The below code creates a circle by defining the `type` attribute as \"circle\":

          ",""," var myCircle = myGraphic.addShape({"," type: \"circle\","," radius: 10,"," fill: {"," color: \"#9aa\""," },"," stroke: {"," weight: 1,"," color: \"#000\""," }"," });",""," * Below, this same circle is created by defining the `type` attribute with a class reference:"," *"," var myCircle = myGraphic.addShape({"," type: Y.Circle,"," radius: 10,"," fill: {"," color: \"#9aa\""," },"," stroke: {"," weight: 1,"," color: \"#000\""," }"," });"," * "," *

          `Circle` has the following implementations based on browser capability."," *

          "," *"," * It is not necessary to interact with these classes directly. `Circle` will point to the appropriate implemention.

          "," *"," * @class Circle"," * @extends Shape"," * @constructor"," */"," /**"," * Radius of the circle"," *"," * @config radius"," * @type Number"," */","/**"," *

          Creates an ellipse shape with editable attributes.

          "," *

          `Ellipse` instances can be created using the `addShape` method of the `Graphic` class. "," * The method's `cfg` argument contains a `type` attribute. Assigning \"ellipse\" or `Y.Ellipse` to this attribute will create a `Ellipse` instance. Required attributes"," * for instantiating a `Ellipse` are `type`, `width` and `height`. Optional attributes include:"," *

          "," * "," * The below code creates an ellipse by defining the `type` attribute as \"ellipse\":

          ",""," var myEllipse = myGraphic.addShape({"," type: \"ellipse\","," width: 20,"," height: 10,"," fill: {"," color: \"#9aa\""," },"," stroke: {"," weight: 1,"," color: \"#000\""," }"," });",""," * Below, the same ellipse is created by defining the `type` attribute with a class reference:"," *"," var myEllipse = myGraphic.addShape({"," type: Y.Ellipse,"," width: 20,"," height: 10,"," fill: {"," color: \"#9aa\""," },"," stroke: {"," weight: 1,"," color: \"#000\""," }"," });"," * "," *

          `Ellipse` has the following implementations based on browser capability."," *

          "," *"," * It is not necessary to interact with these classes directly. `Ellipse` will point to the appropriate implemention.

          "," *"," * @class Ellipse"," * @extends Shape"," * @constructor"," */","/**"," *

          Creates an rectangle shape with editable attributes.

          "," *

          `Rect` instances can be created using the `addShape` method of the `Graphic` "," * class. The method's `cfg` argument contains a `type` attribute. Assigning \"rect\" or `Y.Rect` to this attribute will create a `Rect` instance. "," * Required attributes for instantiating a `Rect` are `type`, `width` and `height`. Optional attributes include:"," *

          "," *"," * The below code creates a rectangle by defining the `type` attribute as \"rect\":

          ",""," var myRect = myGraphic.addShape({"," type: \"rect\","," width: 20,"," height: 10,"," fill: {"," color: \"#9aa\""," },"," stroke: {"," weight: 1,"," color: \"#000\""," }"," });",""," * Below, the same rectangle is created by defining the `type` attribute with a class reference:"," *"," var myRect = myGraphic.addShape({"," type: Y.Rect,"," width: 20,"," height: 10,"," fill: {"," color: \"#9aa\""," },"," stroke: {"," weight: 1,"," color: \"#000\""," }"," });"," *"," *

          `Rect` has the following implementations based on browser capability."," *

          "," *"," * It is not necessary to interact with these classes directly. `Rect` will point to the appropriate implemention.

          "," *"," * @class Rect"," * @extends Shape"," * @constructor"," */","/**"," *

          The `Path` class creates a shape through the use of drawing methods. The `Path` class has the following drawing methods available:

          "," * "," *"," *

          Like other shapes, `Path` elements are created using the `addShape` method of the `Graphic` "," * class. The method's `cfg` argument contains a `type` attribute. Assigning \"path\" or `Y.Path` to this attribute will create a `Path` instance."," * After instantiation, a series of drawing operations must be performed in order to render a shape. The below code instantiates a path element by defining the `type` "," * attribute as \"path\":

          ",""," var myPath = myGraphic.addShape({"," type: \"path\","," fill: {"," color: \"#9aa\""," },"," stroke: {"," weight: 1,"," color: \"#000\""," }"," });",""," * Below a `Path` element with the same properties is instantiated by defining the `type` attribute with a class reference:"," *"," var myPath = myGraphic.addShape({"," type: Y.Path,"," fill: {"," color: \"#9aa\""," },"," stroke: {"," weight: 1,"," color: \"#000\""," }"," });",""," * After instantiation, a shape or segment needs to be drawn for an element to render. After all draw operations are performed, the `end`"," * method will render the shape. The code below will draw a triangle:"," "," myPath.moveTo(35, 5);"," myPath.lineTo(65, 65);"," myPath.lineTo(5, 65);"," myPath.lineTo(35, 5);"," myPath.end();"," *"," *

          `Path` has the following implementations based on browser capability."," *

          "," * It is not necessary to interact with these classes directly. `Path` will point to the appropriate implemention.

          "," *"," * @class Path"," * @extends Shape"," * @uses Drawing"," * @constructor"," */"," /**"," * Indicates the path used for the node."," *"," * @config path"," * @type String"," * @readOnly"," */","/**"," * `Graphic` acts a factory and container for shapes. You need at least one `Graphic` instance to create shapes for your application. "," *

          The code block below creates a `Graphic` instance and appends it to an HTMLElement with the id 'mygraphiccontainer'.

          "," "," var myGraphic = new Y.Graphic({render:\"#mygraphiccontainer\"});",""," *

          Alternatively, you can add a `Graphic` instance to the DOM using the `render` method.

          "," var myGraphic = new Y.Graphic();"," myGraphic.render(\"#mygraphiccontainer\");",""," * `Graphic` has the following implementations based on browser capability."," * "," *"," * It is not necessary to interact with these classes directly. `Graphic` will point to the appropriate implemention.

          "," *"," * @class Graphic"," * @constructor"," */"," /**"," * Whether or not to render the `Graphic` automatically after to a specified parent node after init. This can be a Node instance or a CSS selector string."," * "," * @config render"," * @type Node | String "," */"," /**"," * Unique id for class instance."," *"," * @config id"," * @type String"," */"," /**"," * Key value pairs in which a shape instance is associated with its id."," *"," * @config shapes"," * @type Object"," * @readOnly"," */"," /**"," * Object containing size and coordinate data for the content of a Graphic in relation to the coordSpace node."," *"," * @config contentBounds"," * @type Object "," * @readOnly"," */"," /**"," * The html element that represents to coordinate system of the Graphic instance."," *"," * @config node"," * @type HTMLElement"," * @readOnly"," */"," /**"," * Indicates the width of the `Graphic`. "," *"," * @config width"," * @type Number"," */"," /**"," * Indicates the height of the `Graphic`. "," *"," * @config height "," * @type Number"," */"," /**"," * Determines the sizing of the Graphic. "," *"," *
          "," *
          sizeContentToGraphic
          The Graphic's width and height attributes are, either explicitly set through the width and height"," * attributes or are determined by the dimensions of the parent element. The content contained in the Graphic will be sized to fit with in the Graphic instance's "," * dimensions. When using this setting, the preserveAspectRatio attribute will determine how the contents are sized.
          "," *
          sizeGraphicToContent
          (Also accepts a value of true) The Graphic's width and height are determined by the size and positioning of the content.
          "," *
          false
          The Graphic's width and height attributes are, either explicitly set through the width and height"," * attributes or are determined by the dimensions of the parent element. The contents of the Graphic instance are not affected by this setting.
          "," *
          "," *"," *"," * @config autoSize"," * @type Boolean | String"," * @default false"," */"," /**"," * Determines how content is sized when autoSize is set to sizeContentToGraphic."," *"," *
          "," *
          none
          Do not force uniform scaling. Scale the graphic content of the given element non-uniformly if necessary "," * such that the element's bounding box exactly matches the viewport rectangle.
          "," *
          xMinYMin
          Force uniform scaling position along the top left of the Graphic's node.
          "," *
          xMidYMin
          Force uniform scaling horizontally centered and positioned at the top of the Graphic's node.
          "," *
          xMaxYMin
          Force uniform scaling positioned horizontally from the right and vertically from the top.
          "," *
          xMinYMid
          Force uniform scaling positioned horizontally from the left and vertically centered."," *
          xMidYMid (the default)
          Force uniform scaling with the content centered.
          "," *
          xMaxYMid
          Force uniform scaling positioned horizontally from the right and vertically centered.
          "," *
          xMinYMax
          Force uniform scaling positioned horizontally from the left and vertically from the bottom.
          "," *
          xMidYMax
          Force uniform scaling horizontally centered and position vertically from the bottom.
          "," *
          xMaxYMax
          Force uniform scaling positioned horizontally from the right and vertically from the bottom.
          "," *
          "," * "," * @config preserveAspectRatio"," * @type String"," * @default xMidYMid"," */"," /**"," * The contentBounds will resize to greater values but not to smaller values. (for performance)"," * When resizing the contentBounds down is desirable, set the resizeDown value to true."," *"," * @config resizeDown "," * @type Boolean"," */"," /**"," * Indicates the x-coordinate for the instance."," *"," * @config x"," * @type Number"," */"," /**"," * Indicates the y-coordinate for the instance."," *"," * @config y"," * @type Number"," */"," /**"," * Indicates whether or not the instance will automatically redraw after a change is made to a shape."," * This property will get set to false when batching operations."," *"," * @config autoDraw"," * @type Boolean"," * @default true"," * @private"," */"," /**"," * Indicates whether the `Graphic` and its children are visible."," *"," * @config visible"," * @type Boolean"," */"," /**"," * Gets the current position of the graphic instance in page coordinates."," *"," * @method getXY"," * @return Array The XY position of the shape."," */"," /**"," * Adds the graphics node to the dom."," * "," * @method render"," * @param {Node|String} parentNode node in which to render the graphics node into."," */"," /**"," * Removes all nodes."," *"," * @method destroy"," */"," /**"," *

          Generates a shape instance by type. The method accepts an object that contain's the shape's"," * type and attributes to be customized. For example, the code below would create a rectangle:

          "," *"," var myRect = myGraphic.addShape({"," type: \"rect\","," width: 40,"," height: 30,"," fill: {"," color: \"#9aa\""," },"," stroke: {"," weight: 1,"," color: \"#000\""," }"," });"," *"," *

          The `Graphics` module includes a few basic shapes. More information on their creation "," * can be found in each shape's documentation:"," *"," *

          "," *"," * The `Graphics` module also allows for the creation of custom shapes. If a custom shape"," * has been created, it can be instantiated with the `addShape` method as well. The attributes,"," * required and optional, would need to be defined in the custom shape."," *"," var myCustomShape = myGraphic.addShape({"," type: Y.MyCustomShape,"," width: 50,"," height: 50,"," fill: {"," color: \"#9aa\""," },"," stroke: {"," weight: 1,"," color: \"#000\""," }"," });"," *"," * @method addShape"," * @param {Object} cfg Object containing the shape's type and attributes. "," * @return Shape"," */"," /**"," * Removes a shape instance from from the graphic instance."," *"," * @method removeShape"," * @param {Shape|String} shape The instance or id of the shape to be removed."," */"," /**"," * Removes all shape instances from the dom."," *"," * @method removeAllShapes"," */"," /**"," * Returns a shape based on the id of its dom node."," *"," * @method getShapeById"," * @param {String} id Dom id of the shape's node attribute."," * @return Shape"," */"," /**"," * Allows for creating multiple shapes in order to batch appending and redraw operations."," *"," * @method batch"," * @param {Function} method Method to execute."," */","","","}, '3.7.3', {\"requires\": [\"node\", \"event-custom\", \"pluginhost\", \"matrix\", \"classnamemanager\"]});"]; -_yuitest_coverage["build/graphics/graphics.js"].lines = {"1":0,"32":0,"50":0,"52":0,"55":0,"57":0,"58":0,"59":0,"62":0,"72":0,"78":0,"80":0,"82":0,"83":0,"85":0,"87":0,"89":0,"90":0,"92":0,"96":0,"101":0,"102":0,"104":0,"106":0,"107":0,"109":0,"112":0,"114":0,"117":0,"119":0,"121":0,"125":0,"141":0,"144":0,"146":0,"147":0,"149":0,"151":0,"153":0,"156":0,"158":0,"172":0,"173":0,"175":0,"177":0,"179":0,"185":0,"201":0,"205":0,"207":0,"208":0,"210":0,"211":0,"213":0,"217":0,"220":0,"224":0,"225":0,"236":0,"238":0,"240":0,"241":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"251":0,"253":0,"256":0,"258":0,"268":0,"271":0,"272":0,"286":0,"290":0,"291":0,"292":0,"293":0,"294":0,"295":0}; -_yuitest_coverage["build/graphics/graphics.js"].functions = {"AttributeLite:50":0,"addAttrs:70":0,"get:139":0,"set:170":0,"_set:199":0,"GraphicBase:236":0,"init:266":0,"_camelCaseConcat:284":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/graphics/graphics.js"].coveredLines = 82; -_yuitest_coverage["build/graphics/graphics.js"].coveredFunctions = 9; -_yuitest_coverline("build/graphics/graphics.js", 1); -YUI.add('graphics', function (Y, NAME) { - -/** - * - *

          The `Graphics` module provides a JavaScript API for creating shapes in a variety of formats across - * a browser test baseline. - * Based on device and browser capabilities, `Graphics` leverages SVG, - * Canvas and VML - * to render its graphical elements.

          - * - *

          The `Graphics` module features a `Graphic` class that allows you to easily create and manage shapes. - * Currently, a `Graphic` instance can be used to create predifined shapes and free-form polygons with fill - * and stroke properties.

          - * - *

          The `Graphics` module normalizes an API through the use of alias and implementation classes that share - * interfaces. Each alias class points to an appropriate implementation class dependent on the browser's - * capabilities. There should rarely, if ever, be a need to interact directly with an implementation class.

          - * - *

          Below is a list of available classes. - *

          - * You can also extend the `Shape` class to create your own custom shape classes.

          - * @module graphics - * @main graphics - */ -_yuitest_coverfunc("build/graphics/graphics.js", "(anonymous 1)", 1); -_yuitest_coverline("build/graphics/graphics.js", 32); -var SETTER = "setter", - PluginHost = Y.Plugin.Host, - VALUE = "value", - VALUEFN = "valueFn", - READONLY = "readOnly", - Y_LANG = Y.Lang, - STR = "string", - WRITE_ONCE = "writeOnce", - GraphicBase, - AttributeLite; - - /** - * AttributeLite provides Attribute-like getters and setters for shape classes in the Graphics module. It provides a get/set API without the event infastructure. - * This class is temporary and a work in progress. - * - * @class AttributeLite - * @constructor - */ - _yuitest_coverline("build/graphics/graphics.js", 50); -AttributeLite = function() - { - _yuitest_coverfunc("build/graphics/graphics.js", "AttributeLite", 50); -_yuitest_coverline("build/graphics/graphics.js", 52); -var host = this; // help compression - - // Perf tweak - avoid creating event literals if not required. - _yuitest_coverline("build/graphics/graphics.js", 55); -host._ATTR_E_FACADE = {}; - - _yuitest_coverline("build/graphics/graphics.js", 57); -Y.EventTarget.call(this, {emitFacade:true}); - _yuitest_coverline("build/graphics/graphics.js", 58); -host._state = {}; - _yuitest_coverline("build/graphics/graphics.js", 59); -host.prototype = Y.mix(AttributeLite.prototype, host.prototype); - }; - - _yuitest_coverline("build/graphics/graphics.js", 62); -AttributeLite.prototype = { - /** - * Initializes the attributes for a shape. If an attribute config is passed into the constructor of the host, - * the initial values will be overwritten. - * - * @method addAttrs - * @param {Object} cfg Optional object containing attributes key value pairs to be set. - */ - addAttrs: function(cfg) - { - _yuitest_coverfunc("build/graphics/graphics.js", "addAttrs", 70); -_yuitest_coverline("build/graphics/graphics.js", 72); -var host = this, - attrConfig = this.constructor.ATTRS, - attr, - i, - fn, - state = host._state; - _yuitest_coverline("build/graphics/graphics.js", 78); -for(i in attrConfig) - { - _yuitest_coverline("build/graphics/graphics.js", 80); -if(attrConfig.hasOwnProperty(i)) - { - _yuitest_coverline("build/graphics/graphics.js", 82); -attr = attrConfig[i]; - _yuitest_coverline("build/graphics/graphics.js", 83); -if(attr.hasOwnProperty(VALUE)) - { - _yuitest_coverline("build/graphics/graphics.js", 85); -state[i] = attr.value; - } - else {_yuitest_coverline("build/graphics/graphics.js", 87); -if(attr.hasOwnProperty(VALUEFN)) - { - _yuitest_coverline("build/graphics/graphics.js", 89); -fn = attr.valueFn; - _yuitest_coverline("build/graphics/graphics.js", 90); -if(Y_LANG.isString(fn)) - { - _yuitest_coverline("build/graphics/graphics.js", 92); -state[i] = host[fn].apply(host); - } - else - { - _yuitest_coverline("build/graphics/graphics.js", 96); -state[i] = fn.apply(host); - } - }} - } - } - _yuitest_coverline("build/graphics/graphics.js", 101); -host._state = state; - _yuitest_coverline("build/graphics/graphics.js", 102); -for(i in attrConfig) - { - _yuitest_coverline("build/graphics/graphics.js", 104); -if(attrConfig.hasOwnProperty(i)) - { - _yuitest_coverline("build/graphics/graphics.js", 106); -attr = attrConfig[i]; - _yuitest_coverline("build/graphics/graphics.js", 107); -if(attr.hasOwnProperty(READONLY) && attr.readOnly) - { - _yuitest_coverline("build/graphics/graphics.js", 109); -continue; - } - - _yuitest_coverline("build/graphics/graphics.js", 112); -if(attr.hasOwnProperty(WRITE_ONCE) && attr.writeOnce) - { - _yuitest_coverline("build/graphics/graphics.js", 114); -attr.readOnly = true; - } - - _yuitest_coverline("build/graphics/graphics.js", 117); -if(cfg && cfg.hasOwnProperty(i)) - { - _yuitest_coverline("build/graphics/graphics.js", 119); -if(attr.hasOwnProperty(SETTER)) - { - _yuitest_coverline("build/graphics/graphics.js", 121); -host._state[i] = attr.setter.apply(host, [cfg[i]]); - } - else - { - _yuitest_coverline("build/graphics/graphics.js", 125); -host._state[i] = cfg[i]; - } - } - } - } - }, - - /** - * For a given item, returns the value of the property requested, or undefined if not found. - * - * @method get - * @param name {String} The name of the item - * @return {Any} The value of the supplied property. - */ - get: function(attr) - { - _yuitest_coverfunc("build/graphics/graphics.js", "get", 139); -_yuitest_coverline("build/graphics/graphics.js", 141); -var host = this, - getter, - attrConfig = host.constructor.ATTRS; - _yuitest_coverline("build/graphics/graphics.js", 144); -if(attrConfig && attrConfig[attr]) - { - _yuitest_coverline("build/graphics/graphics.js", 146); -getter = attrConfig[attr].getter; - _yuitest_coverline("build/graphics/graphics.js", 147); -if(getter) - { - _yuitest_coverline("build/graphics/graphics.js", 149); -if(typeof getter == STR) - { - _yuitest_coverline("build/graphics/graphics.js", 151); -return host[getter].apply(host); - } - _yuitest_coverline("build/graphics/graphics.js", 153); -return attrConfig[attr].getter.apply(host); - } - - _yuitest_coverline("build/graphics/graphics.js", 156); -return host._state[attr]; - } - _yuitest_coverline("build/graphics/graphics.js", 158); -return null; - }, - - /** - * Sets the value of an attribute. - * - * @method set - * @param {String|Object} name The name of the attribute. Alternatively, an object of key value pairs can - * be passed in to set multiple attributes at once. - * @param {Any} value The value to set the attribute to. This value is ignored if an object is received as - * the name param. - */ - set: function(attr, val) - { - _yuitest_coverfunc("build/graphics/graphics.js", "set", 170); -_yuitest_coverline("build/graphics/graphics.js", 172); -var i; - _yuitest_coverline("build/graphics/graphics.js", 173); -if(Y_LANG.isObject(attr)) - { - _yuitest_coverline("build/graphics/graphics.js", 175); -for(i in attr) - { - _yuitest_coverline("build/graphics/graphics.js", 177); -if(attr.hasOwnProperty(i)) - { - _yuitest_coverline("build/graphics/graphics.js", 179); -this._set(i, attr[i]); - } - } - } - else - { - _yuitest_coverline("build/graphics/graphics.js", 185); -this._set.apply(this, arguments); - } - }, - - /** - * Provides setter logic. Used by `set`. - * - * @method _set - * @param {String|Object} name The name of the attribute. Alternatively, an object of key value pairs can - * be passed in to set multiple attributes at once. - * @param {Any} value The value to set the attribute to. This value is ignored if an object is received as - * the name param. - * @protected - */ - _set: function(attr, val) - { - _yuitest_coverfunc("build/graphics/graphics.js", "_set", 199); -_yuitest_coverline("build/graphics/graphics.js", 201); -var host = this, - setter, - args, - attrConfig = host.constructor.ATTRS; - _yuitest_coverline("build/graphics/graphics.js", 205); -if(attrConfig && attrConfig.hasOwnProperty(attr)) - { - _yuitest_coverline("build/graphics/graphics.js", 207); -setter = attrConfig[attr].setter; - _yuitest_coverline("build/graphics/graphics.js", 208); -if(setter) - { - _yuitest_coverline("build/graphics/graphics.js", 210); -args = [val]; - _yuitest_coverline("build/graphics/graphics.js", 211); -if(typeof setter == STR) - { - _yuitest_coverline("build/graphics/graphics.js", 213); -val = host[setter].apply(host, args); - } - else - { - _yuitest_coverline("build/graphics/graphics.js", 217); -val = attrConfig[attr].setter.apply(host, args); - } - } - _yuitest_coverline("build/graphics/graphics.js", 220); -host._state[attr] = val; - } - } - }; - _yuitest_coverline("build/graphics/graphics.js", 224); -Y.mix(AttributeLite, Y.EventTarget, false, null, 1); - _yuitest_coverline("build/graphics/graphics.js", 225); -Y.AttributeLite = AttributeLite; - - /** - * GraphicBase serves as the base class for the graphic layer. It serves the same purpose as - * Base but uses a lightweight getter/setter class instead of Attribute. - * This class is temporary and a work in progress. - * - * @class GraphicBase - * @constructor - * @param {Object} cfg Key value pairs for attributes - */ - _yuitest_coverline("build/graphics/graphics.js", 236); -GraphicBase = function(cfg) - { - _yuitest_coverfunc("build/graphics/graphics.js", "GraphicBase", 236); -_yuitest_coverline("build/graphics/graphics.js", 238); -var host = this, - PluginHost = Y.Plugin && Y.Plugin.Host; - _yuitest_coverline("build/graphics/graphics.js", 240); -if (host._initPlugins && PluginHost) { - _yuitest_coverline("build/graphics/graphics.js", 241); -PluginHost.call(host); - } - - _yuitest_coverline("build/graphics/graphics.js", 244); -host.name = host.constructor.NAME; - _yuitest_coverline("build/graphics/graphics.js", 245); -host._eventPrefix = host.constructor.EVENT_PREFIX || host.constructor.NAME; - _yuitest_coverline("build/graphics/graphics.js", 246); -AttributeLite.call(host); - _yuitest_coverline("build/graphics/graphics.js", 247); -host.addAttrs(cfg); - _yuitest_coverline("build/graphics/graphics.js", 248); -host.init.apply(this, arguments); - _yuitest_coverline("build/graphics/graphics.js", 249); -if (host._initPlugins) { - // Need to initPlugins manually, to handle constructor parsing, static Plug parsing - _yuitest_coverline("build/graphics/graphics.js", 251); -host._initPlugins(cfg); - } - _yuitest_coverline("build/graphics/graphics.js", 253); -host.initialized = true; - }; - - _yuitest_coverline("build/graphics/graphics.js", 256); -GraphicBase.NAME = "baseGraphic"; - - _yuitest_coverline("build/graphics/graphics.js", 258); -GraphicBase.prototype = { - /** - * Init method, invoked during construction. - * Fires an init event after calling `initializer` on implementers. - * - * @method init - * @protected - */ - init: function() - { - _yuitest_coverfunc("build/graphics/graphics.js", "init", 266); -_yuitest_coverline("build/graphics/graphics.js", 268); -this.publish("init", { - fireOnce:true - }); - _yuitest_coverline("build/graphics/graphics.js", 271); -this.initializer.apply(this, arguments); - _yuitest_coverline("build/graphics/graphics.js", 272); -this.fire("init", {cfg: arguments[0]}); - }, - - /** - * Camel case concatanates two strings. - * - * @method _camelCaseConcat - * @param {String} prefix The first string - * @param {String} name The second string - * @return String - * @private - */ - _camelCaseConcat: function(prefix, name) - { - _yuitest_coverfunc("build/graphics/graphics.js", "_camelCaseConcat", 284); -_yuitest_coverline("build/graphics/graphics.js", 286); -return prefix + name.charAt(0).toUpperCase() + name.slice(1); - } - }; -//Straightup augment, no wrapper functions -_yuitest_coverline("build/graphics/graphics.js", 290); -Y.mix(GraphicBase, Y.AttributeLite, false, null, 1); -_yuitest_coverline("build/graphics/graphics.js", 291); -Y.mix(GraphicBase, PluginHost, false, null, 1); -_yuitest_coverline("build/graphics/graphics.js", 292); -GraphicBase.prototype.constructor = GraphicBase; -_yuitest_coverline("build/graphics/graphics.js", 293); -GraphicBase.plug = PluginHost.plug; -_yuitest_coverline("build/graphics/graphics.js", 294); -GraphicBase.unplug = PluginHost.unplug; -_yuitest_coverline("build/graphics/graphics.js", 295); -Y.GraphicBase = GraphicBase; - - -/** - * `Drawing` provides a set of drawing methods used by `Path` and custom shape classes. - * `Drawing` has the following implementations based on browser capability. - * - * - * @class Drawing - * @constructor - */ - /** - * Draws a line segment using the current line style from the current drawing position to the specified x and y coordinates. - * - * @method lineTo - * @param {Number} point1 x-coordinate for the end point. - * @param {Number} point2 y-coordinate for the end point. - */ - /** - * Moves the current drawing position to specified x and y coordinates. - * - * @method moveTo - * @param {Number} x x-coordinate for the end point. - * @param {Number} y y-coordinate for the end point. - */ - /** - * Draws a bezier curve. - * - * @method curveTo - * @param {Number} cp1x x-coordinate for the first control point. - * @param {Number} cp1y y-coordinate for the first control point. - * @param {Number} cp2x x-coordinate for the second control point. - * @param {Number} cp2y y-coordinate for the second control point. - * @param {Number} x x-coordinate for the end point. - * @param {Number} y y-coordinate for the end point. - */ - /** - * Draws a quadratic bezier curve. - * - * @method quadraticCurveTo - * @param {Number} cpx x-coordinate for the control point. - * @param {Number} cpy y-coordinate for the control point. - * @param {Number} x x-coordinate for the end point. - * @param {Number} y y-coordinate for the end point. - */ - /** - * Draws a rectangle. - * - * @method drawRect - * @param {Number} x x-coordinate - * @param {Number} y y-coordinate - * @param {Number} w width - * @param {Number} h height - */ - /** - * Draws a rectangle with rounded corners. - * - * @method drawRoundRect - * @param {Number} x x-coordinate - * @param {Number} y y-coordinate - * @param {Number} w width - * @param {Number} h height - * @param {Number} ew width of the ellipse used to draw the rounded corners - * @param {Number} eh height of the ellipse used to draw the rounded corners - */ - /** - * Completes a drawing operation. - * - * @method end - */ - /** - * Clears the path. - * - * @method clear - */ -/** - *

          Base class for creating shapes.

          - *

          `Shape` is an abstract class and is not meant to be used directly. The following classes extend - * `Shape`. - * - *

          - * - * `Shape` can also be extended to create custom shape classes.

          - * - * `Shape` has the following implementations based on browser capability. - * - * - * It is not necessary to interact with these classes directly. `Shape` will point to the appropriate implemention.

          - * - * @class Shape - * @constructor - * @param {Object} cfg (optional) Attribute configs - */ - /** - * Init method, invoked during construction. - * Calls `initializer` method. - * - * @method init - * @protected - */ - /** - * Initializes the shape - * - * @private - * @method initializer - */ - /** - * Add a class name to each node. - * - * @method addClass - * @param {String} className the class name to add to the node's class attribute - */ - /** - * Removes a class name from each node. - * - * @method removeClass - * @param {String} className the class name to remove from the node's class attribute - */ - /** - * Gets the current position of the node in page coordinates. - * - * @method getXY - * @return Array The XY position of the shape. - */ - /** - * Set the position of the shape in page coordinates, regardless of how the node is positioned. - * - * @method setXY - * @param {Array} Contains x & y values for new position (coordinates are page-based) - */ - /** - * Determines whether the node is an ancestor of another HTML element in the DOM hierarchy. - * - * @method contains - * @param {Shape | HTMLElement} needle The possible node or descendent - * @return Boolean Whether or not this shape is the needle or its ancestor. - */ - /** - * Compares nodes to determine if they match. - * Node instances can be compared to each other and/or HTMLElements. - * @method compareTo - * @param {HTMLElement | Node} refNode The reference node to compare to the node. - * @return {Boolean} True if the nodes match, false if they do not. - */ - /** - * Test if the supplied node matches the supplied selector. - * - * @method test - * @param {String} selector The CSS selector to test against. - * @return Boolean Wheter or not the shape matches the selector. - */ - /** - * Sets the value of an attribute. - * - * @method set - * @param {String|Object} name The name of the attribute. Alternatively, an object of key value pairs can - * be passed in to set multiple attributes at once. - * @param {Any} value The value to set the attribute to. This value is ignored if an object is received as - * the name param. - */ - /** - * Specifies a 2d translation. - * - * @method translate - * @param {Number} x The value to transate on the x-axis. - * @param {Number} y The value to translate on the y-axis. - */ - /** - * Translates the shape along the x-axis. When translating x and y coordinates, - * use the `translate` method. - * - * @method translateX - * @param {Number} x The value to translate. - */ - /** - * Translates the shape along the y-axis. When translating x and y coordinates, - * use the `translate` method. - * - * @method translateY - * @param {Number} y The value to translate. - */ - /** - * Skews the shape around the x-axis and y-axis. - * - * @method skew - * @param {Number} x The value to skew on the x-axis. - * @param {Number} y The value to skew on the y-axis. - */ - /** - * Skews the shape around the x-axis. - * - * @method skewX - * @param {Number} x x-coordinate - */ - /** - * Skews the shape around the y-axis. - * - * @method skewY - * @param {Number} y y-coordinate - */ - /** - * Rotates the shape clockwise around it transformOrigin. - * - * @method rotate - * @param {Number} deg The degree of the rotation. - */ - /** - * Specifies a 2d scaling operation. - * - * @method scale - * @param {Number} val - */ - /** - * Returns the bounds for a shape. - * - * Calculates the a new bounding box from the original corner coordinates (base on size and position) and the transform matrix. - * The calculated bounding box is used by the graphic instance to calculate its viewBox. - * - * @method getBounds - * @return Object - */ - /** - * Destroys the instance. - * - * @method destroy - */ - /** - * An array of x, y values which indicates the transformOrigin in which to rotate the shape. Valid values range between 0 and 1 representing a - * fraction of the shape's corresponding bounding box dimension. The default value is [0.5, 0.5]. - * - * @config transformOrigin - * @type Array - */ - /** - *

          A string containing, in order, transform operations applied to the shape instance. The `transform` string can contain the following values: - * - *

          - *
          rotate
          Rotates the shape clockwise around it transformOrigin.
          - *
          translate
          Specifies a 2d translation.
          - *
          skew
          Skews the shape around the x-axis and y-axis.
          - *
          scale
          Specifies a 2d scaling operation.
          - *
          translateX
          Translates the shape along the x-axis.
          - *
          translateY
          Translates the shape along the y-axis.
          - *
          skewX
          Skews the shape around the x-axis.
          - *
          skewY
          Skews the shape around the y-axis.
          - *
          - *

          - *

          Applying transforms through the transform attribute will reset the transform matrix and apply a new transform. The shape class also contains corresponding methods for each transform - * that will apply the transform to the current matrix. The below code illustrates how you might use the `transform` attribute to instantiate a recangle with a rotation of 45 degrees.

          - var myRect = new Y.Rect({ - type:"rect", - width: 50, - height: 40, - transform: "rotate(45)" - }; - *

          The code below would apply `translate` and `rotate` to an existing shape.

          - - myRect.set("transform", "translate(40, 50) rotate(45)"); - * @config transform - * @type String - */ - /** - * Unique id for class instance. - * - * @config id - * @type String - */ - /** - * Indicates the x position of shape. - * - * @config x - * @type Number - */ - /** - * Indicates the y position of shape. - * - * @config y - * @type Number - */ - /** - * Indicates the width of the shape - * - * @config width - * @type Number - */ - /** - * Indicates the height of the shape - * - * @config height - * @type Number - */ - /** - * Indicates whether the shape is visible. - * - * @config visible - * @type Boolean - */ - /** - * Contains information about the fill of the shape. - *
          - *
          color
          The color of the fill.
          - *
          opacity
          Number between 0 and 1 that indicates the opacity of the fill. The default value is 1.
          - *
          type
          Type of fill. - *
          - *
          solid
          Solid single color fill. (default)
          - *
          linear
          Linear gradient fill.
          - *
          radial
          Radial gradient fill.
          - *
          - *
          - *
          - *

          If a `linear` or `radial` is specified as the fill type. The following additional property is used: - *

          - *
          stops
          An array of objects containing the following properties: - *
          - *
          color
          The color of the stop.
          - *
          opacity
          Number between 0 and 1 that indicates the opacity of the stop. The default value is 1. Note: No effect for IE 6 - 8
          - *
          offset
          Number between 0 and 1 indicating where the color stop is positioned.
          - *
          - *
          - *

          Linear gradients also have the following property:

          - *
          rotation
          Linear gradients flow left to right by default. The rotation property allows you to change the flow by rotation. (e.g. A rotation of 180 would make the gradient pain from right to left.)
          - *

          Radial gradients have the following additional properties:

          - *
          r
          Radius of the gradient circle.
          - *
          fx
          Focal point x-coordinate of the gradient.
          - *
          fy
          Focal point y-coordinate of the gradient.
          - *
          cx
          - *

          The x-coordinate of the center of the gradient circle. Determines where the color stop begins. The default value 0.5.

          - *

          Note: Currently, this property is not implemented for corresponding `CanvasShape` and `VMLShape` classes which are used on Android or IE 6 - 8.

          - *
          - *
          cy
          - *

          The y-coordinate of the center of the gradient circle. Determines where the color stop begins. The default value 0.5.

          - *

          Note: Currently, this property is not implemented for corresponding `CanvasShape` and `VMLShape` classes which are used on Android or IE 6 - 8.

          - *
          - *
          - * - * @config fill - * @type Object - */ - /** - * Contains information about the stroke of the shape. - *
          - *
          color
          The color of the stroke.
          - *
          weight
          Number that indicates the width of the stroke.
          - *
          opacity
          Number between 0 and 1 that indicates the opacity of the stroke. The default value is 1.
          - *
          dashstyle
          Indicates whether to draw a dashed stroke. When set to "none", a solid stroke is drawn. When set to an array, the first index indicates the - * length of the dash. The second index indicates the length of gap. - *
          linecap
          Specifies the linecap for the stroke. The following values can be specified: - *
          - *
          butt (default)
          Specifies a butt linecap.
          - *
          square
          Specifies a sqare linecap.
          - *
          round
          Specifies a round linecap.
          - *
          - *
          - *
          linejoin
          Specifies a linejoin for the stroke. The following values can be specified: - *
          - *
          round (default)
          Specifies that the linejoin will be round.
          - *
          bevel
          Specifies a bevel for the linejoin.
          - *
          miter limit
          An integer specifying the miter limit of a miter linejoin. If you want to specify a linejoin of miter, you simply specify the limit as opposed to having - * separate miter and miter limit values.
          - *
          - *
          - *
          - * - * @config stroke - * @type Object - */ - /** - * Dom node for the shape. - * - * @config node - * @type HTMLElement - * @readOnly - */ - /** - * Represents an SVG Path string. This will be parsed and added to shape's API to represent the SVG data across all implementations. Note that when using VML or SVG - * implementations, part of this content will be added to the DOM using respective VML/SVG attributes. If your content comes from an untrusted source, you will need - * to ensure that no malicious code is included in that content. - * - * @config data - * @type String - */ - /** - * Reference to the parent graphic instance - * - * @config graphic - * @type Graphic - * @readOnly - */ - -/** - *

          Creates circle shape with editable attributes.

          - *

          `Circle` instances can be created using the `addShape` method of the `Graphic` class. - * The method's `cfg` argument contains a `type` attribute. Assigning "circle" or `Y.Circle` to this attribute will create a `Circle` instance. Required attributes - * for instantiating a `Circle` are `type` and `radius`. Optional attributes include: - *

          - * - * The below code creates a circle by defining the `type` attribute as "circle":

          - - var myCircle = myGraphic.addShape({ - type: "circle", - radius: 10, - fill: { - color: "#9aa" - }, - stroke: { - weight: 1, - color: "#000" - } - }); - - * Below, this same circle is created by defining the `type` attribute with a class reference: - * - var myCircle = myGraphic.addShape({ - type: Y.Circle, - radius: 10, - fill: { - color: "#9aa" - }, - stroke: { - weight: 1, - color: "#000" - } - }); - * - *

          `Circle` has the following implementations based on browser capability. - *

          - * - * It is not necessary to interact with these classes directly. `Circle` will point to the appropriate implemention.

          - * - * @class Circle - * @extends Shape - * @constructor - */ - /** - * Radius of the circle - * - * @config radius - * @type Number - */ -/** - *

          Creates an ellipse shape with editable attributes.

          - *

          `Ellipse` instances can be created using the `addShape` method of the `Graphic` class. - * The method's `cfg` argument contains a `type` attribute. Assigning "ellipse" or `Y.Ellipse` to this attribute will create a `Ellipse` instance. Required attributes - * for instantiating a `Ellipse` are `type`, `width` and `height`. Optional attributes include: - *

          - * - * The below code creates an ellipse by defining the `type` attribute as "ellipse":

          - - var myEllipse = myGraphic.addShape({ - type: "ellipse", - width: 20, - height: 10, - fill: { - color: "#9aa" - }, - stroke: { - weight: 1, - color: "#000" - } - }); - - * Below, the same ellipse is created by defining the `type` attribute with a class reference: - * - var myEllipse = myGraphic.addShape({ - type: Y.Ellipse, - width: 20, - height: 10, - fill: { - color: "#9aa" - }, - stroke: { - weight: 1, - color: "#000" - } - }); - * - *

          `Ellipse` has the following implementations based on browser capability. - *

          - * - * It is not necessary to interact with these classes directly. `Ellipse` will point to the appropriate implemention.

          - * - * @class Ellipse - * @extends Shape - * @constructor - */ -/** - *

          Creates an rectangle shape with editable attributes.

          - *

          `Rect` instances can be created using the `addShape` method of the `Graphic` - * class. The method's `cfg` argument contains a `type` attribute. Assigning "rect" or `Y.Rect` to this attribute will create a `Rect` instance. - * Required attributes for instantiating a `Rect` are `type`, `width` and `height`. Optional attributes include: - *

          - * - * The below code creates a rectangle by defining the `type` attribute as "rect":

          - - var myRect = myGraphic.addShape({ - type: "rect", - width: 20, - height: 10, - fill: { - color: "#9aa" - }, - stroke: { - weight: 1, - color: "#000" - } - }); - - * Below, the same rectangle is created by defining the `type` attribute with a class reference: - * - var myRect = myGraphic.addShape({ - type: Y.Rect, - width: 20, - height: 10, - fill: { - color: "#9aa" - }, - stroke: { - weight: 1, - color: "#000" - } - }); - * - *

          `Rect` has the following implementations based on browser capability. - *

          - * - * It is not necessary to interact with these classes directly. `Rect` will point to the appropriate implemention.

          - * - * @class Rect - * @extends Shape - * @constructor - */ -/** - *

          The `Path` class creates a shape through the use of drawing methods. The `Path` class has the following drawing methods available:

          - * - * - *

          Like other shapes, `Path` elements are created using the `addShape` method of the `Graphic` - * class. The method's `cfg` argument contains a `type` attribute. Assigning "path" or `Y.Path` to this attribute will create a `Path` instance. - * After instantiation, a series of drawing operations must be performed in order to render a shape. The below code instantiates a path element by defining the `type` - * attribute as "path":

          - - var myPath = myGraphic.addShape({ - type: "path", - fill: { - color: "#9aa" - }, - stroke: { - weight: 1, - color: "#000" - } - }); - - * Below a `Path` element with the same properties is instantiated by defining the `type` attribute with a class reference: - * - var myPath = myGraphic.addShape({ - type: Y.Path, - fill: { - color: "#9aa" - }, - stroke: { - weight: 1, - color: "#000" - } - }); - - * After instantiation, a shape or segment needs to be drawn for an element to render. After all draw operations are performed, the `end` - * method will render the shape. The code below will draw a triangle: - - myPath.moveTo(35, 5); - myPath.lineTo(65, 65); - myPath.lineTo(5, 65); - myPath.lineTo(35, 5); - myPath.end(); - * - *

          `Path` has the following implementations based on browser capability. - *

          - * It is not necessary to interact with these classes directly. `Path` will point to the appropriate implemention.

          - * - * @class Path - * @extends Shape - * @uses Drawing - * @constructor - */ - /** - * Indicates the path used for the node. - * - * @config path - * @type String - * @readOnly - */ -/** - * `Graphic` acts a factory and container for shapes. You need at least one `Graphic` instance to create shapes for your application. - *

          The code block below creates a `Graphic` instance and appends it to an HTMLElement with the id 'mygraphiccontainer'.

          - - var myGraphic = new Y.Graphic({render:"#mygraphiccontainer"}); - - *

          Alternatively, you can add a `Graphic` instance to the DOM using the `render` method.

          - var myGraphic = new Y.Graphic(); - myGraphic.render("#mygraphiccontainer"); - - * `Graphic` has the following implementations based on browser capability. - * - * - * It is not necessary to interact with these classes directly. `Graphic` will point to the appropriate implemention.

          - * - * @class Graphic - * @constructor - */ - /** - * Whether or not to render the `Graphic` automatically after to a specified parent node after init. This can be a Node instance or a CSS selector string. - * - * @config render - * @type Node | String - */ - /** - * Unique id for class instance. - * - * @config id - * @type String - */ - /** - * Key value pairs in which a shape instance is associated with its id. - * - * @config shapes - * @type Object - * @readOnly - */ - /** - * Object containing size and coordinate data for the content of a Graphic in relation to the coordSpace node. - * - * @config contentBounds - * @type Object - * @readOnly - */ - /** - * The html element that represents to coordinate system of the Graphic instance. - * - * @config node - * @type HTMLElement - * @readOnly - */ - /** - * Indicates the width of the `Graphic`. - * - * @config width - * @type Number - */ - /** - * Indicates the height of the `Graphic`. - * - * @config height - * @type Number - */ - /** - * Determines the sizing of the Graphic. - * - *
          - *
          sizeContentToGraphic
          The Graphic's width and height attributes are, either explicitly set through the width and height - * attributes or are determined by the dimensions of the parent element. The content contained in the Graphic will be sized to fit with in the Graphic instance's - * dimensions. When using this setting, the preserveAspectRatio attribute will determine how the contents are sized.
          - *
          sizeGraphicToContent
          (Also accepts a value of true) The Graphic's width and height are determined by the size and positioning of the content.
          - *
          false
          The Graphic's width and height attributes are, either explicitly set through the width and height - * attributes or are determined by the dimensions of the parent element. The contents of the Graphic instance are not affected by this setting.
          - *
          - * - * - * @config autoSize - * @type Boolean | String - * @default false - */ - /** - * Determines how content is sized when autoSize is set to sizeContentToGraphic. - * - *
          - *
          none
          Do not force uniform scaling. Scale the graphic content of the given element non-uniformly if necessary - * such that the element's bounding box exactly matches the viewport rectangle.
          - *
          xMinYMin
          Force uniform scaling position along the top left of the Graphic's node.
          - *
          xMidYMin
          Force uniform scaling horizontally centered and positioned at the top of the Graphic's node.
          - *
          xMaxYMin
          Force uniform scaling positioned horizontally from the right and vertically from the top.
          - *
          xMinYMid
          Force uniform scaling positioned horizontally from the left and vertically centered. - *
          xMidYMid (the default)
          Force uniform scaling with the content centered.
          - *
          xMaxYMid
          Force uniform scaling positioned horizontally from the right and vertically centered.
          - *
          xMinYMax
          Force uniform scaling positioned horizontally from the left and vertically from the bottom.
          - *
          xMidYMax
          Force uniform scaling horizontally centered and position vertically from the bottom.
          - *
          xMaxYMax
          Force uniform scaling positioned horizontally from the right and vertically from the bottom.
          - *
          - * - * @config preserveAspectRatio - * @type String - * @default xMidYMid - */ - /** - * The contentBounds will resize to greater values but not to smaller values. (for performance) - * When resizing the contentBounds down is desirable, set the resizeDown value to true. - * - * @config resizeDown - * @type Boolean - */ - /** - * Indicates the x-coordinate for the instance. - * - * @config x - * @type Number - */ - /** - * Indicates the y-coordinate for the instance. - * - * @config y - * @type Number - */ - /** - * Indicates whether or not the instance will automatically redraw after a change is made to a shape. - * This property will get set to false when batching operations. - * - * @config autoDraw - * @type Boolean - * @default true - * @private - */ - /** - * Indicates whether the `Graphic` and its children are visible. - * - * @config visible - * @type Boolean - */ - /** - * Gets the current position of the graphic instance in page coordinates. - * - * @method getXY - * @return Array The XY position of the shape. - */ - /** - * Adds the graphics node to the dom. - * - * @method render - * @param {Node|String} parentNode node in which to render the graphics node into. - */ - /** - * Removes all nodes. - * - * @method destroy - */ - /** - *

          Generates a shape instance by type. The method accepts an object that contain's the shape's - * type and attributes to be customized. For example, the code below would create a rectangle:

          - * - var myRect = myGraphic.addShape({ - type: "rect", - width: 40, - height: 30, - fill: { - color: "#9aa" - }, - stroke: { - weight: 1, - color: "#000" - } - }); - * - *

          The `Graphics` module includes a few basic shapes. More information on their creation - * can be found in each shape's documentation: - * - *

          - * - * The `Graphics` module also allows for the creation of custom shapes. If a custom shape - * has been created, it can be instantiated with the `addShape` method as well. The attributes, - * required and optional, would need to be defined in the custom shape. - * - var myCustomShape = myGraphic.addShape({ - type: Y.MyCustomShape, - width: 50, - height: 50, - fill: { - color: "#9aa" - }, - stroke: { - weight: 1, - color: "#000" - } - }); - * - * @method addShape - * @param {Object} cfg Object containing the shape's type and attributes. - * @return Shape - */ - /** - * Removes a shape instance from from the graphic instance. - * - * @method removeShape - * @param {Shape|String} shape The instance or id of the shape to be removed. - */ - /** - * Removes all shape instances from the dom. - * - * @method removeAllShapes - */ - /** - * Returns a shape based on the id of its dom node. - * - * @method getShapeById - * @param {String} id Dom id of the shape's node attribute. - * @return Shape - */ - /** - * Allows for creating multiple shapes in order to batch appending and redraw operations. - * - * @method batch - * @param {Function} method Method to execute. - */ - - -}, '3.7.3', {"requires": ["node", "event-custom", "pluginhost", "matrix", "classnamemanager"]}); diff --git a/lib/yuilib/3.7.3/build/loader-yui3/loader-yui3-coverage.js b/lib/yuilib/3.7.3/build/loader-yui3/loader-yui3-coverage.js deleted file mode 100644 index 02dbb42c409..00000000000 --- a/lib/yuilib/3.7.3/build/loader-yui3/loader-yui3-coverage.js +++ /dev/null @@ -1,2602 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -if (typeof _yuitest_coverage == "undefined"){ - _yuitest_coverage = {}; - _yuitest_coverline = function(src, line){ - var coverage = _yuitest_coverage[src]; - if (!coverage.lines[line]){ - coverage.calledLines++; - } - coverage.lines[line]++; - }; - _yuitest_coverfunc = function(src, name, line){ - var coverage = _yuitest_coverage[src], - funcId = name + ":" + line; - if (!coverage.functions[funcId]){ - coverage.calledFunctions++; - } - coverage.functions[funcId]++; - }; -} -_yuitest_coverage["build/loader-yui3/loader-yui3.js"] = { - lines: {}, - functions: {}, - coveredLines: 0, - calledLines: 0, - coveredFunctions: 0, - calledFunctions: 0, - path: "build/loader-yui3/loader-yui3.js", - code: [] -}; -_yuitest_coverage["build/loader-yui3/loader-yui3.js"].code=["YUI.add('loader-yui3', function (Y, NAME) {","","/* This file is auto-generated by src/loader/scripts/meta_join.js */","","/**"," * YUI 3 module metadata"," * @module loader"," * @submodule yui3"," */","YUI.Env[Y.version].modules = YUI.Env[Y.version].modules || {"," \"align-plugin\": {"," \"requires\": ["," \"node-screen\","," \"node-pluginhost\""," ]"," },"," \"anim\": {"," \"use\": ["," \"anim-base\","," \"anim-color\","," \"anim-curve\","," \"anim-easing\","," \"anim-node-plugin\","," \"anim-scroll\","," \"anim-xy\""," ]"," },"," \"anim-base\": {"," \"requires\": ["," \"base-base\","," \"node-style\""," ]"," },"," \"anim-color\": {"," \"requires\": ["," \"anim-base\""," ]"," },"," \"anim-curve\": {"," \"requires\": ["," \"anim-xy\""," ]"," },"," \"anim-easing\": {"," \"requires\": ["," \"anim-base\""," ]"," },"," \"anim-node-plugin\": {"," \"requires\": ["," \"node-pluginhost\","," \"anim-base\""," ]"," },"," \"anim-scroll\": {"," \"requires\": ["," \"anim-base\""," ]"," },"," \"anim-shape\": {"," \"requires\": ["," \"anim-base\","," \"anim-easing\","," \"anim-color\","," \"matrix\""," ]"," },"," \"anim-shape-transform\": {"," \"use\": ["," \"anim-shape\""," ]"," },"," \"anim-xy\": {"," \"requires\": ["," \"anim-base\","," \"node-screen\""," ]"," },"," \"app\": {"," \"use\": ["," \"app-base\","," \"app-content\","," \"app-transitions\","," \"lazy-model-list\","," \"model\","," \"model-list\","," \"model-sync-rest\","," \"router\","," \"view\","," \"view-node-map\""," ]"," },"," \"app-base\": {"," \"requires\": ["," \"classnamemanager\","," \"pjax-base\","," \"router\","," \"view\""," ]"," },"," \"app-content\": {"," \"requires\": ["," \"app-base\","," \"pjax-content\""," ]"," },"," \"app-transitions\": {"," \"requires\": ["," \"app-base\""," ]"," },"," \"app-transitions-css\": {"," \"type\": \"css\""," },"," \"app-transitions-native\": {"," \"condition\": {"," \"name\": \"app-transitions-native\","," \"test\": function (Y) {"," var doc = Y.config.doc,"," node = doc ? doc.documentElement : null;",""," if (node && node.style) {"," return ('MozTransition' in node.style || 'WebkitTransition' in node.style || 'transition' in node.style);"," }",""," return false;","},"," \"trigger\": \"app-transitions\""," },"," \"requires\": ["," \"app-transitions\","," \"app-transitions-css\","," \"parallel\","," \"transition\""," ]"," },"," \"array-extras\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"array-invoke\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"arraylist\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"arraylist-add\": {"," \"requires\": ["," \"arraylist\""," ]"," },"," \"arraylist-filter\": {"," \"requires\": ["," \"arraylist\""," ]"," },"," \"arraysort\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"async-queue\": {"," \"requires\": ["," \"event-custom\""," ]"," },"," \"attribute\": {"," \"use\": ["," \"attribute-base\","," \"attribute-complex\""," ]"," },"," \"attribute-base\": {"," \"requires\": ["," \"attribute-core\","," \"attribute-events\","," \"attribute-extras\""," ]"," },"," \"attribute-complex\": {"," \"requires\": ["," \"attribute-base\""," ]"," },"," \"attribute-core\": {"," \"requires\": ["," \"oop\""," ]"," },"," \"attribute-events\": {"," \"requires\": ["," \"event-custom\""," ]"," },"," \"attribute-extras\": {"," \"requires\": ["," \"oop\""," ]"," },"," \"autocomplete\": {"," \"use\": ["," \"autocomplete-base\","," \"autocomplete-sources\","," \"autocomplete-list\","," \"autocomplete-plugin\""," ]"," },"," \"autocomplete-base\": {"," \"optional\": ["," \"autocomplete-sources\""," ],"," \"requires\": ["," \"array-extras\","," \"base-build\","," \"escape\","," \"event-valuechange\","," \"node-base\""," ]"," },"," \"autocomplete-filters\": {"," \"requires\": ["," \"array-extras\","," \"text-wordbreak\""," ]"," },"," \"autocomplete-filters-accentfold\": {"," \"requires\": ["," \"array-extras\","," \"text-accentfold\","," \"text-wordbreak\""," ]"," },"," \"autocomplete-highlighters\": {"," \"requires\": ["," \"array-extras\","," \"highlight-base\""," ]"," },"," \"autocomplete-highlighters-accentfold\": {"," \"requires\": ["," \"array-extras\","," \"highlight-accentfold\""," ]"," },"," \"autocomplete-list\": {"," \"after\": ["," \"autocomplete-sources\""," ],"," \"lang\": ["," \"en\""," ],"," \"requires\": ["," \"autocomplete-base\","," \"event-resize\","," \"node-screen\","," \"selector-css3\","," \"shim-plugin\","," \"widget\","," \"widget-position\","," \"widget-position-align\""," ],"," \"skinnable\": true"," },"," \"autocomplete-list-keys\": {"," \"condition\": {"," \"name\": \"autocomplete-list-keys\","," \"test\": function (Y) {"," // Only add keyboard support to autocomplete-list if this doesn't appear to"," // be an iOS or Android-based mobile device."," //"," // There's currently no feasible way to actually detect whether a device has"," // a hardware keyboard, so this sniff will have to do. It can easily be"," // overridden by manually loading the autocomplete-list-keys module."," //"," // Worth noting: even though iOS supports bluetooth keyboards, Mobile Safari"," // doesn't fire the keyboard events used by AutoCompleteList, so there's"," // no point loading the -keys module even when a bluetooth keyboard may be"," // available."," return !(Y.UA.ios || Y.UA.android);","},"," \"trigger\": \"autocomplete-list\""," },"," \"requires\": ["," \"autocomplete-list\","," \"base-build\""," ]"," },"," \"autocomplete-plugin\": {"," \"requires\": ["," \"autocomplete-list\","," \"node-pluginhost\""," ]"," },"," \"autocomplete-sources\": {"," \"optional\": ["," \"io-base\","," \"json-parse\","," \"jsonp\","," \"yql\""," ],"," \"requires\": ["," \"autocomplete-base\""," ]"," },"," \"base\": {"," \"use\": ["," \"base-base\","," \"base-pluginhost\","," \"base-build\""," ]"," },"," \"base-base\": {"," \"after\": ["," \"attribute-complex\""," ],"," \"requires\": ["," \"base-core\","," \"attribute-base\""," ]"," },"," \"base-build\": {"," \"requires\": ["," \"base-base\""," ]"," },"," \"base-core\": {"," \"requires\": ["," \"attribute-core\""," ]"," },"," \"base-pluginhost\": {"," \"requires\": ["," \"base-base\","," \"pluginhost\""," ]"," },"," \"button\": {"," \"requires\": ["," \"button-core\","," \"cssbutton\","," \"widget\""," ]"," },"," \"button-core\": {"," \"requires\": ["," \"attribute-core\","," \"classnamemanager\","," \"node-base\""," ]"," },"," \"button-group\": {"," \"requires\": ["," \"button-plugin\","," \"cssbutton\","," \"widget\""," ]"," },"," \"button-plugin\": {"," \"requires\": ["," \"button-core\","," \"cssbutton\","," \"node-pluginhost\""," ]"," },"," \"cache\": {"," \"use\": ["," \"cache-base\","," \"cache-offline\","," \"cache-plugin\""," ]"," },"," \"cache-base\": {"," \"requires\": ["," \"base\""," ]"," },"," \"cache-offline\": {"," \"requires\": ["," \"cache-base\","," \"json\""," ]"," },"," \"cache-plugin\": {"," \"requires\": ["," \"plugin\","," \"cache-base\""," ]"," },"," \"calendar\": {"," \"lang\": ["," \"de\","," \"en\","," \"fr\","," \"ja\","," \"nb-NO\","," \"pt-BR\","," \"ru\","," \"zh-HANT-TW\""," ],"," \"requires\": ["," \"calendar-base\","," \"calendarnavigator\""," ],"," \"skinnable\": true"," },"," \"calendar-base\": {"," \"lang\": ["," \"de\","," \"en\","," \"fr\","," \"ja\","," \"nb-NO\","," \"pt-BR\","," \"ru\","," \"zh-HANT-TW\""," ],"," \"requires\": ["," \"widget\","," \"substitute\","," \"datatype-date\","," \"datatype-date-math\","," \"cssgrids\""," ],"," \"skinnable\": true"," },"," \"calendarnavigator\": {"," \"requires\": ["," \"plugin\","," \"classnamemanager\","," \"datatype-date\","," \"node\","," \"substitute\""," ],"," \"skinnable\": true"," },"," \"charts\": {"," \"requires\": ["," \"charts-base\""," ]"," },"," \"charts-base\": {"," \"requires\": ["," \"dom\","," \"datatype-number\","," \"datatype-date\","," \"event-custom\","," \"event-mouseenter\","," \"event-touch\","," \"widget\","," \"widget-position\","," \"widget-stack\","," \"graphics\""," ]"," },"," \"charts-legend\": {"," \"requires\": ["," \"charts-base\""," ]"," },"," \"classnamemanager\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"clickable-rail\": {"," \"requires\": ["," \"slider-base\""," ]"," },"," \"collection\": {"," \"use\": ["," \"array-extras\","," \"arraylist\","," \"arraylist-add\","," \"arraylist-filter\","," \"array-invoke\""," ]"," },"," \"console\": {"," \"lang\": ["," \"en\","," \"es\","," \"ja\""," ],"," \"requires\": ["," \"yui-log\","," \"widget\""," ],"," \"skinnable\": true"," },"," \"console-filters\": {"," \"requires\": ["," \"plugin\","," \"console\""," ],"," \"skinnable\": true"," },"," \"controller\": {"," \"use\": ["," \"router\""," ]"," },"," \"cookie\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"createlink-base\": {"," \"requires\": ["," \"editor-base\""," ]"," },"," \"cssbase\": {"," \"after\": ["," \"cssreset\","," \"cssfonts\","," \"cssgrids\","," \"cssreset-context\","," \"cssfonts-context\","," \"cssgrids-context\""," ],"," \"type\": \"css\""," },"," \"cssbase-context\": {"," \"after\": ["," \"cssreset\","," \"cssfonts\","," \"cssgrids\","," \"cssreset-context\","," \"cssfonts-context\","," \"cssgrids-context\""," ],"," \"type\": \"css\""," },"," \"cssbutton\": {"," \"type\": \"css\""," },"," \"cssfonts\": {"," \"type\": \"css\""," },"," \"cssfonts-context\": {"," \"type\": \"css\""," },"," \"cssgrids\": {"," \"optional\": ["," \"cssreset\","," \"cssfonts\""," ],"," \"type\": \"css\""," },"," \"cssgrids-base\": {"," \"optional\": ["," \"cssreset\","," \"cssfonts\""," ],"," \"type\": \"css\""," },"," \"cssgrids-units\": {"," \"optional\": ["," \"cssreset\","," \"cssfonts\""," ],"," \"requires\": ["," \"cssgrids-base\""," ],"," \"type\": \"css\""," },"," \"cssreset\": {"," \"type\": \"css\""," },"," \"cssreset-context\": {"," \"type\": \"css\""," },"," \"dataschema\": {"," \"use\": ["," \"dataschema-base\","," \"dataschema-json\","," \"dataschema-xml\","," \"dataschema-array\","," \"dataschema-text\""," ]"," },"," \"dataschema-array\": {"," \"requires\": ["," \"dataschema-base\""," ]"," },"," \"dataschema-base\": {"," \"requires\": ["," \"base\""," ]"," },"," \"dataschema-json\": {"," \"requires\": ["," \"dataschema-base\","," \"json\""," ]"," },"," \"dataschema-text\": {"," \"requires\": ["," \"dataschema-base\""," ]"," },"," \"dataschema-xml\": {"," \"requires\": ["," \"dataschema-base\""," ]"," },"," \"datasource\": {"," \"use\": ["," \"datasource-local\","," \"datasource-io\","," \"datasource-get\","," \"datasource-function\","," \"datasource-cache\","," \"datasource-jsonschema\","," \"datasource-xmlschema\","," \"datasource-arrayschema\","," \"datasource-textschema\","," \"datasource-polling\""," ]"," },"," \"datasource-arrayschema\": {"," \"requires\": ["," \"datasource-local\","," \"plugin\","," \"dataschema-array\""," ]"," },"," \"datasource-cache\": {"," \"requires\": ["," \"datasource-local\","," \"plugin\","," \"cache-base\""," ]"," },"," \"datasource-function\": {"," \"requires\": ["," \"datasource-local\""," ]"," },"," \"datasource-get\": {"," \"requires\": ["," \"datasource-local\","," \"get\""," ]"," },"," \"datasource-io\": {"," \"requires\": ["," \"datasource-local\","," \"io-base\""," ]"," },"," \"datasource-jsonschema\": {"," \"requires\": ["," \"datasource-local\","," \"plugin\","," \"dataschema-json\""," ]"," },"," \"datasource-local\": {"," \"requires\": ["," \"base\""," ]"," },"," \"datasource-polling\": {"," \"requires\": ["," \"datasource-local\""," ]"," },"," \"datasource-textschema\": {"," \"requires\": ["," \"datasource-local\","," \"plugin\","," \"dataschema-text\""," ]"," },"," \"datasource-xmlschema\": {"," \"requires\": ["," \"datasource-local\","," \"plugin\","," \"datatype-xml\","," \"dataschema-xml\""," ]"," },"," \"datatable\": {"," \"use\": ["," \"datatable-core\","," \"datatable-table\","," \"datatable-head\","," \"datatable-body\","," \"datatable-base\","," \"datatable-column-widths\","," \"datatable-message\","," \"datatable-mutable\","," \"datatable-sort\","," \"datatable-datasource\""," ]"," },"," \"datatable-base\": {"," \"requires\": ["," \"datatable-core\","," \"datatable-table\","," \"datatable-head\","," \"datatable-body\","," \"base-build\","," \"widget\""," ],"," \"skinnable\": true"," },"," \"datatable-base-deprecated\": {"," \"requires\": ["," \"recordset-base\","," \"widget\","," \"substitute\","," \"event-mouseenter\""," ],"," \"skinnable\": true"," },"," \"datatable-body\": {"," \"requires\": ["," \"datatable-core\","," \"view\","," \"classnamemanager\""," ]"," },"," \"datatable-column-widths\": {"," \"requires\": ["," \"datatable-base\""," ]"," },"," \"datatable-core\": {"," \"requires\": ["," \"escape\","," \"model-list\","," \"node-event-delegate\""," ]"," },"," \"datatable-datasource\": {"," \"requires\": ["," \"datatable-base\","," \"plugin\","," \"datasource-local\""," ]"," },"," \"datatable-datasource-deprecated\": {"," \"requires\": ["," \"datatable-base-deprecated\","," \"plugin\","," \"datasource-local\""," ]"," },"," \"datatable-deprecated\": {"," \"use\": ["," \"datatable-base-deprecated\","," \"datatable-datasource-deprecated\","," \"datatable-sort-deprecated\","," \"datatable-scroll-deprecated\""," ]"," },"," \"datatable-head\": {"," \"requires\": ["," \"datatable-core\","," \"view\","," \"classnamemanager\""," ]"," },"," \"datatable-message\": {"," \"lang\": ["," \"en\""," ],"," \"requires\": ["," \"datatable-base\""," ],"," \"skinnable\": true"," },"," \"datatable-mutable\": {"," \"requires\": ["," \"datatable-base\""," ]"," },"," \"datatable-scroll\": {"," \"requires\": ["," \"datatable-base\","," \"datatable-column-widths\","," \"dom-screen\""," ],"," \"skinnable\": true"," },"," \"datatable-scroll-deprecated\": {"," \"requires\": ["," \"datatable-base-deprecated\","," \"plugin\""," ]"," },"," \"datatable-sort\": {"," \"lang\": ["," \"en\""," ],"," \"requires\": ["," \"datatable-base\""," ],"," \"skinnable\": true"," },"," \"datatable-sort-deprecated\": {"," \"lang\": ["," \"en\""," ],"," \"requires\": ["," \"datatable-base-deprecated\","," \"plugin\","," \"recordset-sort\""," ]"," },"," \"datatable-table\": {"," \"requires\": ["," \"datatable-core\","," \"datatable-head\","," \"datatable-body\","," \"view\","," \"classnamemanager\""," ]"," },"," \"datatype\": {"," \"use\": ["," \"datatype-date\","," \"datatype-number\","," \"datatype-xml\""," ]"," },"," \"datatype-date\": {"," \"use\": ["," \"datatype-date-parse\","," \"datatype-date-format\","," \"datatype-date-math\""," ]"," },"," \"datatype-date-format\": {"," \"lang\": ["," \"ar\","," \"ar-JO\","," \"ca\","," \"ca-ES\","," \"da\","," \"da-DK\","," \"de\","," \"de-AT\","," \"de-DE\","," \"el\","," \"el-GR\","," \"en\","," \"en-AU\","," \"en-CA\","," \"en-GB\","," \"en-IE\","," \"en-IN\","," \"en-JO\","," \"en-MY\","," \"en-NZ\","," \"en-PH\","," \"en-SG\","," \"en-US\","," \"es\","," \"es-AR\","," \"es-BO\","," \"es-CL\","," \"es-CO\","," \"es-EC\","," \"es-ES\","," \"es-MX\","," \"es-PE\","," \"es-PY\","," \"es-US\","," \"es-UY\","," \"es-VE\","," \"fi\","," \"fi-FI\","," \"fr\","," \"fr-BE\","," \"fr-CA\","," \"fr-FR\","," \"hi\","," \"hi-IN\","," \"id\","," \"id-ID\","," \"it\","," \"it-IT\","," \"ja\","," \"ja-JP\","," \"ko\","," \"ko-KR\","," \"ms\","," \"ms-MY\","," \"nb\","," \"nb-NO\","," \"nl\","," \"nl-BE\","," \"nl-NL\","," \"pl\","," \"pl-PL\","," \"pt\","," \"pt-BR\","," \"ro\","," \"ro-RO\","," \"ru\","," \"ru-RU\","," \"sv\","," \"sv-SE\","," \"th\","," \"th-TH\","," \"tr\","," \"tr-TR\","," \"vi\","," \"vi-VN\","," \"zh-Hans\","," \"zh-Hans-CN\","," \"zh-Hant\","," \"zh-Hant-HK\","," \"zh-Hant-TW\""," ]"," },"," \"datatype-date-math\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"datatype-date-parse\": {},"," \"datatype-number\": {"," \"use\": ["," \"datatype-number-parse\","," \"datatype-number-format\""," ]"," },"," \"datatype-number-format\": {},"," \"datatype-number-parse\": {},"," \"datatype-xml\": {"," \"use\": ["," \"datatype-xml-parse\","," \"datatype-xml-format\""," ]"," },"," \"datatype-xml-format\": {},"," \"datatype-xml-parse\": {},"," \"dd\": {"," \"use\": ["," \"dd-ddm-base\","," \"dd-ddm\","," \"dd-ddm-drop\","," \"dd-drag\","," \"dd-proxy\","," \"dd-constrain\","," \"dd-drop\","," \"dd-scroll\","," \"dd-delegate\""," ]"," },"," \"dd-constrain\": {"," \"requires\": ["," \"dd-drag\""," ]"," },"," \"dd-ddm\": {"," \"requires\": ["," \"dd-ddm-base\","," \"event-resize\""," ]"," },"," \"dd-ddm-base\": {"," \"requires\": ["," \"node\","," \"base\","," \"yui-throttle\","," \"classnamemanager\""," ]"," },"," \"dd-ddm-drop\": {"," \"requires\": ["," \"dd-ddm\""," ]"," },"," \"dd-delegate\": {"," \"requires\": ["," \"dd-drag\","," \"dd-drop-plugin\","," \"event-mouseenter\""," ]"," },"," \"dd-drag\": {"," \"requires\": ["," \"dd-ddm-base\""," ]"," },"," \"dd-drop\": {"," \"requires\": ["," \"dd-drag\","," \"dd-ddm-drop\""," ]"," },"," \"dd-drop-plugin\": {"," \"requires\": ["," \"dd-drop\""," ]"," },"," \"dd-gestures\": {"," \"condition\": {"," \"name\": \"dd-gestures\","," \"trigger\": \"dd-drag\","," \"ua\": \"touchEnabled\""," },"," \"requires\": ["," \"dd-drag\","," \"event-synthetic\","," \"event-gestures\""," ]"," },"," \"dd-plugin\": {"," \"optional\": ["," \"dd-constrain\","," \"dd-proxy\""," ],"," \"requires\": ["," \"dd-drag\""," ]"," },"," \"dd-proxy\": {"," \"requires\": ["," \"dd-drag\""," ]"," },"," \"dd-scroll\": {"," \"requires\": ["," \"dd-drag\""," ]"," },"," \"dial\": {"," \"lang\": ["," \"en\","," \"es\""," ],"," \"requires\": ["," \"widget\","," \"dd-drag\","," \"event-mouseenter\","," \"event-move\","," \"event-key\","," \"transition\","," \"intl\""," ],"," \"skinnable\": true"," },"," \"dom\": {"," \"use\": ["," \"dom-base\","," \"dom-screen\","," \"dom-style\","," \"selector-native\","," \"selector\""," ]"," },"," \"dom-base\": {"," \"requires\": ["," \"dom-core\""," ]"," },"," \"dom-core\": {"," \"requires\": ["," \"oop\","," \"features\""," ]"," },"," \"dom-deprecated\": {"," \"requires\": ["," \"dom-base\""," ]"," },"," \"dom-screen\": {"," \"requires\": ["," \"dom-base\","," \"dom-style\""," ]"," },"," \"dom-style\": {"," \"requires\": ["," \"dom-base\""," ]"," },"," \"dom-style-ie\": {"," \"condition\": {"," \"name\": \"dom-style-ie\","," \"test\": function (Y) {",""," var testFeature = Y.Features.test,"," addFeature = Y.Features.add,"," WINDOW = Y.config.win,"," DOCUMENT = Y.config.doc,"," DOCUMENT_ELEMENT = 'documentElement',"," ret = false;",""," addFeature('style', 'computedStyle', {"," test: function() {"," return WINDOW && 'getComputedStyle' in WINDOW;"," }"," });",""," addFeature('style', 'opacity', {"," test: function() {"," return DOCUMENT && 'opacity' in DOCUMENT[DOCUMENT_ELEMENT].style;"," }"," });",""," ret = (!testFeature('style', 'opacity') &&"," !testFeature('style', 'computedStyle'));",""," return ret;","},"," \"trigger\": \"dom-style\""," },"," \"requires\": ["," \"dom-style\""," ]"," },"," \"dump\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"editor\": {"," \"use\": ["," \"frame\","," \"editor-selection\","," \"exec-command\","," \"editor-base\","," \"editor-para\","," \"editor-br\","," \"editor-bidi\","," \"editor-tab\","," \"createlink-base\""," ]"," },"," \"editor-base\": {"," \"requires\": ["," \"base\","," \"frame\","," \"node\","," \"exec-command\","," \"editor-selection\""," ]"," },"," \"editor-bidi\": {"," \"requires\": ["," \"editor-base\""," ]"," },"," \"editor-br\": {"," \"requires\": ["," \"editor-base\""," ]"," },"," \"editor-lists\": {"," \"requires\": ["," \"editor-base\""," ]"," },"," \"editor-para\": {"," \"requires\": ["," \"editor-para-base\""," ]"," },"," \"editor-para-base\": {"," \"requires\": ["," \"editor-base\""," ]"," },"," \"editor-para-ie\": {"," \"condition\": {"," \"name\": \"editor-para-ie\","," \"trigger\": \"editor-para\","," \"ua\": \"ie\","," \"when\": \"instead\""," },"," \"requires\": ["," \"editor-para-base\""," ]"," },"," \"editor-selection\": {"," \"requires\": ["," \"node\""," ]"," },"," \"editor-tab\": {"," \"requires\": ["," \"editor-base\""," ]"," },"," \"escape\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"event\": {"," \"after\": ["," \"node-base\""," ],"," \"use\": ["," \"event-base\","," \"event-delegate\","," \"event-synthetic\","," \"event-mousewheel\","," \"event-mouseenter\","," \"event-key\","," \"event-focus\","," \"event-resize\","," \"event-hover\","," \"event-outside\","," \"event-touch\","," \"event-move\","," \"event-flick\","," \"event-valuechange\","," \"event-tap\""," ]"," },"," \"event-base\": {"," \"after\": ["," \"node-base\""," ],"," \"requires\": ["," \"event-custom-base\""," ]"," },"," \"event-base-ie\": {"," \"after\": ["," \"event-base\""," ],"," \"condition\": {"," \"name\": \"event-base-ie\","," \"test\": function(Y) {"," var imp = Y.config.doc && Y.config.doc.implementation;"," return (imp && (!imp.hasFeature('Events', '2.0')));","},"," \"trigger\": \"node-base\""," },"," \"requires\": ["," \"node-base\""," ]"," },"," \"event-contextmenu\": {"," \"requires\": ["," \"event-synthetic\","," \"dom-screen\""," ]"," },"," \"event-custom\": {"," \"use\": ["," \"event-custom-base\","," \"event-custom-complex\""," ]"," },"," \"event-custom-base\": {"," \"requires\": ["," \"oop\""," ]"," },"," \"event-custom-complex\": {"," \"requires\": ["," \"event-custom-base\""," ]"," },"," \"event-delegate\": {"," \"requires\": ["," \"node-base\""," ]"," },"," \"event-flick\": {"," \"requires\": ["," \"node-base\","," \"event-touch\","," \"event-synthetic\""," ]"," },"," \"event-focus\": {"," \"requires\": ["," \"event-synthetic\""," ]"," },"," \"event-gestures\": {"," \"use\": ["," \"event-flick\","," \"event-move\""," ]"," },"," \"event-hover\": {"," \"requires\": ["," \"event-mouseenter\""," ]"," },"," \"event-key\": {"," \"requires\": ["," \"event-synthetic\""," ]"," },"," \"event-mouseenter\": {"," \"requires\": ["," \"event-synthetic\""," ]"," },"," \"event-mousewheel\": {"," \"requires\": ["," \"node-base\""," ]"," },"," \"event-move\": {"," \"requires\": ["," \"node-base\","," \"event-touch\","," \"event-synthetic\""," ]"," },"," \"event-outside\": {"," \"requires\": ["," \"event-synthetic\""," ]"," },"," \"event-resize\": {"," \"requires\": ["," \"node-base\","," \"event-synthetic\""," ]"," },"," \"event-simulate\": {"," \"requires\": ["," \"event-base\""," ]"," },"," \"event-synthetic\": {"," \"requires\": ["," \"node-base\","," \"event-custom-complex\""," ]"," },"," \"event-tap\": {"," \"requires\": ["," \"node-base\","," \"event-base\","," \"event-touch\","," \"event-synthetic\""," ]"," },"," \"event-touch\": {"," \"requires\": ["," \"node-base\""," ]"," },"," \"event-valuechange\": {"," \"requires\": ["," \"event-focus\","," \"event-synthetic\""," ]"," },"," \"exec-command\": {"," \"requires\": ["," \"frame\""," ]"," },"," \"features\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"file\": {"," \"requires\": ["," \"file-flash\","," \"file-html5\""," ]"," },"," \"file-flash\": {"," \"requires\": ["," \"base\""," ]"," },"," \"file-html5\": {"," \"requires\": ["," \"base\""," ]"," },"," \"frame\": {"," \"requires\": ["," \"base\","," \"node\","," \"selector-css3\","," \"yui-throttle\""," ]"," },"," \"gesture-simulate\": {"," \"requires\": ["," \"async-queue\","," \"event-simulate\","," \"node-screen\""," ]"," },"," \"get\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"graphics\": {"," \"requires\": ["," \"node\","," \"event-custom\","," \"pluginhost\","," \"matrix\","," \"classnamemanager\""," ]"," },"," \"graphics-canvas\": {"," \"condition\": {"," \"name\": \"graphics-canvas\","," \"test\": function(Y) {"," var DOCUMENT = Y.config.doc,"," useCanvas = Y.config.defaultGraphicEngine && Y.config.defaultGraphicEngine == \"canvas\","," canvas = DOCUMENT && DOCUMENT.createElement(\"canvas\"),"," svg = (DOCUMENT && DOCUMENT.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\"));"," return (!svg || useCanvas) && (canvas && canvas.getContext && canvas.getContext(\"2d\"));","},"," \"trigger\": \"graphics\""," },"," \"requires\": ["," \"graphics\""," ]"," },"," \"graphics-canvas-default\": {"," \"condition\": {"," \"name\": \"graphics-canvas-default\","," \"test\": function(Y) {"," var DOCUMENT = Y.config.doc,"," useCanvas = Y.config.defaultGraphicEngine && Y.config.defaultGraphicEngine == \"canvas\","," canvas = DOCUMENT && DOCUMENT.createElement(\"canvas\"),"," svg = (DOCUMENT && DOCUMENT.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\"));"," return (!svg || useCanvas) && (canvas && canvas.getContext && canvas.getContext(\"2d\"));","},"," \"trigger\": \"graphics\""," }"," },"," \"graphics-svg\": {"," \"condition\": {"," \"name\": \"graphics-svg\","," \"test\": function(Y) {"," var DOCUMENT = Y.config.doc,"," useSVG = !Y.config.defaultGraphicEngine || Y.config.defaultGraphicEngine != \"canvas\","," canvas = DOCUMENT && DOCUMENT.createElement(\"canvas\"),"," svg = (DOCUMENT && DOCUMENT.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\"));"," "," return svg && (useSVG || !canvas);","},"," \"trigger\": \"graphics\""," },"," \"requires\": ["," \"graphics\""," ]"," },"," \"graphics-svg-default\": {"," \"condition\": {"," \"name\": \"graphics-svg-default\","," \"test\": function(Y) {"," var DOCUMENT = Y.config.doc,"," useSVG = !Y.config.defaultGraphicEngine || Y.config.defaultGraphicEngine != \"canvas\","," canvas = DOCUMENT && DOCUMENT.createElement(\"canvas\"),"," svg = (DOCUMENT && DOCUMENT.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\"));"," "," return svg && (useSVG || !canvas);","},"," \"trigger\": \"graphics\""," }"," },"," \"graphics-vml\": {"," \"condition\": {"," \"name\": \"graphics-vml\","," \"test\": function(Y) {"," var DOCUMENT = Y.config.doc,"," canvas = DOCUMENT && DOCUMENT.createElement(\"canvas\");"," return (DOCUMENT && !DOCUMENT.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\") && (!canvas || !canvas.getContext || !canvas.getContext(\"2d\")));","},"," \"trigger\": \"graphics\""," },"," \"requires\": ["," \"graphics\""," ]"," },"," \"graphics-vml-default\": {"," \"condition\": {"," \"name\": \"graphics-vml-default\","," \"test\": function(Y) {"," var DOCUMENT = Y.config.doc,"," canvas = DOCUMENT && DOCUMENT.createElement(\"canvas\");"," return (DOCUMENT && !DOCUMENT.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\") && (!canvas || !canvas.getContext || !canvas.getContext(\"2d\")));","},"," \"trigger\": \"graphics\""," }"," },"," \"handlebars\": {"," \"use\": ["," \"handlebars-compiler\""," ]"," },"," \"handlebars-base\": {"," \"requires\": ["," \"escape\""," ]"," },"," \"handlebars-compiler\": {"," \"requires\": ["," \"handlebars-base\""," ]"," },"," \"highlight\": {"," \"use\": ["," \"highlight-base\","," \"highlight-accentfold\""," ]"," },"," \"highlight-accentfold\": {"," \"requires\": ["," \"highlight-base\","," \"text-accentfold\""," ]"," },"," \"highlight-base\": {"," \"requires\": ["," \"array-extras\","," \"classnamemanager\","," \"escape\","," \"text-wordbreak\""," ]"," },"," \"history\": {"," \"use\": ["," \"history-base\","," \"history-hash\","," \"history-hash-ie\","," \"history-html5\""," ]"," },"," \"history-base\": {"," \"requires\": ["," \"event-custom-complex\""," ]"," },"," \"history-hash\": {"," \"after\": ["," \"history-html5\""," ],"," \"requires\": ["," \"event-synthetic\","," \"history-base\","," \"yui-later\""," ]"," },"," \"history-hash-ie\": {"," \"condition\": {"," \"name\": \"history-hash-ie\","," \"test\": function (Y) {"," var docMode = Y.config.doc && Y.config.doc.documentMode;",""," return Y.UA.ie && (!('onhashchange' in Y.config.win) ||"," !docMode || docMode < 8);","},"," \"trigger\": \"history-hash\""," },"," \"requires\": ["," \"history-hash\","," \"node-base\""," ]"," },"," \"history-html5\": {"," \"optional\": ["," \"json\""," ],"," \"requires\": ["," \"event-base\","," \"history-base\","," \"node-base\""," ]"," },"," \"imageloader\": {"," \"requires\": ["," \"base-base\","," \"node-style\","," \"node-screen\""," ]"," },"," \"intl\": {"," \"requires\": ["," \"intl-base\","," \"event-custom\""," ]"," },"," \"intl-base\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"io\": {"," \"use\": ["," \"io-base\","," \"io-xdr\","," \"io-form\","," \"io-upload-iframe\","," \"io-queue\""," ]"," },"," \"io-base\": {"," \"requires\": ["," \"event-custom-base\","," \"querystring-stringify-simple\""," ]"," },"," \"io-form\": {"," \"requires\": ["," \"io-base\","," \"node-base\""," ]"," },"," \"io-nodejs\": {"," \"condition\": {"," \"name\": \"io-nodejs\","," \"trigger\": \"io-base\","," \"ua\": \"nodejs\""," },"," \"requires\": ["," \"io-base\""," ]"," },"," \"io-queue\": {"," \"requires\": ["," \"io-base\","," \"queue-promote\""," ]"," },"," \"io-upload-iframe\": {"," \"requires\": ["," \"io-base\","," \"node-base\""," ]"," },"," \"io-xdr\": {"," \"requires\": ["," \"io-base\","," \"datatype-xml-parse\""," ]"," },"," \"json\": {"," \"use\": ["," \"json-parse\","," \"json-stringify\""," ]"," },"," \"json-parse\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"json-stringify\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"jsonp\": {"," \"requires\": ["," \"get\","," \"oop\""," ]"," },"," \"jsonp-url\": {"," \"requires\": ["," \"jsonp\""," ]"," },"," \"lazy-model-list\": {"," \"requires\": ["," \"model-list\""," ]"," },"," \"loader\": {"," \"use\": ["," \"loader-base\","," \"loader-rollup\","," \"loader-yui3\""," ]"," },"," \"loader-base\": {"," \"requires\": ["," \"get\","," \"features\""," ]"," },"," \"loader-rollup\": {"," \"requires\": ["," \"loader-base\""," ]"," },"," \"loader-yui3\": {"," \"requires\": ["," \"loader-base\""," ]"," },"," \"matrix\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"model\": {"," \"requires\": ["," \"base-build\","," \"escape\","," \"json-parse\""," ]"," },"," \"model-list\": {"," \"requires\": ["," \"array-extras\","," \"array-invoke\","," \"arraylist\","," \"base-build\","," \"escape\","," \"json-parse\","," \"model\""," ]"," },"," \"model-sync-rest\": {"," \"requires\": ["," \"model\","," \"io-base\","," \"json-stringify\""," ]"," },"," \"node\": {"," \"use\": ["," \"node-base\","," \"node-event-delegate\","," \"node-pluginhost\","," \"node-screen\","," \"node-style\""," ]"," },"," \"node-base\": {"," \"requires\": ["," \"event-base\","," \"node-core\","," \"dom-base\""," ]"," },"," \"node-core\": {"," \"requires\": ["," \"dom-core\","," \"selector\""," ]"," },"," \"node-deprecated\": {"," \"requires\": ["," \"node-base\""," ]"," },"," \"node-event-delegate\": {"," \"requires\": ["," \"node-base\","," \"event-delegate\""," ]"," },"," \"node-event-html5\": {"," \"requires\": ["," \"node-base\""," ]"," },"," \"node-event-simulate\": {"," \"requires\": ["," \"node-base\","," \"event-simulate\","," \"gesture-simulate\""," ]"," },"," \"node-flick\": {"," \"requires\": ["," \"classnamemanager\","," \"transition\","," \"event-flick\","," \"plugin\""," ],"," \"skinnable\": true"," },"," \"node-focusmanager\": {"," \"requires\": ["," \"attribute\","," \"node\","," \"plugin\","," \"node-event-simulate\","," \"event-key\","," \"event-focus\""," ]"," },"," \"node-load\": {"," \"requires\": ["," \"node-base\","," \"io-base\""," ]"," },"," \"node-menunav\": {"," \"requires\": ["," \"node\","," \"classnamemanager\","," \"plugin\","," \"node-focusmanager\""," ],"," \"skinnable\": true"," },"," \"node-pluginhost\": {"," \"requires\": ["," \"node-base\","," \"pluginhost\""," ]"," },"," \"node-screen\": {"," \"requires\": ["," \"dom-screen\","," \"node-base\""," ]"," },"," \"node-scroll-info\": {"," \"requires\": ["," \"base-build\","," \"dom-screen\","," \"event-resize\","," \"node-pluginhost\","," \"plugin\""," ]"," },"," \"node-style\": {"," \"requires\": ["," \"dom-style\","," \"node-base\""," ]"," },"," \"oop\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"overlay\": {"," \"requires\": ["," \"widget\","," \"widget-stdmod\","," \"widget-position\","," \"widget-position-align\","," \"widget-stack\","," \"widget-position-constrain\""," ],"," \"skinnable\": true"," },"," \"panel\": {"," \"requires\": ["," \"widget\","," \"widget-autohide\","," \"widget-buttons\","," \"widget-modality\","," \"widget-position\","," \"widget-position-align\","," \"widget-position-constrain\","," \"widget-stack\","," \"widget-stdmod\""," ],"," \"skinnable\": true"," },"," \"parallel\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"pjax\": {"," \"requires\": ["," \"pjax-base\","," \"pjax-content\""," ]"," },"," \"pjax-base\": {"," \"requires\": ["," \"classnamemanager\","," \"node-event-delegate\","," \"router\""," ]"," },"," \"pjax-content\": {"," \"requires\": ["," \"io-base\","," \"node-base\","," \"router\""," ]"," },"," \"pjax-plugin\": {"," \"requires\": ["," \"node-pluginhost\","," \"pjax\","," \"plugin\""," ]"," },"," \"plugin\": {"," \"requires\": ["," \"base-base\""," ]"," },"," \"pluginhost\": {"," \"use\": ["," \"pluginhost-base\","," \"pluginhost-config\""," ]"," },"," \"pluginhost-base\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"pluginhost-config\": {"," \"requires\": ["," \"pluginhost-base\""," ]"," },"," \"profiler\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"querystring\": {"," \"use\": ["," \"querystring-parse\","," \"querystring-stringify\""," ]"," },"," \"querystring-parse\": {"," \"requires\": ["," \"yui-base\","," \"array-extras\""," ]"," },"," \"querystring-parse-simple\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"querystring-stringify\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"querystring-stringify-simple\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"queue-promote\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"range-slider\": {"," \"requires\": ["," \"slider-base\","," \"slider-value-range\","," \"clickable-rail\""," ]"," },"," \"recordset\": {"," \"use\": ["," \"recordset-base\","," \"recordset-sort\","," \"recordset-filter\","," \"recordset-indexer\""," ]"," },"," \"recordset-base\": {"," \"requires\": ["," \"base\","," \"arraylist\""," ]"," },"," \"recordset-filter\": {"," \"requires\": ["," \"recordset-base\","," \"array-extras\","," \"plugin\""," ]"," },"," \"recordset-indexer\": {"," \"requires\": ["," \"recordset-base\","," \"plugin\""," ]"," },"," \"recordset-sort\": {"," \"requires\": ["," \"arraysort\","," \"recordset-base\","," \"plugin\""," ]"," },"," \"resize\": {"," \"use\": ["," \"resize-base\","," \"resize-proxy\","," \"resize-constrain\""," ]"," },"," \"resize-base\": {"," \"requires\": ["," \"base\","," \"widget\","," \"event\","," \"oop\","," \"dd-drag\","," \"dd-delegate\","," \"dd-drop\""," ],"," \"skinnable\": true"," },"," \"resize-constrain\": {"," \"requires\": ["," \"plugin\","," \"resize-base\""," ]"," },"," \"resize-plugin\": {"," \"optional\": ["," \"resize-constrain\""," ],"," \"requires\": ["," \"resize-base\","," \"plugin\""," ]"," },"," \"resize-proxy\": {"," \"requires\": ["," \"plugin\","," \"resize-base\""," ]"," },"," \"router\": {"," \"optional\": ["," \"querystring-parse\""," ],"," \"requires\": ["," \"array-extras\","," \"base-build\","," \"history\""," ]"," },"," \"scrollview\": {"," \"requires\": ["," \"scrollview-base\","," \"scrollview-scrollbars\""," ]"," },"," \"scrollview-base\": {"," \"requires\": ["," \"widget\","," \"event-gestures\","," \"event-mousewheel\","," \"transition\""," ],"," \"skinnable\": true"," },"," \"scrollview-base-ie\": {"," \"condition\": {"," \"name\": \"scrollview-base-ie\","," \"trigger\": \"scrollview-base\","," \"ua\": \"ie\""," },"," \"requires\": ["," \"scrollview-base\""," ]"," },"," \"scrollview-list\": {"," \"requires\": ["," \"plugin\","," \"classnamemanager\""," ],"," \"skinnable\": true"," },"," \"scrollview-paginator\": {"," \"requires\": ["," \"plugin\","," \"classnamemanager\""," ]"," },"," \"scrollview-scrollbars\": {"," \"requires\": ["," \"classnamemanager\","," \"transition\","," \"plugin\""," ],"," \"skinnable\": true"," },"," \"selector\": {"," \"requires\": ["," \"selector-native\""," ]"," },"," \"selector-css2\": {"," \"condition\": {"," \"name\": \"selector-css2\","," \"test\": function (Y) {"," var DOCUMENT = Y.config.doc,"," ret = DOCUMENT && !('querySelectorAll' in DOCUMENT);",""," return ret;","},"," \"trigger\": \"selector\""," },"," \"requires\": ["," \"selector-native\""," ]"," },"," \"selector-css3\": {"," \"requires\": ["," \"selector-native\","," \"selector-css2\""," ]"," },"," \"selector-native\": {"," \"requires\": ["," \"dom-base\""," ]"," },"," \"shim-plugin\": {"," \"requires\": ["," \"node-style\","," \"node-pluginhost\""," ]"," },"," \"slider\": {"," \"use\": ["," \"slider-base\","," \"slider-value-range\","," \"clickable-rail\","," \"range-slider\""," ]"," },"," \"slider-base\": {"," \"requires\": ["," \"widget\","," \"dd-constrain\","," \"event-key\""," ],"," \"skinnable\": true"," },"," \"slider-value-range\": {"," \"requires\": ["," \"slider-base\""," ]"," },"," \"sortable\": {"," \"requires\": ["," \"dd-delegate\","," \"dd-drop-plugin\","," \"dd-proxy\""," ]"," },"," \"sortable-scroll\": {"," \"requires\": ["," \"dd-scroll\","," \"sortable\""," ]"," },"," \"stylesheet\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"substitute\": {"," \"optional\": ["," \"dump\""," ],"," \"requires\": ["," \"yui-base\""," ]"," },"," \"swf\": {"," \"requires\": ["," \"event-custom\","," \"node\","," \"swfdetect\","," \"escape\""," ]"," },"," \"swfdetect\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"tabview\": {"," \"requires\": ["," \"widget\","," \"widget-parent\","," \"widget-child\","," \"tabview-base\","," \"node-pluginhost\","," \"node-focusmanager\""," ],"," \"skinnable\": true"," },"," \"tabview-base\": {"," \"requires\": ["," \"node-event-delegate\","," \"classnamemanager\","," \"skin-sam-tabview\""," ]"," },"," \"tabview-plugin\": {"," \"requires\": ["," \"tabview-base\""," ]"," },"," \"test\": {"," \"requires\": ["," \"event-simulate\","," \"event-custom\","," \"json-stringify\""," ]"," },"," \"test-console\": {"," \"requires\": ["," \"console-filters\","," \"test\","," \"array-extras\""," ],"," \"skinnable\": true"," },"," \"text\": {"," \"use\": ["," \"text-accentfold\","," \"text-wordbreak\""," ]"," },"," \"text-accentfold\": {"," \"requires\": ["," \"array-extras\","," \"text-data-accentfold\""," ]"," },"," \"text-data-accentfold\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"text-data-wordbreak\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"text-wordbreak\": {"," \"requires\": ["," \"array-extras\","," \"text-data-wordbreak\""," ]"," },"," \"transition\": {"," \"requires\": ["," \"node-style\""," ]"," },"," \"transition-timer\": {"," \"condition\": {"," \"name\": \"transition-timer\","," \"test\": function (Y) {"," var DOCUMENT = Y.config.doc,"," node = (DOCUMENT) ? DOCUMENT.documentElement: null,"," ret = true;",""," if (node && node.style) {"," ret = !('MozTransition' in node.style || 'WebkitTransition' in node.style || 'transition' in node.style);"," }",""," return ret;","},"," \"trigger\": \"transition\""," },"," \"requires\": ["," \"transition\""," ]"," },"," \"uploader\": {"," \"requires\": ["," \"uploader-html5\","," \"uploader-flash\""," ]"," },"," \"uploader-deprecated\": {"," \"requires\": ["," \"event-custom\","," \"node\","," \"base\","," \"swf\""," ]"," },"," \"uploader-flash\": {"," \"requires\": ["," \"swf\","," \"widget\","," \"substitute\","," \"base\","," \"cssbutton\","," \"node\","," \"event-custom\","," \"file-flash\","," \"uploader-queue\""," ]"," },"," \"uploader-html5\": {"," \"requires\": ["," \"widget\","," \"node-event-simulate\","," \"substitute\","," \"file-html5\","," \"uploader-queue\""," ]"," },"," \"uploader-queue\": {"," \"requires\": ["," \"base\""," ]"," },"," \"view\": {"," \"requires\": ["," \"base-build\","," \"node-event-delegate\""," ]"," },"," \"view-node-map\": {"," \"requires\": ["," \"view\""," ]"," },"," \"widget\": {"," \"use\": ["," \"widget-base\","," \"widget-htmlparser\","," \"widget-skin\","," \"widget-uievents\""," ]"," },"," \"widget-anim\": {"," \"requires\": ["," \"anim-base\","," \"plugin\","," \"widget\""," ]"," },"," \"widget-autohide\": {"," \"requires\": ["," \"base-build\","," \"event-key\","," \"event-outside\","," \"widget\""," ]"," },"," \"widget-base\": {"," \"requires\": ["," \"attribute\","," \"base-base\","," \"base-pluginhost\","," \"classnamemanager\","," \"event-focus\","," \"node-base\","," \"node-style\""," ],"," \"skinnable\": true"," },"," \"widget-base-ie\": {"," \"condition\": {"," \"name\": \"widget-base-ie\","," \"trigger\": \"widget-base\","," \"ua\": \"ie\""," },"," \"requires\": ["," \"widget-base\""," ]"," },"," \"widget-buttons\": {"," \"requires\": ["," \"button-plugin\","," \"cssbutton\","," \"widget-stdmod\""," ]"," },"," \"widget-child\": {"," \"requires\": ["," \"base-build\","," \"widget\""," ]"," },"," \"widget-htmlparser\": {"," \"requires\": ["," \"widget-base\""," ]"," },"," \"widget-locale\": {"," \"requires\": ["," \"widget-base\""," ]"," },"," \"widget-modality\": {"," \"requires\": ["," \"base-build\","," \"event-outside\","," \"widget\""," ],"," \"skinnable\": true"," },"," \"widget-parent\": {"," \"requires\": ["," \"arraylist\","," \"base-build\","," \"widget\""," ]"," },"," \"widget-position\": {"," \"requires\": ["," \"base-build\","," \"node-screen\","," \"widget\""," ]"," },"," \"widget-position-align\": {"," \"requires\": ["," \"widget-position\""," ]"," },"," \"widget-position-constrain\": {"," \"requires\": ["," \"widget-position\""," ]"," },"," \"widget-skin\": {"," \"requires\": ["," \"widget-base\""," ]"," },"," \"widget-stack\": {"," \"requires\": ["," \"base-build\","," \"widget\""," ],"," \"skinnable\": true"," },"," \"widget-stdmod\": {"," \"requires\": ["," \"base-build\","," \"widget\""," ]"," },"," \"widget-uievents\": {"," \"requires\": ["," \"node-event-delegate\","," \"widget-base\""," ]"," },"," \"yql\": {"," \"requires\": ["," \"jsonp\","," \"jsonp-url\""," ]"," },"," \"yql-nodejs\": {"," \"condition\": {"," \"name\": \"yql-nodejs\","," \"trigger\": \"yql\","," \"ua\": \"nodejs\","," \"when\": \"after\""," }"," },"," \"yql-winjs\": {"," \"condition\": {"," \"name\": \"yql-winjs\","," \"trigger\": \"yql\","," \"ua\": \"winjs\","," \"when\": \"after\""," }"," },"," \"yui\": {},"," \"yui-base\": {},"," \"yui-later\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"yui-log\": {"," \"requires\": ["," \"yui-base\""," ]"," },"," \"yui-throttle\": {"," \"requires\": ["," \"yui-base\""," ]"," }","};","YUI.Env[Y.version].md5 = 'a28e022ad022130f7a4fb4ac77a2f1df';","","","}, '3.7.3', {\"requires\": [\"loader-base\"]});"]; -_yuitest_coverage["build/loader-yui3/loader-yui3.js"].lines = {"1":0,"10":0,"119":0,"122":0,"123":0,"126":0,"284":0,"1097":0,"1104":0,"1106":0,"1110":0,"1112":0,"1116":0,"1119":0,"1242":0,"1243":0,"1423":0,"1427":0,"1439":0,"1443":0,"1452":0,"1457":0,"1469":0,"1474":0,"1483":0,"1485":0,"1497":0,"1499":0,"1566":0,"1568":0,"2112":0,"2115":0,"2275":0,"2279":0,"2280":0,"2283":0,"2507":0}; -_yuitest_coverage["build/loader-yui3/loader-yui3.js"].functions = {"\"test\":118":0,"\"test\":272":0,"test:1105":0,"test:1111":0,"\"test\":1095":0,"\"test\":1241":0,"\"test\":1422":0,"\"test\":1438":0,"\"test\":1451":0,"\"test\":1468":0,"\"test\":1482":0,"\"test\":1496":0,"\"test\":1565":0,"\"test\":2111":0,"\"test\":2274":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/loader-yui3/loader-yui3.js"].coveredLines = 37; -_yuitest_coverage["build/loader-yui3/loader-yui3.js"].coveredFunctions = 16; -_yuitest_coverline("build/loader-yui3/loader-yui3.js", 1); -YUI.add('loader-yui3', function (Y, NAME) { - -/* This file is auto-generated by src/loader/scripts/meta_join.js */ - -/** - * YUI 3 module metadata - * @module loader - * @submodule yui3 - */ -_yuitest_coverfunc("build/loader-yui3/loader-yui3.js", "(anonymous 1)", 1); -_yuitest_coverline("build/loader-yui3/loader-yui3.js", 10); -YUI.Env[Y.version].modules = YUI.Env[Y.version].modules || { - "align-plugin": { - "requires": [ - "node-screen", - "node-pluginhost" - ] - }, - "anim": { - "use": [ - "anim-base", - "anim-color", - "anim-curve", - "anim-easing", - "anim-node-plugin", - "anim-scroll", - "anim-xy" - ] - }, - "anim-base": { - "requires": [ - "base-base", - "node-style" - ] - }, - "anim-color": { - "requires": [ - "anim-base" - ] - }, - "anim-curve": { - "requires": [ - "anim-xy" - ] - }, - "anim-easing": { - "requires": [ - "anim-base" - ] - }, - "anim-node-plugin": { - "requires": [ - "node-pluginhost", - "anim-base" - ] - }, - "anim-scroll": { - "requires": [ - "anim-base" - ] - }, - "anim-shape": { - "requires": [ - "anim-base", - "anim-easing", - "anim-color", - "matrix" - ] - }, - "anim-shape-transform": { - "use": [ - "anim-shape" - ] - }, - "anim-xy": { - "requires": [ - "anim-base", - "node-screen" - ] - }, - "app": { - "use": [ - "app-base", - "app-content", - "app-transitions", - "lazy-model-list", - "model", - "model-list", - "model-sync-rest", - "router", - "view", - "view-node-map" - ] - }, - "app-base": { - "requires": [ - "classnamemanager", - "pjax-base", - "router", - "view" - ] - }, - "app-content": { - "requires": [ - "app-base", - "pjax-content" - ] - }, - "app-transitions": { - "requires": [ - "app-base" - ] - }, - "app-transitions-css": { - "type": "css" - }, - "app-transitions-native": { - "condition": { - "name": "app-transitions-native", - "test": function (Y) { - _yuitest_coverfunc("build/loader-yui3/loader-yui3.js", "\"test\"", 118); -_yuitest_coverline("build/loader-yui3/loader-yui3.js", 119); -var doc = Y.config.doc, - node = doc ? doc.documentElement : null; - - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 122); -if (node && node.style) { - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 123); -return ('MozTransition' in node.style || 'WebkitTransition' in node.style || 'transition' in node.style); - } - - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 126); -return false; -}, - "trigger": "app-transitions" - }, - "requires": [ - "app-transitions", - "app-transitions-css", - "parallel", - "transition" - ] - }, - "array-extras": { - "requires": [ - "yui-base" - ] - }, - "array-invoke": { - "requires": [ - "yui-base" - ] - }, - "arraylist": { - "requires": [ - "yui-base" - ] - }, - "arraylist-add": { - "requires": [ - "arraylist" - ] - }, - "arraylist-filter": { - "requires": [ - "arraylist" - ] - }, - "arraysort": { - "requires": [ - "yui-base" - ] - }, - "async-queue": { - "requires": [ - "event-custom" - ] - }, - "attribute": { - "use": [ - "attribute-base", - "attribute-complex" - ] - }, - "attribute-base": { - "requires": [ - "attribute-core", - "attribute-events", - "attribute-extras" - ] - }, - "attribute-complex": { - "requires": [ - "attribute-base" - ] - }, - "attribute-core": { - "requires": [ - "oop" - ] - }, - "attribute-events": { - "requires": [ - "event-custom" - ] - }, - "attribute-extras": { - "requires": [ - "oop" - ] - }, - "autocomplete": { - "use": [ - "autocomplete-base", - "autocomplete-sources", - "autocomplete-list", - "autocomplete-plugin" - ] - }, - "autocomplete-base": { - "optional": [ - "autocomplete-sources" - ], - "requires": [ - "array-extras", - "base-build", - "escape", - "event-valuechange", - "node-base" - ] - }, - "autocomplete-filters": { - "requires": [ - "array-extras", - "text-wordbreak" - ] - }, - "autocomplete-filters-accentfold": { - "requires": [ - "array-extras", - "text-accentfold", - "text-wordbreak" - ] - }, - "autocomplete-highlighters": { - "requires": [ - "array-extras", - "highlight-base" - ] - }, - "autocomplete-highlighters-accentfold": { - "requires": [ - "array-extras", - "highlight-accentfold" - ] - }, - "autocomplete-list": { - "after": [ - "autocomplete-sources" - ], - "lang": [ - "en" - ], - "requires": [ - "autocomplete-base", - "event-resize", - "node-screen", - "selector-css3", - "shim-plugin", - "widget", - "widget-position", - "widget-position-align" - ], - "skinnable": true - }, - "autocomplete-list-keys": { - "condition": { - "name": "autocomplete-list-keys", - "test": function (Y) { - // Only add keyboard support to autocomplete-list if this doesn't appear to - // be an iOS or Android-based mobile device. - // - // There's currently no feasible way to actually detect whether a device has - // a hardware keyboard, so this sniff will have to do. It can easily be - // overridden by manually loading the autocomplete-list-keys module. - // - // Worth noting: even though iOS supports bluetooth keyboards, Mobile Safari - // doesn't fire the keyboard events used by AutoCompleteList, so there's - // no point loading the -keys module even when a bluetooth keyboard may be - // available. - _yuitest_coverfunc("build/loader-yui3/loader-yui3.js", "\"test\"", 272); -_yuitest_coverline("build/loader-yui3/loader-yui3.js", 284); -return !(Y.UA.ios || Y.UA.android); -}, - "trigger": "autocomplete-list" - }, - "requires": [ - "autocomplete-list", - "base-build" - ] - }, - "autocomplete-plugin": { - "requires": [ - "autocomplete-list", - "node-pluginhost" - ] - }, - "autocomplete-sources": { - "optional": [ - "io-base", - "json-parse", - "jsonp", - "yql" - ], - "requires": [ - "autocomplete-base" - ] - }, - "base": { - "use": [ - "base-base", - "base-pluginhost", - "base-build" - ] - }, - "base-base": { - "after": [ - "attribute-complex" - ], - "requires": [ - "base-core", - "attribute-base" - ] - }, - "base-build": { - "requires": [ - "base-base" - ] - }, - "base-core": { - "requires": [ - "attribute-core" - ] - }, - "base-pluginhost": { - "requires": [ - "base-base", - "pluginhost" - ] - }, - "button": { - "requires": [ - "button-core", - "cssbutton", - "widget" - ] - }, - "button-core": { - "requires": [ - "attribute-core", - "classnamemanager", - "node-base" - ] - }, - "button-group": { - "requires": [ - "button-plugin", - "cssbutton", - "widget" - ] - }, - "button-plugin": { - "requires": [ - "button-core", - "cssbutton", - "node-pluginhost" - ] - }, - "cache": { - "use": [ - "cache-base", - "cache-offline", - "cache-plugin" - ] - }, - "cache-base": { - "requires": [ - "base" - ] - }, - "cache-offline": { - "requires": [ - "cache-base", - "json" - ] - }, - "cache-plugin": { - "requires": [ - "plugin", - "cache-base" - ] - }, - "calendar": { - "lang": [ - "de", - "en", - "fr", - "ja", - "nb-NO", - "pt-BR", - "ru", - "zh-HANT-TW" - ], - "requires": [ - "calendar-base", - "calendarnavigator" - ], - "skinnable": true - }, - "calendar-base": { - "lang": [ - "de", - "en", - "fr", - "ja", - "nb-NO", - "pt-BR", - "ru", - "zh-HANT-TW" - ], - "requires": [ - "widget", - "substitute", - "datatype-date", - "datatype-date-math", - "cssgrids" - ], - "skinnable": true - }, - "calendarnavigator": { - "requires": [ - "plugin", - "classnamemanager", - "datatype-date", - "node", - "substitute" - ], - "skinnable": true - }, - "charts": { - "requires": [ - "charts-base" - ] - }, - "charts-base": { - "requires": [ - "dom", - "datatype-number", - "datatype-date", - "event-custom", - "event-mouseenter", - "event-touch", - "widget", - "widget-position", - "widget-stack", - "graphics" - ] - }, - "charts-legend": { - "requires": [ - "charts-base" - ] - }, - "classnamemanager": { - "requires": [ - "yui-base" - ] - }, - "clickable-rail": { - "requires": [ - "slider-base" - ] - }, - "collection": { - "use": [ - "array-extras", - "arraylist", - "arraylist-add", - "arraylist-filter", - "array-invoke" - ] - }, - "console": { - "lang": [ - "en", - "es", - "ja" - ], - "requires": [ - "yui-log", - "widget" - ], - "skinnable": true - }, - "console-filters": { - "requires": [ - "plugin", - "console" - ], - "skinnable": true - }, - "controller": { - "use": [ - "router" - ] - }, - "cookie": { - "requires": [ - "yui-base" - ] - }, - "createlink-base": { - "requires": [ - "editor-base" - ] - }, - "cssbase": { - "after": [ - "cssreset", - "cssfonts", - "cssgrids", - "cssreset-context", - "cssfonts-context", - "cssgrids-context" - ], - "type": "css" - }, - "cssbase-context": { - "after": [ - "cssreset", - "cssfonts", - "cssgrids", - "cssreset-context", - "cssfonts-context", - "cssgrids-context" - ], - "type": "css" - }, - "cssbutton": { - "type": "css" - }, - "cssfonts": { - "type": "css" - }, - "cssfonts-context": { - "type": "css" - }, - "cssgrids": { - "optional": [ - "cssreset", - "cssfonts" - ], - "type": "css" - }, - "cssgrids-base": { - "optional": [ - "cssreset", - "cssfonts" - ], - "type": "css" - }, - "cssgrids-units": { - "optional": [ - "cssreset", - "cssfonts" - ], - "requires": [ - "cssgrids-base" - ], - "type": "css" - }, - "cssreset": { - "type": "css" - }, - "cssreset-context": { - "type": "css" - }, - "dataschema": { - "use": [ - "dataschema-base", - "dataschema-json", - "dataschema-xml", - "dataschema-array", - "dataschema-text" - ] - }, - "dataschema-array": { - "requires": [ - "dataschema-base" - ] - }, - "dataschema-base": { - "requires": [ - "base" - ] - }, - "dataschema-json": { - "requires": [ - "dataschema-base", - "json" - ] - }, - "dataschema-text": { - "requires": [ - "dataschema-base" - ] - }, - "dataschema-xml": { - "requires": [ - "dataschema-base" - ] - }, - "datasource": { - "use": [ - "datasource-local", - "datasource-io", - "datasource-get", - "datasource-function", - "datasource-cache", - "datasource-jsonschema", - "datasource-xmlschema", - "datasource-arrayschema", - "datasource-textschema", - "datasource-polling" - ] - }, - "datasource-arrayschema": { - "requires": [ - "datasource-local", - "plugin", - "dataschema-array" - ] - }, - "datasource-cache": { - "requires": [ - "datasource-local", - "plugin", - "cache-base" - ] - }, - "datasource-function": { - "requires": [ - "datasource-local" - ] - }, - "datasource-get": { - "requires": [ - "datasource-local", - "get" - ] - }, - "datasource-io": { - "requires": [ - "datasource-local", - "io-base" - ] - }, - "datasource-jsonschema": { - "requires": [ - "datasource-local", - "plugin", - "dataschema-json" - ] - }, - "datasource-local": { - "requires": [ - "base" - ] - }, - "datasource-polling": { - "requires": [ - "datasource-local" - ] - }, - "datasource-textschema": { - "requires": [ - "datasource-local", - "plugin", - "dataschema-text" - ] - }, - "datasource-xmlschema": { - "requires": [ - "datasource-local", - "plugin", - "datatype-xml", - "dataschema-xml" - ] - }, - "datatable": { - "use": [ - "datatable-core", - "datatable-table", - "datatable-head", - "datatable-body", - "datatable-base", - "datatable-column-widths", - "datatable-message", - "datatable-mutable", - "datatable-sort", - "datatable-datasource" - ] - }, - "datatable-base": { - "requires": [ - "datatable-core", - "datatable-table", - "datatable-head", - "datatable-body", - "base-build", - "widget" - ], - "skinnable": true - }, - "datatable-base-deprecated": { - "requires": [ - "recordset-base", - "widget", - "substitute", - "event-mouseenter" - ], - "skinnable": true - }, - "datatable-body": { - "requires": [ - "datatable-core", - "view", - "classnamemanager" - ] - }, - "datatable-column-widths": { - "requires": [ - "datatable-base" - ] - }, - "datatable-core": { - "requires": [ - "escape", - "model-list", - "node-event-delegate" - ] - }, - "datatable-datasource": { - "requires": [ - "datatable-base", - "plugin", - "datasource-local" - ] - }, - "datatable-datasource-deprecated": { - "requires": [ - "datatable-base-deprecated", - "plugin", - "datasource-local" - ] - }, - "datatable-deprecated": { - "use": [ - "datatable-base-deprecated", - "datatable-datasource-deprecated", - "datatable-sort-deprecated", - "datatable-scroll-deprecated" - ] - }, - "datatable-head": { - "requires": [ - "datatable-core", - "view", - "classnamemanager" - ] - }, - "datatable-message": { - "lang": [ - "en" - ], - "requires": [ - "datatable-base" - ], - "skinnable": true - }, - "datatable-mutable": { - "requires": [ - "datatable-base" - ] - }, - "datatable-scroll": { - "requires": [ - "datatable-base", - "datatable-column-widths", - "dom-screen" - ], - "skinnable": true - }, - "datatable-scroll-deprecated": { - "requires": [ - "datatable-base-deprecated", - "plugin" - ] - }, - "datatable-sort": { - "lang": [ - "en" - ], - "requires": [ - "datatable-base" - ], - "skinnable": true - }, - "datatable-sort-deprecated": { - "lang": [ - "en" - ], - "requires": [ - "datatable-base-deprecated", - "plugin", - "recordset-sort" - ] - }, - "datatable-table": { - "requires": [ - "datatable-core", - "datatable-head", - "datatable-body", - "view", - "classnamemanager" - ] - }, - "datatype": { - "use": [ - "datatype-date", - "datatype-number", - "datatype-xml" - ] - }, - "datatype-date": { - "use": [ - "datatype-date-parse", - "datatype-date-format", - "datatype-date-math" - ] - }, - "datatype-date-format": { - "lang": [ - "ar", - "ar-JO", - "ca", - "ca-ES", - "da", - "da-DK", - "de", - "de-AT", - "de-DE", - "el", - "el-GR", - "en", - "en-AU", - "en-CA", - "en-GB", - "en-IE", - "en-IN", - "en-JO", - "en-MY", - "en-NZ", - "en-PH", - "en-SG", - "en-US", - "es", - "es-AR", - "es-BO", - "es-CL", - "es-CO", - "es-EC", - "es-ES", - "es-MX", - "es-PE", - "es-PY", - "es-US", - "es-UY", - "es-VE", - "fi", - "fi-FI", - "fr", - "fr-BE", - "fr-CA", - "fr-FR", - "hi", - "hi-IN", - "id", - "id-ID", - "it", - "it-IT", - "ja", - "ja-JP", - "ko", - "ko-KR", - "ms", - "ms-MY", - "nb", - "nb-NO", - "nl", - "nl-BE", - "nl-NL", - "pl", - "pl-PL", - "pt", - "pt-BR", - "ro", - "ro-RO", - "ru", - "ru-RU", - "sv", - "sv-SE", - "th", - "th-TH", - "tr", - "tr-TR", - "vi", - "vi-VN", - "zh-Hans", - "zh-Hans-CN", - "zh-Hant", - "zh-Hant-HK", - "zh-Hant-TW" - ] - }, - "datatype-date-math": { - "requires": [ - "yui-base" - ] - }, - "datatype-date-parse": {}, - "datatype-number": { - "use": [ - "datatype-number-parse", - "datatype-number-format" - ] - }, - "datatype-number-format": {}, - "datatype-number-parse": {}, - "datatype-xml": { - "use": [ - "datatype-xml-parse", - "datatype-xml-format" - ] - }, - "datatype-xml-format": {}, - "datatype-xml-parse": {}, - "dd": { - "use": [ - "dd-ddm-base", - "dd-ddm", - "dd-ddm-drop", - "dd-drag", - "dd-proxy", - "dd-constrain", - "dd-drop", - "dd-scroll", - "dd-delegate" - ] - }, - "dd-constrain": { - "requires": [ - "dd-drag" - ] - }, - "dd-ddm": { - "requires": [ - "dd-ddm-base", - "event-resize" - ] - }, - "dd-ddm-base": { - "requires": [ - "node", - "base", - "yui-throttle", - "classnamemanager" - ] - }, - "dd-ddm-drop": { - "requires": [ - "dd-ddm" - ] - }, - "dd-delegate": { - "requires": [ - "dd-drag", - "dd-drop-plugin", - "event-mouseenter" - ] - }, - "dd-drag": { - "requires": [ - "dd-ddm-base" - ] - }, - "dd-drop": { - "requires": [ - "dd-drag", - "dd-ddm-drop" - ] - }, - "dd-drop-plugin": { - "requires": [ - "dd-drop" - ] - }, - "dd-gestures": { - "condition": { - "name": "dd-gestures", - "trigger": "dd-drag", - "ua": "touchEnabled" - }, - "requires": [ - "dd-drag", - "event-synthetic", - "event-gestures" - ] - }, - "dd-plugin": { - "optional": [ - "dd-constrain", - "dd-proxy" - ], - "requires": [ - "dd-drag" - ] - }, - "dd-proxy": { - "requires": [ - "dd-drag" - ] - }, - "dd-scroll": { - "requires": [ - "dd-drag" - ] - }, - "dial": { - "lang": [ - "en", - "es" - ], - "requires": [ - "widget", - "dd-drag", - "event-mouseenter", - "event-move", - "event-key", - "transition", - "intl" - ], - "skinnable": true - }, - "dom": { - "use": [ - "dom-base", - "dom-screen", - "dom-style", - "selector-native", - "selector" - ] - }, - "dom-base": { - "requires": [ - "dom-core" - ] - }, - "dom-core": { - "requires": [ - "oop", - "features" - ] - }, - "dom-deprecated": { - "requires": [ - "dom-base" - ] - }, - "dom-screen": { - "requires": [ - "dom-base", - "dom-style" - ] - }, - "dom-style": { - "requires": [ - "dom-base" - ] - }, - "dom-style-ie": { - "condition": { - "name": "dom-style-ie", - "test": function (Y) { - - _yuitest_coverfunc("build/loader-yui3/loader-yui3.js", "\"test\"", 1095); -_yuitest_coverline("build/loader-yui3/loader-yui3.js", 1097); -var testFeature = Y.Features.test, - addFeature = Y.Features.add, - WINDOW = Y.config.win, - DOCUMENT = Y.config.doc, - DOCUMENT_ELEMENT = 'documentElement', - ret = false; - - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 1104); -addFeature('style', 'computedStyle', { - test: function() { - _yuitest_coverfunc("build/loader-yui3/loader-yui3.js", "test", 1105); -_yuitest_coverline("build/loader-yui3/loader-yui3.js", 1106); -return WINDOW && 'getComputedStyle' in WINDOW; - } - }); - - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 1110); -addFeature('style', 'opacity', { - test: function() { - _yuitest_coverfunc("build/loader-yui3/loader-yui3.js", "test", 1111); -_yuitest_coverline("build/loader-yui3/loader-yui3.js", 1112); -return DOCUMENT && 'opacity' in DOCUMENT[DOCUMENT_ELEMENT].style; - } - }); - - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 1116); -ret = (!testFeature('style', 'opacity') && - !testFeature('style', 'computedStyle')); - - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 1119); -return ret; -}, - "trigger": "dom-style" - }, - "requires": [ - "dom-style" - ] - }, - "dump": { - "requires": [ - "yui-base" - ] - }, - "editor": { - "use": [ - "frame", - "editor-selection", - "exec-command", - "editor-base", - "editor-para", - "editor-br", - "editor-bidi", - "editor-tab", - "createlink-base" - ] - }, - "editor-base": { - "requires": [ - "base", - "frame", - "node", - "exec-command", - "editor-selection" - ] - }, - "editor-bidi": { - "requires": [ - "editor-base" - ] - }, - "editor-br": { - "requires": [ - "editor-base" - ] - }, - "editor-lists": { - "requires": [ - "editor-base" - ] - }, - "editor-para": { - "requires": [ - "editor-para-base" - ] - }, - "editor-para-base": { - "requires": [ - "editor-base" - ] - }, - "editor-para-ie": { - "condition": { - "name": "editor-para-ie", - "trigger": "editor-para", - "ua": "ie", - "when": "instead" - }, - "requires": [ - "editor-para-base" - ] - }, - "editor-selection": { - "requires": [ - "node" - ] - }, - "editor-tab": { - "requires": [ - "editor-base" - ] - }, - "escape": { - "requires": [ - "yui-base" - ] - }, - "event": { - "after": [ - "node-base" - ], - "use": [ - "event-base", - "event-delegate", - "event-synthetic", - "event-mousewheel", - "event-mouseenter", - "event-key", - "event-focus", - "event-resize", - "event-hover", - "event-outside", - "event-touch", - "event-move", - "event-flick", - "event-valuechange", - "event-tap" - ] - }, - "event-base": { - "after": [ - "node-base" - ], - "requires": [ - "event-custom-base" - ] - }, - "event-base-ie": { - "after": [ - "event-base" - ], - "condition": { - "name": "event-base-ie", - "test": function(Y) { - _yuitest_coverfunc("build/loader-yui3/loader-yui3.js", "\"test\"", 1241); -_yuitest_coverline("build/loader-yui3/loader-yui3.js", 1242); -var imp = Y.config.doc && Y.config.doc.implementation; - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 1243); -return (imp && (!imp.hasFeature('Events', '2.0'))); -}, - "trigger": "node-base" - }, - "requires": [ - "node-base" - ] - }, - "event-contextmenu": { - "requires": [ - "event-synthetic", - "dom-screen" - ] - }, - "event-custom": { - "use": [ - "event-custom-base", - "event-custom-complex" - ] - }, - "event-custom-base": { - "requires": [ - "oop" - ] - }, - "event-custom-complex": { - "requires": [ - "event-custom-base" - ] - }, - "event-delegate": { - "requires": [ - "node-base" - ] - }, - "event-flick": { - "requires": [ - "node-base", - "event-touch", - "event-synthetic" - ] - }, - "event-focus": { - "requires": [ - "event-synthetic" - ] - }, - "event-gestures": { - "use": [ - "event-flick", - "event-move" - ] - }, - "event-hover": { - "requires": [ - "event-mouseenter" - ] - }, - "event-key": { - "requires": [ - "event-synthetic" - ] - }, - "event-mouseenter": { - "requires": [ - "event-synthetic" - ] - }, - "event-mousewheel": { - "requires": [ - "node-base" - ] - }, - "event-move": { - "requires": [ - "node-base", - "event-touch", - "event-synthetic" - ] - }, - "event-outside": { - "requires": [ - "event-synthetic" - ] - }, - "event-resize": { - "requires": [ - "node-base", - "event-synthetic" - ] - }, - "event-simulate": { - "requires": [ - "event-base" - ] - }, - "event-synthetic": { - "requires": [ - "node-base", - "event-custom-complex" - ] - }, - "event-tap": { - "requires": [ - "node-base", - "event-base", - "event-touch", - "event-synthetic" - ] - }, - "event-touch": { - "requires": [ - "node-base" - ] - }, - "event-valuechange": { - "requires": [ - "event-focus", - "event-synthetic" - ] - }, - "exec-command": { - "requires": [ - "frame" - ] - }, - "features": { - "requires": [ - "yui-base" - ] - }, - "file": { - "requires": [ - "file-flash", - "file-html5" - ] - }, - "file-flash": { - "requires": [ - "base" - ] - }, - "file-html5": { - "requires": [ - "base" - ] - }, - "frame": { - "requires": [ - "base", - "node", - "selector-css3", - "yui-throttle" - ] - }, - "gesture-simulate": { - "requires": [ - "async-queue", - "event-simulate", - "node-screen" - ] - }, - "get": { - "requires": [ - "yui-base" - ] - }, - "graphics": { - "requires": [ - "node", - "event-custom", - "pluginhost", - "matrix", - "classnamemanager" - ] - }, - "graphics-canvas": { - "condition": { - "name": "graphics-canvas", - "test": function(Y) { - _yuitest_coverfunc("build/loader-yui3/loader-yui3.js", "\"test\"", 1422); -_yuitest_coverline("build/loader-yui3/loader-yui3.js", 1423); -var DOCUMENT = Y.config.doc, - useCanvas = Y.config.defaultGraphicEngine && Y.config.defaultGraphicEngine == "canvas", - canvas = DOCUMENT && DOCUMENT.createElement("canvas"), - svg = (DOCUMENT && DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1")); - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 1427); -return (!svg || useCanvas) && (canvas && canvas.getContext && canvas.getContext("2d")); -}, - "trigger": "graphics" - }, - "requires": [ - "graphics" - ] - }, - "graphics-canvas-default": { - "condition": { - "name": "graphics-canvas-default", - "test": function(Y) { - _yuitest_coverfunc("build/loader-yui3/loader-yui3.js", "\"test\"", 1438); -_yuitest_coverline("build/loader-yui3/loader-yui3.js", 1439); -var DOCUMENT = Y.config.doc, - useCanvas = Y.config.defaultGraphicEngine && Y.config.defaultGraphicEngine == "canvas", - canvas = DOCUMENT && DOCUMENT.createElement("canvas"), - svg = (DOCUMENT && DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1")); - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 1443); -return (!svg || useCanvas) && (canvas && canvas.getContext && canvas.getContext("2d")); -}, - "trigger": "graphics" - } - }, - "graphics-svg": { - "condition": { - "name": "graphics-svg", - "test": function(Y) { - _yuitest_coverfunc("build/loader-yui3/loader-yui3.js", "\"test\"", 1451); -_yuitest_coverline("build/loader-yui3/loader-yui3.js", 1452); -var DOCUMENT = Y.config.doc, - useSVG = !Y.config.defaultGraphicEngine || Y.config.defaultGraphicEngine != "canvas", - canvas = DOCUMENT && DOCUMENT.createElement("canvas"), - svg = (DOCUMENT && DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1")); - - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 1457); -return svg && (useSVG || !canvas); -}, - "trigger": "graphics" - }, - "requires": [ - "graphics" - ] - }, - "graphics-svg-default": { - "condition": { - "name": "graphics-svg-default", - "test": function(Y) { - _yuitest_coverfunc("build/loader-yui3/loader-yui3.js", "\"test\"", 1468); -_yuitest_coverline("build/loader-yui3/loader-yui3.js", 1469); -var DOCUMENT = Y.config.doc, - useSVG = !Y.config.defaultGraphicEngine || Y.config.defaultGraphicEngine != "canvas", - canvas = DOCUMENT && DOCUMENT.createElement("canvas"), - svg = (DOCUMENT && DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1")); - - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 1474); -return svg && (useSVG || !canvas); -}, - "trigger": "graphics" - } - }, - "graphics-vml": { - "condition": { - "name": "graphics-vml", - "test": function(Y) { - _yuitest_coverfunc("build/loader-yui3/loader-yui3.js", "\"test\"", 1482); -_yuitest_coverline("build/loader-yui3/loader-yui3.js", 1483); -var DOCUMENT = Y.config.doc, - canvas = DOCUMENT && DOCUMENT.createElement("canvas"); - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 1485); -return (DOCUMENT && !DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") && (!canvas || !canvas.getContext || !canvas.getContext("2d"))); -}, - "trigger": "graphics" - }, - "requires": [ - "graphics" - ] - }, - "graphics-vml-default": { - "condition": { - "name": "graphics-vml-default", - "test": function(Y) { - _yuitest_coverfunc("build/loader-yui3/loader-yui3.js", "\"test\"", 1496); -_yuitest_coverline("build/loader-yui3/loader-yui3.js", 1497); -var DOCUMENT = Y.config.doc, - canvas = DOCUMENT && DOCUMENT.createElement("canvas"); - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 1499); -return (DOCUMENT && !DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") && (!canvas || !canvas.getContext || !canvas.getContext("2d"))); -}, - "trigger": "graphics" - } - }, - "handlebars": { - "use": [ - "handlebars-compiler" - ] - }, - "handlebars-base": { - "requires": [ - "escape" - ] - }, - "handlebars-compiler": { - "requires": [ - "handlebars-base" - ] - }, - "highlight": { - "use": [ - "highlight-base", - "highlight-accentfold" - ] - }, - "highlight-accentfold": { - "requires": [ - "highlight-base", - "text-accentfold" - ] - }, - "highlight-base": { - "requires": [ - "array-extras", - "classnamemanager", - "escape", - "text-wordbreak" - ] - }, - "history": { - "use": [ - "history-base", - "history-hash", - "history-hash-ie", - "history-html5" - ] - }, - "history-base": { - "requires": [ - "event-custom-complex" - ] - }, - "history-hash": { - "after": [ - "history-html5" - ], - "requires": [ - "event-synthetic", - "history-base", - "yui-later" - ] - }, - "history-hash-ie": { - "condition": { - "name": "history-hash-ie", - "test": function (Y) { - _yuitest_coverfunc("build/loader-yui3/loader-yui3.js", "\"test\"", 1565); -_yuitest_coverline("build/loader-yui3/loader-yui3.js", 1566); -var docMode = Y.config.doc && Y.config.doc.documentMode; - - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 1568); -return Y.UA.ie && (!('onhashchange' in Y.config.win) || - !docMode || docMode < 8); -}, - "trigger": "history-hash" - }, - "requires": [ - "history-hash", - "node-base" - ] - }, - "history-html5": { - "optional": [ - "json" - ], - "requires": [ - "event-base", - "history-base", - "node-base" - ] - }, - "imageloader": { - "requires": [ - "base-base", - "node-style", - "node-screen" - ] - }, - "intl": { - "requires": [ - "intl-base", - "event-custom" - ] - }, - "intl-base": { - "requires": [ - "yui-base" - ] - }, - "io": { - "use": [ - "io-base", - "io-xdr", - "io-form", - "io-upload-iframe", - "io-queue" - ] - }, - "io-base": { - "requires": [ - "event-custom-base", - "querystring-stringify-simple" - ] - }, - "io-form": { - "requires": [ - "io-base", - "node-base" - ] - }, - "io-nodejs": { - "condition": { - "name": "io-nodejs", - "trigger": "io-base", - "ua": "nodejs" - }, - "requires": [ - "io-base" - ] - }, - "io-queue": { - "requires": [ - "io-base", - "queue-promote" - ] - }, - "io-upload-iframe": { - "requires": [ - "io-base", - "node-base" - ] - }, - "io-xdr": { - "requires": [ - "io-base", - "datatype-xml-parse" - ] - }, - "json": { - "use": [ - "json-parse", - "json-stringify" - ] - }, - "json-parse": { - "requires": [ - "yui-base" - ] - }, - "json-stringify": { - "requires": [ - "yui-base" - ] - }, - "jsonp": { - "requires": [ - "get", - "oop" - ] - }, - "jsonp-url": { - "requires": [ - "jsonp" - ] - }, - "lazy-model-list": { - "requires": [ - "model-list" - ] - }, - "loader": { - "use": [ - "loader-base", - "loader-rollup", - "loader-yui3" - ] - }, - "loader-base": { - "requires": [ - "get", - "features" - ] - }, - "loader-rollup": { - "requires": [ - "loader-base" - ] - }, - "loader-yui3": { - "requires": [ - "loader-base" - ] - }, - "matrix": { - "requires": [ - "yui-base" - ] - }, - "model": { - "requires": [ - "base-build", - "escape", - "json-parse" - ] - }, - "model-list": { - "requires": [ - "array-extras", - "array-invoke", - "arraylist", - "base-build", - "escape", - "json-parse", - "model" - ] - }, - "model-sync-rest": { - "requires": [ - "model", - "io-base", - "json-stringify" - ] - }, - "node": { - "use": [ - "node-base", - "node-event-delegate", - "node-pluginhost", - "node-screen", - "node-style" - ] - }, - "node-base": { - "requires": [ - "event-base", - "node-core", - "dom-base" - ] - }, - "node-core": { - "requires": [ - "dom-core", - "selector" - ] - }, - "node-deprecated": { - "requires": [ - "node-base" - ] - }, - "node-event-delegate": { - "requires": [ - "node-base", - "event-delegate" - ] - }, - "node-event-html5": { - "requires": [ - "node-base" - ] - }, - "node-event-simulate": { - "requires": [ - "node-base", - "event-simulate", - "gesture-simulate" - ] - }, - "node-flick": { - "requires": [ - "classnamemanager", - "transition", - "event-flick", - "plugin" - ], - "skinnable": true - }, - "node-focusmanager": { - "requires": [ - "attribute", - "node", - "plugin", - "node-event-simulate", - "event-key", - "event-focus" - ] - }, - "node-load": { - "requires": [ - "node-base", - "io-base" - ] - }, - "node-menunav": { - "requires": [ - "node", - "classnamemanager", - "plugin", - "node-focusmanager" - ], - "skinnable": true - }, - "node-pluginhost": { - "requires": [ - "node-base", - "pluginhost" - ] - }, - "node-screen": { - "requires": [ - "dom-screen", - "node-base" - ] - }, - "node-scroll-info": { - "requires": [ - "base-build", - "dom-screen", - "event-resize", - "node-pluginhost", - "plugin" - ] - }, - "node-style": { - "requires": [ - "dom-style", - "node-base" - ] - }, - "oop": { - "requires": [ - "yui-base" - ] - }, - "overlay": { - "requires": [ - "widget", - "widget-stdmod", - "widget-position", - "widget-position-align", - "widget-stack", - "widget-position-constrain" - ], - "skinnable": true - }, - "panel": { - "requires": [ - "widget", - "widget-autohide", - "widget-buttons", - "widget-modality", - "widget-position", - "widget-position-align", - "widget-position-constrain", - "widget-stack", - "widget-stdmod" - ], - "skinnable": true - }, - "parallel": { - "requires": [ - "yui-base" - ] - }, - "pjax": { - "requires": [ - "pjax-base", - "pjax-content" - ] - }, - "pjax-base": { - "requires": [ - "classnamemanager", - "node-event-delegate", - "router" - ] - }, - "pjax-content": { - "requires": [ - "io-base", - "node-base", - "router" - ] - }, - "pjax-plugin": { - "requires": [ - "node-pluginhost", - "pjax", - "plugin" - ] - }, - "plugin": { - "requires": [ - "base-base" - ] - }, - "pluginhost": { - "use": [ - "pluginhost-base", - "pluginhost-config" - ] - }, - "pluginhost-base": { - "requires": [ - "yui-base" - ] - }, - "pluginhost-config": { - "requires": [ - "pluginhost-base" - ] - }, - "profiler": { - "requires": [ - "yui-base" - ] - }, - "querystring": { - "use": [ - "querystring-parse", - "querystring-stringify" - ] - }, - "querystring-parse": { - "requires": [ - "yui-base", - "array-extras" - ] - }, - "querystring-parse-simple": { - "requires": [ - "yui-base" - ] - }, - "querystring-stringify": { - "requires": [ - "yui-base" - ] - }, - "querystring-stringify-simple": { - "requires": [ - "yui-base" - ] - }, - "queue-promote": { - "requires": [ - "yui-base" - ] - }, - "range-slider": { - "requires": [ - "slider-base", - "slider-value-range", - "clickable-rail" - ] - }, - "recordset": { - "use": [ - "recordset-base", - "recordset-sort", - "recordset-filter", - "recordset-indexer" - ] - }, - "recordset-base": { - "requires": [ - "base", - "arraylist" - ] - }, - "recordset-filter": { - "requires": [ - "recordset-base", - "array-extras", - "plugin" - ] - }, - "recordset-indexer": { - "requires": [ - "recordset-base", - "plugin" - ] - }, - "recordset-sort": { - "requires": [ - "arraysort", - "recordset-base", - "plugin" - ] - }, - "resize": { - "use": [ - "resize-base", - "resize-proxy", - "resize-constrain" - ] - }, - "resize-base": { - "requires": [ - "base", - "widget", - "event", - "oop", - "dd-drag", - "dd-delegate", - "dd-drop" - ], - "skinnable": true - }, - "resize-constrain": { - "requires": [ - "plugin", - "resize-base" - ] - }, - "resize-plugin": { - "optional": [ - "resize-constrain" - ], - "requires": [ - "resize-base", - "plugin" - ] - }, - "resize-proxy": { - "requires": [ - "plugin", - "resize-base" - ] - }, - "router": { - "optional": [ - "querystring-parse" - ], - "requires": [ - "array-extras", - "base-build", - "history" - ] - }, - "scrollview": { - "requires": [ - "scrollview-base", - "scrollview-scrollbars" - ] - }, - "scrollview-base": { - "requires": [ - "widget", - "event-gestures", - "event-mousewheel", - "transition" - ], - "skinnable": true - }, - "scrollview-base-ie": { - "condition": { - "name": "scrollview-base-ie", - "trigger": "scrollview-base", - "ua": "ie" - }, - "requires": [ - "scrollview-base" - ] - }, - "scrollview-list": { - "requires": [ - "plugin", - "classnamemanager" - ], - "skinnable": true - }, - "scrollview-paginator": { - "requires": [ - "plugin", - "classnamemanager" - ] - }, - "scrollview-scrollbars": { - "requires": [ - "classnamemanager", - "transition", - "plugin" - ], - "skinnable": true - }, - "selector": { - "requires": [ - "selector-native" - ] - }, - "selector-css2": { - "condition": { - "name": "selector-css2", - "test": function (Y) { - _yuitest_coverfunc("build/loader-yui3/loader-yui3.js", "\"test\"", 2111); -_yuitest_coverline("build/loader-yui3/loader-yui3.js", 2112); -var DOCUMENT = Y.config.doc, - ret = DOCUMENT && !('querySelectorAll' in DOCUMENT); - - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 2115); -return ret; -}, - "trigger": "selector" - }, - "requires": [ - "selector-native" - ] - }, - "selector-css3": { - "requires": [ - "selector-native", - "selector-css2" - ] - }, - "selector-native": { - "requires": [ - "dom-base" - ] - }, - "shim-plugin": { - "requires": [ - "node-style", - "node-pluginhost" - ] - }, - "slider": { - "use": [ - "slider-base", - "slider-value-range", - "clickable-rail", - "range-slider" - ] - }, - "slider-base": { - "requires": [ - "widget", - "dd-constrain", - "event-key" - ], - "skinnable": true - }, - "slider-value-range": { - "requires": [ - "slider-base" - ] - }, - "sortable": { - "requires": [ - "dd-delegate", - "dd-drop-plugin", - "dd-proxy" - ] - }, - "sortable-scroll": { - "requires": [ - "dd-scroll", - "sortable" - ] - }, - "stylesheet": { - "requires": [ - "yui-base" - ] - }, - "substitute": { - "optional": [ - "dump" - ], - "requires": [ - "yui-base" - ] - }, - "swf": { - "requires": [ - "event-custom", - "node", - "swfdetect", - "escape" - ] - }, - "swfdetect": { - "requires": [ - "yui-base" - ] - }, - "tabview": { - "requires": [ - "widget", - "widget-parent", - "widget-child", - "tabview-base", - "node-pluginhost", - "node-focusmanager" - ], - "skinnable": true - }, - "tabview-base": { - "requires": [ - "node-event-delegate", - "classnamemanager", - "skin-sam-tabview" - ] - }, - "tabview-plugin": { - "requires": [ - "tabview-base" - ] - }, - "test": { - "requires": [ - "event-simulate", - "event-custom", - "json-stringify" - ] - }, - "test-console": { - "requires": [ - "console-filters", - "test", - "array-extras" - ], - "skinnable": true - }, - "text": { - "use": [ - "text-accentfold", - "text-wordbreak" - ] - }, - "text-accentfold": { - "requires": [ - "array-extras", - "text-data-accentfold" - ] - }, - "text-data-accentfold": { - "requires": [ - "yui-base" - ] - }, - "text-data-wordbreak": { - "requires": [ - "yui-base" - ] - }, - "text-wordbreak": { - "requires": [ - "array-extras", - "text-data-wordbreak" - ] - }, - "transition": { - "requires": [ - "node-style" - ] - }, - "transition-timer": { - "condition": { - "name": "transition-timer", - "test": function (Y) { - _yuitest_coverfunc("build/loader-yui3/loader-yui3.js", "\"test\"", 2274); -_yuitest_coverline("build/loader-yui3/loader-yui3.js", 2275); -var DOCUMENT = Y.config.doc, - node = (DOCUMENT) ? DOCUMENT.documentElement: null, - ret = true; - - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 2279); -if (node && node.style) { - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 2280); -ret = !('MozTransition' in node.style || 'WebkitTransition' in node.style || 'transition' in node.style); - } - - _yuitest_coverline("build/loader-yui3/loader-yui3.js", 2283); -return ret; -}, - "trigger": "transition" - }, - "requires": [ - "transition" - ] - }, - "uploader": { - "requires": [ - "uploader-html5", - "uploader-flash" - ] - }, - "uploader-deprecated": { - "requires": [ - "event-custom", - "node", - "base", - "swf" - ] - }, - "uploader-flash": { - "requires": [ - "swf", - "widget", - "substitute", - "base", - "cssbutton", - "node", - "event-custom", - "file-flash", - "uploader-queue" - ] - }, - "uploader-html5": { - "requires": [ - "widget", - "node-event-simulate", - "substitute", - "file-html5", - "uploader-queue" - ] - }, - "uploader-queue": { - "requires": [ - "base" - ] - }, - "view": { - "requires": [ - "base-build", - "node-event-delegate" - ] - }, - "view-node-map": { - "requires": [ - "view" - ] - }, - "widget": { - "use": [ - "widget-base", - "widget-htmlparser", - "widget-skin", - "widget-uievents" - ] - }, - "widget-anim": { - "requires": [ - "anim-base", - "plugin", - "widget" - ] - }, - "widget-autohide": { - "requires": [ - "base-build", - "event-key", - "event-outside", - "widget" - ] - }, - "widget-base": { - "requires": [ - "attribute", - "base-base", - "base-pluginhost", - "classnamemanager", - "event-focus", - "node-base", - "node-style" - ], - "skinnable": true - }, - "widget-base-ie": { - "condition": { - "name": "widget-base-ie", - "trigger": "widget-base", - "ua": "ie" - }, - "requires": [ - "widget-base" - ] - }, - "widget-buttons": { - "requires": [ - "button-plugin", - "cssbutton", - "widget-stdmod" - ] - }, - "widget-child": { - "requires": [ - "base-build", - "widget" - ] - }, - "widget-htmlparser": { - "requires": [ - "widget-base" - ] - }, - "widget-locale": { - "requires": [ - "widget-base" - ] - }, - "widget-modality": { - "requires": [ - "base-build", - "event-outside", - "widget" - ], - "skinnable": true - }, - "widget-parent": { - "requires": [ - "arraylist", - "base-build", - "widget" - ] - }, - "widget-position": { - "requires": [ - "base-build", - "node-screen", - "widget" - ] - }, - "widget-position-align": { - "requires": [ - "widget-position" - ] - }, - "widget-position-constrain": { - "requires": [ - "widget-position" - ] - }, - "widget-skin": { - "requires": [ - "widget-base" - ] - }, - "widget-stack": { - "requires": [ - "base-build", - "widget" - ], - "skinnable": true - }, - "widget-stdmod": { - "requires": [ - "base-build", - "widget" - ] - }, - "widget-uievents": { - "requires": [ - "node-event-delegate", - "widget-base" - ] - }, - "yql": { - "requires": [ - "jsonp", - "jsonp-url" - ] - }, - "yql-nodejs": { - "condition": { - "name": "yql-nodejs", - "trigger": "yql", - "ua": "nodejs", - "when": "after" - } - }, - "yql-winjs": { - "condition": { - "name": "yql-winjs", - "trigger": "yql", - "ua": "winjs", - "when": "after" - } - }, - "yui": {}, - "yui-base": {}, - "yui-later": { - "requires": [ - "yui-base" - ] - }, - "yui-log": { - "requires": [ - "yui-base" - ] - }, - "yui-throttle": { - "requires": [ - "yui-base" - ] - } -}; -_yuitest_coverline("build/loader-yui3/loader-yui3.js", 2507); -YUI.Env[Y.version].md5 = 'a28e022ad022130f7a4fb4ac77a2f1df'; - - -}, '3.7.3', {"requires": ["loader-base"]}); diff --git a/lib/yuilib/3.7.3/build/loader-yui3/loader-yui3-min.js b/lib/yuilib/3.7.3/build/loader-yui3/loader-yui3-min.js deleted file mode 100644 index 4c0abf0d74c..00000000000 --- a/lib/yuilib/3.7.3/build/loader-yui3/loader-yui3-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("loader-yui3",function(e,t){YUI.Env[e.version].modules=YUI.Env[e.version].modules||{"align-plugin":{requires:["node-screen","node-pluginhost"]},anim:{use:["anim-base","anim-color","anim-curve","anim-easing","anim-node-plugin","anim-scroll","anim-xy"]},"anim-base":{requires:["base-base","node-style"]},"anim-color":{requires:["anim-base"]},"anim-curve":{requires:["anim-xy"]},"anim-easing":{requires:["anim-base"]},"anim-node-plugin":{requires:["node-pluginhost","anim-base"]},"anim-scroll":{requires:["anim-base"]},"anim-shape":{requires:["anim-base","anim-easing","anim-color","matrix"]},"anim-shape-transform":{use:["anim-shape"]},"anim-xy":{requires:["anim-base","node-screen"]},app:{use:["app-base","app-content","app-transitions","lazy-model-list","model","model-list","model-sync-rest","router","view","view-node-map"]},"app-base":{requires:["classnamemanager","pjax-base","router","view"]},"app-content":{requires:["app-base","pjax-content"]},"app-transitions":{requires:["app-base"]},"app-transitions-css":{type:"css"},"app-transitions-native":{condition:{name:"app-transitions-native",test:function(e){var t=e.config.doc,n=t?t.documentElement:null;return n&&n.style?"MozTransition"in n.style||"WebkitTransition"in n.style||"transition"in n.style:!1},trigger:"app-transitions"},requires:["app-transitions","app-transitions-css","parallel","transition"]},"array-extras":{requires:["yui-base"]},"array-invoke":{requires:["yui-base"]},arraylist:{requires:["yui-base"]},"arraylist-add":{requires:["arraylist"]},"arraylist-filter":{requires:["arraylist"]},arraysort:{requires:["yui-base"]},"async-queue":{requires:["event-custom"]},attribute:{use:["attribute-base","attribute-complex"]},"attribute-base":{requires:["attribute-core","attribute-events","attribute-extras"]},"attribute-complex":{requires:["attribute-base"]},"attribute-core":{requires:["oop"]},"attribute-events":{requires:["event-custom"]},"attribute-extras":{requires:["oop"]},autocomplete:{use:["autocomplete-base","autocomplete-sources","autocomplete-list","autocomplete-plugin"]},"autocomplete-base":{optional:["autocomplete-sources"],requires:["array-extras","base-build","escape","event-valuechange","node-base"]},"autocomplete-filters":{requires:["array-extras","text-wordbreak"]},"autocomplete-filters-accentfold":{requires:["array-extras","text-accentfold","text-wordbreak"]},"autocomplete-highlighters":{requires:["array-extras","highlight-base"]},"autocomplete-highlighters-accentfold":{requires:["array-extras","highlight-accentfold"]},"autocomplete-list":{after:["autocomplete-sources"],lang:["en"],requires:["autocomplete-base","event-resize","node-screen","selector-css3","shim-plugin","widget","widget-position","widget-position-align"],skinnable:!0},"autocomplete-list-keys":{condition:{name:"autocomplete-list-keys",test:function(e){return!e.UA.ios&&!e.UA.android},trigger:"autocomplete-list"},requires:["autocomplete-list","base-build"]},"autocomplete-plugin":{requires:["autocomplete-list","node-pluginhost"]},"autocomplete-sources":{optional:["io-base","json-parse","jsonp","yql"],requires:["autocomplete-base"]},base:{use:["base-base","base-pluginhost","base-build"]},"base-base":{after:["attribute-complex"],requires:["base-core","attribute-base"]},"base-build":{requires:["base-base"]},"base-core":{requires:["attribute-core"]},"base-pluginhost":{requires:["base-base","pluginhost"]},button:{requires:["button-core","cssbutton","widget"]},"button-core":{requires:["attribute-core","classnamemanager","node-base"]},"button-group":{requires:["button-plugin","cssbutton","widget"]},"button-plugin":{requires:["button-core","cssbutton","node-pluginhost"]},cache:{use:["cache-base","cache-offline","cache-plugin"]},"cache-base":{requires:["base"]},"cache-offline":{requires:["cache-base","json"]},"cache-plugin":{requires:["plugin","cache-base"]},calendar:{lang:["de","en","fr","ja","nb-NO","pt-BR","ru","zh-HANT-TW"],requires:["calendar-base","calendarnavigator"],skinnable:!0},"calendar-base":{lang:["de","en","fr","ja","nb-NO","pt-BR","ru","zh-HANT-TW"],requires:["widget","substitute","datatype-date","datatype-date-math","cssgrids"],skinnable:!0},calendarnavigator:{requires:["plugin","classnamemanager","datatype-date","node","substitute"],skinnable:!0},charts:{requires:["charts-base"]},"charts-base":{requires:["dom","datatype-number","datatype-date","event-custom","event-mouseenter","event-touch","widget","widget-position","widget-stack","graphics"]},"charts-legend":{requires:["charts-base"]},classnamemanager:{requires:["yui-base"]},"clickable-rail":{requires:["slider-base"]},collection:{use:["array-extras","arraylist","arraylist-add","arraylist-filter","array-invoke"]},console:{lang:["en","es","ja"],requires:["yui-log","widget"],skinnable:!0},"console-filters":{requires:["plugin","console"],skinnable:!0},controller:{use:["router"]},cookie:{requires:["yui-base"]},"createlink-base":{requires:["editor-base"]},cssbase:{after:["cssreset","cssfonts","cssgrids","cssreset-context","cssfonts-context","cssgrids-context"],type:"css"},"cssbase-context":{after:["cssreset","cssfonts","cssgrids","cssreset-context","cssfonts-context","cssgrids-context"],type:"css"},cssbutton:{type:"css"},cssfonts:{type:"css"},"cssfonts-context":{type:"css"},cssgrids:{optional:["cssreset","cssfonts"],type:"css"},"cssgrids-base":{optional:["cssreset","cssfonts"],type:"css"},"cssgrids-units":{optional:["cssreset","cssfonts"],requires:["cssgrids-base"],type:"css"},cssreset:{type:"css"},"cssreset-context":{type:"css"},dataschema:{use:["dataschema-base","dataschema-json","dataschema-xml","dataschema-array","dataschema-text"]},"dataschema-array":{requires:["dataschema-base"]},"dataschema-base":{requires:["base"]},"dataschema-json":{requires:["dataschema-base","json"]},"dataschema-text":{requires:["dataschema-base"]},"dataschema-xml":{requires:["dataschema-base"]},datasource:{use:["datasource-local","datasource-io","datasource-get","datasource-function","datasource-cache","datasource-jsonschema","datasource-xmlschema","datasource-arrayschema","datasource-textschema","datasource-polling"]},"datasource-arrayschema":{requires:["datasource-local","plugin","dataschema-array"]},"datasource-cache":{requires:["datasource-local","plugin","cache-base"]},"datasource-function":{requires:["datasource-local"]},"datasource-get":{requires:["datasource-local","get"]},"datasource-io":{requires:["datasource-local","io-base"]},"datasource-jsonschema":{requires:["datasource-local","plugin","dataschema-json"]},"datasource-local":{requires:["base"]},"datasource-polling":{requires:["datasource-local"]},"datasource-textschema":{requires:["datasource-local","plugin","dataschema-text"]},"datasource-xmlschema":{requires:["datasource-local","plugin","datatype-xml","dataschema-xml"]},datatable:{use:["datatable-core","datatable-table","datatable-head","datatable-body","datatable-base","datatable-column-widths","datatable-message","datatable-mutable","datatable-sort","datatable-datasource"]},"datatable-base":{requires:["datatable-core","datatable-table","datatable-head","datatable-body","base-build","widget"],skinnable:!0},"datatable-base-deprecated":{requires:["recordset-base","widget","substitute","event-mouseenter"],skinnable:!0},"datatable-body":{requires:["datatable-core","view","classnamemanager"]},"datatable-column-widths":{requires:["datatable-base"]},"datatable-core":{requires:["escape","model-list","node-event-delegate"]},"datatable-datasource":{requires:["datatable-base","plugin","datasource-local"]},"datatable-datasource-deprecated":{requires:["datatable-base-deprecated","plugin","datasource-local"]},"datatable-deprecated":{use:["datatable-base-deprecated","datatable-datasource-deprecated","datatable-sort-deprecated","datatable-scroll-deprecated"]},"datatable-head":{requires:["datatable-core","view","classnamemanager"]},"datatable-message":{lang:["en"],requires:["datatable-base"],skinnable:!0},"datatable-mutable":{requires:["datatable-base"]},"datatable-scroll":{requires:["datatable-base","datatable-column-widths","dom-screen"],skinnable:!0},"datatable-scroll-deprecated":{requires:["datatable-base-deprecated","plugin"]},"datatable-sort":{lang:["en"],requires:["datatable-base"],skinnable:!0},"datatable-sort-deprecated":{lang:["en"],requires:["datatable-base-deprecated","plugin","recordset-sort"]},"datatable-table":{requires:["datatable-core","datatable-head","datatable-body","view","classnamemanager"]},datatype:{use:["datatype-date","datatype-number","datatype-xml"]},"datatype-date":{use:["datatype-date-parse","datatype-date-format","datatype-date-math"]},"datatype-date-format":{lang:["ar","ar-JO","ca","ca-ES","da","da-DK","de","de-AT","de-DE","el","el-GR","en","en-AU","en-CA","en-GB","en-IE","en-IN","en-JO","en-MY","en-NZ","en-PH","en-SG","en-US","es","es-AR","es-BO","es-CL","es-CO","es-EC","es-ES","es-MX","es-PE","es-PY","es-US","es-UY","es-VE","fi","fi-FI","fr","fr-BE","fr-CA","fr-FR","hi","hi-IN","id","id-ID","it","it-IT","ja","ja-JP","ko","ko-KR","ms","ms-MY","nb","nb-NO","nl","nl-BE","nl-NL","pl","pl-PL","pt","pt-BR","ro","ro-RO","ru","ru-RU","sv","sv-SE","th","th-TH","tr","tr-TR","vi","vi-VN","zh-Hans","zh-Hans-CN","zh-Hant","zh-Hant-HK","zh-Hant-TW"]},"datatype-date-math":{requires:["yui-base"]},"datatype-date-parse":{},"datatype-number":{use:["datatype-number-parse","datatype-number-format"]},"datatype-number-format":{},"datatype-number-parse":{},"datatype-xml":{use:["datatype-xml-parse","datatype-xml-format"]},"datatype-xml-format":{},"datatype-xml-parse":{},dd:{use:["dd-ddm-base","dd-ddm","dd-ddm-drop","dd-drag","dd-proxy","dd-constrain","dd-drop","dd-scroll","dd-delegate"]},"dd-constrain":{requires:["dd-drag"]},"dd-ddm":{requires:["dd-ddm-base","event-resize"]},"dd-ddm-base":{requires:["node","base","yui-throttle","classnamemanager"]},"dd-ddm-drop":{requires:["dd-ddm"]},"dd-delegate":{requires:["dd-drag","dd-drop-plugin","event-mouseenter"]},"dd-drag":{requires:["dd-ddm-base"]},"dd-drop":{requires:["dd-drag","dd-ddm-drop"]},"dd-drop-plugin":{requires:["dd-drop"]},"dd-gestures":{condition:{name:"dd-gestures",trigger:"dd-drag",ua:"touchEnabled"},requires:["dd-drag","event-synthetic","event-gestures"]},"dd-plugin":{optional:["dd-constrain","dd-proxy"],requires:["dd-drag"]},"dd-proxy":{requires:["dd-drag"]},"dd-scroll":{requires:["dd-drag"]},dial:{lang:["en","es"],requires:["widget","dd-drag","event-mouseenter","event-move","event-key","transition","intl"],skinnable:!0},dom:{use:["dom-base","dom-screen","dom-style","selector-native","selector"]},"dom-base":{requires:["dom-core"]},"dom-core":{requires:["oop","features"]},"dom-deprecated":{requires:["dom-base"]},"dom-screen":{requires:["dom-base","dom-style"]},"dom-style":{requires:["dom-base"]},"dom-style-ie":{condition:{name:"dom-style-ie",test:function(e){var t=e.Features.test,n=e.Features.add,r=e.config.win,i=e.config.doc,s="documentElement",o=!1;return n("style","computedStyle",{test:function(){return r&&"getComputedStyle"in r}}),n("style","opacity",{test:function(){return i&&"opacity"in i[s].style}}),o=!t("style","opacity")&&!t("style","computedStyle"),o},trigger:"dom-style"},requires:["dom-style"]},dump:{requires:["yui-base"]},editor:{use:["frame","editor-selection","exec-command","editor-base","editor-para","editor-br","editor-bidi","editor-tab","createlink-base"]},"editor-base":{requires:["base","frame","node","exec-command","editor-selection"]},"editor-bidi":{requires:["editor-base"]},"editor-br":{requires:["editor-base"]},"editor-lists":{requires:["editor-base"]},"editor-para":{requires:["editor-para-base"]},"editor-para-base":{requires:["editor-base"]},"editor-para-ie":{condition:{name:"editor-para-ie",trigger:"editor-para",ua:"ie",when:"instead"},requires:["editor-para-base"]},"editor-selection":{requires:["node"]},"editor-tab":{requires:["editor-base"]},escape:{requires:["yui-base"]},event:{after:["node-base"],use:["event-base","event-delegate","event-synthetic","event-mousewheel","event-mouseenter","event-key","event-focus","event-resize","event-hover","event-outside","event-touch","event-move","event-flick","event-valuechange","event-tap"]},"event-base":{after:["node-base"],requires:["event-custom-base"]},"event-base-ie":{after:["event-base"],condition:{name:"event-base-ie",test:function(e){var t=e.config.doc&&e.config.doc.implementation;return t&&!t.hasFeature("Events","2.0")},trigger:"node-base"},requires:["node-base"]},"event-contextmenu":{requires:["event-synthetic","dom-screen"]},"event-custom":{use:["event-custom-base","event-custom-complex"]},"event-custom-base":{requires:["oop"]},"event-custom-complex":{requires:["event-custom-base"]},"event-delegate":{requires:["node-base"]},"event-flick":{requires:["node-base","event-touch","event-synthetic"]},"event-focus":{requires:["event-synthetic"]},"event-gestures":{use:["event-flick","event-move"]},"event-hover":{requires:["event-mouseenter"]},"event-key":{requires:["event-synthetic"]},"event-mouseenter":{requires:["event-synthetic"]},"event-mousewheel":{requires:["node-base"]},"event-move":{requires:["node-base","event-touch","event-synthetic"]},"event-outside":{requires:["event-synthetic"]},"event-resize":{requires:["node-base","event-synthetic"]},"event-simulate":{requires:["event-base"]},"event-synthetic":{requires:["node-base","event-custom-complex"]},"event-tap":{requires:["node-base","event-base","event-touch","event-synthetic"]},"event-touch":{requires:["node-base"]},"event-valuechange":{requires:["event-focus","event-synthetic"]},"exec-command":{requires:["frame"]},features:{requires:["yui-base"]},file:{requires:["file-flash","file-html5"]},"file-flash":{requires:["base"]},"file-html5":{requires:["base"]},frame:{requires:["base","node","selector-css3","yui-throttle"]},"gesture-simulate":{requires:["async-queue","event-simulate","node-screen"]},get:{requires:["yui-base"]},graphics:{requires:["node","event-custom","pluginhost","matrix","classnamemanager"]},"graphics-canvas":{condition:{name:"graphics-canvas",test:function(e){var t=e.config.doc,n=e.config.defaultGraphicEngine&&e.config.defaultGraphicEngine=="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return(!i||n)&&r&&r.getContext&&r.getContext("2d")},trigger:"graphics"},requires:["graphics"]},"graphics-canvas-default":{condition:{name:"graphics-canvas-default",test:function(e){var t=e.config.doc,n=e.config.defaultGraphicEngine&&e.config.defaultGraphicEngine=="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return(!i||n)&&r&&r.getContext&&r.getContext("2d")},trigger:"graphics"}},"graphics-svg":{condition:{name:"graphics-svg",test:function(e){var t=e.config.doc,n=!e.config.defaultGraphicEngine||e.config.defaultGraphicEngine!="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return i&&(n||!r)},trigger:"graphics"},requires:["graphics"]},"graphics-svg-default":{condition:{name:"graphics-svg-default",test:function(e){var t=e.config.doc,n=!e.config.defaultGraphicEngine||e.config.defaultGraphicEngine!="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return i&&(n||!r)},trigger:"graphics"}},"graphics-vml":{condition:{name:"graphics-vml",test:function(e){var t=e.config.doc,n=t&&t.createElement("canvas");return t&&!t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")&&(!n||!n.getContext||!n.getContext("2d"))},trigger:"graphics"},requires:["graphics"]},"graphics-vml-default":{condition:{name:"graphics-vml-default",test:function(e){var t=e.config.doc,n=t&&t.createElement("canvas");return t&&!t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")&&(!n||!n.getContext||!n.getContext("2d"))},trigger:"graphics"}},handlebars:{use:["handlebars-compiler"]},"handlebars-base":{requires:["escape"]},"handlebars-compiler":{requires:["handlebars-base"]},highlight:{use:["highlight-base","highlight-accentfold"]},"highlight-accentfold":{requires:["highlight-base","text-accentfold"]},"highlight-base":{requires:["array-extras","classnamemanager","escape","text-wordbreak"]},history:{use:["history-base","history-hash","history-hash-ie","history-html5"]},"history-base":{requires:["event-custom-complex"]},"history-hash":{after:["history-html5"],requires:["event-synthetic","history-base","yui-later"]},"history-hash-ie":{condition:{name:"history-hash-ie",test:function(e){var t=e.config.doc&&e.config.doc.documentMode;return e.UA.ie&&(!("onhashchange"in e.config.win)||!t||t<8)},trigger:"history-hash"},requires:["history-hash","node-base"]},"history-html5":{optional:["json"],requires:["event-base","history-base","node-base"]},imageloader:{requires:["base-base","node-style","node-screen"]},intl:{requires:["intl-base","event-custom"]},"intl-base":{requires:["yui-base"]},io:{use:["io-base","io-xdr","io-form","io-upload-iframe","io-queue"]},"io-base":{requires:["event-custom-base","querystring-stringify-simple"]},"io-form":{requires:["io-base","node-base"]},"io-nodejs":{condition:{name:"io-nodejs",trigger:"io-base",ua:"nodejs"},requires:["io-base"]},"io-queue":{requires:["io-base","queue-promote"]},"io-upload-iframe":{requires:["io-base","node-base"]},"io-xdr":{requires:["io-base","datatype-xml-parse"]},json:{use:["json-parse","json-stringify"]},"json-parse":{requires:["yui-base"]},"json-stringify":{requires:["yui-base"]},jsonp:{requires:["get","oop"]},"jsonp-url":{requires:["jsonp"]},"lazy-model-list":{requires:["model-list"]},loader:{use:["loader-base","loader-rollup","loader-yui3"]},"loader-base":{requires:["get","features"]},"loader-rollup":{requires:["loader-base"]},"loader-yui3":{requires:["loader-base"]},matrix:{requires:["yui-base"]},model:{requires:["base-build","escape","json-parse"]},"model-list":{requires:["array-extras","array-invoke","arraylist","base-build","escape","json-parse","model"]},"model-sync-rest":{requires:["model","io-base","json-stringify"]},node:{use:["node-base","node-event-delegate","node-pluginhost","node-screen","node-style"]},"node-base":{requires:["event-base","node-core","dom-base"]},"node-core":{requires:["dom-core","selector"]},"node-deprecated":{requires:["node-base"]},"node-event-delegate":{requires:["node-base","event-delegate"]},"node-event-html5":{requires:["node-base"]},"node-event-simulate":{requires:["node-base","event-simulate","gesture-simulate"]},"node-flick":{requires:["classnamemanager","transition","event-flick","plugin"],skinnable:!0},"node-focusmanager":{requires:["attribute","node","plugin","node-event-simulate","event-key","event-focus"]},"node-load":{requires:["node-base","io-base"]},"node-menunav":{requires:["node","classnamemanager","plugin","node-focusmanager"],skinnable:!0},"node-pluginhost":{requires:["node-base","pluginhost"]},"node-screen":{requires:["dom-screen","node-base"]},"node-scroll-info":{requires:["base-build","dom-screen","event-resize","node-pluginhost","plugin"]},"node-style":{requires:["dom-style","node-base"]},oop:{requires:["yui-base"]},overlay:{requires:["widget","widget-stdmod","widget-position","widget-position-align","widget-stack","widget-position-constrain"],skinnable:!0},panel:{requires:["widget","widget-autohide","widget-buttons","widget-modality","widget-position","widget-position-align","widget-position-constrain","widget-stack","widget-stdmod"],skinnable:!0},parallel:{requires:["yui-base"]},pjax:{requires:["pjax-base","pjax-content"]},"pjax-base":{requires:["classnamemanager","node-event-delegate","router"]},"pjax-content":{requires:["io-base","node-base","router"]},"pjax-plugin":{requires:["node-pluginhost","pjax","plugin"]},plugin:{requires:["base-base"]},pluginhost:{use:["pluginhost-base","pluginhost-config"]},"pluginhost-base":{requires:["yui-base"]},"pluginhost-config":{requires:["pluginhost-base"]},profiler:{requires:["yui-base"]},querystring:{use:["querystring-parse","querystring-stringify"]},"querystring-parse":{requires:["yui-base","array-extras"]},"querystring-parse-simple":{requires:["yui-base"]},"querystring-stringify":{requires:["yui-base"]},"querystring-stringify-simple":{requires:["yui-base"]},"queue-promote":{requires:["yui-base"]},"range-slider":{requires:["slider-base","slider-value-range","clickable-rail"]},recordset:{use:["recordset-base","recordset-sort","recordset-filter","recordset-indexer"]},"recordset-base":{requires:["base","arraylist"]},"recordset-filter":{requires:["recordset-base","array-extras","plugin"]},"recordset-indexer":{requires:["recordset-base","plugin"]},"recordset-sort":{requires:["arraysort","recordset-base","plugin"]},resize:{use:["resize-base","resize-proxy","resize-constrain"]},"resize-base":{requires:["base","widget","event","oop","dd-drag","dd-delegate","dd-drop"],skinnable:!0},"resize-constrain":{requires:["plugin","resize-base"]},"resize-plugin":{optional:["resize-constrain"],requires:["resize-base","plugin"]},"resize-proxy":{requires:["plugin","resize-base"]},router:{optional:["querystring-parse"],requires:["array-extras","base-build","history"]},scrollview:{requires:["scrollview-base","scrollview-scrollbars"]},"scrollview-base":{requires:["widget","event-gestures","event-mousewheel","transition"],skinnable:!0},"scrollview-base-ie":{condition:{name:"scrollview-base-ie",trigger:"scrollview-base",ua:"ie"},requires:["scrollview-base"]},"scrollview-list":{requires:["plugin","classnamemanager"],skinnable:!0},"scrollview-paginator":{requires:["plugin","classnamemanager"]},"scrollview-scrollbars":{requires:["classnamemanager","transition","plugin"],skinnable:!0},selector:{requires:["selector-native"]},"selector-css2":{condition:{name:"selector-css2",test:function(e){var t=e.config.doc,n=t&&!("querySelectorAll"in t);return n},trigger:"selector"},requires:["selector-native"]},"selector-css3":{requires:["selector-native","selector-css2"]},"selector-native":{requires:["dom-base"]},"shim-plugin":{requires:["node-style","node-pluginhost"]},slider:{use:["slider-base","slider-value-range","clickable-rail","range-slider"]},"slider-base":{requires:["widget","dd-constrain","event-key"],skinnable:!0},"slider-value-range":{requires:["slider-base"]},sortable:{requires:["dd-delegate","dd-drop-plugin","dd-proxy"]},"sortable-scroll":{requires:["dd-scroll","sortable"]},stylesheet:{requires:["yui-base"]},substitute:{optional:["dump"],requires:["yui-base"]},swf:{requires:["event-custom","node","swfdetect","escape"]},swfdetect:{requires:["yui-base"]},tabview:{requires:["widget","widget-parent","widget-child","tabview-base","node-pluginhost","node-focusmanager"],skinnable:!0},"tabview-base":{requires:["node-event-delegate","classnamemanager","skin-sam-tabview"]},"tabview-plugin":{requires:["tabview-base"]},test:{requires:["event-simulate","event-custom","json-stringify"]},"test-console":{requires:["console-filters","test","array-extras"],skinnable:!0},text:{use:["text-accentfold","text-wordbreak"]},"text-accentfold":{requires:["array-extras","text-data-accentfold"]},"text-data-accentfold":{requires:["yui-base"]},"text-data-wordbreak":{requires:["yui-base"]},"text-wordbreak":{requires:["array-extras","text-data-wordbreak"]},transition:{requires:["node-style"]},"transition-timer":{condition:{name:"transition-timer",test:function(e){var t=e.config.doc,n=t?t.documentElement:null,r=!0;return n&&n.style&&(r=!("MozTransition"in n.style||"WebkitTransition"in n.style||"transition"in n.style)),r},trigger:"transition"},requires:["transition"]},uploader:{requires:["uploader-html5","uploader-flash"]},"uploader-deprecated":{requires:["event-custom","node","base","swf"]},"uploader-flash":{requires:["swf","widget","substitute","base","cssbutton","node","event-custom","file-flash","uploader-queue"]},"uploader-html5":{requires:["widget","node-event-simulate","substitute","file-html5","uploader-queue"]},"uploader-queue":{requires:["base"]},view:{requires:["base-build","node-event-delegate"]},"view-node-map":{requires:["view"]},widget:{use:["widget-base","widget-htmlparser","widget-skin","widget-uievents"]},"widget-anim":{requires:["anim-base","plugin","widget"]},"widget-autohide":{requires:["base-build","event-key","event-outside","widget"]},"widget-base":{requires:["attribute","base-base","base-pluginhost","classnamemanager","event-focus","node-base","node-style"],skinnable:!0},"widget-base-ie":{condition:{name:"widget-base-ie",trigger:"widget-base",ua:"ie"},requires:["widget-base"]},"widget-buttons":{requires:["button-plugin","cssbutton","widget-stdmod"]},"widget-child":{requires:["base-build","widget"]},"widget-htmlparser":{requires:["widget-base"]},"widget-locale":{requires:["widget-base"]},"widget-modality":{requires:["base-build","event-outside","widget"],skinnable:!0},"widget-parent":{requires:["arraylist","base-build","widget"]},"widget-position":{requires:["base-build","node-screen","widget"]},"widget-position-align":{requires:["widget-position"]},"widget-position-constrain":{requires:["widget-position"]},"widget-skin":{requires:["widget-base"]},"widget-stack":{requires:["base-build","widget"],skinnable:!0},"widget-stdmod":{requires:["base-build","widget"]},"widget-uievents":{requires:["node-event-delegate","widget-base"]},yql:{requires:["jsonp","jsonp-url"]},"yql-nodejs":{condition:{name:"yql-nodejs",trigger:"yql",ua:"nodejs",when:"after"}},"yql-winjs":{condition:{name:"yql-winjs",trigger:"yql",ua:"winjs",when:"after"}},yui:{},"yui-base":{},"yui-later":{requires:["yui-base"]},"yui-log":{requires:["yui-base"]},"yui-throttle":{requires:["yui-base"]}},YUI.Env[e.version].md5="a28e022ad022130f7a4fb4ac77a2f1df"},"3.7.3",{requires:["loader-base"]}); diff --git a/lib/yuilib/3.7.3/build/loader/loader-min.js b/lib/yuilib/3.7.3/build/loader/loader-min.js deleted file mode 100644 index 0c129c0ae5f..00000000000 --- a/lib/yuilib/3.7.3/build/loader/loader-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("loader-base",function(e,t){YUI.Env[e.version]||function(){var t=e.version,n="/build/",r=t+n,i=e.Env.base,s="gallery-2012.10.10-19-59",o="2in3",u="4",a="2.9.0",f=i+"combo?",l={version:t,root:r,base:e.Env.base,comboBase:f,skin:{defaultSkin:"sam",base:"assets/skins/",path:"skin.css",after:["cssreset","cssfonts","cssgrids","cssbase","cssreset-context","cssfonts-context"]},groups:{},patterns:{}},c=l.groups,h=function(e,t,r){var s=o+"."+(e||u)+"/"+(t||a)+n,l=r&&r.base?r.base:i,h=r&&r.comboBase?r.comboBase:f;c.yui2.base=l+s,c.yui2.root=s,c.yui2.comboBase=h},p=function(e,t){var r=(e||s)+n,o=t&&t.base?t.base:i,u=t&&t.comboBase?t.comboBase:f;c.gallery.base=o+r,c.gallery.root=r,c.gallery.comboBase=u};c[t]={},c.gallery={ext:!1,combine:!0,comboBase:f,update:p,patterns:{"gallery-":{},"lang/gallery-":{},"gallerycss-":{type:"css"}}},c.yui2={combine:!0,ext:!1,comboBase:f,update:h,patterns:{"yui2-":{configFn:function(e){/-skin|reset|fonts|grids|base/.test(e.name)&&(e.type="css",e.path=e.path.replace(/\.js/,".css"),e.path=e.path.replace(/\/yui2-skin/,"/assets/skins/sam/yui2-skin"))}}}},p(),h(),YUI.Env[t]=l}();var n={},r=[],i=1024,s=YUI.Env,o=s._loaded,u="css",a="js",f="intl",l="sam",c=e.version,h="",p=e.Object,d=p.each,v=e.Array,m=s._loaderQueue,g=s[c],y="skin-",b=e.Lang,w=s.mods,E,S=function(e,t,n,r){var i=e+"/"+t;return r||(i+="-min"),i+="."+(n||u),i};YUI.Env._cssLoaded||(YUI.Env._cssLoaded={}),e.Env.meta=g,e.Loader=function(t){var n=this;t=t||{},E=g.md5,n.context=e,n.base=e.Env.meta.base+e.Env.meta.root,n.comboBase=e.Env.meta.comboBase,n.combine=t.base&&t.base.indexOf(n.comboBase.substr(0,20))>-1,n.comboSep="&",n.maxURLLength=i,n.ignoreRegistered=t.ignoreRegistered,n.root=e.Env.meta.root,n.timeout=0,n.forceMap={},n.allowRollup=!1,n.filters={},n.required={},n.patterns={},n.moduleInfo={},n.groups=e.merge(e.Env.meta.groups),n.skin=e.merge(e.Env.meta.skin),n.conditions={},n.config=t,n._internal=!0,n._populateCache(),n.loaded=o[c],n.async=!0,n._inspectPage(),n._internal=!1,n._config(t),n.forceMap=n.force?e.Array.hash(n.force):{},n.testresults=null,e.config.tests&&(n.testresults=e.config.tests),n.sorted=[],n.dirty=!0,n.inserted={},n.skipped={},n.tested={},n.ignoreRegistered&&n._resetModules()},e.Loader.prototype={_populateCache:function(){var t=this,n=g.modules,r=s._renderedMods,i;if(r&&!t.ignoreRegistered){for(i in r)r.hasOwnProperty(i)&&(t.moduleInfo[i]=e.merge(r[i]));r=s._conditions;for(i in r)r.hasOwnProperty(i)&&(t.conditions[i]=e.merge(r[i]))}else for(i in n)n.hasOwnProperty(i)&&t.addModule(n[i],i)},_resetModules:function(){var e=this,t,n,r,i,s;for(t in e.moduleInfo)if(e.moduleInfo.hasOwnProperty(t)){r=e.moduleInfo[t],i=r.name,s=YUI.Env.mods[i]?YUI.Env.mods[i].details:null,s&&(e.moduleInfo[i]._reset=!0,e.moduleInfo[i].requires=s.requires||[],e.moduleInfo[i].optional=s.optional||[],e.moduleInfo[i].supersedes=s.supercedes||[]);if(r.defaults)for(n in r.defaults)r.defaults.hasOwnProperty(n)&&r[n]&&(r[n]=r.defaults[n]);delete r.langCache,delete r.skinCache,r.skinnable&&e._addSkin(e.skin.defaultSkin,r.name)}},REGEX_CSS:/\.css(?:[?;].*)?$/i,FILTER_DEFS:{RAW:{searchExp:"-min\\.js",replaceStr:".js"},DEBUG:{searchExp:"-min\\.js",replaceStr:"-debug.js"},COVERAGE:{searchExp:"-min\\.js",replaceStr:"-coverage.js"}},_inspectPage:function(){var e=this,t,n,r,i,s;for(s in e.moduleInfo)e.moduleInfo.hasOwnProperty(s)&&(t=e.moduleInfo[s],t.type&&t.type===u&&e.isCSSLoaded(t.name)&&(e.loaded[s]=!0));for(s in w)w.hasOwnProperty(s)&&(t=w[s],t.details&&(n=e.moduleInfo[t.name],r=t.details.requires,i=n&&n.requires,n?!n._inspected&&r&&i.length!==r.length&&delete n.expanded:n=e.addModule(t.details,s),n._inspected=!0))},_requires:function(e,t){var n,r,i,s,o=this.moduleInfo,a=o[e],f=o[t];if(!a||!f)return!1;r=a.expanded_map,i=a.after_map;if(i&&t in i)return!0;i=f.after_map;if(i&&e in i)return!1;s=o[t]&&o[t].supersedes;if(s)for(n=0;n-1&&(k=n);if(C&&(C[c]||k&&C[k])){L=c,C[k]&&(L=k);for(n=0;n-1},getModule:function(t){if(!t)return null;var n,r,i,s=this.moduleInfo[t],o=this.patterns;if(!s||s&&s.ext)for(i in o)if(o.hasOwnProperty(i)){n=o[i],n.test||(n.test=this._patternTest);if(n.test(t,i)){r=n;break}}return s?r&&s&&r.configFn&&!s.configFn&&(s.configFn=r.configFn,s.configFn(s)):r&&(n.action?n.action.call(this,t,i):(s=this.addModule(e.merge(r),t),r.configFn&&(s.configFn=r.configFn),s.temp=!0)),s},_rollup:function(){},_reduce:function(e){e=e||this.required;var t,n,r,i,s=this.loadType,o=this.ignore?v.hash(this.ignore):!1;for(t in e)if(e.hasOwnProperty(t)){i=this.getModule(t),((this.loaded[t]||w[t])&&!this.forceMap[t]&&!this.ignoreRegistered||s&&i&&i.type!==s)&&delete e[t],o&&o[t]&&delete e[t],r=i&&i.supersedes;if(r)for(n=0;n0&&(m.running=!0,m.next()())},insert:function(t,n,r){var i=this,s=e.merge(this);delete s.require,delete s.dirty,m.add(function(){i._insert(s,t,n,r)}),this._continue()},loadNext:function(){return},_filter:function(e,t,n){var r=this.filter,i=t&&t in this.filters,s=i&&this.filters[t],o=n||(this.moduleInfo[t]?this.moduleInfo[t].group:null);return o&&this.groups[o]&&this.groups[o].filter&&(s=this.groups[o].filter,i=!0),e&&(i&&(r=b.isString(s)?this.FILTER_DEFS[s.toUpperCase()]||null:s),r&&(e=e.replace(new RegExp(r.searchExp,"g"),r.replaceStr))),e},_url:function(e,t,n){return this._filter((n||this.base||"")+e,t)},resolve:function(e,t){var r,s,o,f,c,h,p,d,v,m,g,y,w,E,S=[],x,T,N={},C=this,k,A,O=C.ignoreRegistered?{}:C.inserted,M={js:[],jsMods:[],css:[],cssMods:[]},_=C.loadType||"js",D;(C.skin.overrides||C.skin.defaultSkin!==l||C.ignoreRegistered)&&C._resetModules(),e&&C.calculate(),t=t||C.sorted,D=function(e){if(e){c=e.group&&C.groups[e.group]||n,c.async===!1&&(e.async=c.async),f=e.fullpath?C._filter(e.fullpath,t[s]):C._url(e.path,t[s],c.base||e.base);if(e.attributes||e.async===!1)f={url:f,async:e.async},e.attributes&&(f.attributes=e.attributes);M[e.type].push(f),M[e.type+"Mods"].push(e)}},r=t.length,y=C.comboBase,f=y,m={};for(s=0;sA){S=[];for(t=0;tA&&(o=S.pop(),x=w+S.join(k),M[_].push(C._filter(x,null,N[w].group)),S=[],o&&S.push(o));S.length&&(x=w+S.join(k),M[_].push(C._filter(x,null,N[w].group)))}else M[_].push(C._filter(x,null,N[w].group));M[_+"Mods"]=M[_+"Mods"].concat(g)}}return N=null,M},load:function(e){if(!e)return;var t=this,n=t.resolve(!0);t.data=n,t.onEnd=function(){e.apply(t.context||t,arguments)},t.insert()}}},"3.7.3",{requires:["get","features"]}),YUI.add("loader-rollup",function(e,t){e.Loader.prototype._rollup=function(){var e,t,n,r,i=this.required,s,o=this.moduleInfo,u,a,f;if(this.dirty||!this.rollups){this.rollups={};for(e in o)o.hasOwnProperty(e)&&(n=this.getModule(e),n&&n.rollup&&(this.rollups[e]=n))}for(;;){u=!1;for(e in this.rollups)if(this.rollups.hasOwnProperty(e)&&!i[e]&&(!this.loaded[e]||this.forceMap[e])){n=this.getModule(e),r=n.supersedes||[],s=!1;if(!n.rollup)continue;a=0;for(t=0;t=n.rollup;if(s)break}}s&&(i[e]=!0,u=!0,this.getRequires(n))}if(!u)break}}},"3.7.3",{requires:["loader-base"]}),YUI.add("loader-yui3",function(e,t){YUI.Env[e.version].modules=YUI.Env[e.version].modules||{"align-plugin":{requires:["node-screen","node-pluginhost"]},anim:{use:["anim-base","anim-color","anim-curve","anim-easing","anim-node-plugin","anim-scroll","anim-xy"]},"anim-base":{requires:["base-base","node-style"]},"anim-color":{requires:["anim-base"]},"anim-curve":{requires:["anim-xy"]},"anim-easing":{requires:["anim-base"]},"anim-node-plugin":{requires:["node-pluginhost","anim-base"]},"anim-scroll":{requires:["anim-base"]},"anim-shape":{requires:["anim-base","anim-easing","anim-color","matrix"]},"anim-shape-transform":{use:["anim-shape"]},"anim-xy":{requires:["anim-base","node-screen"]},app:{use:["app-base","app-content","app-transitions","lazy-model-list","model","model-list","model-sync-rest","router","view","view-node-map"]},"app-base":{requires:["classnamemanager","pjax-base","router","view"]},"app-content":{requires:["app-base","pjax-content"]},"app-transitions":{requires:["app-base"]},"app-transitions-css":{type:"css"},"app-transitions-native":{condition:{name:"app-transitions-native",test:function(e){var t=e.config.doc,n=t?t.documentElement:null;return n&&n.style?"MozTransition"in n.style||"WebkitTransition"in n.style||"transition"in n.style:!1},trigger:"app-transitions"},requires:["app-transitions","app-transitions-css","parallel","transition"]},"array-extras":{requires:["yui-base"]},"array-invoke":{requires:["yui-base"]},arraylist:{requires:["yui-base"]},"arraylist-add":{requires:["arraylist"]},"arraylist-filter":{requires:["arraylist"]},arraysort:{requires:["yui-base"]},"async-queue":{requires:["event-custom"]},attribute:{use:["attribute-base","attribute-complex"]},"attribute-base":{requires:["attribute-core","attribute-events","attribute-extras"]},"attribute-complex":{requires:["attribute-base"]},"attribute-core":{requires:["oop"]},"attribute-events":{requires:["event-custom"]},"attribute-extras":{requires:["oop"]},autocomplete:{use:["autocomplete-base","autocomplete-sources","autocomplete-list","autocomplete-plugin"]},"autocomplete-base":{optional:["autocomplete-sources"],requires:["array-extras","base-build","escape","event-valuechange","node-base"]},"autocomplete-filters":{requires:["array-extras","text-wordbreak"]},"autocomplete-filters-accentfold":{requires:["array-extras","text-accentfold","text-wordbreak"]},"autocomplete-highlighters":{requires:["array-extras","highlight-base"]},"autocomplete-highlighters-accentfold":{requires:["array-extras","highlight-accentfold"]},"autocomplete-list":{after:["autocomplete-sources"],lang:["en"],requires:["autocomplete-base","event-resize","node-screen","selector-css3","shim-plugin","widget","widget-position","widget-position-align"],skinnable:!0},"autocomplete-list-keys":{condition:{name:"autocomplete-list-keys",test:function(e){return!e.UA.ios&&!e.UA.android},trigger:"autocomplete-list"},requires:["autocomplete-list","base-build"]},"autocomplete-plugin":{requires:["autocomplete-list","node-pluginhost"]},"autocomplete-sources":{optional:["io-base","json-parse","jsonp","yql"],requires:["autocomplete-base"]},base:{use:["base-base","base-pluginhost","base-build"]},"base-base":{after:["attribute-complex"],requires:["base-core","attribute-base"]},"base-build":{requires:["base-base"]},"base-core":{requires:["attribute-core"]},"base-pluginhost":{requires:["base-base","pluginhost"]},button:{requires:["button-core","cssbutton","widget"]},"button-core":{requires:["attribute-core","classnamemanager","node-base"]},"button-group":{requires:["button-plugin","cssbutton","widget"]},"button-plugin":{requires:["button-core","cssbutton","node-pluginhost"]},cache:{use:["cache-base","cache-offline","cache-plugin"]},"cache-base":{requires:["base"]},"cache-offline":{requires:["cache-base","json"]},"cache-plugin":{requires:["plugin","cache-base"]},calendar:{lang:["de","en","fr","ja","nb-NO","pt-BR","ru","zh-HANT-TW"],requires:["calendar-base","calendarnavigator"],skinnable:!0},"calendar-base":{lang:["de","en","fr","ja","nb-NO","pt-BR","ru","zh-HANT-TW"],requires:["widget","substitute","datatype-date","datatype-date-math","cssgrids"],skinnable:!0},calendarnavigator:{requires:["plugin","classnamemanager","datatype-date","node","substitute"],skinnable:!0},charts:{requires:["charts-base"]},"charts-base":{requires:["dom","datatype-number","datatype-date","event-custom","event-mouseenter","event-touch","widget","widget-position","widget-stack","graphics"]},"charts-legend":{requires:["charts-base"]},classnamemanager:{requires:["yui-base"]},"clickable-rail":{requires:["slider-base"]},collection:{use:["array-extras","arraylist","arraylist-add","arraylist-filter","array-invoke"]},console:{lang:["en","es","ja"],requires:["yui-log","widget"],skinnable:!0},"console-filters":{requires:["plugin","console"],skinnable:!0},controller:{use:["router"]},cookie:{requires:["yui-base"]},"createlink-base":{requires:["editor-base"]},cssbase:{after:["cssreset","cssfonts","cssgrids","cssreset-context","cssfonts-context","cssgrids-context"],type:"css"},"cssbase-context":{after:["cssreset","cssfonts","cssgrids","cssreset-context","cssfonts-context","cssgrids-context"],type:"css"},cssbutton:{type:"css"},cssfonts:{type:"css"},"cssfonts-context":{type:"css"},cssgrids:{optional:["cssreset","cssfonts"],type:"css"},"cssgrids-base":{optional:["cssreset","cssfonts"],type:"css"},"cssgrids-units":{optional:["cssreset","cssfonts"],requires:["cssgrids-base"],type:"css"},cssreset:{type:"css"},"cssreset-context":{type:"css"},dataschema:{use:["dataschema-base","dataschema-json","dataschema-xml","dataschema-array","dataschema-text"]},"dataschema-array":{requires:["dataschema-base"]},"dataschema-base":{requires:["base"]},"dataschema-json":{requires:["dataschema-base","json"]},"dataschema-text":{requires:["dataschema-base"]},"dataschema-xml":{requires:["dataschema-base"]},datasource:{use:["datasource-local","datasource-io","datasource-get","datasource-function","datasource-cache","datasource-jsonschema","datasource-xmlschema","datasource-arrayschema","datasource-textschema","datasource-polling"]},"datasource-arrayschema":{requires:["datasource-local","plugin","dataschema-array"]},"datasource-cache":{requires:["datasource-local","plugin","cache-base"]},"datasource-function":{requires:["datasource-local"]},"datasource-get":{requires:["datasource-local","get"]},"datasource-io":{requires:["datasource-local","io-base"]},"datasource-jsonschema":{requires:["datasource-local","plugin","dataschema-json"]},"datasource-local":{requires:["base"]},"datasource-polling":{requires:["datasource-local"]},"datasource-textschema":{requires:["datasource-local","plugin","dataschema-text"]},"datasource-xmlschema":{requires:["datasource-local","plugin","datatype-xml","dataschema-xml"]},datatable:{use:["datatable-core","datatable-table","datatable-head","datatable-body","datatable-base","datatable-column-widths","datatable-message","datatable-mutable","datatable-sort","datatable-datasource"]},"datatable-base":{requires:["datatable-core","datatable-table","datatable-head","datatable-body","base-build","widget"],skinnable:!0},"datatable-base-deprecated":{requires:["recordset-base","widget","substitute","event-mouseenter"],skinnable:!0},"datatable-body":{requires:["datatable-core","view","classnamemanager"]},"datatable-column-widths":{requires:["datatable-base"]},"datatable-core":{requires:["escape","model-list","node-event-delegate"]},"datatable-datasource":{requires:["datatable-base","plugin","datasource-local"]},"datatable-datasource-deprecated":{requires:["datatable-base-deprecated","plugin","datasource-local"]},"datatable-deprecated":{use:["datatable-base-deprecated","datatable-datasource-deprecated","datatable-sort-deprecated","datatable-scroll-deprecated"]},"datatable-head":{requires:["datatable-core","view","classnamemanager"]},"datatable-message":{lang:["en"],requires:["datatable-base"],skinnable:!0},"datatable-mutable":{requires:["datatable-base"]},"datatable-scroll":{requires:["datatable-base","datatable-column-widths","dom-screen"],skinnable:!0},"datatable-scroll-deprecated":{requires:["datatable-base-deprecated","plugin"]},"datatable-sort":{lang:["en"],requires:["datatable-base"],skinnable:!0},"datatable-sort-deprecated":{lang:["en"],requires:["datatable-base-deprecated","plugin","recordset-sort"]},"datatable-table":{requires:["datatable-core","datatable-head","datatable-body","view","classnamemanager"]},datatype:{use:["datatype-date","datatype-number","datatype-xml"]},"datatype-date":{use:["datatype-date-parse","datatype-date-format","datatype-date-math"]},"datatype-date-format":{lang:["ar","ar-JO","ca","ca-ES","da","da-DK","de","de-AT","de-DE","el","el-GR","en","en-AU","en-CA","en-GB","en-IE","en-IN","en-JO","en-MY","en-NZ","en-PH","en-SG","en-US","es","es-AR","es-BO","es-CL","es-CO","es-EC","es-ES","es-MX","es-PE","es-PY","es-US","es-UY","es-VE","fi","fi-FI","fr","fr-BE","fr-CA","fr-FR","hi","hi-IN","id","id-ID","it","it-IT","ja","ja-JP","ko","ko-KR","ms","ms-MY","nb","nb-NO","nl","nl-BE","nl-NL","pl","pl-PL","pt","pt-BR","ro","ro-RO","ru","ru-RU","sv","sv-SE","th","th-TH","tr","tr-TR","vi","vi-VN","zh-Hans","zh-Hans-CN","zh-Hant","zh-Hant-HK","zh-Hant-TW"]},"datatype-date-math":{requires:["yui-base"]},"datatype-date-parse":{},"datatype-number":{use:["datatype-number-parse","datatype-number-format"]},"datatype-number-format":{},"datatype-number-parse":{},"datatype-xml":{use:["datatype-xml-parse","datatype-xml-format"]},"datatype-xml-format":{},"datatype-xml-parse":{},dd:{use:["dd-ddm-base","dd-ddm","dd-ddm-drop","dd-drag","dd-proxy","dd-constrain","dd-drop","dd-scroll","dd-delegate"]},"dd-constrain":{requires:["dd-drag"]},"dd-ddm":{requires:["dd-ddm-base","event-resize"]},"dd-ddm-base":{requires:["node","base","yui-throttle","classnamemanager"]},"dd-ddm-drop":{requires:["dd-ddm"]},"dd-delegate":{requires:["dd-drag","dd-drop-plugin","event-mouseenter"]},"dd-drag":{requires:["dd-ddm-base"]},"dd-drop":{requires:["dd-drag","dd-ddm-drop"]},"dd-drop-plugin":{requires:["dd-drop"]},"dd-gestures":{condition:{name:"dd-gestures",trigger:"dd-drag",ua:"touchEnabled"},requires:["dd-drag","event-synthetic","event-gestures"]},"dd-plugin":{optional:["dd-constrain","dd-proxy"],requires:["dd-drag"]},"dd-proxy":{requires:["dd-drag"]},"dd-scroll":{requires:["dd-drag"]},dial:{lang:["en","es"],requires:["widget","dd-drag","event-mouseenter","event-move","event-key","transition","intl"],skinnable:!0},dom:{use:["dom-base","dom-screen","dom-style","selector-native","selector"]},"dom-base":{requires:["dom-core"]},"dom-core":{requires:["oop","features"]},"dom-deprecated":{requires:["dom-base"]},"dom-screen":{requires:["dom-base","dom-style"]},"dom-style":{requires:["dom-base"]},"dom-style-ie":{condition:{name:"dom-style-ie",test:function(e){var t=e.Features.test,n=e.Features.add,r=e.config.win,i=e.config.doc,s="documentElement",o=!1;return n("style","computedStyle",{test:function(){return r&&"getComputedStyle"in r}}),n("style","opacity",{test:function(){return i&&"opacity"in i[s].style}}),o=!t("style","opacity")&&!t("style","computedStyle"),o},trigger:"dom-style"},requires:["dom-style"]},dump:{requires:["yui-base"]},editor:{use:["frame","editor-selection","exec-command","editor-base","editor-para","editor-br","editor-bidi","editor-tab","createlink-base"]},"editor-base":{requires:["base","frame","node","exec-command","editor-selection"]},"editor-bidi":{requires:["editor-base"]},"editor-br":{requires:["editor-base"]},"editor-lists":{requires:["editor-base"]},"editor-para":{requires:["editor-para-base"]},"editor-para-base":{requires:["editor-base"]},"editor-para-ie":{condition:{name:"editor-para-ie",trigger:"editor-para",ua:"ie",when:"instead"},requires:["editor-para-base"]},"editor-selection":{requires:["node"]},"editor-tab":{requires:["editor-base"]},escape:{requires:["yui-base"]},event:{after:["node-base"],use:["event-base","event-delegate","event-synthetic","event-mousewheel","event-mouseenter","event-key","event-focus","event-resize","event-hover","event-outside","event-touch","event-move","event-flick","event-valuechange","event-tap"]},"event-base":{after:["node-base"],requires:["event-custom-base"]},"event-base-ie":{after:["event-base"],condition:{name:"event-base-ie",test:function(e){var t=e.config.doc&&e.config.doc.implementation;return t&&!t.hasFeature("Events","2.0")},trigger:"node-base"},requires:["node-base"]},"event-contextmenu":{requires:["event-synthetic","dom-screen"]},"event-custom":{use:["event-custom-base","event-custom-complex"]},"event-custom-base":{requires:["oop"]},"event-custom-complex":{requires:["event-custom-base"]},"event-delegate":{requires:["node-base"]},"event-flick":{requires:["node-base","event-touch","event-synthetic"]},"event-focus":{requires:["event-synthetic"]},"event-gestures":{use:["event-flick","event-move"]},"event-hover":{requires:["event-mouseenter"]},"event-key":{requires:["event-synthetic"]},"event-mouseenter":{requires:["event-synthetic"]},"event-mousewheel":{requires:["node-base"]},"event-move":{requires:["node-base","event-touch","event-synthetic"]},"event-outside":{requires:["event-synthetic"]},"event-resize":{requires:["node-base","event-synthetic"]},"event-simulate":{requires:["event-base"]},"event-synthetic":{requires:["node-base","event-custom-complex"]},"event-tap":{requires:["node-base","event-base","event-touch","event-synthetic"]},"event-touch":{requires:["node-base"]},"event-valuechange":{requires:["event-focus","event-synthetic"]},"exec-command":{requires:["frame"]},features:{requires:["yui-base"]},file:{requires:["file-flash","file-html5"]},"file-flash":{requires:["base"]},"file-html5":{requires:["base"]},frame:{requires:["base","node","selector-css3","yui-throttle"]},"gesture-simulate":{requires:["async-queue","event-simulate","node-screen"]},get:{requires:["yui-base"]},graphics:{requires:["node","event-custom","pluginhost","matrix","classnamemanager"]},"graphics-canvas":{condition:{name:"graphics-canvas",test:function(e){var t=e.config.doc,n=e.config.defaultGraphicEngine&&e.config.defaultGraphicEngine=="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return(!i||n)&&r&&r.getContext&&r.getContext("2d")},trigger:"graphics"},requires:["graphics"]},"graphics-canvas-default":{condition:{name:"graphics-canvas-default",test:function(e){var t=e.config.doc,n=e.config.defaultGraphicEngine&&e.config.defaultGraphicEngine=="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return(!i||n)&&r&&r.getContext&&r.getContext("2d")},trigger:"graphics"}},"graphics-svg":{condition:{name:"graphics-svg",test:function(e){var t=e.config.doc,n=!e.config.defaultGraphicEngine||e.config.defaultGraphicEngine!="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return i&&(n||!r)},trigger:"graphics"},requires:["graphics"]},"graphics-svg-default":{condition:{name:"graphics-svg-default",test:function(e){var t=e.config.doc,n=!e.config.defaultGraphicEngine||e.config.defaultGraphicEngine!="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return i&&(n||!r)},trigger:"graphics"}},"graphics-vml":{condition:{name:"graphics-vml",test:function(e){var t=e.config.doc,n=t&&t.createElement("canvas");return t&&!t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")&&(!n||!n.getContext||!n.getContext("2d"))},trigger:"graphics"},requires:["graphics"]},"graphics-vml-default":{condition:{name:"graphics-vml-default",test:function(e){var t=e.config.doc,n=t&&t.createElement("canvas");return t&&!t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")&&(!n||!n.getContext||!n.getContext("2d"))},trigger:"graphics"}},handlebars:{use:["handlebars-compiler"]},"handlebars-base":{requires:["escape"]},"handlebars-compiler":{requires:["handlebars-base"]},highlight:{use:["highlight-base","highlight-accentfold"]},"highlight-accentfold":{requires:["highlight-base","text-accentfold"]},"highlight-base":{requires:["array-extras","classnamemanager","escape","text-wordbreak"]},history:{use:["history-base","history-hash","history-hash-ie","history-html5"]},"history-base":{requires:["event-custom-complex"]},"history-hash":{after:["history-html5"],requires:["event-synthetic","history-base","yui-later"]},"history-hash-ie":{condition:{name:"history-hash-ie",test:function(e){var t=e.config.doc&&e.config.doc.documentMode;return e.UA.ie&&(!("onhashchange"in e.config.win)||!t||t<8)},trigger:"history-hash"},requires:["history-hash","node-base"]},"history-html5":{optional:["json"],requires:["event-base","history-base","node-base"]},imageloader:{requires:["base-base","node-style","node-screen"]},intl:{requires:["intl-base","event-custom"]},"intl-base":{requires:["yui-base"]},io:{use:["io-base","io-xdr","io-form","io-upload-iframe","io-queue"]},"io-base":{requires:["event-custom-base","querystring-stringify-simple"]},"io-form":{requires:["io-base","node-base"]},"io-nodejs":{condition:{name:"io-nodejs",trigger:"io-base",ua:"nodejs"},requires:["io-base"]},"io-queue":{requires:["io-base","queue-promote"]},"io-upload-iframe":{requires:["io-base","node-base"]},"io-xdr":{requires:["io-base","datatype-xml-parse"]},json:{use:["json-parse","json-stringify"]},"json-parse":{requires:["yui-base"]},"json-stringify":{requires:["yui-base"]},jsonp:{requires:["get","oop"]},"jsonp-url":{requires:["jsonp"]},"lazy-model-list":{requires:["model-list"]},loader:{use:["loader-base","loader-rollup","loader-yui3"]},"loader-base":{requires:["get","features"]},"loader-rollup":{requires:["loader-base"]},"loader-yui3":{requires:["loader-base"]},matrix:{requires:["yui-base"]},model:{requires:["base-build","escape","json-parse"]},"model-list":{requires:["array-extras","array-invoke","arraylist","base-build","escape","json-parse","model"]},"model-sync-rest":{requires:["model","io-base","json-stringify"]},node:{use:["node-base","node-event-delegate","node-pluginhost","node-screen","node-style"]},"node-base":{requires:["event-base","node-core","dom-base"]},"node-core":{requires:["dom-core","selector"]},"node-deprecated":{requires:["node-base"]},"node-event-delegate":{requires:["node-base","event-delegate"]},"node-event-html5":{requires:["node-base"]},"node-event-simulate":{requires:["node-base","event-simulate","gesture-simulate"]},"node-flick":{requires:["classnamemanager","transition","event-flick","plugin"],skinnable:!0},"node-focusmanager":{requires:["attribute","node","plugin","node-event-simulate","event-key","event-focus"]},"node-load":{requires:["node-base","io-base"]},"node-menunav":{requires:["node","classnamemanager","plugin","node-focusmanager"],skinnable:!0},"node-pluginhost":{requires:["node-base","pluginhost"]},"node-screen":{requires:["dom-screen","node-base"]},"node-scroll-info":{requires:["base-build","dom-screen","event-resize","node-pluginhost","plugin"]},"node-style":{requires:["dom-style","node-base"]},oop:{requires:["yui-base"]},overlay:{requires:["widget","widget-stdmod","widget-position","widget-position-align","widget-stack","widget-position-constrain"],skinnable:!0},panel:{requires:["widget","widget-autohide","widget-buttons","widget-modality","widget-position","widget-position-align","widget-position-constrain","widget-stack","widget-stdmod"],skinnable:!0},parallel:{requires:["yui-base"]},pjax:{requires:["pjax-base","pjax-content"]},"pjax-base":{requires:["classnamemanager","node-event-delegate","router"]},"pjax-content":{requires:["io-base","node-base","router"]},"pjax-plugin":{requires:["node-pluginhost","pjax","plugin"]},plugin:{requires:["base-base"]},pluginhost:{use:["pluginhost-base","pluginhost-config"]},"pluginhost-base":{requires:["yui-base"]},"pluginhost-config":{requires:["pluginhost-base"]},profiler:{requires:["yui-base"]},querystring:{use:["querystring-parse","querystring-stringify"]},"querystring-parse":{requires:["yui-base","array-extras"]},"querystring-parse-simple":{requires:["yui-base"]},"querystring-stringify":{requires:["yui-base"]},"querystring-stringify-simple":{requires:["yui-base"]},"queue-promote":{requires:["yui-base"]},"range-slider":{requires:["slider-base","slider-value-range","clickable-rail"]},recordset:{use:["recordset-base","recordset-sort","recordset-filter","recordset-indexer"]},"recordset-base":{requires:["base","arraylist"]},"recordset-filter":{requires:["recordset-base","array-extras","plugin"]},"recordset-indexer":{requires:["recordset-base","plugin"]},"recordset-sort":{requires:["arraysort","recordset-base","plugin"]},resize:{use:["resize-base","resize-proxy","resize-constrain"]},"resize-base":{requires:["base","widget","event","oop","dd-drag","dd-delegate","dd-drop"],skinnable:!0},"resize-constrain":{requires:["plugin","resize-base"]},"resize-plugin":{optional:["resize-constrain"],requires:["resize-base","plugin"]},"resize-proxy":{requires:["plugin","resize-base"]},router:{optional:["querystring-parse"],requires:["array-extras","base-build","history"]},scrollview:{requires:["scrollview-base","scrollview-scrollbars"]},"scrollview-base":{requires:["widget","event-gestures","event-mousewheel","transition"],skinnable:!0},"scrollview-base-ie":{condition:{name:"scrollview-base-ie",trigger:"scrollview-base",ua:"ie"},requires:["scrollview-base"]},"scrollview-list":{requires:["plugin","classnamemanager"],skinnable:!0},"scrollview-paginator":{requires:["plugin","classnamemanager"]},"scrollview-scrollbars":{requires:["classnamemanager","transition","plugin"],skinnable:!0},selector:{requires:["selector-native"]},"selector-css2":{condition:{name:"selector-css2",test:function(e){var t=e.config.doc,n=t&&!("querySelectorAll"in t);return n},trigger:"selector"},requires:["selector-native"]},"selector-css3":{requires:["selector-native","selector-css2"]},"selector-native":{requires:["dom-base"]},"shim-plugin":{requires:["node-style","node-pluginhost"]},slider:{use:["slider-base","slider-value-range","clickable-rail","range-slider"]},"slider-base":{requires:["widget","dd-constrain","event-key"],skinnable:!0},"slider-value-range":{requires:["slider-base"]},sortable:{requires:["dd-delegate","dd-drop-plugin","dd-proxy"]},"sortable-scroll":{requires:["dd-scroll","sortable"]},stylesheet:{requires:["yui-base"]},substitute:{optional:["dump"],requires:["yui-base"]},swf:{requires:["event-custom","node","swfdetect","escape"]},swfdetect:{requires:["yui-base"]},tabview:{requires:["widget","widget-parent","widget-child","tabview-base","node-pluginhost","node-focusmanager"],skinnable:!0},"tabview-base":{requires:["node-event-delegate","classnamemanager","skin-sam-tabview"]},"tabview-plugin":{requires:["tabview-base"]},test:{requires:["event-simulate","event-custom","json-stringify"]},"test-console":{requires:["console-filters","test","array-extras"],skinnable:!0},text:{use:["text-accentfold","text-wordbreak"]},"text-accentfold":{requires:["array-extras","text-data-accentfold"]},"text-data-accentfold":{requires:["yui-base"]},"text-data-wordbreak":{requires:["yui-base"]},"text-wordbreak":{requires:["array-extras","text-data-wordbreak"]},transition:{requires:["node-style"]},"transition-timer":{condition:{name:"transition-timer",test:function(e){var t=e.config.doc,n=t?t.documentElement:null,r=!0;return n&&n.style&&(r=!("MozTransition"in n.style||"WebkitTransition"in n.style||"transition"in n.style)),r},trigger:"transition"},requires:["transition"]},uploader:{requires:["uploader-html5","uploader-flash"]},"uploader-deprecated":{requires:["event-custom","node","base","swf"]},"uploader-flash":{requires:["swf","widget","substitute","base","cssbutton","node","event-custom","file-flash","uploader-queue"]},"uploader-html5":{requires:["widget","node-event-simulate","substitute","file-html5","uploader-queue"]},"uploader-queue":{requires:["base"]},view:{requires:["base-build","node-event-delegate"]},"view-node-map":{requires:["view"]},widget:{use:["widget-base","widget-htmlparser","widget-skin","widget-uievents"]},"widget-anim":{requires:["anim-base","plugin","widget"]},"widget-autohide":{requires:["base-build","event-key","event-outside","widget"]},"widget-base":{requires:["attribute","base-base","base-pluginhost","classnamemanager","event-focus","node-base","node-style"],skinnable:!0},"widget-base-ie":{condition:{name:"widget-base-ie",trigger:"widget-base",ua:"ie"},requires:["widget-base"]},"widget-buttons":{requires:["button-plugin","cssbutton","widget-stdmod"]},"widget-child":{requires:["base-build","widget"]},"widget-htmlparser":{requires:["widget-base"]},"widget-locale":{requires:["widget-base"]},"widget-modality":{requires:["base-build","event-outside","widget"],skinnable:!0},"widget-parent":{requires:["arraylist","base-build","widget"]},"widget-position":{requires:["base-build","node-screen","widget"]},"widget-position-align":{requires:["widget-position"]},"widget-position-constrain":{requires:["widget-position"]},"widget-skin":{requires:["widget-base"]},"widget-stack":{requires:["base-build","widget"],skinnable:!0},"widget-stdmod":{requires:["base-build","widget"]},"widget-uievents":{requires:["node-event-delegate","widget-base"]},yql:{requires:["jsonp","jsonp-url"]},"yql-nodejs":{condition:{name:"yql-nodejs",trigger:"yql",ua:"nodejs",when:"after"}},"yql-winjs":{condition:{name:"yql-winjs",trigger:"yql",ua:"winjs",when:"after"}},yui:{},"yui-base":{},"yui-later":{requires:["yui-base"]},"yui-log":{requires:["yui-base"]},"yui-throttle":{requires:["yui-base"]}},YUI.Env[e.version].md5="a28e022ad022130f7a4fb4ac77a2f1df"},"3.7.3",{requires:["loader-base"]}),YUI.add("loader",function(e,t){},"3.7.3",{use:["loader-base","loader-rollup","loader-yui3"]}); diff --git a/lib/yuilib/3.7.3/build/pjax-content/pjax-content-min.js b/lib/yuilib/3.7.3/build/pjax-content/pjax-content-min.js deleted file mode 100644 index 765a8c0d15f..00000000000 --- a/lib/yuilib/3.7.3/build/pjax-content/pjax-content-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("pjax-content",function(e,t){function n(){}n.prototype={getContent:function(t){var n={},r=this.get("contentSelector"),i=e.Node.create(t||""),s=this.get("titleSelector"),o;return r?n.node=i.all(r).toFrag():n.node=i,s&&(o=i.one(s),o&&(n.title=o.get("text"))),n},loadContent:function(t,n,r){var i=t.url;this._request&&this._request.abort(),this.get("addPjaxParam")&&(i=i.replace(/([^#]*)(#.*)?$/,function(e,t,n){return t+=(t.indexOf("?")>-1?"&":"?")+"pjax=1",t+(n||"")})),this._request=e.io(i,{arguments:{route:{req:t,res:n,next:r},url:i},context:this,headers:{"X-PJAX":"true"},timeout:this.get("timeout"),on:{complete:this._onPjaxIOComplete,end:this._onPjaxIOEnd}})},_onPjaxIOComplete:function(e,t,n){var r=this.getContent(t.responseText),i=n.route,s=i.req,o=i.res;s.ioURL=n.url,o.content=r,o.ioResponse=t,i.next()},_onPjaxIOEnd:function(){this._request=null}},n.ATTRS={addPjaxParam:{value:!0},contentSelector:{value:null},titleSelector:{value:"title"},timeout:{value:3e4}},e.PjaxContent=n},"3.7.3",{requires:["io-base","node-base","router"]}); diff --git a/lib/yuilib/3.7.3/build/resize-base/assets/skins/night/resize-base.css b/lib/yuilib/3.7.3/build/resize-base/assets/skins/night/resize-base.css deleted file mode 100644 index 1a0ada2e855..00000000000 --- a/lib/yuilib/3.7.3/build/resize-base/assets/skins/night/resize-base.css +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -.yui3-resize,.yui3-resize-wrapper{z-index:0;zoom:1}.yui3-resize-handle{position:absolute;display:block;z-index:100;zoom:1}.yui3-resize-proxy{position:absolute;border:1px dashed #000;position:absolute;z-index:10000}.yui3-resize-hidden-handles .yui3-resize-handle{opacity:0;filter:alpha(opacity=0)}.yui3-resize-handle-t,.yui3-resize-handle-b{width:100%;left:0;height:6px}.yui3-resize-handle-l,.yui3-resize-handle-r{height:100%;top:0;width:6px}.yui3-resize-handle-t{cursor:n-resize;top:0}.yui3-resize-handle-b{cursor:s-resize;bottom:0}.yui3-resize-handle-l{cursor:w-resize;left:0}.yui3-resize-handle-r{cursor:e-resize;right:0}.yui3-resize-handle-inner{position:absolute;zoom:1}@media only screen and (min-device-width :320px) and (max-device-width:480px){.yui3-resize-handle-inner:after{content:"";width:40px;height:40px;position:absolute}.yui3-resize-handle-inner-r,.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-tr,.yui3-resize-handle-inner-br,.yui3-resize-handle-inner-tl,.yui3-resize-handle-inner-bl{overflow:visible!important}.yui3-resize-handle-inner-r:after{top:-12px;right:0}.yui3-resize-handle-inner-l:after{top:-12px;left:0}.yui3-resize-handle-inner-t:after{top:0;left:-12px}.yui3-resize-handle-inner-b:after{bottom:0;left:-12px}.yui3-resize-handle-inner-tr:after{top:0;right:0}.yui3-resize-handle-inner-br:after{bottom:0;right:0}.yui3-resize-handle-inner-tl:after{top:0;left:0}.yui3-resize-handle-inner-bl:after{bottom:0;left:0}}@media only screen and (min-device-width :768px) and (max-device-width:1024px){.yui3-resize-handle-inner:after{content:"";width:30px;height:30px;position:absolute}.yui3-resize-handle-inner-r,.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-tr,.yui3-resize-handle-inner-br,.yui3-resize-handle-inner-tl,.yui3-resize-handle-inner-bl{overflow:visible!important}.yui3-resize-handle-inner-r:after{top:-6px;right:0}.yui3-resize-handle-inner-l:after{top:-6px;left:0}.yui3-resize-handle-inner-t:after{top:0;left:-6px}.yui3-resize-handle-inner-b:after{bottom:0;left:-6px}.yui3-resize-handle-inner-tr:after{top:0;right:0}.yui3-resize-handle-inner-br:after{bottom:0;right:0}.yui3-resize-handle-inner-tl:after{top:0;left:0}.yui3-resize-handle-inner-bl:after{bottom:0;left:0}}.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b{margin-left:-8px;left:50%}.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-r{margin-top:-8px;top:50%}.yui3-resize-handle-inner-t{top:-4px}.yui3-resize-handle-inner-b{bottom:-4px}.yui3-resize-handle-inner-l{left:-4px}.yui3-resize-handle-inner-r{right:-4px}.yui3-resize-handle-tr,.yui3-resize-handle-br,.yui3-resize-handle-tl,.yui3-resize-handle-bl{height:15px;width:15px;z-index:200}.yui3-resize-handle-tr{cursor:ne-resize;top:0;right:0}.yui3-resize-handle-tl{cursor:nw-resize;top:0;left:0}.yui3-resize-handle-br{cursor:se-resize;bottom:0;right:0}.yui3-resize-handle-bl{cursor:sw-resize;bottom:0;left:0}.yui3-resize-handle-inner-r,.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-tr,.yui3-resize-handle-inner-br,.yui3-resize-handle-inner-tl,.yui3-resize-handle-inner-bl{background-repeat:no-repeat;background:url(arrows.png) no-repeat 0 0;display:block;height:15px;overflow:hidden;text-indent:-99999em;width:15px}.yui3-resize-handle-inner-br{background-position:-30px 0;bottom:-2px;right:-2px}.yui3-resize-handle-inner-tr{background-position:-58px 0;bottom:0;right:-2px}.yui3-resize-handle-inner-bl{background-position:-75px 0;bottom:-2px;right:-2px}.yui3-resize-handle-inner-tl{background-position:-47px 0;bottom:0;right:-2px}.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-t{background-position:-15px 0}#yui3-css-stamp.skin-night-resize-base{display:none} diff --git a/lib/yuilib/3.7.3/build/resize-base/assets/skins/sam/resize-base.css b/lib/yuilib/3.7.3/build/resize-base/assets/skins/sam/resize-base.css deleted file mode 100644 index e915ab26359..00000000000 --- a/lib/yuilib/3.7.3/build/resize-base/assets/skins/sam/resize-base.css +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -.yui3-resize,.yui3-resize-wrapper{z-index:0;zoom:1}.yui3-resize-handle{position:absolute;display:block;z-index:100;zoom:1}.yui3-resize-proxy{position:absolute;border:1px dashed #000;position:absolute;z-index:10000}.yui3-resize-hidden-handles .yui3-resize-handle{opacity:0;filter:alpha(opacity=0)}.yui3-resize-handle-t,.yui3-resize-handle-b{width:100%;left:0;height:6px}.yui3-resize-handle-l,.yui3-resize-handle-r{height:100%;top:0;width:6px}.yui3-resize-handle-t{cursor:n-resize;top:0}.yui3-resize-handle-b{cursor:s-resize;bottom:0}.yui3-resize-handle-l{cursor:w-resize;left:0}.yui3-resize-handle-r{cursor:e-resize;right:0}.yui3-resize-handle-inner{position:absolute;zoom:1}@media only screen and (min-device-width :320px) and (max-device-width:480px){.yui3-resize-handle-inner:after{content:"";width:40px;height:40px;position:absolute}.yui3-resize-handle-inner-r,.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-tr,.yui3-resize-handle-inner-br,.yui3-resize-handle-inner-tl,.yui3-resize-handle-inner-bl{overflow:visible!important}.yui3-resize-handle-inner-r:after{top:-12px;right:0}.yui3-resize-handle-inner-l:after{top:-12px;left:0}.yui3-resize-handle-inner-t:after{top:0;left:-12px}.yui3-resize-handle-inner-b:after{bottom:0;left:-12px}.yui3-resize-handle-inner-tr:after{top:0;right:0}.yui3-resize-handle-inner-br:after{bottom:0;right:0}.yui3-resize-handle-inner-tl:after{top:0;left:0}.yui3-resize-handle-inner-bl:after{bottom:0;left:0}}@media only screen and (min-device-width :768px) and (max-device-width:1024px){.yui3-resize-handle-inner:after{content:"";width:30px;height:30px;position:absolute}.yui3-resize-handle-inner-r,.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-tr,.yui3-resize-handle-inner-br,.yui3-resize-handle-inner-tl,.yui3-resize-handle-inner-bl{overflow:visible!important}.yui3-resize-handle-inner-r:after{top:-6px;right:0}.yui3-resize-handle-inner-l:after{top:-6px;left:0}.yui3-resize-handle-inner-t:after{top:0;left:-6px}.yui3-resize-handle-inner-b:after{bottom:0;left:-6px}.yui3-resize-handle-inner-tr:after{top:0;right:0}.yui3-resize-handle-inner-br:after{bottom:0;right:0}.yui3-resize-handle-inner-tl:after{top:0;left:0}.yui3-resize-handle-inner-bl:after{bottom:0;left:0}}.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b{margin-left:-8px;left:50%}.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-r{margin-top:-8px;top:50%}.yui3-resize-handle-inner-t{top:-4px}.yui3-resize-handle-inner-b{bottom:-4px}.yui3-resize-handle-inner-l{left:-4px}.yui3-resize-handle-inner-r{right:-4px}.yui3-resize-handle-tr,.yui3-resize-handle-br,.yui3-resize-handle-tl,.yui3-resize-handle-bl{height:15px;width:15px;z-index:200}.yui3-resize-handle-tr{cursor:ne-resize;top:0;right:0}.yui3-resize-handle-tl{cursor:nw-resize;top:0;left:0}.yui3-resize-handle-br{cursor:se-resize;bottom:0;right:0}.yui3-resize-handle-bl{cursor:sw-resize;bottom:0;left:0}.yui3-resize-handle-inner-r,.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-tr,.yui3-resize-handle-inner-br,.yui3-resize-handle-inner-tl,.yui3-resize-handle-inner-bl{background-repeat:no-repeat;background:url(arrows.png) no-repeat 0 0;display:block;height:15px;overflow:hidden;text-indent:-99999em;width:15px}.yui3-resize-handle-inner-br{background-position:-30px 0;bottom:-2px;right:-2px}.yui3-resize-handle-inner-tr{background-position:-58px 0;bottom:0;right:-2px}.yui3-resize-handle-inner-bl{background-position:-75px 0;bottom:-2px;right:-2px}.yui3-resize-handle-inner-tl{background-position:-47px 0;bottom:0;right:-2px}.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-t{background-position:-15px 0}#yui3-css-stamp.skin-sam-resize-base{display:none} diff --git a/lib/yuilib/3.7.3/build/resize-plugin/assets/skins/night/resize-base-skin.css b/lib/yuilib/3.7.3/build/resize-plugin/assets/skins/night/resize-base-skin.css deleted file mode 100644 index e0af10d6b2e..00000000000 --- a/lib/yuilib/3.7.3/build/resize-plugin/assets/skins/night/resize-base-skin.css +++ /dev/null @@ -1,52 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -.yui3-resize-handle-inner-r, -.yui3-resize-handle-inner-l, -.yui3-resize-handle-inner-t, -.yui3-resize-handle-inner-b, -.yui3-resize-handle-inner-tr, -.yui3-resize-handle-inner-br, -.yui3-resize-handle-inner-tl, -.yui3-resize-handle-inner-bl { - background-repeat: no-repeat; - background: url(arrows.png) no-repeat 0 0; - display: block; - height: 15px; - overflow: hidden; - text-indent: -99999em; - width: 15px; -} - -.yui3-resize-handle-inner-br { - background-position: -30px 0; - bottom: -2px; - right: -2px; -} - -.yui3-resize-handle-inner-tr { - background-position: -58px 0; - bottom: 0; - right: -2px; - -} - -.yui3-resize-handle-inner-bl { - background-position: -75px 0; - bottom: -2px; - right: -2px; -} - -.yui3-resize-handle-inner-tl { - background-position: -47px 0; - bottom: 0; - right: -2px; - -} - -.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-t { - background-position: -15px 0; -} diff --git a/lib/yuilib/3.7.3/build/resize-plugin/assets/skins/sam/resize-base-skin.css b/lib/yuilib/3.7.3/build/resize-plugin/assets/skins/sam/resize-base-skin.css deleted file mode 100644 index e0af10d6b2e..00000000000 --- a/lib/yuilib/3.7.3/build/resize-plugin/assets/skins/sam/resize-base-skin.css +++ /dev/null @@ -1,52 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -.yui3-resize-handle-inner-r, -.yui3-resize-handle-inner-l, -.yui3-resize-handle-inner-t, -.yui3-resize-handle-inner-b, -.yui3-resize-handle-inner-tr, -.yui3-resize-handle-inner-br, -.yui3-resize-handle-inner-tl, -.yui3-resize-handle-inner-bl { - background-repeat: no-repeat; - background: url(arrows.png) no-repeat 0 0; - display: block; - height: 15px; - overflow: hidden; - text-indent: -99999em; - width: 15px; -} - -.yui3-resize-handle-inner-br { - background-position: -30px 0; - bottom: -2px; - right: -2px; -} - -.yui3-resize-handle-inner-tr { - background-position: -58px 0; - bottom: 0; - right: -2px; - -} - -.yui3-resize-handle-inner-bl { - background-position: -75px 0; - bottom: -2px; - right: -2px; -} - -.yui3-resize-handle-inner-tl { - background-position: -47px 0; - bottom: 0; - right: -2px; - -} - -.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-t { - background-position: -15px 0; -} diff --git a/lib/yuilib/3.7.3/build/resize-proxy/assets/skins/night/resize-base-skin.css b/lib/yuilib/3.7.3/build/resize-proxy/assets/skins/night/resize-base-skin.css deleted file mode 100644 index e0af10d6b2e..00000000000 --- a/lib/yuilib/3.7.3/build/resize-proxy/assets/skins/night/resize-base-skin.css +++ /dev/null @@ -1,52 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -.yui3-resize-handle-inner-r, -.yui3-resize-handle-inner-l, -.yui3-resize-handle-inner-t, -.yui3-resize-handle-inner-b, -.yui3-resize-handle-inner-tr, -.yui3-resize-handle-inner-br, -.yui3-resize-handle-inner-tl, -.yui3-resize-handle-inner-bl { - background-repeat: no-repeat; - background: url(arrows.png) no-repeat 0 0; - display: block; - height: 15px; - overflow: hidden; - text-indent: -99999em; - width: 15px; -} - -.yui3-resize-handle-inner-br { - background-position: -30px 0; - bottom: -2px; - right: -2px; -} - -.yui3-resize-handle-inner-tr { - background-position: -58px 0; - bottom: 0; - right: -2px; - -} - -.yui3-resize-handle-inner-bl { - background-position: -75px 0; - bottom: -2px; - right: -2px; -} - -.yui3-resize-handle-inner-tl { - background-position: -47px 0; - bottom: 0; - right: -2px; - -} - -.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-t { - background-position: -15px 0; -} diff --git a/lib/yuilib/3.7.3/build/resize-proxy/assets/skins/sam/resize-base-skin.css b/lib/yuilib/3.7.3/build/resize-proxy/assets/skins/sam/resize-base-skin.css deleted file mode 100644 index e0af10d6b2e..00000000000 --- a/lib/yuilib/3.7.3/build/resize-proxy/assets/skins/sam/resize-base-skin.css +++ /dev/null @@ -1,52 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -.yui3-resize-handle-inner-r, -.yui3-resize-handle-inner-l, -.yui3-resize-handle-inner-t, -.yui3-resize-handle-inner-b, -.yui3-resize-handle-inner-tr, -.yui3-resize-handle-inner-br, -.yui3-resize-handle-inner-tl, -.yui3-resize-handle-inner-bl { - background-repeat: no-repeat; - background: url(arrows.png) no-repeat 0 0; - display: block; - height: 15px; - overflow: hidden; - text-indent: -99999em; - width: 15px; -} - -.yui3-resize-handle-inner-br { - background-position: -30px 0; - bottom: -2px; - right: -2px; -} - -.yui3-resize-handle-inner-tr { - background-position: -58px 0; - bottom: 0; - right: -2px; - -} - -.yui3-resize-handle-inner-bl { - background-position: -75px 0; - bottom: -2px; - right: -2px; -} - -.yui3-resize-handle-inner-tl { - background-position: -47px 0; - bottom: 0; - right: -2px; - -} - -.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-t { - background-position: -15px 0; -} diff --git a/lib/yuilib/3.7.3/build/router/router-coverage.js b/lib/yuilib/3.7.3/build/router/router-coverage.js deleted file mode 100644 index 6f5f0e4846e..00000000000 --- a/lib/yuilib/3.7.3/build/router/router-coverage.js +++ /dev/null @@ -1,1743 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -if (typeof _yuitest_coverage == "undefined"){ - _yuitest_coverage = {}; - _yuitest_coverline = function(src, line){ - var coverage = _yuitest_coverage[src]; - if (!coverage.lines[line]){ - coverage.calledLines++; - } - coverage.lines[line]++; - }; - _yuitest_coverfunc = function(src, name, line){ - var coverage = _yuitest_coverage[src], - funcId = name + ":" + line; - if (!coverage.functions[funcId]){ - coverage.calledFunctions++; - } - coverage.functions[funcId]++; - }; -} -_yuitest_coverage["build/router/router.js"] = { - lines: {}, - functions: {}, - coveredLines: 0, - calledLines: 0, - coveredFunctions: 0, - calledFunctions: 0, - path: "build/router/router.js", - code: [] -}; -_yuitest_coverage["build/router/router.js"].code=["YUI.add('router', function (Y, NAME) {","","/**","Provides URL-based routing using HTML5 `pushState()` or the location hash.","","@module app","@submodule router","@since 3.4.0","**/","","var HistoryHash = Y.HistoryHash,"," QS = Y.QueryString,"," YArray = Y.Array,"," YLang = Y.Lang,",""," win = Y.config.win,",""," // Holds all the active router instances. This supports the static"," // `dispatch()` method which causes all routers to dispatch."," instances = [],",""," // We have to queue up pushState calls to avoid race conditions, since the"," // popstate event doesn't actually provide any info on what URL it's"," // associated with."," saveQueue = [],",""," /**"," Fired when the router is ready to begin dispatching to route handlers.",""," You shouldn't need to wait for this event unless you plan to implement some"," kind of custom dispatching logic. It's used internally in order to avoid"," dispatching to an initial route if a browser history change occurs first.",""," @event ready"," @param {Boolean} dispatched `true` if routes have already been dispatched"," (most likely due to a history change)."," @fireOnce"," **/"," EVT_READY = 'ready';","","/**","Provides URL-based routing using HTML5 `pushState()` or the location hash.","","This makes it easy to wire up route handlers for different application states","while providing full back/forward navigation support and bookmarkable, shareable","URLs.","","@class Router","@param {Object} [config] Config properties."," @param {Boolean} [config.html5] Overrides the default capability detection"," and forces this router to use (`true`) or not use (`false`) HTML5"," history."," @param {String} [config.root=''] Root path from which all routes should be"," evaluated."," @param {Array} [config.routes=[]] Array of route definition objects.","@constructor","@extends Base","@since 3.4.0","**/","function Router() {"," Router.superclass.constructor.apply(this, arguments);","}","","Y.Router = Y.extend(Router, Y.Base, {"," // -- Protected Properties -------------------------------------------------",""," /**"," Whether or not `_dispatch()` has been called since this router was"," instantiated.",""," @property _dispatched"," @type Boolean"," @default undefined"," @protected"," **/",""," /**"," Whether or not we're currently in the process of dispatching to routes.",""," @property _dispatching"," @type Boolean"," @default undefined"," @protected"," **/",""," /**"," History event handle for the `history:change` or `hashchange` event"," subscription.",""," @property _historyEvents"," @type EventHandle"," @protected"," **/",""," /**"," Cached copy of the `html5` attribute for internal use.",""," @property _html5"," @type Boolean"," @protected"," **/",""," /**"," Whether or not the `ready` event has fired yet.",""," @property _ready"," @type Boolean"," @default undefined"," @protected"," **/",""," /**"," Regex used to match parameter placeholders in route paths.",""," Subpattern captures:",""," 1. Parameter prefix character. Either a `:` for subpath parameters that"," should only match a single level of a path, or `*` for splat parameters"," that should match any number of path levels.",""," 2. Parameter name, if specified, otherwise it is a wildcard match.",""," @property _regexPathParam"," @type RegExp"," @protected"," **/"," _regexPathParam: /([:*])([\\w\\-]+)?/g,",""," /**"," Regex that matches and captures the query portion of a URL, minus the"," preceding `?` character, and discarding the hash portion of the URL if any.",""," @property _regexUrlQuery"," @type RegExp"," @protected"," **/"," _regexUrlQuery: /\\?([^#]*).*$/,",""," /**"," Regex that matches everything before the path portion of a URL (the origin)."," This will be used to strip this part of the URL from a string when we"," only want the path.",""," @property _regexUrlOrigin"," @type RegExp"," @protected"," **/"," _regexUrlOrigin: /^(?:[^\\/#?:]+:\\/\\/|\\/\\/)[^\\/]*/,",""," // -- Lifecycle Methods ----------------------------------------------------"," initializer: function (config) {"," var self = this;",""," self._html5 = self.get('html5');"," self._routes = [];"," self._url = self._getURL();",""," // Necessary because setters don't run on init."," self._setRoutes(config && config.routes ? config.routes :"," self.get('routes'));",""," // Set up a history instance or hashchange listener."," if (self._html5) {"," self._history = new Y.HistoryHTML5({force: true});"," self._historyEvents ="," Y.after('history:change', self._afterHistoryChange, self);"," } else {"," self._historyEvents ="," Y.on('hashchange', self._afterHistoryChange, win, self);"," }",""," // Fire a `ready` event once we're ready to route. We wait first for all"," // subclass initializers to finish, then for window.onload, and then an"," // additional 20ms to allow the browser to fire a useless initial"," // `popstate` event if it wants to (and Chrome always wants to)."," self.publish(EVT_READY, {"," defaultFn : self._defReadyFn,"," fireOnce : true,"," preventable: false"," });",""," self.once('initializedChange', function () {"," Y.once('load', function () {"," setTimeout(function () {"," self.fire(EVT_READY, {dispatched: !!self._dispatched});"," }, 20);"," });"," });",""," // Store this router in the collection of all active router instances."," instances.push(this);"," },",""," destructor: function () {"," var instanceIndex = YArray.indexOf(instances, this);",""," // Remove this router from the collection of active router instances."," if (instanceIndex > -1) {"," instances.splice(instanceIndex, 1);"," }",""," this._historyEvents && this._historyEvents.detach();"," },",""," // -- Public Methods -------------------------------------------------------",""," /**"," Dispatches to the first route handler that matches the current URL, if any.",""," If `dispatch()` is called before the `ready` event has fired, it will"," automatically wait for the `ready` event before dispatching. Otherwise it"," will dispatch immediately.",""," @method dispatch"," @chainable"," **/"," dispatch: function () {"," this.once(EVT_READY, function () {"," this._ready = true;",""," if (this._html5 && this.upgrade()) {"," return;"," } else {"," this._dispatch(this._getPath(), this._getURL());"," }"," });",""," return this;"," },",""," /**"," Gets the current route path, relative to the `root` (if any).",""," @method getPath"," @return {String} Current route path."," **/"," getPath: function () {"," return this._getPath();"," },",""," /**"," Returns `true` if this router has at least one route that matches the"," specified URL, `false` otherwise.",""," This method enforces the same-origin security constraint on the specified"," `url`; any URL which is not from the same origin as the current URL will"," always return `false`.",""," @method hasRoute"," @param {String} url URL to match."," @return {Boolean} `true` if there's at least one matching route, `false`"," otherwise."," **/"," hasRoute: function (url) {"," var path;",""," if (!this._hasSameOrigin(url)) {"," return false;"," }",""," if (!this._html5) {"," url = this._upgradeURL(url);"," }",""," path = this.removeQuery(this.removeRoot(url));",""," return !!this.match(path).length;"," },",""," /**"," Returns an array of route objects that match the specified URL path.",""," This method is called internally to determine which routes match the current"," path whenever the URL changes. You may override it if you want to customize"," the route matching logic, although this usually shouldn't be necessary.",""," Each returned route object has the following properties:",""," * `callback`: A function or a string representing the name of a function"," this router that should be executed when the route is triggered.",""," * `keys`: An array of strings representing the named parameters defined in"," the route's path specification, if any.",""," * `path`: The route's path specification, which may be either a string or"," a regex.",""," * `regex`: A regular expression version of the route's path specification."," This regex is used to determine whether the route matches a given path.",""," @example"," router.route('/foo', function () {});"," router.match('/foo');"," // => [{callback: ..., keys: [], path: '/foo', regex: ...}]",""," @method match"," @param {String} path URL path to match."," @return {Object[]} Array of route objects that match the specified path."," **/"," match: function (path) {"," return YArray.filter(this._routes, function (route) {"," return path.search(route.regex) > -1;"," });"," },",""," /**"," Removes the `root` URL from the front of _url_ (if it's there) and returns"," the result. The returned path will always have a leading `/`.",""," @method removeRoot"," @param {String} url URL."," @return {String} Rootless path."," **/"," removeRoot: function (url) {"," var root = this.get('root');",""," // Strip out the non-path part of the URL, if any (e.g."," // \"http://foo.com\"), so that we're left with just the path."," url = url.replace(this._regexUrlOrigin, '');",""," if (root && url.indexOf(root) === 0) {"," url = url.substring(root.length);"," }",""," return url.charAt(0) === '/' ? url : '/' + url;"," },",""," /**"," Removes a query string from the end of the _url_ (if one exists) and returns"," the result.",""," @method removeQuery"," @param {String} url URL."," @return {String} Queryless path."," **/"," removeQuery: function (url) {"," return url.replace(/\\?.*$/, '');"," },",""," /**"," Replaces the current browser history entry with a new one, and dispatches to"," the first matching route handler, if any.",""," Behind the scenes, this method uses HTML5 `pushState()` in browsers that"," support it (or the location hash in older browsers and IE) to change the"," URL.",""," The specified URL must share the same origin (i.e., protocol, host, and"," port) as the current page, or an error will occur.",""," @example"," // Starting URL: http://example.com/",""," router.replace('/path/');"," // New URL: http://example.com/path/",""," router.replace('/path?foo=bar');"," // New URL: http://example.com/path?foo=bar",""," router.replace('/');"," // New URL: http://example.com/",""," @method replace"," @param {String} [url] URL to set. This URL needs to be of the same origin as"," the current URL. This can be a URL relative to the router's `root`"," attribute. If no URL is specified, the page's current URL will be used."," @chainable"," @see save()"," **/"," replace: function (url) {"," return this._queue(url, true);"," },",""," /**"," Adds a route handler for the specified URL _path_.",""," The _path_ parameter may be either a string or a regular expression. If it's"," a string, it may contain named parameters: `:param` will match any single"," part of a URL path (not including `/` characters), and `*param` will match"," any number of parts of a URL path (including `/` characters). These named"," parameters will be made available as keys on the `req.params` object that's"," passed to route handlers.",""," If the _path_ parameter is a regex, all pattern matches will be made"," available as numbered keys on `req.params`, starting with `0` for the full"," match, then `1` for the first subpattern match, and so on.",""," Here's a set of sample routes along with URL paths that they match:",""," * Route: `/photos/:tag/:page`"," * URL: `/photos/kittens/1`, params: `{tag: 'kittens', page: '1'}`"," * URL: `/photos/puppies/2`, params: `{tag: 'puppies', page: '2'}`",""," * Route: `/file/*path`"," * URL: `/file/foo/bar/baz.txt`, params: `{path: 'foo/bar/baz.txt'}`"," * URL: `/file/foo`, params: `{path: 'foo'}`",""," **Middleware**: Routes also support an arbitrary number of callback"," functions. This allows you to easily reuse parts of your route-handling code"," with different route. This method is liberal in how it processes the"," specified `callbacks`, you can specify them as separate arguments, or as"," arrays, or both.",""," If multiple route match a given URL, they will be executed in the order they"," were added. The first route that was added will be the first to be executed.",""," **Passing Control**: Invoking the `next()` function within a route callback"," will pass control to the next callback function (if any) or route handler"," (if any). If a value is passed to `next()`, it's assumed to be an error,"," therefore stopping the dispatch chain, unless that value is: `\"route\"`,"," which is special case and dispatching will skip to the next route handler."," This allows middleware to skip any remaining middleware for a particular"," route.",""," @example"," router.route('/photos/:tag/:page', function (req, res, next) {"," });",""," // Using middleware.",""," router.findUser = function (req, res, next) {"," req.user = this.get('users').findById(req.params.user);"," next();"," };",""," router.route('/users/:user', 'findUser', function (req, res, next) {"," // The `findUser` middleware puts the `user` object on the `req`."," });",""," @method route"," @param {String|RegExp} path Path to match. May be a string or a regular"," expression."," @param {Array|Function|String} callbacks* Callback functions to call"," whenever this route is triggered. These can be specified as separate"," arguments, or in arrays, or both. If a callback is specified as a"," string, the named function will be called on this router instance.",""," @param {Object} callbacks.req Request object containing information about"," the request. It contains the following properties.",""," @param {Array|Object} callbacks.req.params Captured parameters matched by"," the route path specification. If a string path was used and contained"," named parameters, then this will be a key/value hash mapping parameter"," names to their matched values. If a regex path was used, this will be"," an array of subpattern matches starting at index 0 for the full match,"," then 1 for the first subpattern match, and so on."," @param {String} callbacks.req.path The current URL path."," @param {Number} callbacks.req.pendingCallbacks Number of remaining"," callbacks the route handler has after this one in the dispatch chain."," @param {Number} callbacks.req.pendingRoutes Number of matching routes"," after this one in the dispatch chain."," @param {Object} callbacks.req.query Query hash representing the URL"," query string, if any. Parameter names are keys, and are mapped to"," parameter values."," @param {String} callbacks.req.url The full URL."," @param {String} callbacks.req.src What initiated the dispatch. In an"," HTML5 browser, when the back/forward buttons are used, this property"," will have a value of \"popstate\".",""," @param {Object} callbacks.res Response object containing methods and"," information that relate to responding to a request. It contains the"," following properties."," @param {Object} callbacks.res.req Reference to the request object.",""," @param {Function} callbacks.next Function to pass control to the next"," callback or the next matching route if no more callbacks (middleware)"," exist for the current route handler. If you don't call this function,"," then no further callbacks or route handlers will be executed, even if"," there are more that match. If you do call this function, then the next"," callback (if any) or matching route handler (if any) will be called."," All of these functions will receive the same `req` and `res` objects"," that were passed to this route (so you can use these objects to pass"," data along to subsequent callbacks and routes)."," @param {String} [callbacks.next.err] Optional error which will stop the"," dispatch chaining for this `req`, unless the value is `\"route\"`, which"," is special cased to jump skip past any callbacks for the current route"," and pass control the next route handler."," @chainable"," **/"," route: function (path, callbacks) {"," callbacks = YArray.flatten(YArray(arguments, 1, true));",""," var keys = [];",""," this._routes.push({"," callbacks: callbacks,"," keys : keys,"," path : path,"," regex : this._getRegex(path, keys),",""," // For back-compat."," callback: callbacks[0]"," });",""," return this;"," },",""," /**"," Saves a new browser history entry and dispatches to the first matching route"," handler, if any.",""," Behind the scenes, this method uses HTML5 `pushState()` in browsers that"," support it (or the location hash in older browsers and IE) to change the"," URL and create a history entry.",""," The specified URL must share the same origin (i.e., protocol, host, and"," port) as the current page, or an error will occur.",""," @example"," // Starting URL: http://example.com/",""," router.save('/path/');"," // New URL: http://example.com/path/",""," router.save('/path?foo=bar');"," // New URL: http://example.com/path?foo=bar",""," router.save('/');"," // New URL: http://example.com/",""," @method save"," @param {String} [url] URL to set. This URL needs to be of the same origin as"," the current URL. This can be a URL relative to the router's `root`"," attribute. If no URL is specified, the page's current URL will be used."," @chainable"," @see replace()"," **/"," save: function (url) {"," return this._queue(url);"," },",""," /**"," Upgrades a hash-based URL to an HTML5 URL if necessary. In non-HTML5"," browsers, this method is a noop.",""," @method upgrade"," @return {Boolean} `true` if the URL was upgraded, `false` otherwise."," **/"," upgrade: function () {"," if (!this._html5) {"," return false;"," }",""," // Get the resolve hash path."," var hashPath = this._getHashPath();",""," if (hashPath) {"," // This is an HTML5 browser and we have a hash-based path in the"," // URL, so we need to upgrade the URL to a non-hash URL. This"," // will trigger a `history:change` event, which will in turn"," // trigger a dispatch."," this.once(EVT_READY, function () {"," this.replace(hashPath);"," });",""," return true;"," }",""," return false;"," },",""," // -- Protected Methods ----------------------------------------------------",""," /**"," Wrapper around `decodeURIComponent` that also converts `+` chars into"," spaces.",""," @method _decode"," @param {String} string String to decode."," @return {String} Decoded string."," @protected"," **/"," _decode: function (string) {"," return decodeURIComponent(string.replace(/\\+/g, ' '));"," },",""," /**"," Shifts the topmost `_save()` call off the queue and executes it. Does"," nothing if the queue is empty.",""," @method _dequeue"," @chainable"," @see _queue"," @protected"," **/"," _dequeue: function () {"," var self = this,"," fn;",""," // If window.onload hasn't yet fired, wait until it has before"," // dequeueing. This will ensure that we don't call pushState() before an"," // initial popstate event has fired."," if (!YUI.Env.windowLoaded) {"," Y.once('load', function () {"," self._dequeue();"," });",""," return this;"," }",""," fn = saveQueue.shift();"," return fn ? fn() : this;"," },",""," /**"," Dispatches to the first route handler that matches the specified _path_.",""," If called before the `ready` event has fired, the dispatch will be aborted."," This ensures normalized behavior between Chrome (which fires a `popstate`"," event on every pageview) and other browsers (which do not).",""," @method _dispatch"," @param {String} path URL path."," @param {String} url Full URL."," @param {String} src What initiated the dispatch."," @chainable"," @protected"," **/"," _dispatch: function (path, url, src) {"," var self = this,"," routes = self.match(path),"," callbacks = [],"," matches, req, res;",""," self._dispatching = self._dispatched = true;",""," if (!routes || !routes.length) {"," self._dispatching = false;"," return self;"," }",""," req = self._getRequest(path, url, src);"," res = self._getResponse(req);",""," req.next = function (err) {"," var callback, route;",""," if (err) {"," // Special case \"route\" to skip to the next route handler"," // avoiding any additional callbacks for the current route."," if (err === 'route') {"," callbacks = [];"," req.next();"," } else {"," Y.error(err);"," }",""," } else if ((callback = callbacks.shift())) {"," if (typeof callback === 'string') {"," callback = self[callback];"," }",""," // Allow access to the num or remaining callbacks for the route."," req.pendingCallbacks = callbacks.length;",""," callback.call(self, req, res, req.next);",""," } else if ((route = routes.shift())) {"," // Make a copy of this route's `callbacks` and find its matches."," callbacks = route.callbacks.concat();"," matches = route.regex.exec(path);",""," // Use named keys for parameter names if the route path contains"," // named keys. Otherwise, use numerical match indices."," if (matches.length === route.keys.length + 1) {"," req.params = YArray.hash(route.keys, matches.slice(1));"," } else {"," req.params = matches.concat();"," }",""," // Allow access tot he num of remaining routes for this request."," req.pendingRoutes = routes.length;",""," // Execute this route's `callbacks`."," req.next();"," }"," };",""," req.next();",""," self._dispatching = false;"," return self._dequeue();"," },",""," /**"," Returns the resolved path from the hash fragment, or an empty string if the"," hash is not path-like.",""," @method _getHashPath"," @param {String} [hash] Hash fragment to resolve into a path. By default this"," will be the hash from the current URL."," @return {String} Current hash path, or an empty string if the hash is empty."," @protected"," **/"," _getHashPath: function (hash) {"," hash || (hash = HistoryHash.getHash());",""," // Make sure the `hash` is path-like."," if (hash && hash.charAt(0) === '/') {"," return this._joinURL(hash);"," }",""," return '';"," },",""," /**"," Gets the location origin (i.e., protocol, host, and port) as a URL.",""," @example"," http://example.com",""," @method _getOrigin"," @return {String} Location origin (i.e., protocol, host, and port)."," @protected"," **/"," _getOrigin: function () {"," var location = Y.getLocation();"," return location.origin || (location.protocol + '//' + location.host);"," },",""," /**"," Gets the current route path, relative to the `root` (if any).",""," @method _getPath"," @return {String} Current route path."," @protected"," **/"," _getPath: function () {"," var path = (!this._html5 && this._getHashPath()) ||"," Y.getLocation().pathname;",""," return this.removeQuery(this.removeRoot(path));"," },",""," /**"," Returns the current path root after popping off the last path segment,"," making it useful for resolving other URL paths against.",""," The path root will always begin and end with a '/'.",""," @method _getPathRoot"," @return {String} The URL's path root."," @protected"," @since 3.5.0"," **/"," _getPathRoot: function () {"," var slash = '/',"," path = Y.getLocation().pathname,"," segments;",""," if (path.charAt(path.length - 1) === slash) {"," return path;"," }",""," segments = path.split(slash);"," segments.pop();",""," return segments.join(slash) + slash;"," },",""," /**"," Gets the current route query string.",""," @method _getQuery"," @return {String} Current route query string."," @protected"," **/"," _getQuery: function () {"," var location = Y.getLocation(),"," hash, matches;",""," if (this._html5) {"," return location.search.substring(1);"," }",""," hash = HistoryHash.getHash();"," matches = hash.match(this._regexUrlQuery);",""," return hash && matches ? matches[1] : location.search.substring(1);"," },",""," /**"," Creates a regular expression from the given route specification. If _path_"," is already a regex, it will be returned unmodified.",""," @method _getRegex"," @param {String|RegExp} path Route path specification."," @param {Array} keys Array reference to which route parameter names will be"," added."," @return {RegExp} Route regex."," @protected"," **/"," _getRegex: function (path, keys) {"," if (path instanceof RegExp) {"," return path;"," }",""," // Special case for catchall paths."," if (path === '*') {"," return (/.*/);"," }",""," path = path.replace(this._regexPathParam, function (match, operator, key) {"," // Only `*` operators are supported for key-less matches to allowing"," // in-path wildcards like: '/foo/*'."," if (!key) {"," return operator === '*' ? '.*' : match;"," }",""," keys.push(key);"," return operator === '*' ? '(.*?)' : '([^/#?]*)';"," });",""," return new RegExp('^' + path + '$');"," },",""," /**"," Gets a request object that can be passed to a route handler.",""," @method _getRequest"," @param {String} path Current path being dispatched."," @param {String} url Current full URL being dispatched."," @param {String} src What initiated the dispatch."," @return {Object} Request object."," @protected"," **/"," _getRequest: function (path, url, src) {"," return {"," path : path,"," query: this._parseQuery(this._getQuery()),"," url : url,"," src : src"," };"," },",""," /**"," Gets a response object that can be passed to a route handler.",""," @method _getResponse"," @param {Object} req Request object."," @return {Object} Response Object."," @protected"," **/"," _getResponse: function (req) {"," // For backwards compatibility, the response object is a function that"," // calls `next()` on the request object and returns the result."," var res = function () {"," return req.next.apply(this, arguments);"," };",""," res.req = req;"," return res;"," },",""," /**"," Getter for the `routes` attribute.",""," @method _getRoutes"," @return {Object[]} Array of route objects."," @protected"," **/"," _getRoutes: function () {"," return this._routes.concat();"," },",""," /**"," Gets the current full URL.",""," @method _getURL"," @return {String} URL."," @protected"," **/"," _getURL: function () {"," var url = Y.getLocation().toString();",""," if (!this._html5) {"," url = this._upgradeURL(url);"," }",""," return url;"," },",""," /**"," Returns `true` when the specified `url` is from the same origin as the"," current URL; i.e., the protocol, host, and port of the URLs are the same.",""," All host or path relative URLs are of the same origin. A scheme-relative URL"," is first prefixed with the current scheme before being evaluated.",""," @method _hasSameOrigin"," @param {String} url URL to compare origin with the current URL."," @return {Boolean} Whether the URL has the same origin of the current URL."," @protected"," **/"," _hasSameOrigin: function (url) {"," var origin = ((url && url.match(this._regexUrlOrigin)) || [])[0];",""," // Prepend current scheme to scheme-relative URLs."," if (origin && origin.indexOf('//') === 0) {"," origin = Y.getLocation().protocol + origin;"," }",""," return !origin || origin === this._getOrigin();"," },",""," /**"," Joins the `root` URL to the specified _url_, normalizing leading/trailing"," `/` characters.",""," @example"," router.set('root', '/foo');"," router._joinURL('bar'); // => '/foo/bar'"," router._joinURL('/bar'); // => '/foo/bar'",""," router.set('root', '/foo/');"," router._joinURL('bar'); // => '/foo/bar'"," router._joinURL('/bar'); // => '/foo/bar'",""," @method _joinURL"," @param {String} url URL to append to the `root` URL."," @return {String} Joined URL."," @protected"," **/"," _joinURL: function (url) {"," var root = this.get('root');",""," // Causes `url` to _always_ begin with a \"/\"."," url = this.removeRoot(url);",""," if (url.charAt(0) === '/') {"," url = url.substring(1);"," }",""," return root && root.charAt(root.length - 1) === '/' ?"," root + url :"," root + '/' + url;"," },",""," /**"," Returns a normalized path, ridding it of any '..' segments and properly"," handling leading and trailing slashes.",""," @method _normalizePath"," @param {String} path URL path to normalize."," @return {String} Normalized path."," @protected"," @since 3.5.0"," **/"," _normalizePath: function (path) {"," var dots = '..',"," slash = '/',"," i, len, normalized, segments, segment, stack;",""," if (!path || path === slash) {"," return slash;"," }",""," segments = path.split(slash);"," stack = [];",""," for (i = 0, len = segments.length; i < len; ++i) {"," segment = segments[i];",""," if (segment === dots) {"," stack.pop();"," } else if (segment) {"," stack.push(segment);"," }"," }",""," normalized = slash + stack.join(slash);",""," // Append trailing slash if necessary."," if (normalized !== slash && path.charAt(path.length - 1) === slash) {"," normalized += slash;"," }",""," return normalized;"," },",""," /**"," Parses a URL query string into a key/value hash. If `Y.QueryString.parse` is"," available, this method will be an alias to that.",""," @method _parseQuery"," @param {String} query Query string to parse."," @return {Object} Hash of key/value pairs for query parameters."," @protected"," **/"," _parseQuery: QS && QS.parse ? QS.parse : function (query) {"," var decode = this._decode,"," params = query.split('&'),"," i = 0,"," len = params.length,"," result = {},"," param;",""," for (; i < len; ++i) {"," param = params[i].split('=');",""," if (param[0]) {"," result[decode(param[0])] = decode(param[1] || '');"," }"," }",""," return result;"," },",""," /**"," Queues up a `_save()` call to run after all previously-queued calls have"," finished.",""," This is necessary because if we make multiple `_save()` calls before the"," first call gets dispatched, then both calls will dispatch to the last call's"," URL.",""," All arguments passed to `_queue()` will be passed on to `_save()` when the"," queued function is executed.",""," @method _queue"," @chainable"," @see _dequeue"," @protected"," **/"," _queue: function () {"," var args = arguments,"," self = this;",""," saveQueue.push(function () {"," if (self._html5) {"," if (Y.UA.ios && Y.UA.ios < 5) {"," // iOS <5 has buggy HTML5 history support, and needs to be"," // synchronous."," self._save.apply(self, args);"," } else {"," // Wrapped in a timeout to ensure that _save() calls are"," // always processed asynchronously. This ensures consistency"," // between HTML5- and hash-based history."," setTimeout(function () {"," self._save.apply(self, args);"," }, 1);"," }"," } else {"," self._dispatching = true; // otherwise we'll dequeue too quickly"," self._save.apply(self, args);"," }",""," return self;"," });",""," return !this._dispatching ? this._dequeue() : this;"," },",""," /**"," Returns the normalized result of resolving the `path` against the current"," path. Falsy values for `path` will return just the current path.",""," @method _resolvePath"," @param {String} path URL path to resolve."," @return {String} Resolved path."," @protected"," @since 3.5.0"," **/"," _resolvePath: function (path) {"," if (!path) {"," return Y.getLocation().pathname;"," }",""," if (path.charAt(0) !== '/') {"," path = this._getPathRoot() + path;"," }",""," return this._normalizePath(path);"," },",""," /**"," Resolves the specified URL against the current URL.",""," This method resolves URLs like a browser does and will always return an"," absolute URL. When the specified URL is already absolute, it is assumed to"," be fully resolved and is simply returned as is. Scheme-relative URLs are"," prefixed with the current protocol. Relative URLs are giving the current"," URL's origin and are resolved and normalized against the current path root.",""," @method _resolveURL"," @param {String} url URL to resolve."," @return {String} Resolved URL."," @protected"," @since 3.5.0"," **/"," _resolveURL: function (url) {"," var parts = url && url.match(this._regexURL),"," origin, path, query, hash, resolved;",""," if (!parts) {"," return Y.getLocation().toString();"," }",""," origin = parts[1];"," path = parts[2];"," query = parts[3];"," hash = parts[4];",""," // Absolute and scheme-relative URLs are assumed to be fully-resolved."," if (origin) {"," // Prepend the current scheme for scheme-relative URLs."," if (origin.indexOf('//') === 0) {"," origin = Y.getLocation().protocol + origin;"," }",""," return origin + (path || '/') + (query || '') + (hash || '');"," }",""," // Will default to the current origin and current path."," resolved = this._getOrigin() + this._resolvePath(path);",""," // A path or query for the specified URL trumps the current URL's."," if (path || query) {"," return resolved + (query || '') + (hash || '');"," }",""," query = this._getQuery();",""," return resolved + (query ? ('?' + query) : '') + (hash || '');"," },",""," /**"," Saves a history entry using either `pushState()` or the location hash.",""," This method enforces the same-origin security constraint; attempting to save"," a `url` that is not from the same origin as the current URL will result in"," an error.",""," @method _save"," @param {String} [url] URL for the history entry."," @param {Boolean} [replace=false] If `true`, the current history entry will"," be replaced instead of a new one being added."," @chainable"," @protected"," **/"," _save: function (url, replace) {"," var urlIsString = typeof url === 'string',"," currentPath, root;",""," // Perform same-origin check on the specified URL."," if (urlIsString && !this._hasSameOrigin(url)) {"," Y.error('Security error: The new URL must be of the same origin as the current URL.');"," return this;"," }",""," // Joins the `url` with the `root`."," urlIsString && (url = this._joinURL(url));",""," // Force _ready to true to ensure that the history change is handled"," // even if _save is called before the `ready` event fires."," this._ready = true;",""," if (this._html5) {"," this._history[replace ? 'replace' : 'add'](null, {url: url});"," } else {"," currentPath = Y.getLocation().pathname;"," root = this.get('root');",""," // Determine if the `root` already exists in the current location's"," // `pathname`, and if it does then we can exclude it from the"," // hash-based path. No need to duplicate the info in the URL."," if (root === currentPath || root === this._getPathRoot()) {"," url = this.removeRoot(url);"," }",""," // The `hashchange` event only fires when the new hash is actually"," // different. This makes sure we'll always dequeue and dispatch"," // _all_ router instances, mimicking the HTML5 behavior."," if (url === HistoryHash.getHash()) {"," Y.Router.dispatch();"," } else {"," HistoryHash[replace ? 'replaceHash' : 'setHash'](url);"," }"," }",""," return this;"," },",""," /**"," Setter for the `routes` attribute.",""," @method _setRoutes"," @param {Object[]} routes Array of route objects."," @return {Object[]} Array of route objects."," @protected"," **/"," _setRoutes: function (routes) {"," this._routes = [];",""," YArray.each(routes, function (route) {"," // Makes sure to check `callback` for back-compat."," var callbacks = route.callbacks || route.callback;",""," this.route(route.path, callbacks);"," }, this);",""," return this._routes.concat();"," },",""," /**"," Upgrades a hash-based URL to a full-path URL, if necessary.",""," The specified `url` will be upgraded if its of the same origin as the"," current URL and has a path-like hash. URLs that don't need upgrading will be"," returned as-is.",""," @example"," app._upgradeURL('http://example.com/#/foo/'); // => 'http://example.com/foo/';",""," @method _upgradeURL"," @param {String} url The URL to upgrade from hash-based to full-path."," @return {String} The upgraded URL, or the specified URL untouched."," @protected"," @since 3.5.0"," **/"," _upgradeURL: function (url) {"," // We should not try to upgrade paths for external URLs."," if (!this._hasSameOrigin(url)) {"," return url;"," }",""," var hash = (url.match(/#(.*)$/) || [])[1] || '',"," hashPrefix = Y.HistoryHash.hashPrefix,"," hashPath;",""," // Strip any hash prefix, like hash-bangs."," if (hashPrefix && hash.indexOf(hashPrefix) === 0) {"," hash = hash.replace(hashPrefix, '');"," }",""," hash && (hashPath = this._getHashPath(hash));",""," // If the hash looks like a URL path, assume it is, and upgrade it!"," if (hashPath) {"," return this._resolveURL(hashPath);"," }",""," return url;"," },",""," // -- Protected Event Handlers ---------------------------------------------",""," /**"," Handles `history:change` and `hashchange` events.",""," @method _afterHistoryChange"," @param {EventFacade} e"," @protected"," **/"," _afterHistoryChange: function (e) {"," var self = this,"," src = e.src,"," prevURL = self._url,"," currentURL = self._getURL();",""," self._url = currentURL;",""," // Handles the awkwardness that is the `popstate` event. HTML5 browsers"," // fire `popstate` right before they fire `hashchange`, and Chrome fires"," // `popstate` on page load. If this router is not ready or the previous"," // and current URLs only differ by their hash, then we want to ignore"," // this `popstate` event."," if (src === 'popstate' &&"," (!self._ready || prevURL.replace(/#.*$/, '') === currentURL.replace(/#.*$/, ''))) {",""," return;"," }",""," self._dispatch(self._getPath(), currentURL, src);"," },",""," // -- Default Event Handlers -----------------------------------------------",""," /**"," Default handler for the `ready` event.",""," @method _defReadyFn"," @param {EventFacade} e"," @protected"," **/"," _defReadyFn: function (e) {"," this._ready = true;"," }","}, {"," // -- Static Properties ----------------------------------------------------"," NAME: 'router',",""," ATTRS: {"," /**"," Whether or not this browser is capable of using HTML5 history.",""," Setting this to `false` will force the use of hash-based history even on"," HTML5 browsers, but please don't do this unless you understand the"," consequences.",""," @attribute html5"," @type Boolean"," @initOnly"," **/"," html5: {"," // Android versions lower than 3.0 are buggy and don't update"," // window.location after a pushState() call, so we fall back to"," // hash-based history for them."," //"," // See http://code.google.com/p/android/issues/detail?id=17471"," valueFn: function () { return Y.Router.html5; },"," writeOnce: 'initOnly'"," },",""," /**"," Absolute root path from which all routes should be evaluated.",""," For example, if your router is running on a page at"," `http://example.com/myapp/` and you add a route with the path `/`, your"," route will never execute, because the path will always be preceded by"," `/myapp`. Setting `root` to `/myapp` would cause all routes to be"," evaluated relative to that root URL, so the `/` route would then execute"," when the user browses to `http://example.com/myapp/`.",""," @attribute root"," @type String"," @default `''`"," **/"," root: {"," value: ''"," },",""," /**"," Array of route objects.",""," Each item in the array must be an object with the following properties:",""," * `path`: String or regex representing the path to match. See the docs"," for the `route()` method for more details.",""," * `callbacks`: Function or a string representing the name of a"," function on this router instance that should be called when the"," route is triggered. An array of functions and/or strings may also be"," provided. See the docs for the `route()` method for more details.",""," This attribute is intended to be used to set routes at init time, or to"," completely reset all routes after init. To add routes after init without"," resetting all existing routes, use the `route()` method.",""," @attribute routes"," @type Object[]"," @default `[]`"," @see route"," **/"," routes: {"," value : [],"," getter: '_getRoutes',"," setter: '_setRoutes'"," }"," },",""," // Used as the default value for the `html5` attribute, and for testing."," html5: Y.HistoryBase.html5 && (!Y.UA.android || Y.UA.android >= 3),",""," // To make this testable."," _instances: instances,",""," /**"," Dispatches to the first route handler that matches the specified `path` for"," all active router instances.",""," This provides a mechanism to cause all active router instances to dispatch"," to their route handlers without needing to change the URL or fire the"," `history:change` or `hashchange` event.",""," @method dispatch"," @static"," @since 3.6.0"," **/"," dispatch: function () {"," var i, len, router;",""," for (i = 0, len = instances.length; i < len; i += 1) {"," router = instances[i];",""," if (router) {"," router._dispatch(router._getPath(), router._getURL());"," }"," }"," }","});","","/**","The `Controller` class was deprecated in YUI 3.5.0 and is now an alias for the","`Router` class. Use that class instead. This alias will be removed in a future","version of YUI.","","@class Controller","@constructor","@extends Base","@deprecated Use `Router` instead.","@see Router","**/","Y.Controller = Y.Router;","","","}, '3.7.3', {\"optional\": [\"querystring-parse\"], \"requires\": [\"array-extras\", \"base-build\", \"history\"]});"]; -_yuitest_coverage["build/router/router.js"].lines = {"1":0,"11":0,"60":0,"61":0,"64":0,"152":0,"154":0,"155":0,"156":0,"159":0,"163":0,"164":0,"165":0,"168":0,"176":0,"182":0,"183":0,"184":0,"185":0,"191":0,"195":0,"198":0,"199":0,"202":0,"218":0,"219":0,"221":0,"222":0,"224":0,"228":0,"238":0,"255":0,"257":0,"258":0,"261":0,"262":0,"265":0,"267":0,"301":0,"302":0,"315":0,"319":0,"321":0,"322":0,"325":0,"337":0,"371":0,"481":0,"483":0,"485":0,"495":0,"529":0,"540":0,"541":0,"545":0,"547":0,"552":0,"553":0,"556":0,"559":0,"574":0,"587":0,"593":0,"594":0,"595":0,"598":0,"601":0,"602":0,"620":0,"625":0,"627":0,"628":0,"629":0,"632":0,"633":0,"635":0,"636":0,"638":0,"641":0,"642":0,"643":0,"645":0,"648":0,"649":0,"650":0,"654":0,"656":0,"658":0,"660":0,"661":0,"665":0,"666":0,"668":0,"672":0,"675":0,"679":0,"681":0,"682":0,"696":0,"699":0,"700":0,"703":0,"717":0,"718":0,"729":0,"732":0,"747":0,"751":0,"752":0,"755":0,"756":0,"758":0,"769":0,"772":0,"773":0,"776":0,"777":0,"779":0,"794":0,"795":0,"799":0,"800":0,"803":0,"806":0,"807":0,"810":0,"811":0,"814":0,"828":0,"847":0,"848":0,"851":0,"852":0,"863":0,"874":0,"876":0,"877":0,"880":0,"896":0,"899":0,"900":0,"903":0,"925":0,"928":0,"930":0,"931":0,"934":0,"950":0,"954":0,"955":0,"958":0,"959":0,"961":0,"962":0,"964":0,"965":0,"966":0,"967":0,"971":0,"974":0,"975":0,"978":0,"991":0,"998":0,"999":0,"1001":0,"1002":0,"1006":0,"1026":0,"1029":0,"1030":0,"1031":0,"1034":0,"1039":0,"1040":0,"1044":0,"1045":0,"1048":0,"1051":0,"1065":0,"1066":0,"1069":0,"1070":0,"1073":0,"1092":0,"1095":0,"1096":0,"1099":0,"1100":0,"1101":0,"1102":0,"1105":0,"1107":0,"1108":0,"1111":0,"1115":0,"1118":0,"1119":0,"1122":0,"1124":0,"1142":0,"1146":0,"1147":0,"1148":0,"1152":0,"1156":0,"1158":0,"1159":0,"1161":0,"1162":0,"1167":0,"1168":0,"1174":0,"1175":0,"1177":0,"1181":0,"1193":0,"1195":0,"1197":0,"1199":0,"1202":0,"1223":0,"1224":0,"1227":0,"1232":0,"1233":0,"1236":0,"1239":0,"1240":0,"1243":0,"1256":0,"1261":0,"1268":0,"1271":0,"1274":0,"1287":0,"1311":0,"1381":0,"1383":0,"1384":0,"1386":0,"1387":0,"1404":0}; -_yuitest_coverage["build/router/router.js"].functions = {"Router:60":0,"(anonymous 4):184":0,"(anonymous 3):183":0,"(anonymous 2):182":0,"initializer:151":0,"destructor:194":0,"(anonymous 5):218":0,"dispatch:217":0,"getPath:237":0,"hasRoute:254":0,"(anonymous 6):301":0,"match:300":0,"removeRoot:314":0,"removeQuery:336":0,"replace:370":0,"route:480":0,"save:528":0,"(anonymous 7):552":0,"upgrade:539":0,"_decode:573":0,"(anonymous 8):594":0,"_dequeue:586":0,"next:635":0,"_dispatch:619":0,"_getHashPath:695":0,"_getOrigin:716":0,"_getPath:728":0,"_getPathRoot:746":0,"_getQuery:768":0,"(anonymous 9):803":0,"_getRegex:793":0,"_getRequest:827":0,"res:847":0,"_getResponse:844":0,"_getRoutes:862":0,"_getURL:873":0,"_hasSameOrigin:895":0,"_joinURL:924":0,"_normalizePath:949":0,"parse:990":0,"(anonymous 11):1039":0,"(anonymous 10):1029":0,"_queue:1025":0,"_resolvePath:1064":0,"_resolveURL:1091":0,"_save:1141":0,"(anonymous 12):1195":0,"_setRoutes:1192":0,"_upgradeURL:1221":0,"_afterHistoryChange:1255":0,"_defReadyFn:1286":0,"valueFn:1311":0,"dispatch:1380":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/router/router.js"].coveredLines = 243; -_yuitest_coverage["build/router/router.js"].coveredFunctions = 54; -_yuitest_coverline("build/router/router.js", 1); -YUI.add('router', function (Y, NAME) { - -/** -Provides URL-based routing using HTML5 `pushState()` or the location hash. - -@module app -@submodule router -@since 3.4.0 -**/ - -_yuitest_coverfunc("build/router/router.js", "(anonymous 1)", 1); -_yuitest_coverline("build/router/router.js", 11); -var HistoryHash = Y.HistoryHash, - QS = Y.QueryString, - YArray = Y.Array, - YLang = Y.Lang, - - win = Y.config.win, - - // Holds all the active router instances. This supports the static - // `dispatch()` method which causes all routers to dispatch. - instances = [], - - // We have to queue up pushState calls to avoid race conditions, since the - // popstate event doesn't actually provide any info on what URL it's - // associated with. - saveQueue = [], - - /** - Fired when the router is ready to begin dispatching to route handlers. - - You shouldn't need to wait for this event unless you plan to implement some - kind of custom dispatching logic. It's used internally in order to avoid - dispatching to an initial route if a browser history change occurs first. - - @event ready - @param {Boolean} dispatched `true` if routes have already been dispatched - (most likely due to a history change). - @fireOnce - **/ - EVT_READY = 'ready'; - -/** -Provides URL-based routing using HTML5 `pushState()` or the location hash. - -This makes it easy to wire up route handlers for different application states -while providing full back/forward navigation support and bookmarkable, shareable -URLs. - -@class Router -@param {Object} [config] Config properties. - @param {Boolean} [config.html5] Overrides the default capability detection - and forces this router to use (`true`) or not use (`false`) HTML5 - history. - @param {String} [config.root=''] Root path from which all routes should be - evaluated. - @param {Array} [config.routes=[]] Array of route definition objects. -@constructor -@extends Base -@since 3.4.0 -**/ -_yuitest_coverline("build/router/router.js", 60); -function Router() { - _yuitest_coverfunc("build/router/router.js", "Router", 60); -_yuitest_coverline("build/router/router.js", 61); -Router.superclass.constructor.apply(this, arguments); -} - -_yuitest_coverline("build/router/router.js", 64); -Y.Router = Y.extend(Router, Y.Base, { - // -- Protected Properties ------------------------------------------------- - - /** - Whether or not `_dispatch()` has been called since this router was - instantiated. - - @property _dispatched - @type Boolean - @default undefined - @protected - **/ - - /** - Whether or not we're currently in the process of dispatching to routes. - - @property _dispatching - @type Boolean - @default undefined - @protected - **/ - - /** - History event handle for the `history:change` or `hashchange` event - subscription. - - @property _historyEvents - @type EventHandle - @protected - **/ - - /** - Cached copy of the `html5` attribute for internal use. - - @property _html5 - @type Boolean - @protected - **/ - - /** - Whether or not the `ready` event has fired yet. - - @property _ready - @type Boolean - @default undefined - @protected - **/ - - /** - Regex used to match parameter placeholders in route paths. - - Subpattern captures: - - 1. Parameter prefix character. Either a `:` for subpath parameters that - should only match a single level of a path, or `*` for splat parameters - that should match any number of path levels. - - 2. Parameter name, if specified, otherwise it is a wildcard match. - - @property _regexPathParam - @type RegExp - @protected - **/ - _regexPathParam: /([:*])([\w\-]+)?/g, - - /** - Regex that matches and captures the query portion of a URL, minus the - preceding `?` character, and discarding the hash portion of the URL if any. - - @property _regexUrlQuery - @type RegExp - @protected - **/ - _regexUrlQuery: /\?([^#]*).*$/, - - /** - Regex that matches everything before the path portion of a URL (the origin). - This will be used to strip this part of the URL from a string when we - only want the path. - - @property _regexUrlOrigin - @type RegExp - @protected - **/ - _regexUrlOrigin: /^(?:[^\/#?:]+:\/\/|\/\/)[^\/]*/, - - // -- Lifecycle Methods ---------------------------------------------------- - initializer: function (config) { - _yuitest_coverfunc("build/router/router.js", "initializer", 151); -_yuitest_coverline("build/router/router.js", 152); -var self = this; - - _yuitest_coverline("build/router/router.js", 154); -self._html5 = self.get('html5'); - _yuitest_coverline("build/router/router.js", 155); -self._routes = []; - _yuitest_coverline("build/router/router.js", 156); -self._url = self._getURL(); - - // Necessary because setters don't run on init. - _yuitest_coverline("build/router/router.js", 159); -self._setRoutes(config && config.routes ? config.routes : - self.get('routes')); - - // Set up a history instance or hashchange listener. - _yuitest_coverline("build/router/router.js", 163); -if (self._html5) { - _yuitest_coverline("build/router/router.js", 164); -self._history = new Y.HistoryHTML5({force: true}); - _yuitest_coverline("build/router/router.js", 165); -self._historyEvents = - Y.after('history:change', self._afterHistoryChange, self); - } else { - _yuitest_coverline("build/router/router.js", 168); -self._historyEvents = - Y.on('hashchange', self._afterHistoryChange, win, self); - } - - // Fire a `ready` event once we're ready to route. We wait first for all - // subclass initializers to finish, then for window.onload, and then an - // additional 20ms to allow the browser to fire a useless initial - // `popstate` event if it wants to (and Chrome always wants to). - _yuitest_coverline("build/router/router.js", 176); -self.publish(EVT_READY, { - defaultFn : self._defReadyFn, - fireOnce : true, - preventable: false - }); - - _yuitest_coverline("build/router/router.js", 182); -self.once('initializedChange', function () { - _yuitest_coverfunc("build/router/router.js", "(anonymous 2)", 182); -_yuitest_coverline("build/router/router.js", 183); -Y.once('load', function () { - _yuitest_coverfunc("build/router/router.js", "(anonymous 3)", 183); -_yuitest_coverline("build/router/router.js", 184); -setTimeout(function () { - _yuitest_coverfunc("build/router/router.js", "(anonymous 4)", 184); -_yuitest_coverline("build/router/router.js", 185); -self.fire(EVT_READY, {dispatched: !!self._dispatched}); - }, 20); - }); - }); - - // Store this router in the collection of all active router instances. - _yuitest_coverline("build/router/router.js", 191); -instances.push(this); - }, - - destructor: function () { - _yuitest_coverfunc("build/router/router.js", "destructor", 194); -_yuitest_coverline("build/router/router.js", 195); -var instanceIndex = YArray.indexOf(instances, this); - - // Remove this router from the collection of active router instances. - _yuitest_coverline("build/router/router.js", 198); -if (instanceIndex > -1) { - _yuitest_coverline("build/router/router.js", 199); -instances.splice(instanceIndex, 1); - } - - _yuitest_coverline("build/router/router.js", 202); -this._historyEvents && this._historyEvents.detach(); - }, - - // -- Public Methods ------------------------------------------------------- - - /** - Dispatches to the first route handler that matches the current URL, if any. - - If `dispatch()` is called before the `ready` event has fired, it will - automatically wait for the `ready` event before dispatching. Otherwise it - will dispatch immediately. - - @method dispatch - @chainable - **/ - dispatch: function () { - _yuitest_coverfunc("build/router/router.js", "dispatch", 217); -_yuitest_coverline("build/router/router.js", 218); -this.once(EVT_READY, function () { - _yuitest_coverfunc("build/router/router.js", "(anonymous 5)", 218); -_yuitest_coverline("build/router/router.js", 219); -this._ready = true; - - _yuitest_coverline("build/router/router.js", 221); -if (this._html5 && this.upgrade()) { - _yuitest_coverline("build/router/router.js", 222); -return; - } else { - _yuitest_coverline("build/router/router.js", 224); -this._dispatch(this._getPath(), this._getURL()); - } - }); - - _yuitest_coverline("build/router/router.js", 228); -return this; - }, - - /** - Gets the current route path, relative to the `root` (if any). - - @method getPath - @return {String} Current route path. - **/ - getPath: function () { - _yuitest_coverfunc("build/router/router.js", "getPath", 237); -_yuitest_coverline("build/router/router.js", 238); -return this._getPath(); - }, - - /** - Returns `true` if this router has at least one route that matches the - specified URL, `false` otherwise. - - This method enforces the same-origin security constraint on the specified - `url`; any URL which is not from the same origin as the current URL will - always return `false`. - - @method hasRoute - @param {String} url URL to match. - @return {Boolean} `true` if there's at least one matching route, `false` - otherwise. - **/ - hasRoute: function (url) { - _yuitest_coverfunc("build/router/router.js", "hasRoute", 254); -_yuitest_coverline("build/router/router.js", 255); -var path; - - _yuitest_coverline("build/router/router.js", 257); -if (!this._hasSameOrigin(url)) { - _yuitest_coverline("build/router/router.js", 258); -return false; - } - - _yuitest_coverline("build/router/router.js", 261); -if (!this._html5) { - _yuitest_coverline("build/router/router.js", 262); -url = this._upgradeURL(url); - } - - _yuitest_coverline("build/router/router.js", 265); -path = this.removeQuery(this.removeRoot(url)); - - _yuitest_coverline("build/router/router.js", 267); -return !!this.match(path).length; - }, - - /** - Returns an array of route objects that match the specified URL path. - - This method is called internally to determine which routes match the current - path whenever the URL changes. You may override it if you want to customize - the route matching logic, although this usually shouldn't be necessary. - - Each returned route object has the following properties: - - * `callback`: A function or a string representing the name of a function - this router that should be executed when the route is triggered. - - * `keys`: An array of strings representing the named parameters defined in - the route's path specification, if any. - - * `path`: The route's path specification, which may be either a string or - a regex. - - * `regex`: A regular expression version of the route's path specification. - This regex is used to determine whether the route matches a given path. - - @example - router.route('/foo', function () {}); - router.match('/foo'); - // => [{callback: ..., keys: [], path: '/foo', regex: ...}] - - @method match - @param {String} path URL path to match. - @return {Object[]} Array of route objects that match the specified path. - **/ - match: function (path) { - _yuitest_coverfunc("build/router/router.js", "match", 300); -_yuitest_coverline("build/router/router.js", 301); -return YArray.filter(this._routes, function (route) { - _yuitest_coverfunc("build/router/router.js", "(anonymous 6)", 301); -_yuitest_coverline("build/router/router.js", 302); -return path.search(route.regex) > -1; - }); - }, - - /** - Removes the `root` URL from the front of _url_ (if it's there) and returns - the result. The returned path will always have a leading `/`. - - @method removeRoot - @param {String} url URL. - @return {String} Rootless path. - **/ - removeRoot: function (url) { - _yuitest_coverfunc("build/router/router.js", "removeRoot", 314); -_yuitest_coverline("build/router/router.js", 315); -var root = this.get('root'); - - // Strip out the non-path part of the URL, if any (e.g. - // "http://foo.com"), so that we're left with just the path. - _yuitest_coverline("build/router/router.js", 319); -url = url.replace(this._regexUrlOrigin, ''); - - _yuitest_coverline("build/router/router.js", 321); -if (root && url.indexOf(root) === 0) { - _yuitest_coverline("build/router/router.js", 322); -url = url.substring(root.length); - } - - _yuitest_coverline("build/router/router.js", 325); -return url.charAt(0) === '/' ? url : '/' + url; - }, - - /** - Removes a query string from the end of the _url_ (if one exists) and returns - the result. - - @method removeQuery - @param {String} url URL. - @return {String} Queryless path. - **/ - removeQuery: function (url) { - _yuitest_coverfunc("build/router/router.js", "removeQuery", 336); -_yuitest_coverline("build/router/router.js", 337); -return url.replace(/\?.*$/, ''); - }, - - /** - Replaces the current browser history entry with a new one, and dispatches to - the first matching route handler, if any. - - Behind the scenes, this method uses HTML5 `pushState()` in browsers that - support it (or the location hash in older browsers and IE) to change the - URL. - - The specified URL must share the same origin (i.e., protocol, host, and - port) as the current page, or an error will occur. - - @example - // Starting URL: http://example.com/ - - router.replace('/path/'); - // New URL: http://example.com/path/ - - router.replace('/path?foo=bar'); - // New URL: http://example.com/path?foo=bar - - router.replace('/'); - // New URL: http://example.com/ - - @method replace - @param {String} [url] URL to set. This URL needs to be of the same origin as - the current URL. This can be a URL relative to the router's `root` - attribute. If no URL is specified, the page's current URL will be used. - @chainable - @see save() - **/ - replace: function (url) { - _yuitest_coverfunc("build/router/router.js", "replace", 370); -_yuitest_coverline("build/router/router.js", 371); -return this._queue(url, true); - }, - - /** - Adds a route handler for the specified URL _path_. - - The _path_ parameter may be either a string or a regular expression. If it's - a string, it may contain named parameters: `:param` will match any single - part of a URL path (not including `/` characters), and `*param` will match - any number of parts of a URL path (including `/` characters). These named - parameters will be made available as keys on the `req.params` object that's - passed to route handlers. - - If the _path_ parameter is a regex, all pattern matches will be made - available as numbered keys on `req.params`, starting with `0` for the full - match, then `1` for the first subpattern match, and so on. - - Here's a set of sample routes along with URL paths that they match: - - * Route: `/photos/:tag/:page` - * URL: `/photos/kittens/1`, params: `{tag: 'kittens', page: '1'}` - * URL: `/photos/puppies/2`, params: `{tag: 'puppies', page: '2'}` - - * Route: `/file/*path` - * URL: `/file/foo/bar/baz.txt`, params: `{path: 'foo/bar/baz.txt'}` - * URL: `/file/foo`, params: `{path: 'foo'}` - - **Middleware**: Routes also support an arbitrary number of callback - functions. This allows you to easily reuse parts of your route-handling code - with different route. This method is liberal in how it processes the - specified `callbacks`, you can specify them as separate arguments, or as - arrays, or both. - - If multiple route match a given URL, they will be executed in the order they - were added. The first route that was added will be the first to be executed. - - **Passing Control**: Invoking the `next()` function within a route callback - will pass control to the next callback function (if any) or route handler - (if any). If a value is passed to `next()`, it's assumed to be an error, - therefore stopping the dispatch chain, unless that value is: `"route"`, - which is special case and dispatching will skip to the next route handler. - This allows middleware to skip any remaining middleware for a particular - route. - - @example - router.route('/photos/:tag/:page', function (req, res, next) { - }); - - // Using middleware. - - router.findUser = function (req, res, next) { - req.user = this.get('users').findById(req.params.user); - next(); - }; - - router.route('/users/:user', 'findUser', function (req, res, next) { - // The `findUser` middleware puts the `user` object on the `req`. - }); - - @method route - @param {String|RegExp} path Path to match. May be a string or a regular - expression. - @param {Array|Function|String} callbacks* Callback functions to call - whenever this route is triggered. These can be specified as separate - arguments, or in arrays, or both. If a callback is specified as a - string, the named function will be called on this router instance. - - @param {Object} callbacks.req Request object containing information about - the request. It contains the following properties. - - @param {Array|Object} callbacks.req.params Captured parameters matched by - the route path specification. If a string path was used and contained - named parameters, then this will be a key/value hash mapping parameter - names to their matched values. If a regex path was used, this will be - an array of subpattern matches starting at index 0 for the full match, - then 1 for the first subpattern match, and so on. - @param {String} callbacks.req.path The current URL path. - @param {Number} callbacks.req.pendingCallbacks Number of remaining - callbacks the route handler has after this one in the dispatch chain. - @param {Number} callbacks.req.pendingRoutes Number of matching routes - after this one in the dispatch chain. - @param {Object} callbacks.req.query Query hash representing the URL - query string, if any. Parameter names are keys, and are mapped to - parameter values. - @param {String} callbacks.req.url The full URL. - @param {String} callbacks.req.src What initiated the dispatch. In an - HTML5 browser, when the back/forward buttons are used, this property - will have a value of "popstate". - - @param {Object} callbacks.res Response object containing methods and - information that relate to responding to a request. It contains the - following properties. - @param {Object} callbacks.res.req Reference to the request object. - - @param {Function} callbacks.next Function to pass control to the next - callback or the next matching route if no more callbacks (middleware) - exist for the current route handler. If you don't call this function, - then no further callbacks or route handlers will be executed, even if - there are more that match. If you do call this function, then the next - callback (if any) or matching route handler (if any) will be called. - All of these functions will receive the same `req` and `res` objects - that were passed to this route (so you can use these objects to pass - data along to subsequent callbacks and routes). - @param {String} [callbacks.next.err] Optional error which will stop the - dispatch chaining for this `req`, unless the value is `"route"`, which - is special cased to jump skip past any callbacks for the current route - and pass control the next route handler. - @chainable - **/ - route: function (path, callbacks) { - _yuitest_coverfunc("build/router/router.js", "route", 480); -_yuitest_coverline("build/router/router.js", 481); -callbacks = YArray.flatten(YArray(arguments, 1, true)); - - _yuitest_coverline("build/router/router.js", 483); -var keys = []; - - _yuitest_coverline("build/router/router.js", 485); -this._routes.push({ - callbacks: callbacks, - keys : keys, - path : path, - regex : this._getRegex(path, keys), - - // For back-compat. - callback: callbacks[0] - }); - - _yuitest_coverline("build/router/router.js", 495); -return this; - }, - - /** - Saves a new browser history entry and dispatches to the first matching route - handler, if any. - - Behind the scenes, this method uses HTML5 `pushState()` in browsers that - support it (or the location hash in older browsers and IE) to change the - URL and create a history entry. - - The specified URL must share the same origin (i.e., protocol, host, and - port) as the current page, or an error will occur. - - @example - // Starting URL: http://example.com/ - - router.save('/path/'); - // New URL: http://example.com/path/ - - router.save('/path?foo=bar'); - // New URL: http://example.com/path?foo=bar - - router.save('/'); - // New URL: http://example.com/ - - @method save - @param {String} [url] URL to set. This URL needs to be of the same origin as - the current URL. This can be a URL relative to the router's `root` - attribute. If no URL is specified, the page's current URL will be used. - @chainable - @see replace() - **/ - save: function (url) { - _yuitest_coverfunc("build/router/router.js", "save", 528); -_yuitest_coverline("build/router/router.js", 529); -return this._queue(url); - }, - - /** - Upgrades a hash-based URL to an HTML5 URL if necessary. In non-HTML5 - browsers, this method is a noop. - - @method upgrade - @return {Boolean} `true` if the URL was upgraded, `false` otherwise. - **/ - upgrade: function () { - _yuitest_coverfunc("build/router/router.js", "upgrade", 539); -_yuitest_coverline("build/router/router.js", 540); -if (!this._html5) { - _yuitest_coverline("build/router/router.js", 541); -return false; - } - - // Get the resolve hash path. - _yuitest_coverline("build/router/router.js", 545); -var hashPath = this._getHashPath(); - - _yuitest_coverline("build/router/router.js", 547); -if (hashPath) { - // This is an HTML5 browser and we have a hash-based path in the - // URL, so we need to upgrade the URL to a non-hash URL. This - // will trigger a `history:change` event, which will in turn - // trigger a dispatch. - _yuitest_coverline("build/router/router.js", 552); -this.once(EVT_READY, function () { - _yuitest_coverfunc("build/router/router.js", "(anonymous 7)", 552); -_yuitest_coverline("build/router/router.js", 553); -this.replace(hashPath); - }); - - _yuitest_coverline("build/router/router.js", 556); -return true; - } - - _yuitest_coverline("build/router/router.js", 559); -return false; - }, - - // -- Protected Methods ---------------------------------------------------- - - /** - Wrapper around `decodeURIComponent` that also converts `+` chars into - spaces. - - @method _decode - @param {String} string String to decode. - @return {String} Decoded string. - @protected - **/ - _decode: function (string) { - _yuitest_coverfunc("build/router/router.js", "_decode", 573); -_yuitest_coverline("build/router/router.js", 574); -return decodeURIComponent(string.replace(/\+/g, ' ')); - }, - - /** - Shifts the topmost `_save()` call off the queue and executes it. Does - nothing if the queue is empty. - - @method _dequeue - @chainable - @see _queue - @protected - **/ - _dequeue: function () { - _yuitest_coverfunc("build/router/router.js", "_dequeue", 586); -_yuitest_coverline("build/router/router.js", 587); -var self = this, - fn; - - // If window.onload hasn't yet fired, wait until it has before - // dequeueing. This will ensure that we don't call pushState() before an - // initial popstate event has fired. - _yuitest_coverline("build/router/router.js", 593); -if (!YUI.Env.windowLoaded) { - _yuitest_coverline("build/router/router.js", 594); -Y.once('load', function () { - _yuitest_coverfunc("build/router/router.js", "(anonymous 8)", 594); -_yuitest_coverline("build/router/router.js", 595); -self._dequeue(); - }); - - _yuitest_coverline("build/router/router.js", 598); -return this; - } - - _yuitest_coverline("build/router/router.js", 601); -fn = saveQueue.shift(); - _yuitest_coverline("build/router/router.js", 602); -return fn ? fn() : this; - }, - - /** - Dispatches to the first route handler that matches the specified _path_. - - If called before the `ready` event has fired, the dispatch will be aborted. - This ensures normalized behavior between Chrome (which fires a `popstate` - event on every pageview) and other browsers (which do not). - - @method _dispatch - @param {String} path URL path. - @param {String} url Full URL. - @param {String} src What initiated the dispatch. - @chainable - @protected - **/ - _dispatch: function (path, url, src) { - _yuitest_coverfunc("build/router/router.js", "_dispatch", 619); -_yuitest_coverline("build/router/router.js", 620); -var self = this, - routes = self.match(path), - callbacks = [], - matches, req, res; - - _yuitest_coverline("build/router/router.js", 625); -self._dispatching = self._dispatched = true; - - _yuitest_coverline("build/router/router.js", 627); -if (!routes || !routes.length) { - _yuitest_coverline("build/router/router.js", 628); -self._dispatching = false; - _yuitest_coverline("build/router/router.js", 629); -return self; - } - - _yuitest_coverline("build/router/router.js", 632); -req = self._getRequest(path, url, src); - _yuitest_coverline("build/router/router.js", 633); -res = self._getResponse(req); - - _yuitest_coverline("build/router/router.js", 635); -req.next = function (err) { - _yuitest_coverfunc("build/router/router.js", "next", 635); -_yuitest_coverline("build/router/router.js", 636); -var callback, route; - - _yuitest_coverline("build/router/router.js", 638); -if (err) { - // Special case "route" to skip to the next route handler - // avoiding any additional callbacks for the current route. - _yuitest_coverline("build/router/router.js", 641); -if (err === 'route') { - _yuitest_coverline("build/router/router.js", 642); -callbacks = []; - _yuitest_coverline("build/router/router.js", 643); -req.next(); - } else { - _yuitest_coverline("build/router/router.js", 645); -Y.error(err); - } - - } else {_yuitest_coverline("build/router/router.js", 648); -if ((callback = callbacks.shift())) { - _yuitest_coverline("build/router/router.js", 649); -if (typeof callback === 'string') { - _yuitest_coverline("build/router/router.js", 650); -callback = self[callback]; - } - - // Allow access to the num or remaining callbacks for the route. - _yuitest_coverline("build/router/router.js", 654); -req.pendingCallbacks = callbacks.length; - - _yuitest_coverline("build/router/router.js", 656); -callback.call(self, req, res, req.next); - - } else {_yuitest_coverline("build/router/router.js", 658); -if ((route = routes.shift())) { - // Make a copy of this route's `callbacks` and find its matches. - _yuitest_coverline("build/router/router.js", 660); -callbacks = route.callbacks.concat(); - _yuitest_coverline("build/router/router.js", 661); -matches = route.regex.exec(path); - - // Use named keys for parameter names if the route path contains - // named keys. Otherwise, use numerical match indices. - _yuitest_coverline("build/router/router.js", 665); -if (matches.length === route.keys.length + 1) { - _yuitest_coverline("build/router/router.js", 666); -req.params = YArray.hash(route.keys, matches.slice(1)); - } else { - _yuitest_coverline("build/router/router.js", 668); -req.params = matches.concat(); - } - - // Allow access tot he num of remaining routes for this request. - _yuitest_coverline("build/router/router.js", 672); -req.pendingRoutes = routes.length; - - // Execute this route's `callbacks`. - _yuitest_coverline("build/router/router.js", 675); -req.next(); - }}} - }; - - _yuitest_coverline("build/router/router.js", 679); -req.next(); - - _yuitest_coverline("build/router/router.js", 681); -self._dispatching = false; - _yuitest_coverline("build/router/router.js", 682); -return self._dequeue(); - }, - - /** - Returns the resolved path from the hash fragment, or an empty string if the - hash is not path-like. - - @method _getHashPath - @param {String} [hash] Hash fragment to resolve into a path. By default this - will be the hash from the current URL. - @return {String} Current hash path, or an empty string if the hash is empty. - @protected - **/ - _getHashPath: function (hash) { - _yuitest_coverfunc("build/router/router.js", "_getHashPath", 695); -_yuitest_coverline("build/router/router.js", 696); -hash || (hash = HistoryHash.getHash()); - - // Make sure the `hash` is path-like. - _yuitest_coverline("build/router/router.js", 699); -if (hash && hash.charAt(0) === '/') { - _yuitest_coverline("build/router/router.js", 700); -return this._joinURL(hash); - } - - _yuitest_coverline("build/router/router.js", 703); -return ''; - }, - - /** - Gets the location origin (i.e., protocol, host, and port) as a URL. - - @example - http://example.com - - @method _getOrigin - @return {String} Location origin (i.e., protocol, host, and port). - @protected - **/ - _getOrigin: function () { - _yuitest_coverfunc("build/router/router.js", "_getOrigin", 716); -_yuitest_coverline("build/router/router.js", 717); -var location = Y.getLocation(); - _yuitest_coverline("build/router/router.js", 718); -return location.origin || (location.protocol + '//' + location.host); - }, - - /** - Gets the current route path, relative to the `root` (if any). - - @method _getPath - @return {String} Current route path. - @protected - **/ - _getPath: function () { - _yuitest_coverfunc("build/router/router.js", "_getPath", 728); -_yuitest_coverline("build/router/router.js", 729); -var path = (!this._html5 && this._getHashPath()) || - Y.getLocation().pathname; - - _yuitest_coverline("build/router/router.js", 732); -return this.removeQuery(this.removeRoot(path)); - }, - - /** - Returns the current path root after popping off the last path segment, - making it useful for resolving other URL paths against. - - The path root will always begin and end with a '/'. - - @method _getPathRoot - @return {String} The URL's path root. - @protected - @since 3.5.0 - **/ - _getPathRoot: function () { - _yuitest_coverfunc("build/router/router.js", "_getPathRoot", 746); -_yuitest_coverline("build/router/router.js", 747); -var slash = '/', - path = Y.getLocation().pathname, - segments; - - _yuitest_coverline("build/router/router.js", 751); -if (path.charAt(path.length - 1) === slash) { - _yuitest_coverline("build/router/router.js", 752); -return path; - } - - _yuitest_coverline("build/router/router.js", 755); -segments = path.split(slash); - _yuitest_coverline("build/router/router.js", 756); -segments.pop(); - - _yuitest_coverline("build/router/router.js", 758); -return segments.join(slash) + slash; - }, - - /** - Gets the current route query string. - - @method _getQuery - @return {String} Current route query string. - @protected - **/ - _getQuery: function () { - _yuitest_coverfunc("build/router/router.js", "_getQuery", 768); -_yuitest_coverline("build/router/router.js", 769); -var location = Y.getLocation(), - hash, matches; - - _yuitest_coverline("build/router/router.js", 772); -if (this._html5) { - _yuitest_coverline("build/router/router.js", 773); -return location.search.substring(1); - } - - _yuitest_coverline("build/router/router.js", 776); -hash = HistoryHash.getHash(); - _yuitest_coverline("build/router/router.js", 777); -matches = hash.match(this._regexUrlQuery); - - _yuitest_coverline("build/router/router.js", 779); -return hash && matches ? matches[1] : location.search.substring(1); - }, - - /** - Creates a regular expression from the given route specification. If _path_ - is already a regex, it will be returned unmodified. - - @method _getRegex - @param {String|RegExp} path Route path specification. - @param {Array} keys Array reference to which route parameter names will be - added. - @return {RegExp} Route regex. - @protected - **/ - _getRegex: function (path, keys) { - _yuitest_coverfunc("build/router/router.js", "_getRegex", 793); -_yuitest_coverline("build/router/router.js", 794); -if (path instanceof RegExp) { - _yuitest_coverline("build/router/router.js", 795); -return path; - } - - // Special case for catchall paths. - _yuitest_coverline("build/router/router.js", 799); -if (path === '*') { - _yuitest_coverline("build/router/router.js", 800); -return (/.*/); - } - - _yuitest_coverline("build/router/router.js", 803); -path = path.replace(this._regexPathParam, function (match, operator, key) { - // Only `*` operators are supported for key-less matches to allowing - // in-path wildcards like: '/foo/*'. - _yuitest_coverfunc("build/router/router.js", "(anonymous 9)", 803); -_yuitest_coverline("build/router/router.js", 806); -if (!key) { - _yuitest_coverline("build/router/router.js", 807); -return operator === '*' ? '.*' : match; - } - - _yuitest_coverline("build/router/router.js", 810); -keys.push(key); - _yuitest_coverline("build/router/router.js", 811); -return operator === '*' ? '(.*?)' : '([^/#?]*)'; - }); - - _yuitest_coverline("build/router/router.js", 814); -return new RegExp('^' + path + '$'); - }, - - /** - Gets a request object that can be passed to a route handler. - - @method _getRequest - @param {String} path Current path being dispatched. - @param {String} url Current full URL being dispatched. - @param {String} src What initiated the dispatch. - @return {Object} Request object. - @protected - **/ - _getRequest: function (path, url, src) { - _yuitest_coverfunc("build/router/router.js", "_getRequest", 827); -_yuitest_coverline("build/router/router.js", 828); -return { - path : path, - query: this._parseQuery(this._getQuery()), - url : url, - src : src - }; - }, - - /** - Gets a response object that can be passed to a route handler. - - @method _getResponse - @param {Object} req Request object. - @return {Object} Response Object. - @protected - **/ - _getResponse: function (req) { - // For backwards compatibility, the response object is a function that - // calls `next()` on the request object and returns the result. - _yuitest_coverfunc("build/router/router.js", "_getResponse", 844); -_yuitest_coverline("build/router/router.js", 847); -var res = function () { - _yuitest_coverfunc("build/router/router.js", "res", 847); -_yuitest_coverline("build/router/router.js", 848); -return req.next.apply(this, arguments); - }; - - _yuitest_coverline("build/router/router.js", 851); -res.req = req; - _yuitest_coverline("build/router/router.js", 852); -return res; - }, - - /** - Getter for the `routes` attribute. - - @method _getRoutes - @return {Object[]} Array of route objects. - @protected - **/ - _getRoutes: function () { - _yuitest_coverfunc("build/router/router.js", "_getRoutes", 862); -_yuitest_coverline("build/router/router.js", 863); -return this._routes.concat(); - }, - - /** - Gets the current full URL. - - @method _getURL - @return {String} URL. - @protected - **/ - _getURL: function () { - _yuitest_coverfunc("build/router/router.js", "_getURL", 873); -_yuitest_coverline("build/router/router.js", 874); -var url = Y.getLocation().toString(); - - _yuitest_coverline("build/router/router.js", 876); -if (!this._html5) { - _yuitest_coverline("build/router/router.js", 877); -url = this._upgradeURL(url); - } - - _yuitest_coverline("build/router/router.js", 880); -return url; - }, - - /** - Returns `true` when the specified `url` is from the same origin as the - current URL; i.e., the protocol, host, and port of the URLs are the same. - - All host or path relative URLs are of the same origin. A scheme-relative URL - is first prefixed with the current scheme before being evaluated. - - @method _hasSameOrigin - @param {String} url URL to compare origin with the current URL. - @return {Boolean} Whether the URL has the same origin of the current URL. - @protected - **/ - _hasSameOrigin: function (url) { - _yuitest_coverfunc("build/router/router.js", "_hasSameOrigin", 895); -_yuitest_coverline("build/router/router.js", 896); -var origin = ((url && url.match(this._regexUrlOrigin)) || [])[0]; - - // Prepend current scheme to scheme-relative URLs. - _yuitest_coverline("build/router/router.js", 899); -if (origin && origin.indexOf('//') === 0) { - _yuitest_coverline("build/router/router.js", 900); -origin = Y.getLocation().protocol + origin; - } - - _yuitest_coverline("build/router/router.js", 903); -return !origin || origin === this._getOrigin(); - }, - - /** - Joins the `root` URL to the specified _url_, normalizing leading/trailing - `/` characters. - - @example - router.set('root', '/foo'); - router._joinURL('bar'); // => '/foo/bar' - router._joinURL('/bar'); // => '/foo/bar' - - router.set('root', '/foo/'); - router._joinURL('bar'); // => '/foo/bar' - router._joinURL('/bar'); // => '/foo/bar' - - @method _joinURL - @param {String} url URL to append to the `root` URL. - @return {String} Joined URL. - @protected - **/ - _joinURL: function (url) { - _yuitest_coverfunc("build/router/router.js", "_joinURL", 924); -_yuitest_coverline("build/router/router.js", 925); -var root = this.get('root'); - - // Causes `url` to _always_ begin with a "/". - _yuitest_coverline("build/router/router.js", 928); -url = this.removeRoot(url); - - _yuitest_coverline("build/router/router.js", 930); -if (url.charAt(0) === '/') { - _yuitest_coverline("build/router/router.js", 931); -url = url.substring(1); - } - - _yuitest_coverline("build/router/router.js", 934); -return root && root.charAt(root.length - 1) === '/' ? - root + url : - root + '/' + url; - }, - - /** - Returns a normalized path, ridding it of any '..' segments and properly - handling leading and trailing slashes. - - @method _normalizePath - @param {String} path URL path to normalize. - @return {String} Normalized path. - @protected - @since 3.5.0 - **/ - _normalizePath: function (path) { - _yuitest_coverfunc("build/router/router.js", "_normalizePath", 949); -_yuitest_coverline("build/router/router.js", 950); -var dots = '..', - slash = '/', - i, len, normalized, segments, segment, stack; - - _yuitest_coverline("build/router/router.js", 954); -if (!path || path === slash) { - _yuitest_coverline("build/router/router.js", 955); -return slash; - } - - _yuitest_coverline("build/router/router.js", 958); -segments = path.split(slash); - _yuitest_coverline("build/router/router.js", 959); -stack = []; - - _yuitest_coverline("build/router/router.js", 961); -for (i = 0, len = segments.length; i < len; ++i) { - _yuitest_coverline("build/router/router.js", 962); -segment = segments[i]; - - _yuitest_coverline("build/router/router.js", 964); -if (segment === dots) { - _yuitest_coverline("build/router/router.js", 965); -stack.pop(); - } else {_yuitest_coverline("build/router/router.js", 966); -if (segment) { - _yuitest_coverline("build/router/router.js", 967); -stack.push(segment); - }} - } - - _yuitest_coverline("build/router/router.js", 971); -normalized = slash + stack.join(slash); - - // Append trailing slash if necessary. - _yuitest_coverline("build/router/router.js", 974); -if (normalized !== slash && path.charAt(path.length - 1) === slash) { - _yuitest_coverline("build/router/router.js", 975); -normalized += slash; - } - - _yuitest_coverline("build/router/router.js", 978); -return normalized; - }, - - /** - Parses a URL query string into a key/value hash. If `Y.QueryString.parse` is - available, this method will be an alias to that. - - @method _parseQuery - @param {String} query Query string to parse. - @return {Object} Hash of key/value pairs for query parameters. - @protected - **/ - _parseQuery: QS && QS.parse ? QS.parse : function (query) { - _yuitest_coverfunc("build/router/router.js", "parse", 990); -_yuitest_coverline("build/router/router.js", 991); -var decode = this._decode, - params = query.split('&'), - i = 0, - len = params.length, - result = {}, - param; - - _yuitest_coverline("build/router/router.js", 998); -for (; i < len; ++i) { - _yuitest_coverline("build/router/router.js", 999); -param = params[i].split('='); - - _yuitest_coverline("build/router/router.js", 1001); -if (param[0]) { - _yuitest_coverline("build/router/router.js", 1002); -result[decode(param[0])] = decode(param[1] || ''); - } - } - - _yuitest_coverline("build/router/router.js", 1006); -return result; - }, - - /** - Queues up a `_save()` call to run after all previously-queued calls have - finished. - - This is necessary because if we make multiple `_save()` calls before the - first call gets dispatched, then both calls will dispatch to the last call's - URL. - - All arguments passed to `_queue()` will be passed on to `_save()` when the - queued function is executed. - - @method _queue - @chainable - @see _dequeue - @protected - **/ - _queue: function () { - _yuitest_coverfunc("build/router/router.js", "_queue", 1025); -_yuitest_coverline("build/router/router.js", 1026); -var args = arguments, - self = this; - - _yuitest_coverline("build/router/router.js", 1029); -saveQueue.push(function () { - _yuitest_coverfunc("build/router/router.js", "(anonymous 10)", 1029); -_yuitest_coverline("build/router/router.js", 1030); -if (self._html5) { - _yuitest_coverline("build/router/router.js", 1031); -if (Y.UA.ios && Y.UA.ios < 5) { - // iOS <5 has buggy HTML5 history support, and needs to be - // synchronous. - _yuitest_coverline("build/router/router.js", 1034); -self._save.apply(self, args); - } else { - // Wrapped in a timeout to ensure that _save() calls are - // always processed asynchronously. This ensures consistency - // between HTML5- and hash-based history. - _yuitest_coverline("build/router/router.js", 1039); -setTimeout(function () { - _yuitest_coverfunc("build/router/router.js", "(anonymous 11)", 1039); -_yuitest_coverline("build/router/router.js", 1040); -self._save.apply(self, args); - }, 1); - } - } else { - _yuitest_coverline("build/router/router.js", 1044); -self._dispatching = true; // otherwise we'll dequeue too quickly - _yuitest_coverline("build/router/router.js", 1045); -self._save.apply(self, args); - } - - _yuitest_coverline("build/router/router.js", 1048); -return self; - }); - - _yuitest_coverline("build/router/router.js", 1051); -return !this._dispatching ? this._dequeue() : this; - }, - - /** - Returns the normalized result of resolving the `path` against the current - path. Falsy values for `path` will return just the current path. - - @method _resolvePath - @param {String} path URL path to resolve. - @return {String} Resolved path. - @protected - @since 3.5.0 - **/ - _resolvePath: function (path) { - _yuitest_coverfunc("build/router/router.js", "_resolvePath", 1064); -_yuitest_coverline("build/router/router.js", 1065); -if (!path) { - _yuitest_coverline("build/router/router.js", 1066); -return Y.getLocation().pathname; - } - - _yuitest_coverline("build/router/router.js", 1069); -if (path.charAt(0) !== '/') { - _yuitest_coverline("build/router/router.js", 1070); -path = this._getPathRoot() + path; - } - - _yuitest_coverline("build/router/router.js", 1073); -return this._normalizePath(path); - }, - - /** - Resolves the specified URL against the current URL. - - This method resolves URLs like a browser does and will always return an - absolute URL. When the specified URL is already absolute, it is assumed to - be fully resolved and is simply returned as is. Scheme-relative URLs are - prefixed with the current protocol. Relative URLs are giving the current - URL's origin and are resolved and normalized against the current path root. - - @method _resolveURL - @param {String} url URL to resolve. - @return {String} Resolved URL. - @protected - @since 3.5.0 - **/ - _resolveURL: function (url) { - _yuitest_coverfunc("build/router/router.js", "_resolveURL", 1091); -_yuitest_coverline("build/router/router.js", 1092); -var parts = url && url.match(this._regexURL), - origin, path, query, hash, resolved; - - _yuitest_coverline("build/router/router.js", 1095); -if (!parts) { - _yuitest_coverline("build/router/router.js", 1096); -return Y.getLocation().toString(); - } - - _yuitest_coverline("build/router/router.js", 1099); -origin = parts[1]; - _yuitest_coverline("build/router/router.js", 1100); -path = parts[2]; - _yuitest_coverline("build/router/router.js", 1101); -query = parts[3]; - _yuitest_coverline("build/router/router.js", 1102); -hash = parts[4]; - - // Absolute and scheme-relative URLs are assumed to be fully-resolved. - _yuitest_coverline("build/router/router.js", 1105); -if (origin) { - // Prepend the current scheme for scheme-relative URLs. - _yuitest_coverline("build/router/router.js", 1107); -if (origin.indexOf('//') === 0) { - _yuitest_coverline("build/router/router.js", 1108); -origin = Y.getLocation().protocol + origin; - } - - _yuitest_coverline("build/router/router.js", 1111); -return origin + (path || '/') + (query || '') + (hash || ''); - } - - // Will default to the current origin and current path. - _yuitest_coverline("build/router/router.js", 1115); -resolved = this._getOrigin() + this._resolvePath(path); - - // A path or query for the specified URL trumps the current URL's. - _yuitest_coverline("build/router/router.js", 1118); -if (path || query) { - _yuitest_coverline("build/router/router.js", 1119); -return resolved + (query || '') + (hash || ''); - } - - _yuitest_coverline("build/router/router.js", 1122); -query = this._getQuery(); - - _yuitest_coverline("build/router/router.js", 1124); -return resolved + (query ? ('?' + query) : '') + (hash || ''); - }, - - /** - Saves a history entry using either `pushState()` or the location hash. - - This method enforces the same-origin security constraint; attempting to save - a `url` that is not from the same origin as the current URL will result in - an error. - - @method _save - @param {String} [url] URL for the history entry. - @param {Boolean} [replace=false] If `true`, the current history entry will - be replaced instead of a new one being added. - @chainable - @protected - **/ - _save: function (url, replace) { - _yuitest_coverfunc("build/router/router.js", "_save", 1141); -_yuitest_coverline("build/router/router.js", 1142); -var urlIsString = typeof url === 'string', - currentPath, root; - - // Perform same-origin check on the specified URL. - _yuitest_coverline("build/router/router.js", 1146); -if (urlIsString && !this._hasSameOrigin(url)) { - _yuitest_coverline("build/router/router.js", 1147); -Y.error('Security error: The new URL must be of the same origin as the current URL.'); - _yuitest_coverline("build/router/router.js", 1148); -return this; - } - - // Joins the `url` with the `root`. - _yuitest_coverline("build/router/router.js", 1152); -urlIsString && (url = this._joinURL(url)); - - // Force _ready to true to ensure that the history change is handled - // even if _save is called before the `ready` event fires. - _yuitest_coverline("build/router/router.js", 1156); -this._ready = true; - - _yuitest_coverline("build/router/router.js", 1158); -if (this._html5) { - _yuitest_coverline("build/router/router.js", 1159); -this._history[replace ? 'replace' : 'add'](null, {url: url}); - } else { - _yuitest_coverline("build/router/router.js", 1161); -currentPath = Y.getLocation().pathname; - _yuitest_coverline("build/router/router.js", 1162); -root = this.get('root'); - - // Determine if the `root` already exists in the current location's - // `pathname`, and if it does then we can exclude it from the - // hash-based path. No need to duplicate the info in the URL. - _yuitest_coverline("build/router/router.js", 1167); -if (root === currentPath || root === this._getPathRoot()) { - _yuitest_coverline("build/router/router.js", 1168); -url = this.removeRoot(url); - } - - // The `hashchange` event only fires when the new hash is actually - // different. This makes sure we'll always dequeue and dispatch - // _all_ router instances, mimicking the HTML5 behavior. - _yuitest_coverline("build/router/router.js", 1174); -if (url === HistoryHash.getHash()) { - _yuitest_coverline("build/router/router.js", 1175); -Y.Router.dispatch(); - } else { - _yuitest_coverline("build/router/router.js", 1177); -HistoryHash[replace ? 'replaceHash' : 'setHash'](url); - } - } - - _yuitest_coverline("build/router/router.js", 1181); -return this; - }, - - /** - Setter for the `routes` attribute. - - @method _setRoutes - @param {Object[]} routes Array of route objects. - @return {Object[]} Array of route objects. - @protected - **/ - _setRoutes: function (routes) { - _yuitest_coverfunc("build/router/router.js", "_setRoutes", 1192); -_yuitest_coverline("build/router/router.js", 1193); -this._routes = []; - - _yuitest_coverline("build/router/router.js", 1195); -YArray.each(routes, function (route) { - // Makes sure to check `callback` for back-compat. - _yuitest_coverfunc("build/router/router.js", "(anonymous 12)", 1195); -_yuitest_coverline("build/router/router.js", 1197); -var callbacks = route.callbacks || route.callback; - - _yuitest_coverline("build/router/router.js", 1199); -this.route(route.path, callbacks); - }, this); - - _yuitest_coverline("build/router/router.js", 1202); -return this._routes.concat(); - }, - - /** - Upgrades a hash-based URL to a full-path URL, if necessary. - - The specified `url` will be upgraded if its of the same origin as the - current URL and has a path-like hash. URLs that don't need upgrading will be - returned as-is. - - @example - app._upgradeURL('http://example.com/#/foo/'); // => 'http://example.com/foo/'; - - @method _upgradeURL - @param {String} url The URL to upgrade from hash-based to full-path. - @return {String} The upgraded URL, or the specified URL untouched. - @protected - @since 3.5.0 - **/ - _upgradeURL: function (url) { - // We should not try to upgrade paths for external URLs. - _yuitest_coverfunc("build/router/router.js", "_upgradeURL", 1221); -_yuitest_coverline("build/router/router.js", 1223); -if (!this._hasSameOrigin(url)) { - _yuitest_coverline("build/router/router.js", 1224); -return url; - } - - _yuitest_coverline("build/router/router.js", 1227); -var hash = (url.match(/#(.*)$/) || [])[1] || '', - hashPrefix = Y.HistoryHash.hashPrefix, - hashPath; - - // Strip any hash prefix, like hash-bangs. - _yuitest_coverline("build/router/router.js", 1232); -if (hashPrefix && hash.indexOf(hashPrefix) === 0) { - _yuitest_coverline("build/router/router.js", 1233); -hash = hash.replace(hashPrefix, ''); - } - - _yuitest_coverline("build/router/router.js", 1236); -hash && (hashPath = this._getHashPath(hash)); - - // If the hash looks like a URL path, assume it is, and upgrade it! - _yuitest_coverline("build/router/router.js", 1239); -if (hashPath) { - _yuitest_coverline("build/router/router.js", 1240); -return this._resolveURL(hashPath); - } - - _yuitest_coverline("build/router/router.js", 1243); -return url; - }, - - // -- Protected Event Handlers --------------------------------------------- - - /** - Handles `history:change` and `hashchange` events. - - @method _afterHistoryChange - @param {EventFacade} e - @protected - **/ - _afterHistoryChange: function (e) { - _yuitest_coverfunc("build/router/router.js", "_afterHistoryChange", 1255); -_yuitest_coverline("build/router/router.js", 1256); -var self = this, - src = e.src, - prevURL = self._url, - currentURL = self._getURL(); - - _yuitest_coverline("build/router/router.js", 1261); -self._url = currentURL; - - // Handles the awkwardness that is the `popstate` event. HTML5 browsers - // fire `popstate` right before they fire `hashchange`, and Chrome fires - // `popstate` on page load. If this router is not ready or the previous - // and current URLs only differ by their hash, then we want to ignore - // this `popstate` event. - _yuitest_coverline("build/router/router.js", 1268); -if (src === 'popstate' && - (!self._ready || prevURL.replace(/#.*$/, '') === currentURL.replace(/#.*$/, ''))) { - - _yuitest_coverline("build/router/router.js", 1271); -return; - } - - _yuitest_coverline("build/router/router.js", 1274); -self._dispatch(self._getPath(), currentURL, src); - }, - - // -- Default Event Handlers ----------------------------------------------- - - /** - Default handler for the `ready` event. - - @method _defReadyFn - @param {EventFacade} e - @protected - **/ - _defReadyFn: function (e) { - _yuitest_coverfunc("build/router/router.js", "_defReadyFn", 1286); -_yuitest_coverline("build/router/router.js", 1287); -this._ready = true; - } -}, { - // -- Static Properties ---------------------------------------------------- - NAME: 'router', - - ATTRS: { - /** - Whether or not this browser is capable of using HTML5 history. - - Setting this to `false` will force the use of hash-based history even on - HTML5 browsers, but please don't do this unless you understand the - consequences. - - @attribute html5 - @type Boolean - @initOnly - **/ - html5: { - // Android versions lower than 3.0 are buggy and don't update - // window.location after a pushState() call, so we fall back to - // hash-based history for them. - // - // See http://code.google.com/p/android/issues/detail?id=17471 - valueFn: function () { _yuitest_coverfunc("build/router/router.js", "valueFn", 1311); -_yuitest_coverline("build/router/router.js", 1311); -return Y.Router.html5; }, - writeOnce: 'initOnly' - }, - - /** - Absolute root path from which all routes should be evaluated. - - For example, if your router is running on a page at - `http://example.com/myapp/` and you add a route with the path `/`, your - route will never execute, because the path will always be preceded by - `/myapp`. Setting `root` to `/myapp` would cause all routes to be - evaluated relative to that root URL, so the `/` route would then execute - when the user browses to `http://example.com/myapp/`. - - @attribute root - @type String - @default `''` - **/ - root: { - value: '' - }, - - /** - Array of route objects. - - Each item in the array must be an object with the following properties: - - * `path`: String or regex representing the path to match. See the docs - for the `route()` method for more details. - - * `callbacks`: Function or a string representing the name of a - function on this router instance that should be called when the - route is triggered. An array of functions and/or strings may also be - provided. See the docs for the `route()` method for more details. - - This attribute is intended to be used to set routes at init time, or to - completely reset all routes after init. To add routes after init without - resetting all existing routes, use the `route()` method. - - @attribute routes - @type Object[] - @default `[]` - @see route - **/ - routes: { - value : [], - getter: '_getRoutes', - setter: '_setRoutes' - } - }, - - // Used as the default value for the `html5` attribute, and for testing. - html5: Y.HistoryBase.html5 && (!Y.UA.android || Y.UA.android >= 3), - - // To make this testable. - _instances: instances, - - /** - Dispatches to the first route handler that matches the specified `path` for - all active router instances. - - This provides a mechanism to cause all active router instances to dispatch - to their route handlers without needing to change the URL or fire the - `history:change` or `hashchange` event. - - @method dispatch - @static - @since 3.6.0 - **/ - dispatch: function () { - _yuitest_coverfunc("build/router/router.js", "dispatch", 1380); -_yuitest_coverline("build/router/router.js", 1381); -var i, len, router; - - _yuitest_coverline("build/router/router.js", 1383); -for (i = 0, len = instances.length; i < len; i += 1) { - _yuitest_coverline("build/router/router.js", 1384); -router = instances[i]; - - _yuitest_coverline("build/router/router.js", 1386); -if (router) { - _yuitest_coverline("build/router/router.js", 1387); -router._dispatch(router._getPath(), router._getURL()); - } - } - } -}); - -/** -The `Controller` class was deprecated in YUI 3.5.0 and is now an alias for the -`Router` class. Use that class instead. This alias will be removed in a future -version of YUI. - -@class Controller -@constructor -@extends Base -@deprecated Use `Router` instead. -@see Router -**/ -_yuitest_coverline("build/router/router.js", 1404); -Y.Controller = Y.Router; - - -}, '3.7.3', {"optional": ["querystring-parse"], "requires": ["array-extras", "base-build", "history"]}); diff --git a/lib/yuilib/3.7.3/build/router/router-min.js b/lib/yuilib/3.7.3/build/router/router-min.js deleted file mode 100644 index cf2f00e0877..00000000000 --- a/lib/yuilib/3.7.3/build/router/router-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("router",function(e,t){function l(){l.superclass.constructor.apply(this,arguments)}var n=e.HistoryHash,r=e.QueryString,i=e.Array,s=e.Lang,o=e.config.win,u=[],a=[],f="ready";e.Router=e.extend(l,e.Base,{_regexPathParam:/([:*])([\w\-]+)?/g,_regexUrlQuery:/\?([^#]*).*$/,_regexUrlOrigin:/^(?:[^\/#?:]+:\/\/|\/\/)[^\/]*/,initializer:function(t){var n=this;n._html5=n.get("html5"),n._routes=[],n._url=n._getURL(),n._setRoutes(t&&t.routes?t.routes:n.get("routes")),n._html5?(n._history=new e.HistoryHTML5({force:!0}),n._historyEvents=e.after("history:change",n._afterHistoryChange,n)):n._historyEvents=e.on("hashchange",n._afterHistoryChange,o,n),n.publish(f,{defaultFn:n._defReadyFn,fireOnce:!0,preventable:!1}),n.once("initializedChange",function(){e.once("load",function(){setTimeout(function(){n.fire(f,{dispatched:!!n._dispatched})},20)})}),u.push(this)},destructor:function(){var e=i.indexOf(u,this);e>-1&&u.splice(e,1),this._historyEvents&&this._historyEvents.detach()},dispatch:function(){return this.once(f,function(){this._ready=!0;if(this._html5&&this.upgrade())return;this._dispatch(this._getPath(),this._getURL())}),this},getPath:function(){return this._getPath()},hasRoute:function(e){var t;return this._hasSameOrigin(e)?(this._html5||(e=this._upgradeURL(e)),t=this.removeQuery(this.removeRoot(e)),!!this.match(t).length):!1},match:function(e){return i.filter(this._routes,function(t){return e.search(t.regex)>-1})},removeRoot:function(e){var t=this.get("root");return e=e.replace(this._regexUrlOrigin,""),t&&e.indexOf(t)===0&&(e=e.substring(t.length)),e.charAt(0)==="/"?e:"/"+e},removeQuery:function(e){return e.replace(/\?.*$/,"")},replace:function(e){return this._queue(e,!0)},route:function(e,t){t=i.flatten(i(arguments,1,!0));var n=[];return this._routes.push({callbacks:t,keys:n,path:e,regex:this._getRegex(e,n),callback:t[0]}),this},save:function(e){return this._queue(e)},upgrade:function(){if(!this._html5)return!1;var e=this._getHashPath();return e?(this.once(f,function(){this.replace(e)}),!0):!1},_decode:function(e){return decodeURIComponent(e.replace(/\+/g," "))},_dequeue:function(){var t=this,n;return YUI.Env.windowLoaded?(n=a.shift(),n?n():this):(e.once("load",function(){t._dequeue()}),this)},_dispatch:function(t,n,r){var s=this,o=s.match(t),u=[],a,f,l;return s._dispatching=s._dispatched=!0,!o||!o.length?(s._dispatching=!1,s):(f=s._getRequest(t,n,r),l=s._getResponse(f),f.next=function(n){var r,c;if(n)n==="route"?(u=[],f.next()):e.error(n);else if(r=u.shift())typeof r=="string"&&(r=s[r]),f.pendingCallbacks=u.length,r.call(s,f,l,f.next);else if(c=o.shift())u=c.callbacks.concat(),a=c.regex.exec(t),a.length===c.keys.length+1?f.params=i.hash(c.keys,a.slice(1)):f.params=a.concat(),f.pendingRoutes=o.length,f.next()},f.next(),s._dispatching=!1,s._dequeue())},_getHashPath:function(e){return e||(e=n.getHash()),e&&e.charAt(0)==="/"?this._joinURL(e):""},_getOrigin:function(){var t=e.getLocation();return t.origin||t.protocol+"//"+t.host},_getPath:function(){var t=!this._html5&&this._getHashPath()||e.getLocation().pathname;return this.removeQuery(this.removeRoot(t))},_getPathRoot:function(){var t="/",n=e.getLocation().pathname,r;return n.charAt(n.length-1)===t?n:(r=n.split(t),r.pop(),r.join(t)+t)},_getQuery:function(){var t=e.getLocation(),r,i;return this._html5?t.search.substring(1):(r=n.getHash(),i=r.match(this._regexUrlQuery),r&&i?i[1]:t.search.substring(1))},_getRegex:function(e,t){return e instanceof RegExp?e:e==="*"?/.*/:(e=e.replace(this._regexPathParam,function(e,n,r){return r?(t.push(r),n==="*"?"(.*?)":"([^/#?]*)"):n==="*"?".*":e}),new RegExp("^"+e+"$"))},_getRequest:function(e,t,n){return{path:e,query:this._parseQuery(this._getQuery()),url:t,src:n}},_getResponse:function(e){var t=function(){return e.next.apply(this,arguments)};return t.req=e,t},_getRoutes:function(){return this._routes.concat()},_getURL:function(){var t=e.getLocation().toString();return this._html5||(t=this._upgradeURL(t)),t},_hasSameOrigin:function(t){var n=(t&&t.match(this._regexUrlOrigin)||[])[0];return n&&n.indexOf("//")===0&&(n=e.getLocation().protocol+n),!n||n===this._getOrigin()},_joinURL:function(e){var t=this.get("root");return e=this.removeRoot(e),e.charAt(0)==="/"&&(e=e.substring(1)),t&&t.charAt(t.length-1)==="/"?t+e:t+"/"+e},_normalizePath:function(e){var t="..",n="/",r,i,s,o,u,a;if(!e||e===n)return n;o=e.split(n),a=[];for(r=0,i=o.length;r=3),_instances:u,dispatch:function(){var e,t,n;for(e=0,t=u.length;e0?t[n.rtl?"prev":"next"]():t[n.rtl?"next":"prev"]())},_beforeHostMousewheel:function(t){var n=this,r=n._host,i=r._bb,s=t.wheelDelta<0,o=n._cAxis;r._gesture={axis:b};if(i.contains(t.target)&&o[b])return s?n.next():n.prev(),t.preventDefault(),new e.Do.Prevent},_beforeHostFlick:function(t){var n=this,r=n.get(g),i=t.flick.axis||!1;if(r[i])return new e.Do.Prevent},_afterHostScrollEnded:function(e){var t=this,n=t._host,r=t._cIndex,i=n.get(a),s=n.get(f),o=t._cAxis;o[b]?t._pageDims[r].scrollX=i:t._pageDims[r].scrollY=s,t._optimize()},_afterIndexChange:function(e){var t=this,n=t._host,r=e.newVal,i=t._pageDims[r],s=n._cAxis,u=t._cAxis;t._cIndex=r,s[y]&&s[b]&&(u[b]?(n._maxScrollX=i.maxScrollX,n.set(a,i.scrollX,{src:o})):u[y]&&(n._maxScrollY=i.maxScrollY,n.set(f,i.scrollY,{src:o}))),e.src!==o&&t.scrollToIndex(r)},_optimize:function(){if(!this._optimizeMemory)return!1;var e=this,t=e._cIndex,n=e._getStage(t);e._showNodes(n.visible),e._hideNodes(n.hidden)},_getStage:function(e){var t=this._pageBuffer,n=this.get(l),r=this._getPageNodes(),i=Math.max(0,e-t),s=Math.min(n,e+1+t);return{visible:r.splice(i,s-i),hidden:r}},_showNodes:function(e){e&&e.removeClass(i).setStyle("visibility","")},_hideNodes:function(e){e&&e.addClass(i).setStyle("visibility","hidden")},_getPageNodes:function(){var e=this,t=e._host,n=t._cb,r=e.get(d),i=r?n.all(r):n.get("children");return i},next:function(){var e=this,t=e._cIndex,n=t+1,r=this.get(l);if(n>=r)return;e.set(u,n)},prev:function(){var e=this,t=e._cIndex,n=t-1;if(n<0)return;e.set(u,n)},scrollTo:function(){return this.scrollToIndex.apply(this,arguments)},scrollToIndex:function(e,t,n){var r=this,i=r._host,s=r._getPageNodes().item(e),o=r._cAxis[y]?a:f,l=s.get(o===a?"offsetLeft":"offsetTop");t=t!==undefined?t:w.TRANSITION.duration,n=n!==undefined?t:w.TRANSITION.easing,r.set(u,e),r._showNodes(s),i.set(o,l,{duration:t,easing:n})},_axisSetter:function(t,n){if(e.Lang.isString(t))return{x:t.match(/x/i)?!0:!1,y:t.match(/y/i)?!0:!1}},_afterAxisChange:function(e){this._cAxis=e.newVal}},{NAME:"pluginScrollViewPaginator",NS:"pages",ATTRS:{axis:{setter:"_axisSetter",writeOnce:"initOnly"},selector:{value:null},index:{value:0,validator:function(e){return!0}},total:{value:0}},TRANSITION:{duration:300,easing:"ease-out"}}),e.namespace("Plugin").ScrollViewPaginator=w},"3.7.3",{requires:["plugin","classnamemanager"]}); diff --git a/lib/yuilib/3.7.3/build/scrollview-scrollbars/scrollview-scrollbars-min.js b/lib/yuilib/3.7.3/build/scrollview-scrollbars/scrollview-scrollbars-min.js deleted file mode 100644 index 1bedc760846..00000000000 --- a/lib/yuilib/3.7.3/build/scrollview-scrollbars/scrollview-scrollbars-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("scrollview-scrollbars",function(e,t){function O(){O.superclass.constructor.apply(this,arguments)}var n=e.ClassNameManager.getClassName,r,i=e.Transition,s=i.useNative,o="scrollbar",u="scrollview",a="verticalNode",f="horizontalNode",l="childCache",c="top",h="left",p="width",d="height",v="scrollWidth",m="scrollHeight",g="_sbh",y="_sbv",b=e.ScrollView._TRANSITION.PROPERTY,w="transform",E="translateX(",S="translateY(",x="scaleX(",T="scaleY(",N="scrollX",C="scrollY",k="px",L=")",A=k+L;O.CLASS_NAMES={showing:n(u,o,"showing"),scrollbar:n(u,o),scrollbarV:n(u,o,"vert"),scrollbarH:n(u,o,"horiz"),scrollbarVB:n(u,o,"vert","basic"),scrollbarHB:n(u,o,"horiz","basic"),child:n(u,"child"),first:n(u,"first"),middle:n(u,"middle"),last:n(u,"last")},r=O.CLASS_NAMES,O.NAME="pluginScrollViewScrollbars",O.NS="scrollbars",O.SCROLLBAR_TEMPLATE=["
          ",'','','',"
          "].join(""),O.ATTRS={verticalNode:{setter:"_setNode",valueFn:"_defaultNode"},horizontalNode:{setter:"_setNode",valueFn:"_defaultNode"}},e.namespace("Plugin").ScrollViewScrollbars=e.extend(O,e.Plugin.Base,{initializer:function(){this._host=this.get("host"),this.afterHostEvent("scrollEnd",this._hostScrollEnd),this.afterHostMethod("scrollTo",this._update),this.afterHostMethod("_uiDimensionsChange",this._hostDimensionsChange)},_hostDimensionsChange:function(){var t=this._host,n=t._cAxis;this._dims=t._getScrollDims(),n&&n.y&&this._renderBar(this.get(a),!0,"vert"),n&&n.x&&this._renderBar(this.get(f),!0,"horiz"),this._update(),e.later(500,this,"flash",!0)},_hostScrollEnd:function(e){this._host._flicking||this.flash()},_renderBar:function(e,t){var n=e.inDoc(),i=this._host._bb,s=e.getData("isHoriz")?r.scrollbarHB:r.scrollbarVB;t&&!n?(i.append(e),e.toggleClass(s,this._basic),this._setChildCache(e)):!t&&n&&(e.remove(),this._clearChildCache(e))},_setChildCache:function(e){var t=e.get("children"),n=t.item(0),r=t.item(1),i=t.item(2),s=e.getData("isHoriz")?"offsetWidth":"offsetHeight";e.setStyle(b,w),r.setStyle(b,w),i.setStyle(b,w),e.setData(l,{fc:n,lc:i,mc:r,fcSize:n&&n.get(s),lcSize:i&&i.get(s)})},_clearChildCache:function(e){e.clearData(l)},_updateBar:function(e,t,n,r){var i=this._host,o=this._basic,u=i._cb,a=0,f=1,v=e.getData(l),m=v.lc,b=v.mc,O=v.fcSize,M=v.lcSize,_,D,P,H,B,j,F,I,q,R;r?(j=p,F=h,I=g,q=this._dims.offsetWidth,R=this._dims.scrollWidth,H=E,B=x,t=t!==undefined?t:i.get(N)):(j=d,F=c,I=y,q=this._dims.offsetHeight,R=this._dims.scrollHeight,H=S,B=T,t=t!==undefined?t:i.get(C)),a=Math.floor(q*(q/R)),f=Math.floor(t/(R-q)*(q-a)),a>q&&(a=1),f>q-a?a-=f-(q-a):f<0&&(a=f+a,f=0),_=a-(O+M),_<0&&(_=0),_===0&&f!==0&&(f=q-(O+M)-1),n!==0?(P={duration:n},s?P.transform=H+f+A:P[F]=f+k,e.transition(P)):s?e.setStyle(w,H+f+A):e.setStyle(F,f+k);if(this[I]!==_){this[I]=_;if(_>0){n!==0?(P={duration:n},s?P.transform=B+_+L:P[j]=_+k,b.transition(P)):s?b.setStyle(w,B+_+L):b.setStyle(j,_+k);if(!r||!o)D=a-M,n!==0?(P={duration:n},s?P.transform=H+D+A:P[F]=D,m.transition(P)):s?m.setStyle(w,H+D+A):m.setStyle(F,D+k)}}},_update:function(e,t,n,r){var i=this.get(a),s=this.get(f),o=this._host,u=o._cAxis;n=(n||0)/1e3,this._showing||this.show(),u&&u.y&&i&&this._updateBar(i,t,n,!1),u&&u.x&&s&&this._updateBar(s,e,n,!0)},show:function(e){this._show(!0,e)},hide:function(e){this._show(!1,e)},_show:function(e,t){var n=this.get(a),r=this.get(f),i=t?.6:0,s=e?1:0,o;this._showing=e,this._flashTimer&&this._flashTimer.cancel(),o={duration:i,opacity:s},n&&n.transition(o),r&&r.transition(o)},flash:function(){var t=this._host;this.show(!0),this._flashTimer=e.later(800,this,"hide",!0)},_setNode:function(t,n){var i=n===f;return t=e.one(t),t&&(t.addClass(r.scrollbar),t.addClass(i?r.scrollbarH:r.scrollbarV),t.setData("isHoriz",i)),t},_defaultNode:function(){return e.Node.create(O.SCROLLBAR_TEMPLATE)},_basic:e.UA.ie&&e.UA.ie<=8})},"3.7.3",{requires:["classnamemanager","transition","plugin"],skinnable:!0}); diff --git a/lib/yuilib/3.7.3/build/simpleyui/simpleyui-min.js b/lib/yuilib/3.7.3/build/simpleyui/simpleyui-min.js deleted file mode 100644 index 9cf12a1c481..00000000000 --- a/lib/yuilib/3.7.3/build/simpleyui/simpleyui-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -typeof YUI!="undefined"&&(YUI._YUI=YUI);var YUI=function(){var e=0,t=this,n=arguments,r=n.length,i=function(e,t){return e&&e.hasOwnProperty&&e instanceof t},s=typeof YUI_config!="undefined"&&YUI_config;i(t,YUI)?(t._init(),YUI.GlobalConfig&&t.applyConfig(YUI.GlobalConfig),s&&t.applyConfig(s),r||t._setup()):t=new YUI;if(r){for(;e-1&&(n="3.5.0"),e={applyConfig:function(e){e=e||u;var t,n,r=this.config,i=r.modules,s=r.groups,o=r.aliases,a=this.Env._loader;for(n in e)e.hasOwnProperty(n)&&(t=e[n],i&&n=="modules"?E(i,t):o&&n=="aliases"?E(o,t):s&&n=="groups"?E(s,t):n=="win"?(r[n]=t&&t.contentWindow||t,r.doc=r[n]?r[n].document:null):n!="_yuid"&&(r[n]=t));a&&a._config(e)},_config:function(e){this.applyConfig(e)},_init:function(){var e,t,r=this,s=YUI.Env,u=r.Env,a;r.version=n;if(!u){r.Env={core:["get","features","intl-base","yui-log","yui-later"],loaderExtras:["loader-rollup","loader-yui3"],mods:{},versions:{},base:i,cdn:i+n+"/build/",_idx:0,_used:{},_attached:{},_missed:[],_yidx:0,_uidx:0,_guidp:"y",_loaded:{},_BASE_RE:/(?:\?(?:[^&]*&)*([^&]*))?\b(simpleyui|yui(?:-\w+)?)\/\2(?:-(min|debug))?\.js/,parseBasePath:function(e,t){var n=e.match(t),r,i;return n&&(r=RegExp.leftContext||e.slice(0,e.indexOf(n[0])),i=n[3],n[1]&&(r+="?"+n[1]),r={filter:i,path:r}),r},getBase:s&&s.getBase||function(t){var n=h&&h.getElementsByTagName("script")||[],i=u.cdn,s,o,a,f;for(o=0,a=n.length;o',YUI.Env.cssStampEl=t.firstChild,h.body?h.body.appendChild(YUI.Env.cssStampEl):p.insertBefore(YUI.Env.cssStampEl,p.firstChild)),r.config.lang=r.config.lang||"en-US",r.config.base=YUI.config.base||r.Env.getBase(r.Env._BASE_RE);if(!e||!"mindebug".indexOf(e))e="min";e=e?"-"+e:e,r.config.loaderPath=YUI.config.loaderPath||"loader/loader"+e+".js"},_setup:function(e){var t,n=this,r=[],i=YUI.Env.mods,s=n.config.core||[].concat(YUI.Env.core);for(t=0;t-1){s=o.split(r);for(i=s[0]=="YAHOO"?1:0;ii&&i in t?t[i]:!0);return n},h.indexOf=f._isNative(l.indexOf)?function(e,t,n){return l.indexOf.call(e,t,n)}:function(e,t,n){var r=e.length;n=+n||0,n=(n>0||-1)*Math.floor(Math.abs(n)),n<0&&(n+=r,n<0&&(n=0));for(;n1?Array.prototype.join.call(arguments,d):String(r);if(!(i in t)||n&&t[i]==n)t[i]=e.apply(e,arguments);return t[i]}},e.getLocation=function(){var t=e.config.win;return t&&t.location},e.merge=function(){var e=0,t=arguments.length,n={},r,i;for(;e-1},g.each=function(t,n,r,i){var s;for(s in t)(i||E(t,s))&&n.call(r||e,t[s],s,t);return e},g.some=function(t,n,r,i){var s;for(s in t)if(i||E(t,s))if(n.call(r||e,t[s],s,t))return!0;return!1},g.getValue=function(t,n){if(!f.isObject(t))return m;var r,i=e.Array(n),s=i.length;for(r=0;t!==m&&r=0){for(i=0;u!==m&&i0),t||(typeof process=="object"&&process.versions&&process.versions.node&&(s.os=process.platform,s.nodejs=n(process.versions.node)),YUI.Env.UA=s),s},e.UA=YUI.Env.UA||YUI.Env.parseUA(),e.UA.compareVersions=function(e,t){var n,r,i,s,o,u;if(e===t)return 0;r=(e+"").split("."),s=(t+"").split(".");for(o=0,u=Math.max(r.length,s.length);oi)return 1}return 0},YUI.Env.aliases={anim:["anim-base","anim-color","anim-curve","anim-easing","anim-node-plugin","anim-scroll","anim-xy"],"anim-shape-transform":["anim-shape"],app:["app-base","app-content","app-transitions","lazy-model-list","model","model-list","model-sync-rest","router","view","view-node-map"],attribute:["attribute-base","attribute-complex"],autocomplete:["autocomplete-base","autocomplete-sources","autocomplete-list","autocomplete-plugin"],base:["base-base","base-pluginhost","base-build"],cache:["cache-base","cache-offline","cache-plugin"],collection:["array-extras","arraylist","arraylist-add","arraylist-filter","array-invoke"],controller:["router"],dataschema:["dataschema-base","dataschema-json","dataschema-xml","dataschema-array","dataschema-text"],datasource:["datasource-local","datasource-io","datasource-get","datasource-function","datasource-cache","datasource-jsonschema","datasource-xmlschema","datasource-arrayschema","datasource-textschema","datasource-polling"],datatable:["datatable-core","datatable-table","datatable-head","datatable-body","datatable-base","datatable-column-widths","datatable-message","datatable-mutable","datatable-sort","datatable-datasource"],"datatable-deprecated":["datatable-base-deprecated","datatable-datasource-deprecated","datatable-sort-deprecated","datatable-scroll-deprecated"],datatype:["datatype-date","datatype-number","datatype-xml"],"datatype-date":["datatype-date-parse","datatype-date-format","datatype-date-math"],"datatype-number":["datatype-number-parse","datatype-number-format"],"datatype-xml":["datatype-xml-parse","datatype-xml-format"],dd:["dd-ddm-base","dd-ddm","dd-ddm-drop","dd-drag","dd-proxy","dd-constrain","dd-drop","dd-scroll","dd-delegate"],dom:["dom-base","dom-screen","dom-style","selector-native","selector"],editor:["frame","editor-selection","exec-command","editor-base","editor-para","editor-br","editor-bidi","editor-tab","createlink-base"],event:["event-base","event-delegate","event-synthetic","event-mousewheel","event-mouseenter","event-key","event-focus","event-resize","event-hover","event-outside","event-touch","event-move","event-flick","event-valuechange","event-tap"],"event-custom":["event-custom-base","event-custom-complex"],"event-gestures":["event-flick","event-move"],handlebars:["handlebars-compiler"],highlight:["highlight-base","highlight-accentfold"],history:["history-base","history-hash","history-hash-ie","history-html5"],io:["io-base","io-xdr","io-form","io-upload-iframe","io-queue"],json:["json-parse","json-stringify"],loader:["loader-base","loader-rollup","loader-yui3"],node:["node-base","node-event-delegate","node-pluginhost","node-screen","node-style"],pluginhost:["pluginhost-base","pluginhost-config"],querystring:["querystring-parse","querystring-stringify"],recordset:["recordset-base","recordset-sort","recordset-filter","recordset-indexer"],resize:["resize-base","resize-proxy","resize-constrain"],slider:["slider-base","slider-value-range","clickable-rail","range-slider"],text:["text-accentfold","text-wordbreak"],widget:["widget-base","widget-htmlparser","widget-skin","widget-uievents"]}},"3.7.3",{use:["get","features","intl-base","yui-log","yui-later"]}),YUI.add("get",function(e,t){var n=e.Lang,r,i,s;e.Get=i={cssOptions:{attributes:{rel:"stylesheet"},doc:e.config.linkDoc||e.config.doc,pollInterval:50},jsOptions:{autopurge:!0,doc:e.config.scriptDoc||e.config.doc},options:{attributes:{charset:"utf-8"},purgethreshold:20},REGEX_CSS:/\.css(?:[?;].*)?$/i,REGEX_JS:/\.js(?:[?;].*)?$/i,_insertCache:{},_pending:null,_purgeNodes:[],_queue:[],abort:function(e){var t,n,r,i,s;if(!e.abort){n=e,s=this._pending,e=null;if(s&&s.transaction.id===n)e=s.transaction,this._pending=null;else for(t=0,i=this._queue.length;t=e&&this._purge(this._purgeNodes)},_getEnv:function(){var t=e.config.doc,n=e.UA;return this._env={async:t&&t.createElement("script").async===!0||n.ie>=10,cssFail:n.gecko>=9||n.compareVersions(n.webkit,535.24)>=0,cssLoad:(!n.gecko&&!n.webkit||n.gecko>=9||n.compareVersions(n.webkit,535.24)>=0)&&!(n.chrome&&n.chrome<=18),preservesScriptOrder:!!(n.gecko||n.opera||n.ie&&n.ie>=10)}},_getTransaction:function(t,r){var i=[],o,u,a,f;n.isArray(t)||(t=[t]),r=e.merge(this.options,r),r.attributes=e.merge(this.options.attributes,r.attributes);for(o=0,u=t.length;o-1&&n.splice(i,1))}}},i.script=i.js,i.Transaction=s=function(t,n){var r=this;r.id=s._lastId+=1,r.data=n.data,r.errors=[],r.nodes=[],r.options=n,r.requests=t,r._callbacks=[],r._queue=[],r._reqsWaiting=0,r.tId=r.id,r.win=n.win||e.config.win},s._lastId=0,s.prototype={_state:"new",abort:function(e){this._pending=null,this._pendingCSS=null,this._pollTimer=clearTimeout(this._pollTimer),this._queue=[],this._reqsWaiting=0,this.errors.push({error:e||"Aborted"}),this._finish()},execute:function(e){var t=this,n=t.requests,r=t._state,i,s,o,u;if(r==="done"){e&&e(t.errors.length?t.errors:null,t);return}e&&t._callbacks.push(e);if(r==="executing")return;t._state="executing",t._queue=o=[],t.options.timeout&&(t._timeout=setTimeout(function(){t.abort("Timeout")},t.options.timeout)),t._reqsWaiting=n.length;for(i=0,s=n.length;i=10?(o.onerror=function(){setTimeout(c,0)},o.onload=function(){setTimeout(h,0)}):(o.onerror=c,o.onload=h),!n.cssFail&&!s&&(f=setTimeout(c,t.timeout||3e3))),this.nodes.push(o),r.parentNode.insertBefore(o,r)},_next:function(){if(this._pending)return;this._queue.length?this._insert(this._queue.shift()):this._reqsWaiting||this._finish()},_poll:function(t){var n=this,r=n._pendingCSS,i=e.UA.webkit,s,o,u,a,f,l;if(t){r||(r=n._pendingCSS=[]),r.push(t);if(n._pollTimer)return}n._pollTimer=null;for(s=0;s=0)if(l[u].href===a){r.splice(s,1),s-=1,n._progress(null,f);break}}else try{o=!!f.node.sheet.cssRules,r.splice(s,1),s-=1,n._progress(null,f)}catch(c){}}r.length&&(n._pollTimer=setTimeout(function(){n._poll.call(n)},n.options.pollInterval))},_progress:function(e,t){var n=this.options;e&&(t.error=e,this.errors.push({error:e,request:t})),t.node._yuiget_finished=t.finished=!0,n.onProgress&&n.onProgress.call(n.context||this,this._getEventData(t)),t.autopurge&&(i._autoPurge(this.options.purgethreshold),i._purgeNodes.push(t.node)),this._pending===t&&(this._pending=null),this._reqsWaiting-=1,this._next()}}},"3.7.3",{requires:["yui-base"]}),YUI.add("features",function(e,t){var n={};e.mix(e.namespace("Features"),{tests:n,add:function(e,t,r){n[e]=n[e]||{},n[e][t]=r},all:function(t,r){var i=n[t],s=[];return i&&e.Object.each(i,function(n,i){s.push(i+":"+(e.Features.test(t,i,r)?1:0))}),s.length?s.join(";"):""},test:function(t,r,i){i=i||[];var s,o,u,a=n[t],f=a&&a[r];return!f||(s=f.result,e.Lang.isUndefined(s)&&(o=f.ua,o&&(s=e.UA[o]),u=f.test,u&&(!o||s)&&(s=u.apply(e,i)),f.result=s)),s}});var r=e.Features.add;r("load","0",{name:"app-transitions-native",test:function(e){var t=e.config.doc,n=t?t.documentElement:null;return n&&n.style?"MozTransition"in n.style||"WebkitTransition"in n.style||"transition"in n.style:!1},trigger:"app-transitions"}),r("load","1",{name:"autocomplete-list-keys",test:function(e){return!e.UA.ios&&!e.UA.android},trigger:"autocomplete-list"}),r("load","2",{name:"dd-gestures",trigger:"dd-drag",ua:"touchEnabled"}),r("load","3",{name:"dom-style-ie",test:function(e){var t=e.Features.test,n=e.Features.add,r=e.config.win,i=e.config.doc,s="documentElement",o=!1;return n("style","computedStyle",{test:function(){return r&&"getComputedStyle"in r}}),n("style","opacity",{test:function(){return i&&"opacity"in i[s].style}}),o=!t("style","opacity")&&!t("style","computedStyle"),o},trigger:"dom-style"}),r("load","4",{name:"editor-para-ie",trigger:"editor-para",ua:"ie",when:"instead"}),r("load","5",{name:"event-base-ie",test:function(e){var t=e.config.doc&&e.config.doc.implementation;return t&&!t.hasFeature("Events","2.0")},trigger:"node-base"}),r("load","6",{name:"graphics-canvas",test:function(e){var t=e.config.doc,n=e.config.defaultGraphicEngine&&e.config.defaultGraphicEngine=="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return(!i||n)&&r&&r.getContext&&r.getContext("2d")},trigger:"graphics"}),r("load","7",{name:"graphics-canvas-default",test:function(e){var t=e.config.doc,n=e.config.defaultGraphicEngine&&e.config.defaultGraphicEngine=="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return(!i||n)&&r&&r.getContext&&r.getContext("2d")},trigger:"graphics"}),r("load","8",{name:"graphics-svg",test:function(e){var t=e.config.doc,n=!e.config.defaultGraphicEngine||e.config.defaultGraphicEngine!="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return i&&(n||!r)},trigger:"graphics"}),r("load","9",{name:"graphics-svg-default",test:function(e){var t=e.config.doc,n=!e.config.defaultGraphicEngine||e.config.defaultGraphicEngine!="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return i&&(n||!r)},trigger:"graphics"}),r("load","10",{name:"graphics-vml",test:function(e){var t=e.config.doc,n=t&&t.createElement("canvas");return t&&!t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")&&(!n||!n.getContext||!n.getContext("2d"))},trigger:"graphics"}),r("load","11",{name:"graphics-vml-default",test:function(e){var t=e.config.doc,n=t&&t.createElement("canvas");return t&&!t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")&&(!n||!n.getContext||!n.getContext("2d"))},trigger:"graphics"}),r("load","12",{name:"history-hash-ie",test:function(e){var t=e.config.doc&&e.config.doc.documentMode;return e.UA.ie&&(!("onhashchange"in e.config.win)||!t||t<8)},trigger:"history-hash"}),r("load","13",{name:"io-nodejs",trigger:"io-base",ua:"nodejs"}),r("load","14",{name:"scrollview-base-ie",trigger:"scrollview-base",ua:"ie"}),r("load","15",{name:"selector-css2",test:function(e){var t=e.config.doc,n=t&&!("querySelectorAll"in t);return n},trigger:"selector"}),r("load","16",{name:"transition-timer",test:function(e){var t=e.config.doc,n=t?t.documentElement:null,r=!0;return n&&n.style&&(r=!("MozTransition"in n.style||"WebkitTransition"in n.style||"transition"in n.style)),r},trigger:"transition"}),r("load","17",{name:"widget-base-ie",trigger:"widget-base",ua:"ie"}),r("load","18",{name:"yql-nodejs",trigger:"yql",ua:"nodejs",when:"after"}),r("load","19",{name:"yql-winjs",trigger:"yql",ua:"winjs",when:"after"})},"3.7.3",{requires:["yui-base"]}),YUI.add("intl-base",function(e,t){var n=/[, ]/;e.mix(e.namespace("Intl"),{lookupBestLang:function(t,r){function a(e){var t;for(t=0;t0){o=a(s);if(o)return o;u=s.lastIndexOf("-");if(!(u>=0))break;s=s.substring(0,u),u>=2&&s.charAt(u-2)==="-"&&(s=s.substring(0,u-2))}}return""}})},"3.7.3",{requires:["yui-base"]}),YUI.add("yui-log",function(e,t){var n=e,r="yui:log",i="undefined",s={debug:1,info:1,warn:1,error:1};n.log=function(e,t,o,u){var a,f,l,c,h,p=n,d=p.config,v=p.fire?p:YUI.Env.globalEvents;return d.debug&&(o=o||"",typeof o!="undefined"&&(f=d.logExclude,l=d.logInclude,!l||o in l?l&&o in l?a=!l[o]:f&&o in f&&(a=f[o]):a=1),a||(d.useBrowserConsole&&(c=o?o+": "+e:e,p.Lang.isFunction(d.logFn)?d.logFn.call(p,e,t,o):typeof console!=i&&console.log?(h=t&&console[t]&&t in s?t:"log",console[h](c)):typeof opera!=i&&opera.postError(c)),v&&!u&&(v==p&&!v.getEvent(r)&&v.publish(r,{broadcast:2}),v.fire(r,{msg:e,cat:t,src:o})))),p},n.message=function(){return n.log.apply(n,arguments)}},"3.7.3",{requires:["yui-base"]}),YUI.add("yui-later",function(e,t){var n=[];e.later=function(t,r,i,s,o){t=t||0,s=e.Lang.isUndefined(s)?n:e.Array(s),r=r||e.config.win||e;var u=!1,a=r&&e.Lang.isString(i)?r[i]:i,f=function(){u||(a.apply?a.apply(r,s||n):a(s[0],s[1],s[2],s[3]))},l=o?setInterval(f,t):setTimeout(f,t);return{id:l,interval:o,cancel:function(){u=!0,this.interval?clearInterval(l):clearTimeout(l)}}},e.Lang.later=e.later},"3.7.3",{requires:["yui-base"]}),YUI.add("yui",function(e,t){},"3.7.3",{use:["get","features","intl-base","yui-log","yui-later"]}),YUI.add("oop",function(e,t){function a(t,n,i,s,o){if(t&&t[o]&&t!==e)return t[o].call(t,n,i);switch(r.test(t)){case 1:return r[o](t,n,i);case 2:return r[o](e.Array(t,0,!0),n,i);default:return e.Object[o](t,n,i,s)}}var n=e.Lang,r=e.Array,i=Object.prototype,s="_~yuim~_",o=i.hasOwnProperty,u=i.toString;e.augment=function(t,n,r,i,s){var a=t.prototype,f=a&&n,l=n.prototype,c=a||t,h,p,d,v,m;return s=s?e.Array(s):[],f&&(p={},d={},v={},h=function(e,t){if(r||!(t in a))u.call(e)==="[object Function]"?(v[t]=e,p[t]=d[t]=function(){return m(this,e,arguments)}):p[t]=e},m=function(e,t,r){for(var i in v)o.call(v,i)&&e[i]===d[i]&&(e[i]=v[i]);return n.apply(e,s),t.apply(e,r)},i?e.Array.each(i,function(e){e in l&&h(l[e],e)}):e.Object.each(l,h,null,!0)),e.mix(c,p||l,r,i),f||n.apply(c,s),t},e.aggregate=function(t,n,r,i){return e.mix(t,n,r,i,0,!0)},e.extend=function(t,n,r,s){(!n||!t)&&e.error("extend failed, verify dependencies");var o=n.prototype,u=e.Object(o);return t.prototype=u,u.constructor=t,t.superclass=o,n!=Object&&o.constructor==i.constructor&&(o.constructor=n),r&&e.mix(u,r,!0),s&&e.mix(t,s,!0),t},e.each=function(e,t,n,r){return a(e,t,n,r,"each")},e.some=function(e,t,n,r){return a(e,t,n,r,"some")},e.clone=function(t,r,i,o,u,a){if(!n.isObject(t))return t;if(e.instanceOf(t,YUI))return t;var f,l=a||{},c,h=e.each;switch(n.type(t)){case"date":return new Date(t);case"regexp":return t;case"function":return t;case"array":f=[];break;default:if(t[s])return l[t[s]];c=e.guid(),f=r?{}:e.Object(t),t[s]=c,l[c]=t}return!t.addEventListener&&!t.attachEvent&&h(t,function(n,a){(a||a===0)&&(!i||i.call(o||this,n,a,this,t)!==!1)&&a!==s&&a!="prototype"&&(this[a]=e.clone(n,r,i,o,u||t,l))},f),a||(e.Object.each(l,function(e,t){if(e[s])try{delete e[s]}catch(n){e[s]=null}},this),l=null),f},e.bind=function(t,r){var i=arguments.length>2?e.Array(arguments,2,!0):null;return function(){var s=n.isString(t)?r[t]:t,o=i?i.concat(e.Array(arguments,0,!0)):arguments;return s.apply(r||s,o)}},e.rbind=function(t,r){var i=arguments.length>2?e.Array(arguments,2,!0):null;return function(){var s=n.isString(t)?r[t]:t,o=i?e.Array(arguments,0,!0).concat(i):arguments;return s.apply(r||s,o)}}},"3.7.3",{requires:["yui-base"]}),YUI.add("features",function(e,t){var n={};e.mix(e.namespace("Features"),{tests:n,add:function(e,t,r){n[e]=n[e]||{},n[e][t]=r},all:function(t,r){var i=n[t],s=[];return i&&e.Object.each(i,function(n,i){s.push(i+":"+(e.Features.test(t,i,r)?1:0))}),s.length?s.join(";"):""},test:function(t,r,i){i=i||[];var s,o,u,a=n[t],f=a&&a[r];return!f||(s=f.result,e.Lang.isUndefined(s)&&(o=f.ua,o&&(s=e.UA[o]),u=f.test,u&&(!o||s)&&(s=u.apply(e,i)),f.result=s)),s}});var r=e.Features.add;r("load","0",{name:"app-transitions-native",test:function(e){var t=e.config.doc,n=t?t.documentElement:null;return n&&n.style?"MozTransition"in n.style||"WebkitTransition"in n.style||"transition"in n.style:!1},trigger:"app-transitions"}),r("load","1",{name:"autocomplete-list-keys",test:function(e){return!e.UA.ios&&!e.UA.android},trigger:"autocomplete-list"}),r("load","2",{name:"dd-gestures",trigger:"dd-drag",ua:"touchEnabled"}),r("load","3",{name:"dom-style-ie",test:function(e){var t=e.Features.test,n=e.Features.add,r=e.config.win,i=e.config.doc,s="documentElement",o=!1;return n("style","computedStyle",{test:function(){return r&&"getComputedStyle"in r}}),n("style","opacity",{test:function(){return i&&"opacity"in i[s].style}}),o=!t("style","opacity")&&!t("style","computedStyle"),o},trigger:"dom-style"}),r("load","4",{name:"editor-para-ie",trigger:"editor-para",ua:"ie",when:"instead"}),r("load","5",{name:"event-base-ie",test:function(e){var t=e.config.doc&&e.config.doc.implementation;return t&&!t.hasFeature("Events","2.0")},trigger:"node-base"}),r("load","6",{name:"graphics-canvas",test:function(e){var t=e.config.doc,n=e.config.defaultGraphicEngine&&e.config.defaultGraphicEngine=="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return(!i||n)&&r&&r.getContext&&r.getContext("2d")},trigger:"graphics"}),r("load","7",{name:"graphics-canvas-default",test:function(e){var t=e.config.doc,n=e.config.defaultGraphicEngine&&e.config.defaultGraphicEngine=="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return(!i||n)&&r&&r.getContext&&r.getContext("2d")},trigger:"graphics"}),r("load","8",{name:"graphics-svg",test:function(e){var t=e.config.doc,n=!e.config.defaultGraphicEngine||e.config.defaultGraphicEngine!="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return i&&(n||!r)},trigger:"graphics"}),r("load","9",{name:"graphics-svg-default",test:function(e){var t=e.config.doc,n=!e.config.defaultGraphicEngine||e.config.defaultGraphicEngine!="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return i&&(n||!r)},trigger:"graphics"}),r("load","10",{name:"graphics-vml",test:function(e){var t=e.config.doc,n=t&&t.createElement("canvas");return t&&!t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")&&(!n||!n.getContext||!n.getContext("2d"))},trigger:"graphics"}),r("load","11",{name:"graphics-vml-default",test:function(e){var t=e.config.doc,n=t&&t.createElement("canvas");return t&&!t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")&&(!n||!n.getContext||!n.getContext("2d"))},trigger:"graphics"}),r("load","12",{name:"history-hash-ie",test:function(e){var t=e.config.doc&&e.config.doc.documentMode;return e.UA.ie&&(!("onhashchange"in e.config.win)||!t||t<8)},trigger:"history-hash"}),r("load","13",{name:"io-nodejs",trigger:"io-base",ua:"nodejs"}),r("load","14",{name:"scrollview-base-ie",trigger:"scrollview-base",ua:"ie"}),r("load","15",{name:"selector-css2",test:function(e){var t=e.config.doc,n=t&&!("querySelectorAll"in t);return n},trigger:"selector"}),r("load","16",{name:"transition-timer",test:function(e){var t=e.config.doc,n=t?t.documentElement:null,r=!0;return n&&n.style&&(r=!("MozTransition"in n.style||"WebkitTransition"in n.style||"transition"in n.style)),r},trigger:"transition"}),r("load","17",{name:"widget-base-ie",trigger:"widget-base",ua:"ie"}),r("load","18",{name:"yql-nodejs",trigger:"yql",ua:"nodejs",when:"after"}),r("load","19",{name:"yql-winjs",trigger:"yql",ua:"winjs",when:"after"})},"3.7.3",{requires:["yui-base"]}),YUI.add("dom-core",function(e,t){var n="nodeType",r="ownerDocument",i="documentElement",s="defaultView",o="parentWindow",u="tagName",a="parentNode",f="previousSibling",l="nextSibling",c="contains",h="compareDocumentPosition",p=[],d=function(){var t=e.config.doc.createElement("div"),n=t.appendChild(e.config.doc.createTextNode("")),r=!1;try{r=t.contains(n)}catch(i){}return r}(),v={byId:function(e,t){return v.allById(e,t)[0]||null},getId:function(e){var t;return e.id&&!e.id.tagName&&!e.id.item?t=e.id:e.attributes&&e.attributes.id&&(t=e.attributes.id.value),t},setId:function(e,t){e.setAttribute?e.setAttribute("id",t):e.id=t},ancestor:function(e,t,n,r){var i=null;return n&&(i=!t||t(e)?e:null),i||v.elementByAxis(e,a,t,null,r)},ancestors:function(e,t,n,r){var i=e,s=[];while(i=v.ancestor(i,t,n,r)){n=!1;if(i){s.unshift(i);if(r&&r(i))return s}}return s},elementByAxis:function(e,t,n,r,i){while(e&&(e=e[t])){if((r||e[u])&&(!n||n(e)))return e;if(i&&i(e))return null}return null},contains:function(e,t){var r=!1;if(!t||!e||!t[n]||!e[n])r=!1;else if(e[c]&&(t[n]===1||d))r=e[c](t);else if(e[h]){if(e===t||!!(e[h](t)&16))r=!0}else r=v._bruteContains(e,t);return r},inDoc:function(e,t){var n=!1,s;return e&&e.nodeType&&(t||(t=e[r]),s=t[i],s&&s.contains&&e.tagName?n=s.contains(e):n=v.contains(s,e)),n},allById:function(t,n){n=n||e.config.doc;var r=[],i=[],s,o;if(n.querySelectorAll)i=n.querySelectorAll('[id="'+t+'"]');else if(n.all){r=n.all(t);if(r){r.nodeName&&(r.id===t?(i.push(r),r=p):r=[r]);if(r.length)for(s=0;o=r[s++];)(o.id===t||o.attributes&&o.attributes.id&&o.attributes.id.value===t)&&i.push(o)}}else i=[v._getDoc(n).getElementById(t)];return i},isWindow:function(e){return!!(e&&e.scrollTo&&e.document)},_removeChildNodes:function(e){while(e.firstChild)e.removeChild(e.firstChild)},siblings:function(e,t){var n=[],r=e;while(r=r[f])r[u]&&(!t||t(r))&&n.unshift(r);r=e;while(r=r[l])r[u]&&(!t||t(r))&&n.push(r);return n},_bruteContains:function(e,t){while(t){if(e===t)return!0;t=t.parentNode}return!1},_getRegExp:function(e,t){return t=t||"",v._regexCache=v._regexCache||{},v._regexCache[e+t]||(v._regexCache[e+t]=new RegExp(e,t)),v._regexCache[e+t]},_getDoc:function(t){var i=e.config.doc;return t&&(i=t[n]===9?t:t[r]||t.document||e.config.doc),i},_getWin:function(t){var n=v._getDoc(t);return n[s]||n[o]||e.config.win},_batch:function(e,t,n,r,i,s){t=typeof t=="string"?v[t]:t;var o,u=0,a,f;if(t&&e)while(a=e[u++])o=o=t.call(v,a,n,r,i,s),typeof o!="undefined"&&(f||(f=[]),f.push(o));return typeof f!="undefined"?f:e},generateID:function(t){var n=t.id;return n||(n=e.stamp(t),t.id=n),n}};e.DOM=v},"3.7.3",{requires:["oop","features"]}),YUI.add("dom-base",function(e,t){var n=e.config.doc.documentElement,r=e.DOM,i="tagName",s="ownerDocument",o="",u=e.Features.add,a=e.Features.test;e.mix(r,{getText:n.textContent!==undefined?function(e){var t="";return e&&(t=e.textContent),t||""}:function(e){var t="";return e&&(t=e.innerText||e.nodeValue),t||""},setText:n.textContent!==undefined?function(e,t){e&&(e.textContent=t)}:function(e,t){"innerText"in e?e.innerText=t:"nodeValue"in e&&(e.nodeValue=t)},CUSTOM_ATTRIBUTES:n.hasAttribute?{htmlFor:"for",className:"class"}:{"for":"htmlFor","class":"className"},setAttribute:function(e,t,n,i){e&&t&&e.setAttribute&&(t=r.CUSTOM_ATTRIBUTES[t]||t,e.setAttribute(t,n,i))},getAttribute:function(e,t,n){n=n!==undefined?n:2;var i="";return e&&t&&e.getAttribute&&(t=r.CUSTOM_ATTRIBUTES[t]||t,i=e.getAttribute(t,n),i===null&&(i="")),i},VALUE_SETTERS:{},VALUE_GETTERS:{},getValue:function(e){var t="",n;return e&&e[i]&&(n=r.VALUE_GETTERS[e[i].toLowerCase()],n?t=n(e):t=e.value),t===o&&(t=o),typeof t=="string"?t:""},setValue:function(e,t){var n;e&&e[i]&&(n=r.VALUE_SETTERS[e[i].toLowerCase()],n?n(e,t):e.value=t)},creators:{}}),u("value-set","select",{test:function(){var t=e.config.doc.createElement("select");return t.innerHTML="",t.value="2",t.value&&t.value==="2"}}),a("value-set","select")||(r.VALUE_SETTERS.select=function(e,t){for(var n=0,i=e.getElementsByTagName("option"),s;s=i[n++];)if(r.getValue(s)===t){s.selected=!0;break}}),e.mix(r.VALUE_GETTERS,{button:function(e){return e.attributes&&e.attributes.value?e.attributes.value.value:""}}),e.mix(r.VALUE_SETTERS,{button:function(e,t){var n=e.attributes.value;n||(n=e[s].createAttribute("value"),e.setAttributeNode(n)),n.value=t}}),e.mix(r.VALUE_GETTERS,{option:function(e){var t=e.attributes;return t.value&&t.value.specified?e.value:e.text},select:function(e){var t=e.value,n=e.options;return n&&n.length&&(e.multiple||e.selectedIndex>-1&&(t=r.getValue(n[e.selectedIndex]))),t}});var f,l,c;e.mix(e.DOM,{hasClass:function(t,n){var r=e.DOM._getRegExp("(?:^|\\s+)"+n+"(?:\\s+|$)");return r.test(t.className)},addClass:function(t,n){e.DOM.hasClass(t,n)||(t.className=e.Lang.trim([t.className,n].join(" ")))},removeClass:function(t,n){n&&l(t,n)&&(t.className=e.Lang.trim(t.className.replace(e.DOM._getRegExp("(?:^|\\s+)"+n+"(?:\\s+|$)")," ")),l(t,n)&&c(t,n))},replaceClass:function(e,t,n){c(e,t),f(e,n)},toggleClass:function(e,t,n){var r=n!==undefined?n:!l(e,t);r?f(e,t):c(e,t)}}),l=e.DOM.hasClass,c=e.DOM.removeClass,f=e.DOM.addClass;var h=/<([a-z]+)/i,r=e.DOM,u=e.Features.add,a=e.Features.test,p={},d=function(t,n){var r=e.config.doc.createElement("div"),i=!0;r.innerHTML=t;if(!r.firstChild||r.firstChild.tagName!==n.toUpperCase())i=!1;return i},v=/(?:\/(?:thead|tfoot|tbody|caption|col|colgroup)>)+\s*"}catch(n){return!1}return t.firstChild&&t.firstChild.nodeName==="TBODY"}}),u("innerhtml-div","tr",{test:function(){return d("","tr")}}),u("innerhtml-div","script",{test:function(){return d("","script")}}),a("innerhtml","table")||(p.tbody=function(t,n){var i=r.create(m+t+g,n),s=e.DOM._children(i,"tbody")[0];return i.children.length>1&&s&&!v.test(t)&&s.parentNode.removeChild(s),i}),a("innerhtml-div","script")||(p.script=function(e,t){var n=t.createElement("div");return n.innerHTML="-"+e,n.removeChild(n.firstChild),n},p.link=p.style=p.script),a("innerhtml-div","tr")||(e.mix(p,{option:function(e,t){return r.create('",t)},tr:function(e,t){return r.create(""+e+"",t)},td:function(e,t){return r.create(""+e+"",t)},col:function(e,t){return r.create(""+e+"",t)},tbody:"table"}),e.mix(p,{legend:"fieldset",th:p.td,thead:p.tbody,tfoot:p.tbody,caption:p.tbody,colgroup:p.tbody,optgroup:p.option})),r.creators=p,e.mix(e.DOM,{setWidth:function(t,n){e.DOM._setSize(t,"width",n)},setHeight:function(t,n){e.DOM._setSize(t,"height",n)},_setSize:function(e,t,n){n=n>0?n:0;var r=0;e.style[t]=n+"px",r=t==="height"?e.offsetHeight:e.offsetWidth,r>n&&(n-=r-n,n<0&&(n=0),e.style[t]=n+"px")}})},"3.7.3",{requires:["dom-core"]}),YUI.add("dom-style",function(e,t){(function(e){var t="documentElement",n="defaultView",r="ownerDocument",i="style",s="float",o="cssFloat",u="styleFloat",a="transparent",f="getComputedStyle",l="getBoundingClientRect",c=e.config.win,h=e.config.doc,p=undefined,d=e.DOM,v="transform",m="transformOrigin",g=["WebkitTransform","MozTransform","OTransform","msTransform"],y=/color$/i,b=/width|height|top|left|right|bottom|margin|padding/i;e.Array.each(g,function(e){e in h[t].style&&(v=e,m=e+"Origin")}),e.mix(d,{DEFAULT_UNIT:"px",CUSTOM_STYLES:{},setStyle:function(e,t,n,r){r=r||e.style;var i=d.CUSTOM_STYLES;if(r){n===null||n===""?n="":!isNaN(new Number(n))&&b.test(t)&&(n+=d.DEFAULT_UNIT);if(t in i){if(i[t].set){i[t].set(e,n,r);return}typeof i[t]=="string"&&(t=i[t])}else t===""&&(t="cssText",n="");r[t]=n}},getStyle:function(e,t,n){n=n||e.style;var r=d.CUSTOM_STYLES,i="";if(n){if(t in r){if(r[t].get)return r[t].get(e,t,n);typeof r[t]=="string"&&(t=r[t])}i=n[t],i===""&&(i=d[f](e,t))}return i},setStyles:function(t,n){var r=t.style;e.each(n,function(e,n){d.setStyle(t,n,e,r)},d)},getComputedStyle:function(e,t){var s="",o=e[r],u;return e[i]&&o[n]&&o[n][f]&&(u=o[n][f](e,null),u&&(s=u[t])),s}}),h[t][i][o]!==p?d.CUSTOM_STYLES[s]=o:h[t][i][u]!==p&&(d.CUSTOM_STYLES[s]=u),e.UA.opera&&(d[f]=function(t,i){var s=t[r][n],o=s[f](t,"")[i];return y.test(i)&&(o=e.Color.toRGB(o)),o}),e.UA.webkit&&(d[f]=function(e,t){var i=e[r][n],s=i[f](e,"")[t];return s==="rgba(0, 0, 0, 0)"&&(s=a),s}),e.DOM._getAttrOffset=function(t,n){var r=e.DOM[f](t,n),i=t.offsetParent,s,o,u;return r==="auto"&&(s=e.DOM.getStyle(t,"position"),s==="static"||s==="relative"?r=0:i&&i[l]&&(o=i[l]()[n],u=t[l]()[n],n==="left"||n==="top"?r=u-o:r=o-t[l]()[n])),r},e.DOM._getOffset=function(e){var t,n=null;return e&&(t=d.getStyle(e,"position"),n=[parseInt(d[f](e,"left"),10),parseInt(d[f](e,"top"),10)],isNaN(n[0])&&(n[0]=parseInt(d.getStyle(e,"left"),10),isNaN(n[0])&&(n[0]=t==="relative"?0:e.offsetLeft||0)),isNaN(n[1])&&(n[1]=parseInt(d.getStyle(e,"top"),10),isNaN(n[1])&&(n[1]=t==="relative"?0:e.offsetTop||0))),n},d.CUSTOM_STYLES.transform={set:function(e,t,n){n[v]=t},get:function(e,t){return d[f](e,v)}},d.CUSTOM_STYLES.transformOrigin={set:function(e,t,n){n[m]=t},get:function(e,t){return d[f](e,m)}}})(e),function(e){var t=parseInt,n=RegExp;e.Color={KEYWORDS:{black:"000",silver:"c0c0c0",gray:"808080",white:"fff",maroon:"800000",red:"f00",purple:"800080",fuchsia:"f0f",green:"008000",lime:"0f0",olive:"808000",yellow:"ff0",navy:"000080",blue:"00f",teal:"008080",aqua:"0ff"},re_RGB:/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,re_hex:/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,re_hex3:/([0-9A-F])/gi,toRGB:function(r){return e.Color.re_RGB.test(r)||(r=e.Color.toHex(r)),e.Color.re_hex.exec(r)&&(r="rgb("+[t(n.$1,16),t(n.$2,16),t(n.$3,16)].join(", ")+")"),r},toHex:function(t){t=e.Color.KEYWORDS[t]||t;if(e.Color.re_RGB.exec(t)){t=[Number(n.$1).toString(16),Number(n.$2).toString(16),Number(n.$3).toString(16)];for(var r=0;r=8,x=function(e){return e.currentStyle||e.style},T={CUSTOM_STYLES:{},get:function(t,r){var i="",o;return t&&(o=x(t)[r],r===s&&e.DOM.CUSTOM_STYLES[s]?i=e.DOM.CUSTOM_STYLES[s].get(t):!o||o.indexOf&&o.indexOf(n)>-1?i=o:e.DOM.IE.COMPUTED[r]?i=e.DOM.IE.COMPUTED[r](t,r):E.test(o)?i=T.getPixel(t,r)+n:i=o),i},sizeOffsets:{width:["Left","Right"],height:["Top","Bottom"],top:["Top"],bottom:["Bottom"]},getOffset:function(e,t){var r=x(e)[t],i=t.charAt(0).toUpperCase()+t.substr(1),s="offset"+i,u="pixel"+i,a=T.sizeOffsets[t],f=e.ownerDocument.compatMode,l="";return r===o||r.indexOf("%")>-1?(l=e["offset"+i],f!=="BackCompat"&&(a[0]&&(l-=T.getPixel(e,"padding"+a[0]),l-=T.getBorderWidth(e,"border"+a[0]+"Width",1)),a[1]&&(l-=T.getPixel(e,"padding"+a[1]),l-=T.getBorderWidth(e,"border"+a[1]+"Width",1)))):(!e.style[u]&&!e.style[t]&&(e.style[t]=r),l=e.style[u]),l+n},borderMap:{thin:S?"1px":"2px",medium:S?"3px":"4px",thick:S?"5px":"6px"},getBorderWidth:function(e,t,r){var i=r?"":n,s=e.currentStyle[t];return s.indexOf(n)<0&&(T.borderMap[s]&&e.currentStyle.borderStyle!=="none"?s=T.borderMap[s]:s=0),r?parseFloat(s):s},getPixel:function(e,t){var n=null,r=x(e),i=r.right,s=r[t];return e.style.right=s,n=e.style.pixelRight,e.style.right=i,n},getMargin:function(e,t){var r,i=x(e);return i[t]==o?r=0:r=T.getPixel(e,t),r+n},getVisibility:function(e,t){var n;while((n=e.currentStyle)&&n[t]=="inherit")e=e.parentNode;return n?n[t]:v},getColor:function(t,n){var r=x(t)[n];return(!r||r===d)&&e.DOM.elementByAxis(t,"parentNode",null,function(e){r=x(e)[n];if(r&&r!==d)return t=e,!0}),e.Color.toRGB(r)},getBorderColor:function(t,n){var r=x(t),i=r[n]||r.color;return e.Color.toRGB(e.Color.toHex(i))}},N={};w("style","computedStyle",{test:function(){return"getComputedStyle"in e.config.win}}),w("style","opacity",{test:function(){return"opacity"in y.style}}),w("style","filter",{test:function(){return"filters"in y}}),!b("style","opacity")&&b("style","filter")&&(e.DOM.CUSTOM_STYLES[s]={get:function(e){var t=100;try{t=e[i]["DXImageTransform.Microsoft.Alpha"][s]}catch(n){try{t=e[i]("alpha")[s]}catch(r){}}return t/100},set:function(e,n,i){var o,u=x(e),a=u[r];i=i||e.style,n===""&&(o=s in u?u[s]:1,n=o),typeof a=="string"&&(i[r]=a.replace(/alpha([^)]*\))/gi,"")+(n<1?"alpha("+s+"="+n*100+")":""),i[r]||i.removeAttribute(r),u[t]||(i.zoom=1))}});try{e.config.doc.createElement("div").style.height="-1px"}catch(C){e.DOM.CUSTOM_STYLES.height={set:function(e,t,n){var r=parseFloat(t);if(r>=0||t==="auto"||t==="")n.height=t}},e.DOM.CUSTOM_STYLES.width={set:function(e,t,n){var r=parseFloat(t);if(r>=0||t==="auto"||t==="")n.width=t}}}b("style","computedStyle")||(N[h]=N[p]=T.getOffset,N.color=N.backgroundColor=T.getColor,N[u]=N[a]=N[f]=N[l]=N[c]=T.getBorderWidth,N.marginTop=N.marginRight=N.marginBottom=N.marginLeft=T.getMargin,N.visibility=T.getVisibility,N.borderColor=N.borderTopColor=N.borderRightColor=N.borderBottomColor=N.borderLeftColor=T.getBorderColor,e.DOM[m]=T.get,e.namespace("DOM.IE"),e.DOM.IE.COMPUTED=N,e.DOM.IE.ComputedStyle=T)})(e)},"3.7.3",{requires:["dom-style"]}),YUI.add("dom-screen",function(e,t){(function(e){var t="documentElement",n="compatMode",r="position",i="fixed",s="relative",o="left",u="top",a="BackCompat",f="medium",l="borderLeftWidth",c="borderTopWidth",h="getBoundingClientRect",p="getComputedStyle",d=e.DOM,v=/^t(?:able|d|h)$/i,m;e.UA.ie&&(e.config.doc[n]!=="BackCompat"?m=t:m="body"),e.mix(d,{winHeight:function(e){var t=d._getWinSize(e).height;return t},winWidth:function(e){var t=d._getWinSize(e).width;return t},docHeight:function(e){var t=d._getDocSize(e).height;return Math.max(t,d._getWinSize(e).height)},docWidth:function(e){var t=d._getDocSize(e).width;return Math.max(t,d._getWinSize(e).width)},docScrollX:function(n,r){r=r||n?d._getDoc(n):e.config.doc;var i=r.defaultView,s=i?i.pageXOffset:0;return Math.max(r[t].scrollLeft,r.body.scrollLeft,s)},docScrollY:function(n,r){r=r||n?d._getDoc(n):e.config.doc;var i=r.defaultView,s=i?i.pageYOffset:0;return Math.max(r[t].scrollTop,r.body.scrollTop,s)},getXY:function(){return e.config.doc[t][h]?function(r){var i=null,s,o,u,f,l,c,p,v,g,y;if(r&&r.tagName){p=r.ownerDocument,u=p[n],u!==a?y=p[t]:y=p.body,y.contains?g=y.contains(r):g=e.DOM.contains(y,r);if(g){v=p.defaultView,v&&"pageXOffset"in v?(s=v.pageXOffset,o=v.pageYOffset):(s=m?p[m].scrollLeft:d.docScrollX(r,p),o=m?p[m].scrollTop:d.docScrollY(r,p)),e.UA.ie&&(!p.documentMode||p.documentMode<8||u===a)&&(l=y.clientLeft,c=y.clientTop),f=r[h](),i=[f.left,f.top];if(l||c)i[0]-=l,i[1]-=c;if(o||s)if(!e.UA.ios||e.UA.ios>=4.2)i[0]+=s,i[1]+=o}else i=d._getOffset(r)}return i}:function(t){var n=null,s,o,u,a,f;if(t)if(d.inDoc(t)){n=[t.offsetLeft,t.offsetTop],s=t.ownerDocument,o=t,u=e.UA.gecko||e.UA.webkit>519?!0:!1;while(o=o.offsetParent)n[0]+=o.offsetLeft,n[1]+=o.offsetTop,u&&(n=d._calcBorders(o,n));if(d.getStyle(t,r)!=i){o=t;while(o=o.parentNode){a=o.scrollTop,f=o.scrollLeft,e.UA.gecko&&d.getStyle(o,"overflow")!=="visible"&&(n=d._calcBorders(o,n));if(a||f)n[0]-=f,n[1]-=a}n[0]+=d.docScrollX(t,s),n[1]+=d.docScrollY(t,s)}else n[0]+=d.docScrollX(t,s),n[1]+=d.docScrollY(t,s)}else n=d._getOffset(t);return n}}(),getScrollbarWidth:e.cached(function(){var t=e.config.doc,n=t.createElement("div"),r=t.getElementsByTagName("body")[0],i=.1;return r&&(n.style.cssText="position:absolute;visibility:hidden;overflow:scroll;width:20px;",n.appendChild(t.createElement("p")).style.height="1px",r.insertBefore(n,r.firstChild),i=n.offsetWidth-n.clientWidth,r.removeChild(n)),i},null,.1),getX:function(e){return d.getXY(e)[0]},getY:function(e){return d.getXY(e)[1]},setXY:function(e,t,n){var i=d.setStyle,a,f,l,c;e&&t&&(a=d.getStyle(e,r),f=d._getOffset(e),a=="static"&&(a=s,i(e,r,a)),c=d.getXY(e),t[0]!==null&&i(e,o,t[0]-c[0]+f[0]+"px"),t[1]!==null&&i(e,u,t[1]-c[1]+f[1]+"px"),n||(l=d.getXY(e),(l[0]!==t[0]||l[1]!==t[1])&&d.setXY(e,t,!0)))},setX:function(e,t){return d.setXY(e,[t,null])},setY:function(e,t){return d.setXY(e,[null,t])},swapXY:function(e,t){var n=d.getXY(e);d.setXY(e,d.getXY(t)),d.setXY(t,n)},_calcBorders:function(t,n){var r=parseInt(d[p](t,c),10)||0,i=parseInt(d[p](t,l),10)||0;return e.UA.gecko&&v.test(t.tagName)&&(r=0,i=0),n[0]+=i,n[1]+=r,n},_getWinSize:function(r,i){i=i||r?d._getDoc(r):e.config.doc;var s=i.defaultView||i.parentWindow,o=i[n],u=s.innerHeight,a=s.innerWidth,f=i[t];return o&&!e.UA.opera&&(o!="CSS1Compat"&&(f=i.body),u=f.clientHeight,a=f.clientWidth),{height:u,width:a}},_getDocSize:function(r){var i=r?d._getDoc(r):e.config.doc,s=i[t];return i[n]!="CSS1Compat"&&(s=i.body),{height:s.scrollHeight,width:s.scrollWidth}}})})(e),function(e){var t="top",n="right",r="bottom",i="left",s=function(e,s){var o=Math.max(e[t],s[t]),u=Math.min(e[n],s[n]),a=Math.min(e[r],s[r]),f=Math.max(e[i],s[i]),l={};return l[t]=o,l[n]=u,l[r]=a,l[i]=f,l},o=e.DOM;e.mix(o,{region:function(e){var t=o.getXY(e),n=!1;return e&&t&&(n=o._getRegion(t[1],t[0]+e.offsetWidth,t[1]+e.offsetHeight,t[0])),n},intersect:function(u,a,f){var l=f||o.region(u),c={},h=a,p;if(h.tagName)c=o.region(h);else{if(!e.Lang.isObject(a))return!1;c=a}return p=s(c,l),{top:p[t],right:p[n],bottom:p[r],left:p[i],area:(p[r]-p[t])*(p[n]-p[i]),yoff:p[r]-p[t],xoff:p[n]-p[i],inRegion:o.inRegion(u,a,!1,f)}},inRegion:function(u,a,f,l){var c={},h=l||o.region(u),p=a,d;if(p.tagName)c=o.region(p);else{if(!e.Lang.isObject(a))return!1;c=a}return f?h[i]>=c[i]&&h[n]<=c[n]&&h[t]>=c[t]&&h[r]<=c[r]:(d=s(c,h),d[r]>=d[t]&&d[n]>=d[i]?!0:!1)},inViewportRegion:function(e,t,n){return o.inRegion(e,o.viewportRegion(e),t,n)},_getRegion:function(e,s,o,u){var a={};return a[t]=a[1]=e,a[i]=a[0]=u,a[r]=o,a[n]=s,a.width=a[n]-a[i],a.height=a[r]-a[t],a},viewportRegion:function(t){t=t||e.config.doc.documentElement;var n=!1,r,i;return t&&(r=o.docScrollX(t),i=o.docScrollY(t),n=o._getRegion(i,o.winWidth(t)+r,i+o.winHeight(t),r)),n}})}(e)},"3.7.3",{requires:["dom-base","dom-style"]}),YUI.add("selector-native",function(e,t){(function(e){e.namespace("Selector");var t="compareDocumentPosition",n="ownerDocument",r={_types:{esc:{token:"\ue000",re:/\\[:\[\]\(\)#\.\'\>+~"]/gi},attr:{token:"\ue001",re:/(\[[^\]]*\])/g},pseudo:{token:"\ue002",re:/(\([^\)]*\))/g}},useNative:!0,_escapeId:function(e){return e&&(e=e.replace(/([:\[\]\(\)#\.'<>+~"])/g,"\\$1")),e},_compare:"sourceIndex"in e.config.doc.documentElement?function(e,t){var n=e.sourceIndex,r=t.sourceIndex;return n===r?0:n>r?1:-1}:e.config.doc.documentElement[t]?function(e,n){return e[t](n)&4?-1:1}:function(e,t){var r,i,s;return e&&t&&(r=e[n].createRange(),r.setStart(e,0),i=t[n].createRange(),i.setStart(t,0),s=r.compareBoundaryPoints(1,i)),s},_sort:function(t){return t&&(t=e.Array(t,0,!0),t.sort&&t.sort(r._compare)),t},_deDupe:function(e){var t=[],n,r;for(n=0;r=e[n++];)r._found||(t[t.length]=r,r._found=!0);for(n=0;r=t[n++];)r._found=null,r.removeAttribute("_found");return t},query:function(t,n,i,s){n=n||e.config.doc;var o=[],u=e.Selector.useNative&&e.config.doc.querySelector&&!s,a=[[t,n]],f,l,c,h=u?e.Selector._nativeQuery:e.Selector._bruteQuery;if(t&&h){!s&&(!u||n.tagName)&&(a=r._splitQueries(t,n));for(c=0;f=a[c++];)l=h(f[0],f[1],i),i||(l=e.Array(l,0,!0)),l&&(o=o.concat(l));a.length>1&&(o=r._sort(r._deDupe(o)))}return i?o[0]||null:o},_replaceSelector:function(t){var n=e.Selector._parse("esc",t),i,s;return t=e.Selector._replace("esc",t),s=e.Selector._parse("pseudo",t),t=r._replace("pseudo",t),i=e.Selector._parse("attr",t),t=e.Selector._replace("attr",t),{esc:n,attrs:i,pseudos:s,selector:t}},_restoreSelector:function(t){var n=t.selector;return n=e.Selector._restore("attr",n,t.attrs),n=e.Selector._restore("pseudo",n,t.pseudos),n=e.Selector._restore("esc",n,t.esc),n},_replaceCommas:function(t){var n=e.Selector._replaceSelector(t),t=n.selector;return t&&(t=t.replace(/,/g,"\ue007"),n.selector=t,t=e.Selector._restoreSelector(n)),t},_splitQueries:function(t,n){t.indexOf(",")>-1&&(t=e.Selector._replaceCommas(t));var r=t.split("\ue007"),i=[],s="",o,u,a;if(n){n.nodeType===1&&(o=e.Selector._escapeId(e.DOM.getId(n)),o||(o=e.guid(),e.DOM.setId(n,o)),s='[id="'+o+'"] ');for(u=0,a=r.length;u-1&&e.Selector.pseudos&&e.Selector.pseudos.checked)return e.Selector.query(t,n,r,!0);try{return n["querySelector"+(r?"":"All")](t)}catch(i){return e.Selector.query(t,n,r,!0)}},filter:function(t,n){var r=[],i,s;if(t&&n)for(i=0;s=t[i++];)e.Selector.test(s,n)&&(r[r.length]=s);return r},test:function(t,r,i){var s=!1,o=!1,u,a,f,l,c,h,p,d,v;if(t&&t.tagName)if(typeof r=="function")s=r.call(t,t);else{u=r.split(","),!i&&!e.DOM.inDoc(t)&&(a=t.parentNode,a?i=a:(c=t[n].createDocumentFragment(),c.appendChild(t),i=c,o=!0)),i=i||t[n],h=e.Selector._escapeId(e.DOM.getId(t)),h||(h=e.guid(),e.DOM.setId(t,h));for(p=0;v=u[p++];){v+='[id="'+h+'"]',l=e.Selector.query(v,i);for(d=0;f=l[d++];)if(f===t){s=!0;break}if(s)break}o&&c.removeChild(t)}return s},ancestor:function(t,n,r){return e.DOM.ancestor(t,function(t){return e.Selector.test(t,n)},r)},_parse:function(t,n){return n.match(e.Selector._types[t].re)},_replace:function(t,n){var r=e.Selector._types[t];return n.replace(r.re,r.token)},_restore:function(t,n,r){if(r){var i=e.Selector._types[t].token,s,o;for(s=0,o=r.length;s2?f.call(arguments,2):null;return this._on(e,t,n,!0)},on:function(e,t){var n=arguments.length>2?f.call(arguments,2):null;return this.monitored&&this.host&&this.host._monitor("attach",this,{args:arguments}),this._on(e,t,n,!0)},after:function(e,t){var n=arguments.length>2?f.call(arguments,2):null;return this._on(e,t,n,o)},detach:function(e,t){if(e&&e.detach)return e.detach();var n,r,i=0,s=this._subscribers,o=this._afters;for(n=s.length;n>=0;n--)r=s[n],r&&(!e||e===r.fn)&&(this._delete(r,s,n),i++);for(n=o.length;n>=0;n--)r=o[n],r&&(!e||e===r.fn)&&(this._delete(r,o,n),i++);return i},unsubscribe:function(){return this.detach.apply(this,arguments)},_notify:function(e,t,n){this.log(this.type+"->"+"sub: "+e.id);var r;return r=e.notify(t,this),!1===r||this.stopped>1?(this.log(this.type+" cancelled by subscriber"),!1):!0},log:function(e,t){},fire:function(){if(this.fireOnce&&this.fired)return this.log("fireOnce event: "+this.type+" already fired"),!0;var e=f.call(arguments,0);return this.fired=!0,this.fireOnce&&(this.firedWith=e),this.emitFacade?this.fireComplex(e):this.fireSimple(e)},fireSimple:function(e){this.stopped=0,this.prevented=0;if(this.hasSubs()){var t=this.getSubs();this._procSubs(t[0],e),this._procSubs(t[1],e)}return this._broadcast(e),this.stopped?!1:!0},fireComplex:function(e){return this.log("Missing event-custom-complex needed to emit a facade for: "+this.type),e[0]=e[0]||{},this.fireSimple(e)},_procSubs:function(e,t,n){var r,i,s;for(i=0,s=e.length;i-1?e:t+d+e}),w=e.cached(function(e,t){var n=e,r,i,s;return p.isString(n)?(s=n.indexOf(m),s>-1&&(i=!0,n=n.substr(m.length)),s=n.indexOf(v),s>-1&&(r=n.substr(0,s),n=n.substr(s+1),n=="*"&&(n=null)),[r,t?b(n,t):n,i,n]):n}),E=function(t){var n=p.isObject(t)?t:{};this._yuievt=this._yuievt||{id:e.guid(),events:{},targets:{},config:n,chain:"chain"in n?n.chain:e.config.chain,bubbling:!1,defaults:{context:n.context||this,host:this,emitFacade:n.emitFacade,fireOnce:n.fireOnce,queuable:n.queuable,monitored:n.monitored,broadcast:n.broadcast,defaultTargetOnly:n.defaultTargetOnly,bubbles:"bubbles"in n?n.bubbles:!0}}};E.prototype={constructor:E,once:function(){var e=this.on.apply(this,arguments);return e.batch(function(e){e.sub&&(e.sub.once=!0)}),e},onceAfter:function(){var e=this.after.apply(this,arguments);return e.batch(function(e){e.sub&&(e.sub.once=!0)}),e},parseType:function(e,t){return w(e,t||this._yuievt.config.prefix)},on:function(t,n,r){var i=this._yuievt,s=w(t,i.config.prefix),o,u,a,l,c,h,d,v=e.Env.evt.handles,g,y,b,E=e.Node,S,x,T;this._monitor("attach",s[1],{args:arguments,category:s[0],after:s[2]});if(p.isObject(t))return p.isFunction(t)?e.Do.before.apply(e.Do,arguments):(o=n,u=r,a=f.call(arguments,0),l=[],p.isArray(t)&&(T=!0),g=t._after,delete t._after,e.each(t,function(e,t){p.isObject(e)&&(o=e.fn||(p.isFunction(e)?e:o),u=e.context||u);var n=g?m:"";a[0]=n+(T?e:t),a[1]=o,a[2]=u,l.push(this.on.apply(this,a))},this),i.chain?this:new e.EventHandle(l));h=s[0],g=s[2],b=s[3];if(E&&e.instanceOf(this,E)&&b in E.DOM_EVENTS)return a=f.call(arguments,0),a.splice(2,0,E.getDOMNode(this)),e.on.apply(e,a);t=s[1];if(e.instanceOf(this,YUI)){y=e.Env.evt.plugins[t],a=f.call(arguments,0),a[0]=b,E&&(S=a[2],e.instanceOf(S,e.NodeList)?S=e.NodeList.getDOMNodes(S):e.instanceOf(S,E)&&(S=E.getDOMNode(S)),x=b in E.DOM_EVENTS,x&&(a[2]=S));if(y)d=y.on.apply(e,a);else if(!t||x)d=e.Event._attach(a)}return d||(c=i.events[t]||this.publish(t),d=c._on(n,r,arguments.length>3?f.call(arguments,3):null,g?"after":!0)),h&&(v[h]=v[h]||{},v[h][t]=v[h][t]||[],v[h][t].push(d)),i.chain?this:d},subscribe:function(){return this.on.apply(this,arguments)},detach:function(t,n,r){var i=this._yuievt.events,s,o=e.Node,u=o&&e.instanceOf(this,o);if(!t&&this!==e){for(s in i)i.hasOwnProperty(s)&&i[s].detach(n,r);return u&&e.Event.purgeElement(o.getDOMNode(this)),this}var a=w(t,this._yuievt.config.prefix),l=p.isArray(a)?a[0]:null,c=a?a[3]:null,h,d=e.Env.evt.handles,v,m,g,y,b=function(e,t,n){var r=e[t],i,s;if(r)for(s=r.length-1;s>=0;--s)i=r[s].evt,(i.host===n||i.el===n)&&r[s].detach()};if(l){m=d[l],t=a[1],v=u?e.Node.getDOMNode(this):this;if(m){if(t)b(m,t,v);else for(s in m)m.hasOwnProperty(s)&&b(m,s,v);return this}}else{if(p.isObject(t)&&t.detach)return t.detach(),this;if(u&&(!c||c in o.DOM_EVENTS))return g=f.call(arguments,0),g[2]=o.getDOMNode(this),e.detach.apply(e,g),this}h=e.Env.evt.plugins[c];if(e.instanceOf(this,YUI)){g=f.call(arguments,0);if(h&&h.detach)return h.detach.apply(e,g),this;if(!t||!h&&o&&t in o.DOM_EVENTS)return g[0]=t,e.Event.detach.apply(e.Event,g),this}return y=i[a[1]],y&&y.detach(n,r),this},unsubscribe:function(){return this.detach.apply(this,arguments)},detachAll:function(e){return this.detach(e)},unsubscribeAll:function(){return this.detachAll.apply(this,arguments)},publish:function(t,n){var r,i,s,o,u=this._yuievt,a=u.config.prefix;return p.isObject(t)?(s={},e.each(t,function(e,t){s[t]=this.publish(t,e||n)},this),s):(t=a?b(t,a):t,r=u.events,i=r[t],this._monitor("publish",t,{args:arguments}),i?n&&i.applyConfig(n,!0):(o=u.defaults,i=new e.CustomEvent(t,o),n&&i.applyConfig(n,!0),r[t]=i),r[t])},_monitor:function(e,t,n){var r,i,s;if(t){typeof t=="string"?(s=t,i=this.getEvent(t,!0)):(i=t,s=t.type);if(this._yuievt.config.monitored&&(!i||i.monitored)||i&&i.monitored)r=s+"_"+e,n.monitored=e,this.fire.call(this,r,n)}},fire:function(e){var t=p.isString(e),n=t?e:e&&e.type,r=this._yuievt,i=r.config.prefix,s,o,u,a=t?f.call(arguments,1):arguments;n=i?b(n,i):n,s=this.getEvent(n,!0),u=this.getSibling(n,s),u&&!s&&(s=this.publish(n)),this._monitor("fire",s||n,{args:a});if(!s){if(r.hasTargets)return this.bubble({type:n},a,this);o=!0}else s.sibling=u,o=s.fire.apply(s,a);return r.chain?this:o},getSibling:function(e,t){var n;return e.indexOf(d)>-1&&(e=y(e),n=this.getEvent(e,!0),n&&(n.applyConfig(t),n.bubbles=!1,n.broadcast=0)),n},getEvent:function(e,t){var n,r;return t||(n=this._yuievt.config.prefix,e=n?b(e,n):e),r=this._yuievt.events,r[e]||null},after:function(t,n){var r=f.call(arguments,0);switch(p.type(t)){case"function":return e.Do.after.apply(e.Do,arguments);case"array":case"object":r[0]._after=!0;break;default:r[0]=m+t}return this.on.apply(this,r)},before:function(){return this.on.apply(this,arguments)}},e.EventTarget=E,e.mix(e,E.prototype),E.call(e,{bubbles:!1}),YUI.Env.globalEvents=YUI.Env.globalEvents||new E,e.Global=YUI.Env.globalEvents},"3.7.3",{requires:["oop"]}),YUI.add("event-custom-complex",function(e,t){var n,r,i,s={},o=e.CustomEvent.prototype,u=e.EventTarget.prototype,a=function(e,t){var n;for(n in t)r.hasOwnProperty(n)||(e[n]=t[n])};e.EventFacade=function(e,t){e=e||s,this._event=e,this.details=e.details,this.type=e.type,this._type=e.type,this.target=e.target,this.currentTarget=t,this.relatedTarget=e.relatedTarget},e.mix(e.EventFacade.prototype,{stopPropagation:function(){this._event.stopPropagation(),this.stopped=1},stopImmediatePropagation:function(){this._event.stopImmediatePropagation(),this.stopped=2},preventDefault:function(){this._event.preventDefault(),this.prevented=1},halt:function(e){this._event.halt(e),this.prevented=1,this.stopped=e?2:1}}),o.fireComplex=function(t){var n,r,i,s,o,u,a,f,l,c=this,h=c.host||c,p,d;if(c.stack&&c.queuable&&c.type!=c.stack.next.type)return c.log("queue "+c.type),c.stack.queue.push([c,t]),!0;n=c.stack||{id:c.id,next:c,silent:c.silent,stopped:0,prevented:0,bubbling:null,type:c.type,afterQueue:new e.Queue,defaultTargetOnly:c.defaultTargetOnly,queue:[]},f=c.getSubs(),c.stopped=c.type!==n.type?0:n.stopped,c.prevented=c.type!==n.type?0:n.prevented,c.target=c.target||h,c.stoppedFn&&(a=new e.EventTarget({fireOnce:!0,context:h}),c.events=a,a.on("stopped",c.stoppedFn)),c.currentTarget=h,c.details=t.slice(),c.log("Firing "+c.type),c._facade=null,r=c._getFacade(t),e.Lang.isObject(t[0])?t[0]=r:t.unshift(r),f[0]&&c._procSubs(f[0],t,r),c.bubbles&&h.bubble&&!c.stopped&&(d=n.bubbling,n.bubbling=c.type,n.type!=c.type&&(n.stopped=0,n.prevented=0),u=h.bubble(c,t,null,n),c.stopped=Math.max(c.stopped,n.stopped),c.prevented=Math.max(c.prevented,n.prevented),n.bubbling=d),c.prevented?c.preventedFn&&c.preventedFn.apply(h,t):c.defaultFn&&(!c.defaultTargetOnly&&!n.defaultTargetOnly||h===r.target)&&c.defaultFn.apply(h,t),c._broadcast(t);if(f[1]&&!c.prevented&&c.stopped<2)if(n.id===c.id||c.type!=h._yuievt.bubbling){c._procSubs(f[1],t,r);while(p=n.afterQueue.last())p()}else l=f[1],n.execDefaultCnt&&(l=e.merge(l),e.each(l,function(e){e.postponed=!0})),n.afterQueue.add(function(){c._procSubs(l,t,r)});c.target=null;if(n.id===c.id){s=n.queue;while(s.length)i=s.pop(),o=i[0],n.next=o,o.fire.apply(o,i[1]);c.stack=null}return u=!c.stopped,c.type!=h._yuievt.bubbling&&(n.stopped=0,n.prevented=0,c.stopped=0,c.prevented=0),c._facade=null,u},o._getFacade=function(){var t=this._facade,n,r=this.details;return t||(t=new e.EventFacade(this,this.currentTarget)),n=r&&r[0],e.Lang.isObject(n,!0)&&(a(t,n),t.type=n.type||t.type),t.details=this.details,t.target=this.originalTarget||this.target,t.currentTarget=this.currentTarget,t.stopped=0,t.prevented=0,this._facade=t,this._facade},o.stopPropagation=function(){this.stopped=1,this.stack&&(this.stack.stopped=1),this.events&&this.events.fire("stopped",this)},o.stopImmediatePropagation=function(){this.stopped=2,this.stack&&(this.stack.stopped=2),this.events&&this.events.fire("stopped",this)},o.preventDefault=function(){this.preventable&&(this.prevented=1,this.stack&&(this.stack.prevented=1))},o.halt=function(e){e?this.stopImmediatePropagation():this.stopPropagation(),this.preventDefault()},u.addTarget=function(t){this._yuievt.targets[e.stamp(t)]=t,this._yuievt.hasTargets=!0},u.getTargets=function(){return e.Object.values(this._yuievt.targets)},u.removeTarget=function(t){delete this._yuievt.targets[e.stamp(t)]},u.bubble=function(e,t,n,r){var i=this._yuievt.targets,s=!0,o,u=e&&e.type,a,f,l,c,h=n||e&&e.target||this,p;if(!e||!e.stopped&&i)for(f in i)if(i.hasOwnProperty(f)){o=i[f],a=o.getEvent(u,!0),c=o.getSibling(u,a),c&&!a&&(a=o.publish(u)),p=o._yuievt.bubbling,o._yuievt.bubbling=u;if(!a)o._yuievt.hasTargets&&o.bubble(e,t,h,r);else{a.sibling=c,a.target=h,a.originalTarget=h,a.currentTarget=o,l=a.broadcast,a.broadcast=!1,a.emitFacade=!0,a.stack=r,s=s&&a.fire.apply(a,t||e.details||[]),a.broadcast=l,a.originalTarget=null;if(a.stopped)break}o._yuievt.bubbling=p}return s},n=new e.EventFacade,r={};for(i in n)r[i]=!0},"3.7.3",{requires:["event-custom-base"]}),YUI.add("node-core",function(e,t){var n=".",r="nodeName",i="nodeType",s="ownerDocument",o="tagName",u="_yuid",a={},f=Array.prototype.slice,l=e.DOM,c=function(t){if(!this.getDOMNode)return new c(t);if(typeof t=="string"){t=c._fromString(t);if(!t)return null}var n=t.nodeType!==9?t.uniqueID:t[u];n&&c._instances[n]&&c._instances[n]._node!==t&&(t[u]=null),n=n||e.stamp(t),n||(n=e.guid()),this[u]=n,this._node=t,this._stateProxy=t,this._initPlugins&&this._initPlugins()},h=function(t){var n=null;return t&&(n=typeof t=="string"?function(n){return e.Selector.test(n,t)}:function(n){return t(e.one(n))}),n};c.ATTRS={},c.DOM_EVENTS={},c._fromString=function(t){return t&&(t.indexOf("doc")===0?t=e.config.doc:t.indexOf("win")===0?t=e.config.win:t=e.Selector.query(t,null,!0)),t||null},c.NAME="node",c.re_aria=/^(?:role$|aria-)/,c.SHOW_TRANSITION="fadeIn",c.HIDE_TRANSITION="fadeOut",c._instances={},c.getDOMNode=function(e){return e?e.nodeType?e:e._node||null:null},c.scrubVal=function(t,n){if(t){if(typeof t=="object"||typeof t=="function")if(i in t||l.isWindow(t))t=e.one(t);else if(t.item&&!t._nodes||t[0]&&t[0][i])t=e.all(t)}else typeof t=="undefined"?t=n:t===null&&(t=null);return t},c.addMethod=function(e,t,n){e&&t&&typeof t=="function"&&(c.prototype[e]=function(){var e=f.call(arguments),n=this,r;return e[0]&&e[0]._node&&(e[0]=e[0]._node),e[1]&&e[1]._node&&(e[1]=e[1]._node),e.unshift(n._node),r=t.apply(n,e),r&&(r=c.scrubVal(r,n)),typeof r!="undefined"||(r=n),r})},c.importMethod=function(t,n,r){typeof n=="string"?(r=r||n,c.addMethod(r,t[n],t)):e.Array.each(n,function(e){c.importMethod(t,e)})},c.one=function(t){var n=null,r,i;if(t){if(typeof t=="string"){t=c._fromString(t);if(!t)return null}else if(t.getDOMNode)return t;if(t.nodeType||e.DOM.isWindow(t)){i=t.uniqueID&&t.nodeType!==9?t.uniqueID:t._yuid,n=c._instances[i],r=n?n._node:null;if(!n||r&&t!==r)n=new c(t),t.nodeType!=11&&(c._instances[n[u]]=n)}}return n},c.DEFAULT_SETTER=function(t,r){var i=this._stateProxy,s;return t.indexOf(n)>-1?(s=t,t=t.split(n),e.Object.setValue(i,t,r)):typeof i[t]!="undefined"&&(i[t]=r),r},c.DEFAULT_GETTER=function(t){var r=this._stateProxy,i;return t.indexOf&&t.indexOf(n)>-1?i=e.Object.getValue(r,t.split(n)):typeof r[t]!="undefined"&&(i=r[t]),i},e.mix(c.prototype,{DATA_PREFIX:"data-",toString:function(){var e=this[u]+": not bound to a node",t=this._node,n,i,s;return t&&(n=t.attributes,i=n&&n.id?t.getAttribute("id"):null,s=n&&n.className?t.getAttribute("className"):null,e=t[r],i&&(e+="#"+i),s&&(e+="."+s.replace(" ",".")),e+=" "+this[u]),e},get:function(e){var t;return this._getAttr?t=this._getAttr(e):t=this._get(e),t?t=c.scrubVal(t,this):t===null&&(t=null),t},_get:function(e){var t=c.ATTRS[e],n;return t&&t.getter?n=t.getter.call(this):c.re_aria.test(e)?n=this._node.getAttribute(e,2):n=c.DEFAULT_GETTER.apply(this,arguments),n},set:function(e,t){var n=c.ATTRS[e];return this._setAttr?this._setAttr.apply(this,arguments):n&&n.setter?n.setter.call(this,t,e):c.re_aria.test(e)?this._node.setAttribute(e,t):c.DEFAULT_SETTER.apply(this,arguments),this},setAttrs:function(t){return this._setAttrs?this._setAttrs(t):e.Object.each(t,function(e,t){this.set(t,e)},this),this},getAttrs:function(t){var n={};return this._getAttrs?this._getAttrs(t):e.Array.each(t,function(e,t){n[e]=this.get(e)},this),n},compareTo:function(e){var t=this._node;return e&&e._node&&(e=e._node),t===e},inDoc:function(e){var t=this._node;e=e?e._node||e:t[s];if(e.documentElement)return l.contains(e.documentElement,t)},getById:function(t){var n=this._node,r=l.byId(t,n[s]);return r&&l.contains(n,r)?r=e.one(r):r=null,r},ancestor:function(t,n,r){return arguments.length===2&&(typeof n=="string"||typeof n=="function")&&(r=n),e.one(l.ancestor(this._node,h(t),n,h(r)))},ancestors:function(t,n,r){return arguments.length===2&&(typeof n=="string"||typeof n=="function")&&(r=n),e.all(l.ancestors(this._node,h(t),n,h(r)))},previous:function(t,n){return e.one(l.elementByAxis(this._node,"previousSibling",h(t),n))},next:function(t,n){return e.one(l.elementByAxis(this._node,"nextSibling",h(t),n))},siblings:function(t){return e.all(l.siblings(this._node,h(t)))},one:function(t){return e.one(e.Selector.query(t,this._node,!0))},all:function(t){var n=e.all(e.Selector.query(t,this._node));return n._query=t,n._queryRoot=this._node,n},test:function(t){return e.Selector.test(this._node,t)},remove:function(e){var t=this._node;return t&&t.parentNode&&t.parentNode.removeChild(t),e&&this.destroy(),this},replace:function(e){var t=this._node;return typeof e=="string"&&(e=c.create(e)),t.parentNode.replaceChild(c.getDOMNode(e),t),this},replaceChild:function(t,n){return typeof t=="string"&&(t=l.create(t)),e.one(this._node.replaceChild(c.getDOMNode(t),c.getDOMNode(n)))},destroy:function(t){var n=e.config.doc.uniqueID?"uniqueID":"_yuid",r;this.purge(),this.unplug&&this.unplug(),this.clearData(),t&&e.NodeList.each(this.all("*"),function(t){r=c._instances[t[n]],r?r.destroy():e.Event.purgeElement(t)}),this._node=null,this._stateProxy=null,delete c._instances[this._yuid]},invoke:function(e,t,n,r,i,s){var o=this._node,u;return t&&t._node&&(t=t._node),n&&n._node&&(n=n._node),u=o[e](t,n,r,i,s),c.scrubVal(u,this)},swap:e.config.doc.documentElement.swapNode?function(e){this._node.swapNode(c.getDOMNode(e))}:function(e){e=c.getDOMNode(e);var t=this._node,n=e.parentNode,r=e.nextSibling;return r===t?n.insertBefore(t,e):e===t.nextSibling?n.insertBefore(e,t):(t.parentNode.replaceChild(e,t),l.addHTML(n,t,r)),this},hasMethod:function(e){var t=this._node;return!(!(t&&e in t&&typeof t[e]!="unknown")||typeof t[e]!="function"&&String(t[e]).indexOf("function")!==1)},isFragment:function(){return this.get("nodeType")===11},empty:function(){return this.get("childNodes").remove().destroy(!0),this},getDOMNode:function(){return this._node}},!0),e.Node=c,e.one=c.one;var p=function(t){var n=[];t&&(typeof t=="string"?(this._query=t,t=e.Selector.query(t)):t.nodeType||l.isWindow(t)?t=[t]:t._node?t=[t._node]:t[0]&&t[0]._node?(e.Array.each(t,function(e){e._node&&n.push(e._node)}),t=n):t=e.Array(t,0,!0)),this._nodes=t||[]};p.NAME="NodeList",p.getDOMNodes=function(e){return e&&e._nodes?e._nodes:e},p.each=function(t,n,r){var i=t._nodes;i&&i.length&&e.Array.each(i,n,r||t)},p.addMethod=function(t,n,r){t&&n&&(p.prototype[t]=function(){var t=[],i=arguments;return e.Array.each(this._nodes,function(s){var o=s.uniqueID&&s.nodeType!==9?"uniqueID":"_yuid",u=e.Node._instances[s[o]],a,f;u||(u=p._getTempNode(s)),a=r||u,f=n.apply(a,i),f!==undefined&&f!==u&&(t[t.length]=f)}),t.length?t:this})},p.importMethod=function(t,n,r){typeof n=="string"?(r=r||n,p.addMethod(n,t[n])):e.Array.each(n,function(e){p.importMethod(t,e)})},p._getTempNode=function(t){var n=p._tempNode;return n||(n=e.Node.create("
          "),p._tempNode=n),n._node=t,n._stateProxy=t,n},e.mix(p.prototype,{_invoke:function(e,t,n){var r=n?[]:this;return this.each(function(i){var s=i[e].apply(i,t);n&&r.push(s)}),r},item:function(t){return e.one((this._nodes||[])[t])},each:function(t,n){var r=this;return e.Array.each(this._nodes,function(i,s){return i=e.one(i),t.call(n||i,i,s,r)}),r},batch:function(t,n){var r=this;return e.Array.each(this._nodes,function(i,s){var o=e.Node._instances[i[u]];return o||(o=p._getTempNode(i)),t.call(n||o,o,s,r)}),r},some:function(t,n){var r=this;return e.Array.some(this._nodes,function(i,s){return i=e.one(i),n=n||i,t.call(n,i,s,r)})},toFrag:function(){return e.one(e.DOM._nl2frag(this._nodes))},indexOf:function(t){return e.Array.indexOf(this._nodes,e.Node.getDOMNode(t))},filter:function(t){return e.all(e.Selector.filter(this._nodes,t))},modulus:function(t,n){n=n||0;var r=[];return p.each(this,function(e,i){i%t===n&&r.push(e)}),e.all(r)},odd:function(){return this.modulus(2,1)},even:function(){return this.modulus(2)},destructor:function(){},refresh:function(){var t,n=this._nodes,r=this._query,i=this._queryRoot;return r&&(i||n&&n[0]&&n[0].ownerDocument&&(i=n[0].ownerDocument),this._nodes=e.Selector.query(r,i)),this},size:function(){return this._nodes.length},isEmpty:function(){return this._nodes.length<1},toString:function(){var e="",t=this[u]+": not bound to any nodes",n=this._nodes,i;return n&&n[0]&&(i=n[0],e+=i[r],i.id&&(e+="#"+i.id),i.className&&(e+="."+i.className.replace(" ",".")),n.length>1&&(e+="...["+n.length+" items]")),e||t},getDOMNodes:function(){return this._nodes}},!0),p.importMethod(e.Node.prototype,["destroy","empty","remove","set"]),p.prototype.get=function(t){var n=[],r=this._nodes,i=!1,s=p._getTempNode,o,u;return r[0]&&(o=e.Node._instances[r[0]._yuid]||s(r[0]),u=o._get(t),u&&u.nodeType&&(i=!0)),e.Array.each(r,function(r){o=e.Node._instances[r._yuid],o||(o=s(r)),u=o._get(t),i||(u=e.Node.scrubVal(u,o)),n.push(u)}),i?e.all(n):n},e.NodeList=p,e.all=function(e){return new p(e)},e.Node.all=e.all;var d=e.NodeList,v=Array.prototype,m={concat:1,pop:0,push:0,shift:0,slice:1,splice:1,unshift:0};e.Object.each(m,function(t,n){d.prototype[n]=function(){var r=[],i=0,s,o;while(typeof (s=arguments[i++])!="undefined")r.push(s._node||s._nodes||s);return o=v[n].apply(this._nodes,r),t?o=e.all(o):o=e.Node.scrubVal(o),o}}),e.Array.each(["removeChild","hasChildNodes","cloneNode","hasAttribute","scrollIntoView","getElementsByTagName","focus","blur","submit","reset","select","createCaption"],function(t){e.Node.prototype[t]=function(e,n,r){var i=this.invoke(t,e,n,r);return i}}),e.Node.prototype.removeAttribute=function(e){var t=this._node;return t&&t.removeAttribute(e,0),this},e.Node.importMethod(e.DOM,["contains","setAttribute","getAttribute","wrap","unwrap","generateID"]),e.NodeList.importMethod(e.Node.prototype,["getAttribute","setAttribute","removeAttribute","unwrap","wrap","generateID"])},"3.7.3",{requires:["dom-core","selector"]}),YUI.add("node-base",function(e,t){var n=["hasClass","addClass","removeClass","replaceClass","toggleClass"];e.Node.importMethod(e.DOM,n),e.NodeList.importMethod(e.Node.prototype,n);var r=e.Node,i=e.DOM;r.create=function(t,n){return n&&n._node&&(n=n._node),e.one(i.create(t,n))},e.mix(r.prototype,{create:r.create,insert:function(e,t){return this._insert(e,t),this},_insert:function(e,t){var n=this._node,r=null;return typeof t=="number"?t=this._node.childNodes[t]:t&&t._node&&(t=t._node),e&&typeof e!="string"&&(e=e._node||e._nodes||e),r=i.addHTML(n,e,t),r},prepend:function(e){return this.insert(e,0)},append:function(e){return this.insert(e,null)},appendChild:function(e){return r.scrubVal(this._insert(e))},insertBefore:function(t,n){return e.Node.scrubVal(this._insert(t,n))},appendTo:function(t){return e.one(t).append(this),this},setContent:function(e){return this._insert(e,"replace"),this},getContent:function(e){return this.get("innerHTML")}}),e.Node.prototype.setHTML=e.Node.prototype.setContent,e.Node.prototype.getHTML=e.Node.prototype.getContent,e.NodeList.importMethod(e.Node.prototype,["append","insert","appendChild","insertBefore","prepend","setContent","getContent","setHTML","getHTML"]);var r=e.Node,i=e.DOM;r.ATTRS={text:{getter:function(){return i.getText(this._node)},setter:function(e){return i.setText(this._node,e),e}},"for":{getter:function(){return i.getAttribute(this._node,"for")},setter:function(e){return i.setAttribute(this._node,"for",e),e}},options:{getter:function(){return this._node.getElementsByTagName("option")}},children:{getter:function(){var t=this._node,n=t.children,r,i,s;if(!n){r=t.childNodes,n=[];for(i=0,s=r.length;i1?this._data[e]=t:this._data=e,this},clearData:function(e){return"_data"in this&&(typeof e!="undefined"?delete this._data[e]:delete this._data),this}}),e.mix(e.NodeList.prototype,{getData:function(e){var t=arguments.length?[e]:[];return this._invoke("getData",t,!0)},setData:function(e,t){var n=arguments.length>1?[e,t]:[e];return this._invoke("setData",n)},clearData:function(e){var t=arguments.length?[e]:[];return this._invoke("clearData",[e])}})},"3.7.3",{requires:["event-base","node-core","dom-base"]}),function(){var e=YUI.Env;e._ready||(e._ready=function(){e.DOMReady=!0,e.remove(YUI.config.doc,"DOMContentLoaded",e._ready)},e.add(YUI.config.doc,"DOMContentLoaded",e._ready))}(),YUI.add("event-base",function(e,t){e.publish("domready",{fireOnce:!0,async:!0}),YUI.Env.DOMReady?e.fire("domready"):e.Do.before(function(){e.fire("domready")},YUI.Env,"_ready");var n=e.UA,r={},i={63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9,63272:46,63273:36,63275:35},s=function(t){if(!t)return t;try{t&&3==t.nodeType&&(t=t.parentNode)}catch(n){return null}return e.one(t)},o=function(e,t,n){this._event=e,this._currentTarget=t,this._wrapper=n||r,this.init()};e.extend(o,Object,{init:function(){var e=this._event,t=this._wrapper.overrides,r=e.pageX,o=e.pageY,u,a=this._currentTarget;this.altKey=e.altKey,this.ctrlKey=e.ctrlKey,this.metaKey=e.metaKey,this.shiftKey=e.shiftKey,this.type=t&&t.type||e.type,this.clientX=e.clientX,this.clientY=e.clientY,this.pageX=r,this.pageY=o,u=e.keyCode||e.charCode,n.webkit&&u in i&&(u=i[u]),this.keyCode=u,this.charCode=u,this.which=e.which||e.charCode||u,this.button=this.which,this.target=s(e.target),this.currentTarget=s(a),this.relatedTarget=s(e.relatedTarget);if(e.type=="mousewheel"||e.type=="DOMMouseScroll")this.wheelDelta=e.detail?e.detail*-1:Math.round(e.wheelDelta/80)||(e.wheelDelta<0?-1:1);this._touch&&this._touch(e,a,this._wrapper)},stopPropagation:function(){this._event.stopPropagation(),this._wrapper.stopped=1,this.stopped=1},stopImmediatePropagation:function(){var e=this._event;e.stopImmediatePropagation?e.stopImmediatePropagation():this.stopPropagation(),this._wrapper.stopped=2,this.stopped=2},preventDefault:function(e){var t=this._event;t.preventDefault(),t.returnValue=e||!1,this._wrapper.prevented=1,this.prevented=1},halt:function(e){e?this.stopImmediatePropagation():this.stopPropagation(),this.preventDefault()}}),o.resolve=s,e.DOM2EventFacade=o,e.DOMEventFacade=o,function(){e.Env.evt.dom_wrappers={},e.Env.evt.dom_map={};var t=e.DOM,n=e.Env.evt,r=e.config,i=r.win,s=YUI.Env.add,o=YUI.Env.remove,u=function(){YUI.Env.windowLoaded=!0,e.Event._load(),o(i,"load",u)},a=function(){e.Event._unload()},f="domready",l="~yui|2|compat~",c=function(n){try{return n&&typeof n!="string"&&e.Lang.isNumber(n.length)&&!n.tagName&&!t.isWindow(n)}catch(r){return!1}},h=e.CustomEvent.prototype._delete,p=function(t){var n=h.apply(this,arguments);return this.hasSubs()||e.Event._clean(this),n},d=function(){var r=!1,u=0,h=[],v=n.dom_wrappers,m=null,g=n.dom_map;return{POLL_RETRYS:1e3,POLL_INTERVAL:40,lastError:null,_interval:null,_dri:null,DOMReady:!1,startInterval:function(){d._interval||(d._interval=setInterval(d._poll,d.POLL_INTERVAL))},onAvailable:function(t,n,r,i,s,o){var a=e.Array(t),f,l;for(f=0;f4?n.slice(4):null),h&&a.fire(),p):!1},detach:function(n,r,i,s){var o=e.Array(arguments,0,!0),u,a,f,h,p,m;o[o.length-1]===l&&(u=!0);if(n&&n.detach)return n.detach();typeof i=="string"&&(u?i=t.byId(i):(i=e.Selector.query(i),a=i.length,a<1?i=null:a==1&&(i=i[0])));if(!i)return!1;if(i.detach)return o.splice(2,1),i.detach.apply(i,o);if(c(i)){f=!0;for(h=0,a=i.length;h0),a=[],f=function(t,n){var r,i=n.override;try{n.compat?(n.override?i===!0?r=n.obj:r=i:r=t,n.fn.call(r,n.obj)):(r=n.obj||e.one(t),n.fn.apply(r,e.Lang.isArray(i)?i:[]))}catch(s){}};for(n=0,i=h.length;n4?e.Array(arguments,4,!0):null;return e.Event.onAvailable.call(e.Event,r,n,i,s)}},e.Env.evt.plugins.contentready={on:function(t,n,r,i){var s=arguments.length>4?e.Array(arguments,4,!0):null;return e.Event.onContentReady.call(e.Event,r,n,i,s)}}},"3.7.3",{requires:["event-custom-base"]}),YUI.add("pluginhost-base",function(e,t){function r(){this._plugins={}}var n=e.Lang;r.prototype={plug:function(e,t){var r,i,s;if(n.isArray(e))for(r=0,i=e.length;r=0;o--)s=n[o],a=s._UNPLUG,a&&e.mix(i,a,!0),u=s._PLUG,u&&e.mix(r,u,!0);for(f in r)r.hasOwnProperty(f)&&(i[f]||this.plug(r[f]));t&&t.plugins&&this.plug(t.plugins)},n.plug=function(t,n,i){var s,o,u,a;if(t!==e.Base){t._PLUG=t._PLUG||{},r.isArray(n)||(i&&(n={fn:n,cfg:i}),n=[n]);for(o=0,u=n.length;o1&&(g=p.shift(),c[0]=t=p.shift()),d=e.Node.DOM_EVENTS[t],s(d)&&d.delegate&&(E=d.delegate.apply(d,arguments));if(!E){if(!t||!r||!u||!l)return;v=h?e.Selector.query(h,null,!0):u,!v&&i(u)&&(E=e.on("available",function(){e.mix(E,e.delegate.apply(e,c),!0)},u)),!E&&v&&(c.splice(2,2,v),E=e.Event._attach(c,{facade:!1}),E.sub.filter=l,E.sub._notify=f.notifySub)}return E&&g&&(m=a[g]||(a[g]={}),m=m[t]||(m[t]=[]),m.push(E)),E}var n=e.Array,r=e.Lang,i=r.isString,s=r.isObject,o=r.isArray,u=e.Selector.test,a=e.Env.evt.handles;f.notifySub=function(t,r,i){r=r.slice(),this.args&&r.push.apply(r,this.args);var s=f._applyFilter(this.filter,r,i),o,u,a,l;if(s){s=n(s),o=r[0]=new e.DOMEventFacade(r[0],i.el,i),o.container=e.one(i.el);for(u=0,a=s.length;u=200&&n<300||n===304||n===1223?this.success(e,t):this.failure(e,t)},_rS:function(e,t){var n=this;e.c.readyState===4&&(t.timeout&&n._clearTimeout(e.id),setTimeout(function(){n.complete(e,t),n._result(e,t)},0))},_abort:function(e,t){e&&e.c&&(e.e=t,e.c.abort())},send:function(t,n,i){var s,o,u,a,f,c,h=this,p=t,d={};n=n?e.Object(n):{},s=h._create(n,i),o=n.method?n.method.toUpperCase():"GET",f=n.sync,c=n.data,e.Lang.isObject(c)&&!c.nodeType&&!s.upload&&(c=e.QueryString.stringify(c));if(n.form){if(n.form.upload)return h.upload(s,t,n);c=h._serialize(n.form,c)}if(c)switch(o){case"GET":case"HEAD":case"DELETE":p=h._concat(p,c),c="";break;case"POST":case"PUT":n.headers=e.merge({"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"},n.headers)}if(s.xdr)return h.xdr(p,s,n);if(s.notify)return s.c.send(s,t,n);!f&&!s.upload&&(s.c.onreadystatechange=function(){h._rS(s,n)});try{s.c.open(o,p,!f,n.username||null,n.password||null),h._setHeaders(s.c,n.headers||{}),h.start(s,n),n.xdr&&n.xdr.credentials&&l&&(s.c.withCredentials=!0),s.c.send(c);if(f){for(u=0,a=r.length;u":{axis:"parentNode",direct:!0},"+":{axis:"previousSibling",direct:!0}},_parsers:[{name:i,re:/^\uE003(-?[a-z]+[\w\-]*)+([~\|\^\$\*!=]=?)?['"]?([^\uE004'"]*)['"]?\uE004/i,fn:function(t,n){var r=t[2]||"",i=u.operators,s=t[3]?t[3].replace(/\\/g,""):"",o;if(t[1]==="id"&&r==="="||t[1]==="className"&&e.config.doc.documentElement.getElementsByClassName&&(r==="~="||r==="="))n.prefilter=t[1],t[3]=s,n[t[1]]=t[1]==="id"?t[3]:s;r in i&&(o=i[r],typeof o=="string"&&(t[3]=s.replace(u._reRegExpTokens,"\\$1"),o=new RegExp(o.replace("{val}",t[3]))),t[2]=o);if(!n.last||n.prefilter!==t[1])return t.slice(1)}},{name:r,re:/^((?:-?[_a-z]+[\w-]*)|\*)/i,fn:function(e,t){var n=e[1];u._isXML||(n=n.toUpperCase()),t.tagName=n;if(n!=="*"&&(!t.last||t.prefilter))return[r,"=",n];t.prefilter||(t.prefilter="tagName")}},{name:s,re:/^\s*([>+~]|\s)\s*/,fn:function(e,t){}},{name:o,re:/^:([\-\w]+)(?:\uE005['"]?([^\uE005]*)['"]?\uE006)*/i,fn:function(e,t){var n=u[o][e[1]];return n?(e[2]&&(e[2]=e[2].replace(/\\/g,"")),[e[2],n]):!1}}],_getToken:function(e){return{tagName:null,id:null,className:null,attributes:{},combinator:null,tests:[]}},_tokenize:function(t){t=t||"",t=u._parseSelector(e.Lang.trim(t));var n=u._getToken(),r=t,i=[],o=!1,a,f,l,c;e:do{o=!1;for(l=0;c=u._parsers[l++];)if(a=c.re.exec(t)){c.name!==s&&(n.selector=t),t=t.replace(a[0],""),t.length||(n.last=!0),u._attrFilters[a[1]]&&(a[1]=u._attrFilters[a[1]]),f=c.fn(a,n);if(f===!1){o=!1;break e}f&&n.tests.push(f);if(!t.length||c.name===s)i.push(n),n=u._getToken(n),c.name===s&&(n.combinator=e.Selector.combinators[a[1]]);o=!0}}while(o&&t.length);if(!o||t.length)i=[];return i},_replaceMarkers:function(e){return e=e.replace(/\[/g,"\ue003"),e=e.replace(/\]/g,"\ue004"),e=e.replace(/\(/g,"\ue005"),e=e.replace(/\)/g,"\ue006"),e},_replaceShorthand:function(t){var n=e.Selector.shorthand,r;for(r in n)n.hasOwnProperty(r)&&(t=t.replace(new RegExp(r,"gi"),n[r]));return t},_parseSelector:function(t){var n=e.Selector._replaceSelector(t),t=n.selector;return t=e.Selector._replaceShorthand(t),t=e.Selector._restore("attr",t,n.attrs),t=e.Selector._restore("pseudo",t,n.pseudos),t=e.Selector._replaceMarkers(t),t=e.Selector._restore("esc",t,n.esc),t},_attrFilters:{"class":"className","for":"htmlFor"},getters:{href:function(t,n){return e.DOM.getAttribute(t,n)},id:function(t,n){return e.DOM.getId(t)}}};e.mix(e.Selector,a,!0),e.Selector.getters.src=e.Selector.getters.rel=e.Selector.getters.href,e.Selector.useNative&&e.config.doc.querySelector&&(e.Selector.shorthand["\\.(-?[_a-z]+[-\\w]*)"]="[class~=$1]")},"3.7.3",{requires:["selector-native"]}),YUI.add("selector-css3",function(e,t){e.Selector._reNth=/^(?:([\-]?\d*)(n){1}|(odd|even)$)*([\-+]?\d*)$/,e.Selector._getNth=function(t,n,r,i){e.Selector._reNth.test(n);var s=parseInt(RegExp.$1,10),o=RegExp.$2,u=RegExp.$3,a=parseInt(RegExp.$4,10)||0,f=[],l=e.DOM._children(t.parentNode,r),c;u?(s=2,c="+",o="n",a=u==="odd"?1:0):isNaN(s)&&(s=o?1:0);if(s===0)return i&&(a=l.length-a+1),l[a-1]===t?!0:!1;s<0&&(i=!!i,s=Math.abs(s));if(!i){for(var h=a-1,p=l.length;h=0&&l[h]===t)return!0}else for(var h=l.length-a,p=l.length;h>=0;h-=s)if(h-1},checked:function(e){return e.checked===!0||e.selected===!0},enabled:function(e){return e.disabled!==undefined&&!e.disabled},disabled:function(e){return e.disabled}}),e.mix(e.Selector.operators,{"^=":"^{val}","$=":"{val}$","*=":"{val}"}),e.Selector.combinators["~"]={axis:"previousSibling"}},"3.7.3",{requires:["selector-native","selector-css2"]}),YUI.add("yui-log",function(e,t){var n=e,r="yui:log",i="undefined",s={debug:1,info:1,warn:1,error:1};n.log=function(e,t,o,u){var a,f,l,c,h,p=n,d=p.config,v=p.fire?p:YUI.Env.globalEvents;return d.debug&&(o=o||"",typeof o!="undefined"&&(f=d.logExclude,l=d.logInclude,!l||o in l?l&&o in l?a=!l[o]:f&&o in f&&(a=f[o]):a=1),a||(d.useBrowserConsole&&(c=o?o+": "+e:e,p.Lang.isFunction(d.logFn)?d.logFn.call(p,e,t,o):typeof console!=i&&console.log?(h=t&&console[t]&&t in s?t:"log",console[h](c)):typeof opera!=i&&opera.postError(c)),v&&!u&&(v==p&&!v.getEvent(r)&&v.publish(r,{broadcast:2}),v.fire(r,{msg:e,cat:t,src:o})))),p},n.message=function(){return n.log.apply(n,arguments)}},"3.7.3",{requires:["yui-base"]}),YUI.add("dump",function(e,t){var n=e.Lang,r="{...}",i="f(){...}",s=", ",o=" => ",u=function(e,t){var u,a,f=[],l=n.type(e);if(!n.isObject(e))return e+"";if(l=="date")return e;if(e.nodeType&&e.tagName)return e.tagName+"#"+e.id;if(e.document&&e.navigator)return"window";if(e.location&&e.body)return"document";if(l=="function")return i;t=n.isNumber(t)?t:3;if(l=="array"){f.push("[");for(u=0,a=e.length;u0?n.dump(e[u],t-1):r):f.push(e[u]),f.push(s);f.length>1&&f.pop(),f.push("]")}else if(l=="regexp")f.push(e.toString());else{f.push("{");for(u in e)if(e.hasOwnProperty(u))try{f.push(u+o),n.isObject(e[u])?f.push(t>0?n.dump(e[u],t-1):r):f.push(e[u]),f.push(s)}catch(c){f.push("Error: "+c.message)}f.length>1&&f.pop(),f.push("}")}return f.join("")};e.dump=u,n.dump=u},"3.7.3",{requires:["yui-base"]}),YUI.add("transition-timer",function(e,t){var n=e.Transition;e.mix(n.prototype,{_start:function(){n.useNative?this._runNative():this._runTimer()},_runTimer:function(){var t=this;t._initAttrs(),n._running[e.stamp(t)]=t,t._startTime=new Date,n._startTimer()},_endTimer:function(){var t=this;delete n._running[e.stamp(t)],t._startTime=null},_runFrame:function(){var e=new Date-this._startTime;this._runAttrs(e)},_runAttrs:function(t){var r=this,i=r._node,s=r._config,o=e.stamp(i),u=n._nodeAttrs[o],a=n.behaviors,f=!1,l=!1,c,h,p,d,v,m,g,y,b;for(h in u)if((p=u[h])&&p.transition===r){g=p.duration,m=p.delay,v=(t-m)/1e3,y=t,c={type:"propertyEnd",propertyName:h,config:s,elapsedTime:v},d=b in a&&"set"in a[b]?a[b].set:n.DEFAULT_SETTER,f=y>=g,y>g&&(y=g);if(!m||t>=m)d(r,h,p.from,p.to,y-m,g-m,p.easing,p.unit),f&&(delete u[h],r._count--,s[h]&&s[h].on&&s[h].on.end&&s[h].on.end.call(e.one(i),c),!l&&r._count<=0&&(l=!0,r._end(v),r._endTimer()))}},_initAttrs:function(){var t=this,r=n.behaviors,i=e.stamp(t._node),s=n._nodeAttrs[i],o,u,a,f,l,c,h,p,d,v,m;for(c in s)(o=s[c])&&o.transition===t&&(u=o.duration*1e3,a=o.delay*1e3,f=o.easing,l=o.value,c in t._node.style||c in e.DOM.CUSTOM_STYLES?(v=c in r&&"get"in r[c]?r[c].get(t,c):n.DEFAULT_GETTER(t,c),p=n.RE_UNITS.exec(v),h=n.RE_UNITS.exec(l),v=p?p[1]:v,m=h?h[1]:l,d=h?h[2]:p?p[2]:"",!d&&n.RE_DEFAULT_UNIT.test(c)&&(d=n.DEFAULT_UNIT),typeof f=="string"&&(f.indexOf("cubic-bezier")>-1?f=f.substring(13,f.length-1).split(","):n.easings[f]&&(f=n.easings[f])),o.from=Number(v),o.to=Number(m),o.unit=d,o.easing=f,o.duration=u+a,o.delay=a):(delete s[c],t._count--))},destroy:function(){this.detachAll(),this._node=null}},!0),e.mix(e.Transition,{_runtimeAttrs:{},RE_DEFAULT_UNIT:/^width|height|top|right|bottom|left|margin.*|padding.*|border.*$/i,DEFAULT_UNIT:"px",intervalTime:20,behaviors:{left:{get:function(t,n){return e.DOM._getAttrOffset(t._node,n)}}},DEFAULT_SETTER:function(t,r,i,s,o,u,a,f){i=Number(i),s=Number(s);var l=t._node,c=n.cubicBezier(a,o/u);c=i+c[0]*(s-i);if(l){if(r in l.style||r in e.DOM.CUSTOM_STYLES)f=f||"",e.DOM.setStyle(l,r,c+f)}else t._end()},DEFAULT_GETTER:function(t,n){var r=t._node,i="";if(n in r.style||n in e.DOM.CUSTOM_STYLES)i=e.DOM.getComputedStyle(r,n);return i},_startTimer:function(){n._timer||(n._timer=setInterval(n._runFrame,n.intervalTime))},_stopTimer:function(){clearInterval(n._timer),n._timer=null},_runFrame:function(){var e=!0,t;for(t in n._running)n._running[t]._runFrame&&(e=!1,n._running[t]._runFrame());e&&n._stopTimer()},cubicBezier:function(e,t){var n=0,r=0,i=e[0],s=e[1],o=e[2],u=e[3],a=1,f=0,l=a-3*o+3*i-n,c=3*o-6*i+3*n,h=3*i-3*n,p=n,d=f-3*u+3*s-r,v=3*u-6*s+3*r,m=3*s-3*r,g=r,y=((l*t+c)*t+h)*t+p,b=((d*t+v)*t+m)*t+g;return[y,b]},easings:{ease:[.25,0,1,.25],linear:[0,0,1,1],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1]},_running:{},_timer:null,RE_UNITS:/^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/},!0),n.behaviors.top=n.behaviors.bottom=n.behaviors.right=n.behaviors.left,e.Transition=n},"3.7.3",{requires:["transition"]}),YUI.add("yui",function(e,t){},"3.7.3",{use:["yui","oop","dom","event-custom-base","event-base","pluginhost","node","event-delegate","io-base","json-parse","transition","selector-css3","dom-style-ie","querystring-stringify-simple"]});var Y=YUI().use("*"); diff --git a/lib/yuilib/3.7.3/build/uploader-flash/uploader-flash-coverage.js b/lib/yuilib/3.7.3/build/uploader-flash/uploader-flash-coverage.js deleted file mode 100644 index 523a227f053..00000000000 --- a/lib/yuilib/3.7.3/build/uploader-flash/uploader-flash-coverage.js +++ /dev/null @@ -1,1302 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -if (typeof _yuitest_coverage == "undefined"){ - _yuitest_coverage = {}; - _yuitest_coverline = function(src, line){ - var coverage = _yuitest_coverage[src]; - if (!coverage.lines[line]){ - coverage.calledLines++; - } - coverage.lines[line]++; - }; - _yuitest_coverfunc = function(src, name, line){ - var coverage = _yuitest_coverage[src], - funcId = name + ":" + line; - if (!coverage.functions[funcId]){ - coverage.calledFunctions++; - } - coverage.functions[funcId]++; - }; -} -_yuitest_coverage["build/uploader-flash/uploader-flash.js"] = { - lines: {}, - functions: {}, - coveredLines: 0, - calledLines: 0, - coveredFunctions: 0, - calledFunctions: 0, - path: "build/uploader-flash/uploader-flash.js", - code: [] -}; -_yuitest_coverage["build/uploader-flash/uploader-flash.js"].code=["YUI.add('uploader-flash', function (Y, NAME) {","",""," /**"," * This module provides a UI for file selection and multiple file upload capability using"," * Flash as a transport engine."," * The supported features include: automatic upload queue management, upload progress"," * tracking, file filtering, server response retrieval and error reporting."," *"," * @module uploader-flash"," */ ","","// Shorthands for external modules","var substitute = Y.substitute,"," UploaderQueue = Y.Uploader.Queue,"," getCN = Y.ClassNameManager.getClassName,"," UPLOADER = 'uploader',"," SELECT_FILES = getCN(UPLOADER, 'selectfiles-button');","",""," /**"," * This module provides a UI for file selection and multiple file upload capability"," * using Flash as a transport engine."," * @class UploaderFlash"," * @extends Widget"," * @constructor"," * @param {Object} config Configuration object."," */","","function UploaderFlash(config) {"," UploaderFlash.superclass.constructor.apply ( this, arguments );","}","","","","Y.UploaderFlash = Y.extend(UploaderFlash, Y.Widget, {",""," /**"," * Stored value of the current button state (based on "," * mouse events dispatched by the Flash player)"," * @property _buttonState"," * @type {String}"," * @protected"," */"," _buttonState: \"up\",",""," /**"," * Stored value of the current button focus state (based "," * on keyboard and mouse events)."," * @property _buttonFocus"," * @type {Boolean}"," * @protected"," */"," _buttonFocus: false,",""," /**"," * Stored value of the unique id for the container that holds the "," * Flash uploader."," *"," * @property _swfContainerId"," * @type {String}"," * @protected"," */"," _swfContainerId: null,",""," /**"," * Stored reference to the instance of SWF used to host the"," * Flash uploader."," *"," * @property _swfReference"," * @type {SWF}"," * @protected"," */"," _swfReference: null,",""," /**"," * Stored reference to the instance of Uploader.Queue used to manage"," * the upload process. This is a read-only property that only exists"," * during an active upload process. Only one queue can be active at"," * a time; if an upload start is attempted while a queue is active,"," * it will be ignored."," *"," * @property queue"," * @type {Y.Uploader.Queue}"," */"," queue: null,",""," /**"," * Stored event bindings for keyboard navigation to and from the uploader."," *"," * @property _tabElementBindings"," * @type {Object}"," * @protected"," */"," _tabElementBindings: null,","","","/**"," * Construction logic executed during UploaderFlash instantiation."," *"," * @method initializer"," * @protected"," */"," initializer : function () {",""," // Assign protected variable values"," this._swfContainerId = Y.guid(\"uploader\");"," this._swfReference = null;"," this.queue = null;"," this._buttonState = \"up\";"," this._buttonFocus = null;"," this._tabElementBindings = null;"," this._fileList = [];",""," // Publish available events",""," /**"," * Signals that files have been selected. "," *"," * @event fileselect"," * @param event {Event} The event object for the `fileselect` with the"," * following payload:"," *
          "," *
          fileList
          "," *
          An `Array` of files selected by the user, encapsulated"," * in Y.FileFlash objects.
          "," *
          "," */"," this.publish(\"fileselect\");",""," /**"," * Signals that an upload of multiple files has been started. "," *"," * @event uploadstart"," * @param event {Event} The event object for the `uploadstart`."," */"," this.publish(\"uploadstart\");",""," /**"," * Signals that an upload of a specific file has started. "," *"," * @event fileuploadstart"," * @param event {Event} The event object for the `fileuploadstart` with the"," * following payload:"," *
          "," *
          file
          "," *
          A reference to the Y.File that dispatched the event.
          "," *
          originEvent
          "," *
          The original event dispatched by Y.File.
          "," *
          "," */"," this.publish(\"fileuploadstart\");",""," /**"," * Reports on upload progress of a specific file. "," *"," * @event uploadprogress"," * @param event {Event} The event object for the `uploadprogress` with the"," * following payload:"," *
          "," *
          bytesLoaded
          "," *
          The number of bytes of the file that has been uploaded
          "," *
          bytesTotal
          "," *
          The total number of bytes in the file
          "," *
          percentLoaded
          "," *
          The fraction of the file that has been uploaded, out of 100
          "," *
          originEvent
          "," *
          The original event dispatched by the SWF uploader
          "," *
          "," */"," this.publish(\"uploadprogress\");",""," /**"," * Reports on the total upload progress of the file list. "," *"," * @event totaluploadprogress"," * @param event {Event} The event object for the `totaluploadprogress` with the"," * following payload:"," *
          "," *
          bytesLoaded
          "," *
          The number of bytes of the file list that has been uploaded
          "," *
          bytesTotal
          "," *
          The total number of bytes in the file list
          "," *
          percentLoaded
          "," *
          The fraction of the file list that has been uploaded, out of 100
          "," *
          "," */"," this.publish(\"totaluploadprogress\");",""," /**"," * Signals that a single file upload has been completed. "," *"," * @event uploadcomplete"," * @param event {Event} The event object for the `uploadcomplete` with the"," * following payload:"," *
          "," *
          file
          "," *
          The pointer to the instance of `Y.File` whose upload has been completed.
          "," *
          originEvent
          "," *
          The original event fired by the SWF Uploader
          "," *
          data
          "," *
          Data returned by the server.
          "," *
          "," */"," this.publish(\"uploadcomplete\");",""," /**"," * Signals that the upload process of the entire file list has been completed. "," *"," * @event alluploadscomplete"," * @param event {Event} The event object for the `alluploadscomplete`."," */"," this.publish(\"alluploadscomplete\");",""," /**"," * Signals that a error has occurred in a specific file's upload process. "," *"," * @event uploaderror"," * @param event {Event} The event object for the `uploaderror` with the"," * following payload:"," *
          "," *
          originEvent
          "," *
          The original error event fired by the SWF Uploader.
          "," *
          file
          "," *
          The pointer at the instance of Y.FileFlash that returned the error.
          "," *
          source
          "," *
          The source of the upload error, either \"io\" or \"http\"
          "," *
          message
          "," *
          The message that accompanied the error. Corresponds to the text of"," * the error in cases where source is \"io\", and to the HTTP status for"," cases where source is \"http\".
          "," *
          "," */"," this.publish(\"uploaderror\");",""," /**"," * Signals that a mouse has begun hovering over the `Select Files` button. "," *"," * @event mouseenter"," * @param event {Event} The event object for the `mouseenter` event."," */"," this.publish(\"mouseenter\");",""," /**"," * Signals that a mouse has stopped hovering over the `Select Files` button. "," *"," * @event mouseleave"," * @param event {Event} The event object for the `mouseleave` event."," */"," this.publish(\"mouseleave\");",""," /**"," * Signals that a mouse button has been pressed over the `Select Files` button. "," *"," * @event mousedown"," * @param event {Event} The event object for the `mousedown` event."," */"," this.publish(\"mousedown\");",""," /**"," * Signals that a mouse button has been released over the `Select Files` button. "," *"," * @event mouseup"," * @param event {Event} The event object for the `mouseup` event."," */"," this.publish(\"mouseup\");",""," /**"," * Signals that a mouse has been clicked over the `Select Files` button. "," *"," * @event click"," * @param event {Event} The event object for the `click` event."," */"," this.publish(\"click\");"," },",""," /**"," * Creates the DOM structure for the UploaderFlash."," * UploaderFlash's DOM structure consists of two layers: the base \"Select Files\""," * button that can be replaced by the developer's widget of choice; and a transparent"," * Flash overlay positoned above the button that captures all input events."," * The `position` style attribute of the `boundingBox` of the `Uploader` widget"," * is forced to be `relative`, in order to accommodate the Flash player overlay"," * (which is `position`ed `absolute`ly)."," *"," * @method renderUI"," * @protected"," */"," renderUI : function () {"," var boundingBox = this.get(\"boundingBox\"),"," contentBox = this.get('contentBox'),"," selFilesButton = this.get(\"selectFilesButton\");"," "," boundingBox.setStyle(\"position\", \"relative\");"," selFilesButton.setStyles({width: \"100%\", height: \"100%\"});"," contentBox.append(selFilesButton);"," contentBox.append(Y.Node.create(substitute(UploaderFlash.FLASH_CONTAINER, "," {swfContainerId: this._swfContainerId})));"," var flashContainer = Y.one(\"#\" + this._swfContainerId);"," var params = {version: \"10.0.45\","," fixedAttributes: {wmode: \"transparent\", "," allowScriptAccess:\"always\", "," allowNetworking:\"all\", "," scale: \"noscale\""," }"," };"," this._swfReference = new Y.SWF(flashContainer, this.get(\"swfURL\"), params);"," },",""," /**"," * Binds handlers to the UploaderFlash UI events and propagates attribute"," * values to the Flash player."," * The propagation of initial values is set to occur once the Flash player "," * instance is ready (as indicated by the `swfReady` event.)"," *"," * @method bindUI"," * @protected"," */"," bindUI : function () {",""," this._swfReference.on(\"swfReady\", function () {"," this._setMultipleFiles();"," this._setFileFilters();"," this._triggerEnabled();"," this._attachTabElements();"," this.after(\"multipleFilesChange\", this._setMultipleFiles, this);"," this.after(\"fileFiltersChange\", this._setFileFilters, this);"," this.after(\"enabledChange\", this._triggerEnabled, this);"," this.after(\"tabElementsChange\", this._attachTabElements);"," }, this);"," "," this._swfReference.on(\"fileselect\", this._updateFileList, this);","","",""," // this._swfReference.on(\"trace\", function (ev) {console.log(ev.message);});",""," this._swfReference.on(\"mouseenter\", function () {"," this.fire(\"mouseenter\");"," this._setButtonClass(\"hover\", true);"," if (this._buttonState == \"down\") {"," this._setButtonClass(\"active\", true);"," }"," }, this);"," this._swfReference.on(\"mouseleave\", function () {"," this.fire(\"mouseleave\");"," this._setButtonClass(\"hover\", false);"," this._setButtonClass(\"active\", false);"," "," }, this);"," this._swfReference.on(\"mousedown\", function () {"," this.fire(\"mousedown\");"," this._buttonState = \"down\";"," this._setButtonClass(\"active\", true);"," }, this);"," this._swfReference.on(\"mouseup\", function () {"," this.fire(\"mouseup\");"," this._buttonState = \"up\";"," this._setButtonClass(\"active\", false);"," }, this);"," this._swfReference.on(\"click\", function () {"," this.fire(\"click\");"," this._buttonFocus = true;"," this._setButtonClass(\"focus\", true);"," Y.one(\"body\").focus();"," this._swfReference._swf.focus();"," }, this);"," },",""," /**"," * Attaches keyboard bindings to enabling tabbing to and from the instance of the Flash"," * player in the Uploader widget. If the previous and next elements are specified, the"," * keyboard bindings enable the user to tab from the `tabElements[\"from\"]` node to the "," * Flash-powered \"Select Files\" button, and to the `tabElements[\"to\"]` node. "," *"," * @method _attachTabElements"," * @protected"," * @param ev {Event} Optional event payload if called as a `tabElementsChange` handler."," */"," _attachTabElements : function (ev) {"," if (this.get(\"tabElements\") !== null && this.get(\"tabElements\").from !== null && this.get(\"tabElements\").to !== null) {",""," if (this._tabElementBindings !== null) {"," this._tabElementBindings.from.detach();"," this._tabElementBindings.to.detach();"," this._tabElementBindings.tabback.detach();"," this._tabElementBindings.tabforward.detach();"," this._tabElementBindings.focus.detach();"," this._tabElementBindings.blur.detach();"," }"," else {"," this._tabElementBindings = {};"," }",""," var fromElement = Y.one(this.get(\"tabElements\").from);"," var toElement = Y.one(this.get(\"tabElements\").to);","",""," this._tabElementBindings.from = fromElement.on(\"keydown\", function (ev) { "," if (ev.keyCode == 9 && !ev.shiftKey) {"," ev.preventDefault();"," this._swfReference._swf.setAttribute(\"tabindex\", 0); "," this._swfReference._swf.setAttribute(\"role\", \"button\");"," this._swfReference._swf.setAttribute(\"aria-label\", this.get(\"selectButtonLabel\"));"," this._swfReference._swf.focus();"," }"," }, this);"," this._tabElementBindings.to = toElement.on(\"keydown\", function (ev) { "," if (ev.keyCode == 9 && ev.shiftKey) {"," ev.preventDefault();"," this._swfReference._swf.setAttribute(\"tabindex\", 0); "," this._swfReference._swf.setAttribute(\"role\", \"button\");"," this._swfReference._swf.setAttribute(\"aria-label\", this.get(\"selectButtonLabel\"));"," this._swfReference._swf.focus();"," }"," }, this);"," this._tabElementBindings.tabback = this._swfReference.on(\"tabback\", function (ev) {this._swfReference._swf.blur(); setTimeout(function () {fromElement.focus();}, 30);}, this);"," this._tabElementBindings.tabforward = this._swfReference.on(\"tabforward\", function (ev) {this._swfReference._swf.blur(); setTimeout(function () {toElement.focus();}, 30);}, this);",""," this._tabElementBindings.focus = this._swfReference._swf.on(\"focus\", function (ev) {this._buttonFocus = true; this._setButtonClass(\"focus\", true);}, this);"," this._tabElementBindings.blur = this._swfReference._swf.on(\"blur\", function (ev) {this._buttonFocus = false; this._setButtonClass(\"focus\", false);}, this);"," }"," else if (this._tabElementBindings !== null) {"," this._tabElementBindings.from.detach();"," this._tabElementBindings.to.detach();"," this._tabElementBindings.tabback.detach();"," this._tabElementBindings.tabforward.detach();"," this._tabElementBindings.focus.detach();"," this._tabElementBindings.blur.detach();"," }"," },","",""," /**"," * Adds or removes a specified state CSS class to the underlying uploader button. "," *"," * @method _setButtonClass"," * @protected"," * @param state {String} The name of the state enumerated in `buttonClassNames` attribute"," * from which to derive the needed class name."," * @param add {Boolean} A Boolean indicating whether to add or remove the class."," */"," _setButtonClass : function (state, add) {"," if (add) {"," this.get(\"selectFilesButton\").addClass(this.get(\"buttonClassNames\")[state]);"," }"," else {"," this.get(\"selectFilesButton\").removeClass(this.get(\"buttonClassNames\")[state]);"," }"," },","",""," /**"," * Syncs the state of the `fileFilters` attribute between the instance of UploaderFlash"," * and the Flash player."," * "," * @method _setFileFilters"," * @private"," */"," _setFileFilters : function () {"," if (this._swfReference && this.get(\"fileFilters\").length > 0) {"," this._swfReference.callSWF(\"setFileFilters\", [this.get(\"fileFilters\")]);"," } ",""," },","","",""," /**"," * Syncs the state of the `multipleFiles` attribute between this class"," * and the Flash uploader."," * "," * @method _setMultipleFiles"," * @private"," */"," _setMultipleFiles : function () {"," if (this._swfReference) {"," this._swfReference.callSWF(\"setAllowMultipleFiles\", [this.get(\"multipleFiles\")]);"," }"," },",""," /**"," * Syncs the state of the `enabled` attribute between this class"," * and the Flash uploader."," * "," * @method _triggerEnabled"," * @private"," */"," _triggerEnabled : function () {"," if (this.get(\"enabled\")) {"," this._swfReference.callSWF(\"enable\");"," this._swfReference._swf.setAttribute(\"aria-disabled\", \"false\");"," this._setButtonClass(\"disabled\", false);"," }"," else {"," this._swfReference.callSWF(\"disable\");"," this._swfReference._swf.setAttribute(\"aria-disabled\", \"true\");"," this._setButtonClass(\"disabled\", true);"," }"," },",""," /**"," * Getter for the `fileList` attribute"," * "," * @method _getFileList"," * @private"," */"," _getFileList : function (arr) {"," return this._fileList.concat();"," },",""," /**"," * Setter for the `fileList` attribute"," * "," * @method _setFileList"," * @private"," */"," _setFileList : function (val) {"," this._fileList = val.concat();"," return this._fileList.concat();"," },",""," /**"," * Adjusts the content of the `fileList` based on the results of file selection"," * and the `appendNewFiles` attribute. If the `appendNewFiles` attribute is true,"," * then selected files are appended to the existing list; otherwise, the list is"," * cleared and populated with the newly selected files."," * "," * @method _updateFileList"," * @param ev {Event} The file selection event received from the uploader."," * @private"," */"," _updateFileList : function (ev) {"," "," Y.one(\"body\").focus();"," this._swfReference._swf.focus();","",""," var newfiles = ev.fileList,"," fileConfObjects = [],"," parsedFiles = [],"," swfRef = this._swfReference,"," filterFunc = this.get(\"fileFilterFunction\");"," "," Y.each(newfiles, function (value) {"," var newFileConf = {};"," newFileConf.id = value.fileId;"," newFileConf.name = value.fileReference.name;"," newFileConf.size = value.fileReference.size;"," newFileConf.type = value.fileReference.type;"," newFileConf.dateCreated = value.fileReference.creationDate;"," newFileConf.dateModified = value.fileReference.modificationDate;"," newFileConf.uploader = swfRef;",""," fileConfObjects.push(newFileConf);"," });",""," if (filterFunc) {"," Y.each(fileConfObjects, function (value) {"," var newfile = new Y.FileFlash(value);"," if (filterFunc(newfile)) {"," parsedFiles.push(newfile);"," }"," });"," }"," else {"," Y.each(fileConfObjects, function (value) {"," parsedFiles.push(new Y.FileFlash(value));"," });"," }",""," if (parsedFiles.length > 0) {"," var oldfiles = this.get(\"fileList\");",""," this.set(\"fileList\", "," this.get(\"appendNewFiles\") ? oldfiles.concat(parsedFiles) : parsedFiles );",""," this.fire(\"fileselect\", {fileList: parsedFiles});"," }",""," },","","",""," /**"," * Handles and retransmits events fired by `Y.FileFlash` and `Y.Uploader.Queue`."," * "," * @method _uploadEventHandler"," * @param event The event dispatched during the upload process."," * @private"," */"," _uploadEventHandler : function (event) {"," "," switch (event.type) {"," case \"file:uploadstart\":"," this.fire(\"fileuploadstart\", event);"," break;"," case \"file:uploadprogress\":"," this.fire(\"uploadprogress\", event);"," break;"," case \"uploaderqueue:totaluploadprogress\":"," this.fire(\"totaluploadprogress\", event);"," break;"," case \"file:uploadcomplete\":"," this.fire(\"uploadcomplete\", event);"," break;"," case \"uploaderqueue:alluploadscomplete\":"," this.queue = null;"," this.fire(\"alluploadscomplete\", event);"," break;"," case \"file:uploaderror\":"," case \"uploaderqueue:uploaderror\":"," this.fire(\"uploaderror\", event);"," break;"," case \"file:uploadcancel\":"," case \"uploaderqueue:uploadcancel\":"," this.fire(\"uploadcancel\", event);"," break;"," } ",""," },","","",""," /**"," * Starts the upload of a specific file."," *"," * @method upload"," * @param file {Y.FileFlash} Reference to the instance of the file to be uploaded."," * @param url {String} The URL to upload the file to."," * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request."," * If not specified, the values from the attribute `postVarsPerFile` are used instead. "," */",""," upload : function (file, url, postvars) {"," "," var uploadURL = url || this.get(\"uploadURL\"),"," postVars = postvars || this.get(\"postVarsPerFile\"),"," fileId = file.get(\"id\");",""," postVars = postVars.hasOwnProperty(fileId) ? postVars[fileId] : postVars;",""," if (file instanceof Y.FileFlash) {"," "," file.on(\"uploadstart\", this._uploadEventHandler, this);"," file.on(\"uploadprogress\", this._uploadEventHandler, this);"," file.on(\"uploadcomplete\", this._uploadEventHandler, this);"," file.on(\"uploaderror\", this._uploadEventHandler, this);"," file.on(\"uploadcancel\", this._uploadEventHandler, this);",""," file.startUpload(uploadURL, postVars, this.get(\"fileFieldName\"));"," }"," },",""," /**"," * Starts the upload of all files on the file list, using an automated queue."," *"," * @method uploadAll"," * @param url {String} The URL to upload the files to."," * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request."," * If not specified, the values from the attribute `postVarsPerFile` are used instead. "," */"," uploadAll : function (url, postvars) {"," this.uploadThese(this.get(\"fileList\"), url, postvars);"," },",""," /**"," * Starts the upload of the files specified in the first argument, using an automated queue."," *"," * @method uploadThese"," * @param files {Array} The list of files to upload."," * @param url {String} The URL to upload the files to."," * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request."," * If not specified, the values from the attribute `postVarsPerFile` are used instead. "," */"," uploadThese : function (files, url, postvars) {"," if (!this.queue) {"," var uploadURL = url || this.get(\"uploadURL\"),"," postVars = postvars || this.get(\"postVarsPerFile\");",""," this.queue = new UploaderQueue({simUploads: this.get(\"simLimit\"), "," errorAction: this.get(\"errorAction\"),"," fileFieldName: this.get(\"fileFieldName\"),"," fileList: files,"," uploadURL: uploadURL,"," perFileParameters: postVars,"," retryCount: this.get(\"retryCount\")"," });"," this.queue.on(\"uploadstart\", this._uploadEventHandler, this);"," this.queue.on(\"uploadprogress\", this._uploadEventHandler, this);"," this.queue.on(\"totaluploadprogress\", this._uploadEventHandler, this);"," this.queue.on(\"uploadcomplete\", this._uploadEventHandler, this);"," this.queue.on(\"alluploadscomplete\", this._uploadEventHandler, this);"," this.queue.on(\"alluploadscancelled\", function (ev) {this.queue = null;}, this);"," this.queue.on(\"uploaderror\", this._uploadEventHandler, this);"," this.queue.startUpload(); "," "," this.fire(\"uploadstart\"); "," }"," }","},","","{"," /**"," * The template for the Flash player container. Since the Flash player container needs"," * to completely overlay the &lquot;Select Files&rqot; control, it's positioned absolutely,"," * with width and height set to 100% of the parent."," *"," * @property FLASH_CONTAINER"," * @type {String}"," * @static"," * @default \"
          \""," */"," FLASH_CONTAINER: \"
          \",",""," /**"," * The template for the \"Select Files\" button."," *"," * @property SELECT_FILES_BUTTON"," * @type {String}"," * @static"," * @default \"\""," */"," SELECT_FILES_BUTTON: \"\",",""," /**"," * The static property reflecting the type of uploader that `Y.Uploader`"," * aliases. The UploaderFlash value is `\"flash\"`."," * "," * @property TYPE"," * @type {String}"," * @static"," */"," TYPE: \"flash\",",""," /**"," * The identity of the widget."," *"," * @property NAME"," * @type String"," * @default 'uploader'"," * @readOnly"," * @protected"," * @static"," */"," NAME: \"uploader\",",""," /**"," * Static property used to define the default attribute configuration of"," * the Widget."," *"," * @property ATTRS"," * @type {Object}"," * @protected"," * @static"," */"," ATTRS: {",""," /**"," * A Boolean indicating whether newly selected files should be appended "," * to the existing file list, or whether they should replace it."," *"," * @attribute appendNewFiles"," * @type {Boolean}"," * @default true"," */"," appendNewFiles : {"," value: true"," },",""," /**"," * The names of CSS classes that correspond to different button states"," * of the \"Select Files\" control. These classes are assigned to the "," * \"Select Files\" control based on the mouse states reported by the"," * Flash player. The keys for the class names are:"," *
            "," *
          • `hover`: the class corresponding to mouse hovering over"," * the \"Select Files\" button.
          • "," *
          • `active`: the class corresponding to mouse down state of"," * the \"Select Files\" button.
          • "," *
          • `disabled`: the class corresponding to the disabled state"," * of the \"Select Files\" button.
          • "," *
          • `focus`: the class corresponding to the focused state of"," * the \"Select Files\" button.
          • "," *
          "," * @attribute buttonClassNames"," * @type {Object}"," * @default { hover: \"yui3-button-hover\","," * active: \"yui3-button-active\","," * disabled: \"yui3-button-disabled\","," * focus: \"yui3-button-selected\""," * }"," */"," buttonClassNames: {"," value: {"," \"hover\": \"yui3-button-hover\","," \"active\": \"yui3-button-active\","," \"disabled\": \"yui3-button-disabled\","," \"focus\": \"yui3-button-selected\""," }"," },",""," /**"," * A Boolean indicating whether the uploader is enabled or disabled for user input."," *"," * @attribute enabled"," * @type {Boolean}"," * @default true"," */"," enabled : {"," value: true"," },",""," /**"," * The action performed when an upload error occurs for a specific file being uploaded."," * The possible values are: "," *
            "," *
          • `UploaderQueue.CONTINUE`: the error is ignored and the upload process is continued.
          • "," *
          • `UploaderQueue.STOP`: the upload process is stopped as soon as any other parallel file"," * uploads are finished.
          • "," *
          • `UploaderQueue.RESTART_ASAP`: the file is added back to the front of the queue.
          • "," *
          • `UploaderQueue.RESTART_AFTER`: the file is added to the back of the queue.
          • "," *
          "," * @attribute errorAction"," * @type {String}"," * @default UploaderQueue.CONTINUE"," */"," errorAction: {"," value: \"continue\","," validator: function (val, name) {"," return (val === UploaderQueue.CONTINUE || val === UploaderQueue.STOP || val === UploaderQueue.RESTART_ASAP || val === UploaderQueue.RESTART_AFTER); "," }"," },",""," /**"," * An array indicating what fileFilters should be applied to the file"," * selection dialog. Each element in the array should be an object with"," * the following key-value pairs:"," * {"," * description : String "," extensions: String of the form &lquot;*.ext1;*.ext2;*.ext3;...&rquot;"," * }"," * @attribute fileFilters"," * @type {Array}"," * @default []"," */"," fileFilters: {"," value: []"," },",""," /**"," * A filtering function that is applied to every file selected by the user."," * The function receives the `Y.File` object and must return a Boolean value."," * If a `false` value is returned, the file in question is not added to the"," * list of files to be uploaded."," * Use this function to put limits on file sizes or check the file names for"," * correct extension, but make sure that a server-side check is also performed,"," * since any client-side restrictions are only advisory and can be circumvented."," *"," * @attribute fileFilterFunction"," * @type {Function}"," * @default null"," */"," fileFilterFunction: {"," value: null"," },"," "," /**"," * A String specifying what should be the POST field name for the file"," * content in the upload request."," *"," * @attribute fileFieldName"," * @type {String}"," * @default Filedata"," */"," fileFieldName: {"," value: \"Filedata\""," },",""," /**"," * The array of files to be uploaded. All elements in the array"," * must be instances of `Y.FileFlash` and be instantiated with a `fileId`"," * retrieved from an instance of the uploader."," *"," * @attribute fileList"," * @type {Array}"," * @default []"," */"," fileList: {"," value: [],"," getter: \"_getFileList\","," setter: \"_setFileList\""," },",""," /**"," * A Boolean indicating whether multiple file selection is enabled."," *"," * @attribute multipleFiles"," * @type {Boolean}"," * @default false"," */"," multipleFiles: {"," value: false"," },",""," /**"," * An object, keyed by `fileId`, containing sets of key-value pairs"," * that should be passed as POST variables along with each corresponding"," * file. This attribute is only used if no POST variables are specifed"," * in the upload method call."," *"," * @attribute postVarsPerFile"," * @type {Object}"," * @default {}"," */"," postVarsPerFile: {"," value: {}"," },",""," /**"," * The label for the \"Select Files\" widget. This is the value that replaces the"," * `{selectButtonLabel}` token in the `SELECT_FILES_BUTTON` template."," * "," * @attribute selectButtonLabel"," * @type {String}"," * @default \"Select Files\""," */"," selectButtonLabel: {"," value: \"Select Files\""," },",""," /**"," * The widget that serves as the \"Select Files\" control for the file uploader"," * "," *"," * @attribute selectFilesButton"," * @type {Node | Widget}"," * @default A standard HTML button with YUI CSS Button skin."," */"," selectFilesButton : {"," valueFn: function () {"," return Y.Node.create(substitute(Y.UploaderFlash.SELECT_FILES_BUTTON, {selectButtonLabel: this.get(\"selectButtonLabel\")}));"," }"," },"," "," /**"," * The number of files that can be uploaded"," * simultaneously if the automatic queue management"," * is used. This value can be in the range between 2"," * and 5."," *"," * @attribute simLimit"," * @type {Number}"," * @default 2"," */"," simLimit: {"," value: 2,"," validator: function (val, name) {"," return (val >= 2 && val <= 5);"," }"," },",""," /**"," * The URL to the SWF file of the flash uploader. A copy local to"," * the server that hosts the page on which the uploader appears is"," * recommended."," *"," * @attribute swfURL"," * @type {String}"," * @default \"CDN Prefix + uploader/assets/flashuploader.swf\" with a "," * random GET parameter for IE (to prevent buggy behavior when the SWF "," * is cached)."," */"," swfURL: {"," valueFn: function () {"," var prefix = Y.Env.cdn + \"uploader/assets/flashuploader.swf\";",""," if (Y.UA.ie > 0) {"," return (prefix + \"?t=\" + Y.guid(\"uploader\"));"," }"," return prefix;"," }"," },",""," /**"," * The id's or `Node` references of the DOM elements that precede"," * and follow the `Select Files` button in the tab order. Specifying"," * these allows keyboard navigation to and from the Flash player"," * layer of the uploader."," * The two keys corresponding to the DOM elements are:","
            "," *
          • `from`: the id or the `Node` reference corresponding to the"," * DOM element that precedes the `Select Files` button in the tab order.
          • "," *
          • `to`: the id or the `Node` reference corresponding to the"," * DOM element that follows the `Select Files` button in the tab order.
          • "," *
          "," * @attribute tabElements"," * @type {Object}"," * @default null"," */"," tabElements: {"," value: null"," },",""," /**"," * The URL to which file upload requested are POSTed. Only used if a different url is not passed to the upload method call."," *"," * @attribute uploadURL"," * @type {String}"," * @default \"\""," */"," uploadURL: {"," value: \"\""," },",""," /**"," * The number of times to try re-uploading a file that failed to upload before"," * cancelling its upload."," *"," * @attribute retryCount"," * @type {Number}"," * @default 3"," */ "," retryCount: {"," value: 3"," }"," }","});","","Y.UploaderFlash.Queue = UploaderQueue;","","","","","}, '3.7.3', {\"requires\": [\"swf\", \"widget\", \"substitute\", \"base\", \"cssbutton\", \"node\", \"event-custom\", \"file-flash\", \"uploader-queue\"]});"]; -_yuitest_coverage["build/uploader-flash/uploader-flash.js"].lines = {"1":0,"14":0,"30":0,"31":0,"36":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"129":0,"137":0,"152":0,"171":0,"188":0,"205":0,"213":0,"234":0,"242":0,"250":0,"258":0,"266":0,"274":0,"290":0,"294":0,"295":0,"296":0,"297":0,"299":0,"300":0,"307":0,"321":0,"322":0,"323":0,"324":0,"325":0,"326":0,"327":0,"328":0,"329":0,"332":0,"338":0,"339":0,"340":0,"341":0,"342":0,"345":0,"346":0,"347":0,"348":0,"351":0,"352":0,"353":0,"354":0,"356":0,"357":0,"358":0,"359":0,"361":0,"362":0,"363":0,"364":0,"365":0,"366":0,"381":0,"383":0,"384":0,"385":0,"386":0,"387":0,"388":0,"389":0,"392":0,"395":0,"396":0,"399":0,"400":0,"401":0,"402":0,"403":0,"404":0,"405":0,"408":0,"409":0,"410":0,"411":0,"412":0,"413":0,"414":0,"417":0,"418":0,"420":0,"421":0,"423":0,"424":0,"425":0,"426":0,"427":0,"428":0,"429":0,"444":0,"445":0,"448":0,"461":0,"462":0,"477":0,"478":0,"490":0,"491":0,"492":0,"493":0,"496":0,"497":0,"498":0,"509":0,"519":0,"520":0,"535":0,"536":0,"539":0,"545":0,"546":0,"547":0,"548":0,"549":0,"550":0,"551":0,"552":0,"553":0,"555":0,"558":0,"559":0,"560":0,"561":0,"562":0,"567":0,"568":0,"572":0,"573":0,"575":0,"578":0,"594":0,"596":0,"597":0,"599":0,"600":0,"602":0,"603":0,"605":0,"606":0,"608":0,"609":0,"610":0,"613":0,"614":0,"617":0,"618":0,"637":0,"641":0,"643":0,"645":0,"646":0,"647":0,"648":0,"649":0,"651":0,"664":0,"677":0,"678":0,"681":0,"689":0,"690":0,"691":0,"692":0,"693":0,"694":0,"695":0,"696":0,"698":0,"831":0,"942":0,"959":0,"976":0,"978":0,"979":0,"981":0,"1030":0}; -_yuitest_coverage["build/uploader-flash/uploader-flash.js"].functions = {"UploaderFlash:30":0,"initializer:104":0,"renderUI:289":0,"(anonymous 2):321":0,"(anonymous 3):338":0,"(anonymous 4):345":0,"(anonymous 5):351":0,"(anonymous 6):356":0,"(anonymous 7):361":0,"bindUI:319":0,"(anonymous 8):399":0,"(anonymous 9):408":0,"(anonymous 11):417":0,"(anonymous 10):417":0,"(anonymous 13):418":0,"(anonymous 12):418":0,"(anonymous 14):420":0,"(anonymous 15):421":0,"_attachTabElements:380":0,"_setButtonClass:443":0,"_setFileFilters:460":0,"_setMultipleFiles:476":0,"_triggerEnabled:489":0,"_getFileList:508":0,"_setFileList:518":0,"(anonymous 16):545":0,"(anonymous 17):559":0,"(anonymous 18):567":0,"_updateFileList:533":0,"_uploadEventHandler:592":0,"upload:635":0,"uploadAll:663":0,"(anonymous 19):694":0,"uploadThese:676":0,"validator:830":0,"valueFn:941":0,"validator:958":0,"valueFn:975":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/uploader-flash/uploader-flash.js"].coveredLines = 189; -_yuitest_coverage["build/uploader-flash/uploader-flash.js"].coveredFunctions = 39; -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 1); -YUI.add('uploader-flash', function (Y, NAME) { - - - /** - * This module provides a UI for file selection and multiple file upload capability using - * Flash as a transport engine. - * The supported features include: automatic upload queue management, upload progress - * tracking, file filtering, server response retrieval and error reporting. - * - * @module uploader-flash - */ - -// Shorthands for external modules -_yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 1)", 1); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 14); -var substitute = Y.substitute, - UploaderQueue = Y.Uploader.Queue, - getCN = Y.ClassNameManager.getClassName, - UPLOADER = 'uploader', - SELECT_FILES = getCN(UPLOADER, 'selectfiles-button'); - - - /** - * This module provides a UI for file selection and multiple file upload capability - * using Flash as a transport engine. - * @class UploaderFlash - * @extends Widget - * @constructor - * @param {Object} config Configuration object. - */ - -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 30); -function UploaderFlash(config) { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "UploaderFlash", 30); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 31); -UploaderFlash.superclass.constructor.apply ( this, arguments ); -} - - - -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 36); -Y.UploaderFlash = Y.extend(UploaderFlash, Y.Widget, { - - /** - * Stored value of the current button state (based on - * mouse events dispatched by the Flash player) - * @property _buttonState - * @type {String} - * @protected - */ - _buttonState: "up", - - /** - * Stored value of the current button focus state (based - * on keyboard and mouse events). - * @property _buttonFocus - * @type {Boolean} - * @protected - */ - _buttonFocus: false, - - /** - * Stored value of the unique id for the container that holds the - * Flash uploader. - * - * @property _swfContainerId - * @type {String} - * @protected - */ - _swfContainerId: null, - - /** - * Stored reference to the instance of SWF used to host the - * Flash uploader. - * - * @property _swfReference - * @type {SWF} - * @protected - */ - _swfReference: null, - - /** - * Stored reference to the instance of Uploader.Queue used to manage - * the upload process. This is a read-only property that only exists - * during an active upload process. Only one queue can be active at - * a time; if an upload start is attempted while a queue is active, - * it will be ignored. - * - * @property queue - * @type {Y.Uploader.Queue} - */ - queue: null, - - /** - * Stored event bindings for keyboard navigation to and from the uploader. - * - * @property _tabElementBindings - * @type {Object} - * @protected - */ - _tabElementBindings: null, - - -/** - * Construction logic executed during UploaderFlash instantiation. - * - * @method initializer - * @protected - */ - initializer : function () { - - // Assign protected variable values - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "initializer", 104); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 107); -this._swfContainerId = Y.guid("uploader"); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 108); -this._swfReference = null; - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 109); -this.queue = null; - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 110); -this._buttonState = "up"; - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 111); -this._buttonFocus = null; - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 112); -this._tabElementBindings = null; - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 113); -this._fileList = []; - - // Publish available events - - /** - * Signals that files have been selected. - * - * @event fileselect - * @param event {Event} The event object for the `fileselect` with the - * following payload: - *
          - *
          fileList
          - *
          An `Array` of files selected by the user, encapsulated - * in Y.FileFlash objects.
          - *
          - */ - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 129); -this.publish("fileselect"); - - /** - * Signals that an upload of multiple files has been started. - * - * @event uploadstart - * @param event {Event} The event object for the `uploadstart`. - */ - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 137); -this.publish("uploadstart"); - - /** - * Signals that an upload of a specific file has started. - * - * @event fileuploadstart - * @param event {Event} The event object for the `fileuploadstart` with the - * following payload: - *
          - *
          file
          - *
          A reference to the Y.File that dispatched the event.
          - *
          originEvent
          - *
          The original event dispatched by Y.File.
          - *
          - */ - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 152); -this.publish("fileuploadstart"); - - /** - * Reports on upload progress of a specific file. - * - * @event uploadprogress - * @param event {Event} The event object for the `uploadprogress` with the - * following payload: - *
          - *
          bytesLoaded
          - *
          The number of bytes of the file that has been uploaded
          - *
          bytesTotal
          - *
          The total number of bytes in the file
          - *
          percentLoaded
          - *
          The fraction of the file that has been uploaded, out of 100
          - *
          originEvent
          - *
          The original event dispatched by the SWF uploader
          - *
          - */ - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 171); -this.publish("uploadprogress"); - - /** - * Reports on the total upload progress of the file list. - * - * @event totaluploadprogress - * @param event {Event} The event object for the `totaluploadprogress` with the - * following payload: - *
          - *
          bytesLoaded
          - *
          The number of bytes of the file list that has been uploaded
          - *
          bytesTotal
          - *
          The total number of bytes in the file list
          - *
          percentLoaded
          - *
          The fraction of the file list that has been uploaded, out of 100
          - *
          - */ - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 188); -this.publish("totaluploadprogress"); - - /** - * Signals that a single file upload has been completed. - * - * @event uploadcomplete - * @param event {Event} The event object for the `uploadcomplete` with the - * following payload: - *
          - *
          file
          - *
          The pointer to the instance of `Y.File` whose upload has been completed.
          - *
          originEvent
          - *
          The original event fired by the SWF Uploader
          - *
          data
          - *
          Data returned by the server.
          - *
          - */ - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 205); -this.publish("uploadcomplete"); - - /** - * Signals that the upload process of the entire file list has been completed. - * - * @event alluploadscomplete - * @param event {Event} The event object for the `alluploadscomplete`. - */ - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 213); -this.publish("alluploadscomplete"); - - /** - * Signals that a error has occurred in a specific file's upload process. - * - * @event uploaderror - * @param event {Event} The event object for the `uploaderror` with the - * following payload: - *
          - *
          originEvent
          - *
          The original error event fired by the SWF Uploader.
          - *
          file
          - *
          The pointer at the instance of Y.FileFlash that returned the error.
          - *
          source
          - *
          The source of the upload error, either "io" or "http"
          - *
          message
          - *
          The message that accompanied the error. Corresponds to the text of - * the error in cases where source is "io", and to the HTTP status for - cases where source is "http".
          - *
          - */ - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 234); -this.publish("uploaderror"); - - /** - * Signals that a mouse has begun hovering over the `Select Files` button. - * - * @event mouseenter - * @param event {Event} The event object for the `mouseenter` event. - */ - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 242); -this.publish("mouseenter"); - - /** - * Signals that a mouse has stopped hovering over the `Select Files` button. - * - * @event mouseleave - * @param event {Event} The event object for the `mouseleave` event. - */ - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 250); -this.publish("mouseleave"); - - /** - * Signals that a mouse button has been pressed over the `Select Files` button. - * - * @event mousedown - * @param event {Event} The event object for the `mousedown` event. - */ - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 258); -this.publish("mousedown"); - - /** - * Signals that a mouse button has been released over the `Select Files` button. - * - * @event mouseup - * @param event {Event} The event object for the `mouseup` event. - */ - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 266); -this.publish("mouseup"); - - /** - * Signals that a mouse has been clicked over the `Select Files` button. - * - * @event click - * @param event {Event} The event object for the `click` event. - */ - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 274); -this.publish("click"); - }, - - /** - * Creates the DOM structure for the UploaderFlash. - * UploaderFlash's DOM structure consists of two layers: the base "Select Files" - * button that can be replaced by the developer's widget of choice; and a transparent - * Flash overlay positoned above the button that captures all input events. - * The `position` style attribute of the `boundingBox` of the `Uploader` widget - * is forced to be `relative`, in order to accommodate the Flash player overlay - * (which is `position`ed `absolute`ly). - * - * @method renderUI - * @protected - */ - renderUI : function () { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "renderUI", 289); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 290); -var boundingBox = this.get("boundingBox"), - contentBox = this.get('contentBox'), - selFilesButton = this.get("selectFilesButton"); - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 294); -boundingBox.setStyle("position", "relative"); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 295); -selFilesButton.setStyles({width: "100%", height: "100%"}); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 296); -contentBox.append(selFilesButton); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 297); -contentBox.append(Y.Node.create(substitute(UploaderFlash.FLASH_CONTAINER, - {swfContainerId: this._swfContainerId}))); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 299); -var flashContainer = Y.one("#" + this._swfContainerId); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 300); -var params = {version: "10.0.45", - fixedAttributes: {wmode: "transparent", - allowScriptAccess:"always", - allowNetworking:"all", - scale: "noscale" - } - }; - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 307); -this._swfReference = new Y.SWF(flashContainer, this.get("swfURL"), params); - }, - - /** - * Binds handlers to the UploaderFlash UI events and propagates attribute - * values to the Flash player. - * The propagation of initial values is set to occur once the Flash player - * instance is ready (as indicated by the `swfReady` event.) - * - * @method bindUI - * @protected - */ - bindUI : function () { - - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "bindUI", 319); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 321); -this._swfReference.on("swfReady", function () { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 2)", 321); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 322); -this._setMultipleFiles(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 323); -this._setFileFilters(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 324); -this._triggerEnabled(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 325); -this._attachTabElements(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 326); -this.after("multipleFilesChange", this._setMultipleFiles, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 327); -this.after("fileFiltersChange", this._setFileFilters, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 328); -this.after("enabledChange", this._triggerEnabled, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 329); -this.after("tabElementsChange", this._attachTabElements); - }, this); - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 332); -this._swfReference.on("fileselect", this._updateFileList, this); - - - - // this._swfReference.on("trace", function (ev) {console.log(ev.message);}); - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 338); -this._swfReference.on("mouseenter", function () { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 3)", 338); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 339); -this.fire("mouseenter"); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 340); -this._setButtonClass("hover", true); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 341); -if (this._buttonState == "down") { - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 342); -this._setButtonClass("active", true); - } - }, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 345); -this._swfReference.on("mouseleave", function () { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 4)", 345); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 346); -this.fire("mouseleave"); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 347); -this._setButtonClass("hover", false); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 348); -this._setButtonClass("active", false); - - }, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 351); -this._swfReference.on("mousedown", function () { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 5)", 351); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 352); -this.fire("mousedown"); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 353); -this._buttonState = "down"; - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 354); -this._setButtonClass("active", true); - }, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 356); -this._swfReference.on("mouseup", function () { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 6)", 356); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 357); -this.fire("mouseup"); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 358); -this._buttonState = "up"; - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 359); -this._setButtonClass("active", false); - }, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 361); -this._swfReference.on("click", function () { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 7)", 361); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 362); -this.fire("click"); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 363); -this._buttonFocus = true; - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 364); -this._setButtonClass("focus", true); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 365); -Y.one("body").focus(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 366); -this._swfReference._swf.focus(); - }, this); - }, - - /** - * Attaches keyboard bindings to enabling tabbing to and from the instance of the Flash - * player in the Uploader widget. If the previous and next elements are specified, the - * keyboard bindings enable the user to tab from the `tabElements["from"]` node to the - * Flash-powered "Select Files" button, and to the `tabElements["to"]` node. - * - * @method _attachTabElements - * @protected - * @param ev {Event} Optional event payload if called as a `tabElementsChange` handler. - */ - _attachTabElements : function (ev) { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "_attachTabElements", 380); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 381); -if (this.get("tabElements") !== null && this.get("tabElements").from !== null && this.get("tabElements").to !== null) { - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 383); -if (this._tabElementBindings !== null) { - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 384); -this._tabElementBindings.from.detach(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 385); -this._tabElementBindings.to.detach(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 386); -this._tabElementBindings.tabback.detach(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 387); -this._tabElementBindings.tabforward.detach(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 388); -this._tabElementBindings.focus.detach(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 389); -this._tabElementBindings.blur.detach(); - } - else { - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 392); -this._tabElementBindings = {}; - } - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 395); -var fromElement = Y.one(this.get("tabElements").from); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 396); -var toElement = Y.one(this.get("tabElements").to); - - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 399); -this._tabElementBindings.from = fromElement.on("keydown", function (ev) { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 8)", 399); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 400); -if (ev.keyCode == 9 && !ev.shiftKey) { - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 401); -ev.preventDefault(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 402); -this._swfReference._swf.setAttribute("tabindex", 0); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 403); -this._swfReference._swf.setAttribute("role", "button"); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 404); -this._swfReference._swf.setAttribute("aria-label", this.get("selectButtonLabel")); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 405); -this._swfReference._swf.focus(); - } - }, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 408); -this._tabElementBindings.to = toElement.on("keydown", function (ev) { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 9)", 408); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 409); -if (ev.keyCode == 9 && ev.shiftKey) { - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 410); -ev.preventDefault(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 411); -this._swfReference._swf.setAttribute("tabindex", 0); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 412); -this._swfReference._swf.setAttribute("role", "button"); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 413); -this._swfReference._swf.setAttribute("aria-label", this.get("selectButtonLabel")); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 414); -this._swfReference._swf.focus(); - } - }, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 417); -this._tabElementBindings.tabback = this._swfReference.on("tabback", function (ev) {_yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 10)", 417); -this._swfReference._swf.blur(); setTimeout(function () {_yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 11)", 417); -fromElement.focus();}, 30);}, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 418); -this._tabElementBindings.tabforward = this._swfReference.on("tabforward", function (ev) {_yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 12)", 418); -this._swfReference._swf.blur(); setTimeout(function () {_yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 13)", 418); -toElement.focus();}, 30);}, this); - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 420); -this._tabElementBindings.focus = this._swfReference._swf.on("focus", function (ev) {_yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 14)", 420); -this._buttonFocus = true; this._setButtonClass("focus", true);}, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 421); -this._tabElementBindings.blur = this._swfReference._swf.on("blur", function (ev) {_yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 15)", 421); -this._buttonFocus = false; this._setButtonClass("focus", false);}, this); - } - else {_yuitest_coverline("build/uploader-flash/uploader-flash.js", 423); -if (this._tabElementBindings !== null) { - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 424); -this._tabElementBindings.from.detach(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 425); -this._tabElementBindings.to.detach(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 426); -this._tabElementBindings.tabback.detach(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 427); -this._tabElementBindings.tabforward.detach(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 428); -this._tabElementBindings.focus.detach(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 429); -this._tabElementBindings.blur.detach(); - }} - }, - - - /** - * Adds or removes a specified state CSS class to the underlying uploader button. - * - * @method _setButtonClass - * @protected - * @param state {String} The name of the state enumerated in `buttonClassNames` attribute - * from which to derive the needed class name. - * @param add {Boolean} A Boolean indicating whether to add or remove the class. - */ - _setButtonClass : function (state, add) { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "_setButtonClass", 443); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 444); -if (add) { - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 445); -this.get("selectFilesButton").addClass(this.get("buttonClassNames")[state]); - } - else { - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 448); -this.get("selectFilesButton").removeClass(this.get("buttonClassNames")[state]); - } - }, - - - /** - * Syncs the state of the `fileFilters` attribute between the instance of UploaderFlash - * and the Flash player. - * - * @method _setFileFilters - * @private - */ - _setFileFilters : function () { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "_setFileFilters", 460); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 461); -if (this._swfReference && this.get("fileFilters").length > 0) { - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 462); -this._swfReference.callSWF("setFileFilters", [this.get("fileFilters")]); - } - - }, - - - - /** - * Syncs the state of the `multipleFiles` attribute between this class - * and the Flash uploader. - * - * @method _setMultipleFiles - * @private - */ - _setMultipleFiles : function () { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "_setMultipleFiles", 476); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 477); -if (this._swfReference) { - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 478); -this._swfReference.callSWF("setAllowMultipleFiles", [this.get("multipleFiles")]); - } - }, - - /** - * Syncs the state of the `enabled` attribute between this class - * and the Flash uploader. - * - * @method _triggerEnabled - * @private - */ - _triggerEnabled : function () { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "_triggerEnabled", 489); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 490); -if (this.get("enabled")) { - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 491); -this._swfReference.callSWF("enable"); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 492); -this._swfReference._swf.setAttribute("aria-disabled", "false"); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 493); -this._setButtonClass("disabled", false); - } - else { - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 496); -this._swfReference.callSWF("disable"); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 497); -this._swfReference._swf.setAttribute("aria-disabled", "true"); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 498); -this._setButtonClass("disabled", true); - } - }, - - /** - * Getter for the `fileList` attribute - * - * @method _getFileList - * @private - */ - _getFileList : function (arr) { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "_getFileList", 508); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 509); -return this._fileList.concat(); - }, - - /** - * Setter for the `fileList` attribute - * - * @method _setFileList - * @private - */ - _setFileList : function (val) { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "_setFileList", 518); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 519); -this._fileList = val.concat(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 520); -return this._fileList.concat(); - }, - - /** - * Adjusts the content of the `fileList` based on the results of file selection - * and the `appendNewFiles` attribute. If the `appendNewFiles` attribute is true, - * then selected files are appended to the existing list; otherwise, the list is - * cleared and populated with the newly selected files. - * - * @method _updateFileList - * @param ev {Event} The file selection event received from the uploader. - * @private - */ - _updateFileList : function (ev) { - - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "_updateFileList", 533); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 535); -Y.one("body").focus(); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 536); -this._swfReference._swf.focus(); - - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 539); -var newfiles = ev.fileList, - fileConfObjects = [], - parsedFiles = [], - swfRef = this._swfReference, - filterFunc = this.get("fileFilterFunction"); - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 545); -Y.each(newfiles, function (value) { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 16)", 545); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 546); -var newFileConf = {}; - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 547); -newFileConf.id = value.fileId; - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 548); -newFileConf.name = value.fileReference.name; - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 549); -newFileConf.size = value.fileReference.size; - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 550); -newFileConf.type = value.fileReference.type; - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 551); -newFileConf.dateCreated = value.fileReference.creationDate; - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 552); -newFileConf.dateModified = value.fileReference.modificationDate; - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 553); -newFileConf.uploader = swfRef; - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 555); -fileConfObjects.push(newFileConf); - }); - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 558); -if (filterFunc) { - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 559); -Y.each(fileConfObjects, function (value) { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 17)", 559); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 560); -var newfile = new Y.FileFlash(value); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 561); -if (filterFunc(newfile)) { - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 562); -parsedFiles.push(newfile); - } - }); - } - else { - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 567); -Y.each(fileConfObjects, function (value) { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 18)", 567); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 568); -parsedFiles.push(new Y.FileFlash(value)); - }); - } - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 572); -if (parsedFiles.length > 0) { - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 573); -var oldfiles = this.get("fileList"); - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 575); -this.set("fileList", - this.get("appendNewFiles") ? oldfiles.concat(parsedFiles) : parsedFiles ); - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 578); -this.fire("fileselect", {fileList: parsedFiles}); - } - - }, - - - - /** - * Handles and retransmits events fired by `Y.FileFlash` and `Y.Uploader.Queue`. - * - * @method _uploadEventHandler - * @param event The event dispatched during the upload process. - * @private - */ - _uploadEventHandler : function (event) { - - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "_uploadEventHandler", 592); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 594); -switch (event.type) { - case "file:uploadstart": - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 596); -this.fire("fileuploadstart", event); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 597); -break; - case "file:uploadprogress": - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 599); -this.fire("uploadprogress", event); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 600); -break; - case "uploaderqueue:totaluploadprogress": - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 602); -this.fire("totaluploadprogress", event); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 603); -break; - case "file:uploadcomplete": - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 605); -this.fire("uploadcomplete", event); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 606); -break; - case "uploaderqueue:alluploadscomplete": - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 608); -this.queue = null; - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 609); -this.fire("alluploadscomplete", event); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 610); -break; - case "file:uploaderror": - case "uploaderqueue:uploaderror": - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 613); -this.fire("uploaderror", event); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 614); -break; - case "file:uploadcancel": - case "uploaderqueue:uploadcancel": - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 617); -this.fire("uploadcancel", event); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 618); -break; - } - - }, - - - - /** - * Starts the upload of a specific file. - * - * @method upload - * @param file {Y.FileFlash} Reference to the instance of the file to be uploaded. - * @param url {String} The URL to upload the file to. - * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request. - * If not specified, the values from the attribute `postVarsPerFile` are used instead. - */ - - upload : function (file, url, postvars) { - - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "upload", 635); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 637); -var uploadURL = url || this.get("uploadURL"), - postVars = postvars || this.get("postVarsPerFile"), - fileId = file.get("id"); - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 641); -postVars = postVars.hasOwnProperty(fileId) ? postVars[fileId] : postVars; - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 643); -if (file instanceof Y.FileFlash) { - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 645); -file.on("uploadstart", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 646); -file.on("uploadprogress", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 647); -file.on("uploadcomplete", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 648); -file.on("uploaderror", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 649); -file.on("uploadcancel", this._uploadEventHandler, this); - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 651); -file.startUpload(uploadURL, postVars, this.get("fileFieldName")); - } - }, - - /** - * Starts the upload of all files on the file list, using an automated queue. - * - * @method uploadAll - * @param url {String} The URL to upload the files to. - * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request. - * If not specified, the values from the attribute `postVarsPerFile` are used instead. - */ - uploadAll : function (url, postvars) { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "uploadAll", 663); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 664); -this.uploadThese(this.get("fileList"), url, postvars); - }, - - /** - * Starts the upload of the files specified in the first argument, using an automated queue. - * - * @method uploadThese - * @param files {Array} The list of files to upload. - * @param url {String} The URL to upload the files to. - * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request. - * If not specified, the values from the attribute `postVarsPerFile` are used instead. - */ - uploadThese : function (files, url, postvars) { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "uploadThese", 676); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 677); -if (!this.queue) { - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 678); -var uploadURL = url || this.get("uploadURL"), - postVars = postvars || this.get("postVarsPerFile"); - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 681); -this.queue = new UploaderQueue({simUploads: this.get("simLimit"), - errorAction: this.get("errorAction"), - fileFieldName: this.get("fileFieldName"), - fileList: files, - uploadURL: uploadURL, - perFileParameters: postVars, - retryCount: this.get("retryCount") - }); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 689); -this.queue.on("uploadstart", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 690); -this.queue.on("uploadprogress", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 691); -this.queue.on("totaluploadprogress", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 692); -this.queue.on("uploadcomplete", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 693); -this.queue.on("alluploadscomplete", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 694); -this.queue.on("alluploadscancelled", function (ev) {_yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "(anonymous 19)", 694); -this.queue = null;}, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 695); -this.queue.on("uploaderror", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 696); -this.queue.startUpload(); - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 698); -this.fire("uploadstart"); - } - } -}, - -{ - /** - * The template for the Flash player container. Since the Flash player container needs - * to completely overlay the &lquot;Select Files&rqot; control, it's positioned absolutely, - * with width and height set to 100% of the parent. - * - * @property FLASH_CONTAINER - * @type {String} - * @static - * @default "
          " - */ - FLASH_CONTAINER: "
          ", - - /** - * The template for the "Select Files" button. - * - * @property SELECT_FILES_BUTTON - * @type {String} - * @static - * @default "" - */ - SELECT_FILES_BUTTON: "", - - /** - * The static property reflecting the type of uploader that `Y.Uploader` - * aliases. The UploaderFlash value is `"flash"`. - * - * @property TYPE - * @type {String} - * @static - */ - TYPE: "flash", - - /** - * The identity of the widget. - * - * @property NAME - * @type String - * @default 'uploader' - * @readOnly - * @protected - * @static - */ - NAME: "uploader", - - /** - * Static property used to define the default attribute configuration of - * the Widget. - * - * @property ATTRS - * @type {Object} - * @protected - * @static - */ - ATTRS: { - - /** - * A Boolean indicating whether newly selected files should be appended - * to the existing file list, or whether they should replace it. - * - * @attribute appendNewFiles - * @type {Boolean} - * @default true - */ - appendNewFiles : { - value: true - }, - - /** - * The names of CSS classes that correspond to different button states - * of the "Select Files" control. These classes are assigned to the - * "Select Files" control based on the mouse states reported by the - * Flash player. The keys for the class names are: - *
            - *
          • `hover`: the class corresponding to mouse hovering over - * the "Select Files" button.
          • - *
          • `active`: the class corresponding to mouse down state of - * the "Select Files" button.
          • - *
          • `disabled`: the class corresponding to the disabled state - * of the "Select Files" button.
          • - *
          • `focus`: the class corresponding to the focused state of - * the "Select Files" button.
          • - *
          - * @attribute buttonClassNames - * @type {Object} - * @default { hover: "yui3-button-hover", - * active: "yui3-button-active", - * disabled: "yui3-button-disabled", - * focus: "yui3-button-selected" - * } - */ - buttonClassNames: { - value: { - "hover": "yui3-button-hover", - "active": "yui3-button-active", - "disabled": "yui3-button-disabled", - "focus": "yui3-button-selected" - } - }, - - /** - * A Boolean indicating whether the uploader is enabled or disabled for user input. - * - * @attribute enabled - * @type {Boolean} - * @default true - */ - enabled : { - value: true - }, - - /** - * The action performed when an upload error occurs for a specific file being uploaded. - * The possible values are: - *
            - *
          • `UploaderQueue.CONTINUE`: the error is ignored and the upload process is continued.
          • - *
          • `UploaderQueue.STOP`: the upload process is stopped as soon as any other parallel file - * uploads are finished.
          • - *
          • `UploaderQueue.RESTART_ASAP`: the file is added back to the front of the queue.
          • - *
          • `UploaderQueue.RESTART_AFTER`: the file is added to the back of the queue.
          • - *
          - * @attribute errorAction - * @type {String} - * @default UploaderQueue.CONTINUE - */ - errorAction: { - value: "continue", - validator: function (val, name) { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "validator", 830); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 831); -return (val === UploaderQueue.CONTINUE || val === UploaderQueue.STOP || val === UploaderQueue.RESTART_ASAP || val === UploaderQueue.RESTART_AFTER); - } - }, - - /** - * An array indicating what fileFilters should be applied to the file - * selection dialog. Each element in the array should be an object with - * the following key-value pairs: - * { - * description : String - extensions: String of the form &lquot;*.ext1;*.ext2;*.ext3;...&rquot; - * } - * @attribute fileFilters - * @type {Array} - * @default [] - */ - fileFilters: { - value: [] - }, - - /** - * A filtering function that is applied to every file selected by the user. - * The function receives the `Y.File` object and must return a Boolean value. - * If a `false` value is returned, the file in question is not added to the - * list of files to be uploaded. - * Use this function to put limits on file sizes or check the file names for - * correct extension, but make sure that a server-side check is also performed, - * since any client-side restrictions are only advisory and can be circumvented. - * - * @attribute fileFilterFunction - * @type {Function} - * @default null - */ - fileFilterFunction: { - value: null - }, - - /** - * A String specifying what should be the POST field name for the file - * content in the upload request. - * - * @attribute fileFieldName - * @type {String} - * @default Filedata - */ - fileFieldName: { - value: "Filedata" - }, - - /** - * The array of files to be uploaded. All elements in the array - * must be instances of `Y.FileFlash` and be instantiated with a `fileId` - * retrieved from an instance of the uploader. - * - * @attribute fileList - * @type {Array} - * @default [] - */ - fileList: { - value: [], - getter: "_getFileList", - setter: "_setFileList" - }, - - /** - * A Boolean indicating whether multiple file selection is enabled. - * - * @attribute multipleFiles - * @type {Boolean} - * @default false - */ - multipleFiles: { - value: false - }, - - /** - * An object, keyed by `fileId`, containing sets of key-value pairs - * that should be passed as POST variables along with each corresponding - * file. This attribute is only used if no POST variables are specifed - * in the upload method call. - * - * @attribute postVarsPerFile - * @type {Object} - * @default {} - */ - postVarsPerFile: { - value: {} - }, - - /** - * The label for the "Select Files" widget. This is the value that replaces the - * `{selectButtonLabel}` token in the `SELECT_FILES_BUTTON` template. - * - * @attribute selectButtonLabel - * @type {String} - * @default "Select Files" - */ - selectButtonLabel: { - value: "Select Files" - }, - - /** - * The widget that serves as the "Select Files" control for the file uploader - * - * - * @attribute selectFilesButton - * @type {Node | Widget} - * @default A standard HTML button with YUI CSS Button skin. - */ - selectFilesButton : { - valueFn: function () { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "valueFn", 941); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 942); -return Y.Node.create(substitute(Y.UploaderFlash.SELECT_FILES_BUTTON, {selectButtonLabel: this.get("selectButtonLabel")})); - } - }, - - /** - * The number of files that can be uploaded - * simultaneously if the automatic queue management - * is used. This value can be in the range between 2 - * and 5. - * - * @attribute simLimit - * @type {Number} - * @default 2 - */ - simLimit: { - value: 2, - validator: function (val, name) { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "validator", 958); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 959); -return (val >= 2 && val <= 5); - } - }, - - /** - * The URL to the SWF file of the flash uploader. A copy local to - * the server that hosts the page on which the uploader appears is - * recommended. - * - * @attribute swfURL - * @type {String} - * @default "CDN Prefix + uploader/assets/flashuploader.swf" with a - * random GET parameter for IE (to prevent buggy behavior when the SWF - * is cached). - */ - swfURL: { - valueFn: function () { - _yuitest_coverfunc("build/uploader-flash/uploader-flash.js", "valueFn", 975); -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 976); -var prefix = Y.Env.cdn + "uploader/assets/flashuploader.swf"; - - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 978); -if (Y.UA.ie > 0) { - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 979); -return (prefix + "?t=" + Y.guid("uploader")); - } - _yuitest_coverline("build/uploader-flash/uploader-flash.js", 981); -return prefix; - } - }, - - /** - * The id's or `Node` references of the DOM elements that precede - * and follow the `Select Files` button in the tab order. Specifying - * these allows keyboard navigation to and from the Flash player - * layer of the uploader. - * The two keys corresponding to the DOM elements are: -
            - *
          • `from`: the id or the `Node` reference corresponding to the - * DOM element that precedes the `Select Files` button in the tab order.
          • - *
          • `to`: the id or the `Node` reference corresponding to the - * DOM element that follows the `Select Files` button in the tab order.
          • - *
          - * @attribute tabElements - * @type {Object} - * @default null - */ - tabElements: { - value: null - }, - - /** - * The URL to which file upload requested are POSTed. Only used if a different url is not passed to the upload method call. - * - * @attribute uploadURL - * @type {String} - * @default "" - */ - uploadURL: { - value: "" - }, - - /** - * The number of times to try re-uploading a file that failed to upload before - * cancelling its upload. - * - * @attribute retryCount - * @type {Number} - * @default 3 - */ - retryCount: { - value: 3 - } - } -}); - -_yuitest_coverline("build/uploader-flash/uploader-flash.js", 1030); -Y.UploaderFlash.Queue = UploaderQueue; - - - - -}, '3.7.3', {"requires": ["swf", "widget", "substitute", "base", "cssbutton", "node", "event-custom", "file-flash", "uploader-queue"]}); diff --git a/lib/yuilib/3.7.3/build/uploader-flash/uploader-flash-debug.js b/lib/yuilib/3.7.3/build/uploader-flash/uploader-flash-debug.js deleted file mode 100644 index 694c950152e..00000000000 --- a/lib/yuilib/3.7.3/build/uploader-flash/uploader-flash-debug.js +++ /dev/null @@ -1,1041 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add('uploader-flash', function (Y, NAME) { - - - /** - * This module provides a UI for file selection and multiple file upload capability using - * Flash as a transport engine. - * The supported features include: automatic upload queue management, upload progress - * tracking, file filtering, server response retrieval and error reporting. - * - * @module uploader-flash - */ - -// Shorthands for external modules -var substitute = Y.substitute, - UploaderQueue = Y.Uploader.Queue, - getCN = Y.ClassNameManager.getClassName, - UPLOADER = 'uploader', - SELECT_FILES = getCN(UPLOADER, 'selectfiles-button'); - - - /** - * This module provides a UI for file selection and multiple file upload capability - * using Flash as a transport engine. - * @class UploaderFlash - * @extends Widget - * @constructor - * @param {Object} config Configuration object. - */ - -function UploaderFlash(config) { - UploaderFlash.superclass.constructor.apply ( this, arguments ); -} - - - -Y.UploaderFlash = Y.extend(UploaderFlash, Y.Widget, { - - /** - * Stored value of the current button state (based on - * mouse events dispatched by the Flash player) - * @property _buttonState - * @type {String} - * @protected - */ - _buttonState: "up", - - /** - * Stored value of the current button focus state (based - * on keyboard and mouse events). - * @property _buttonFocus - * @type {Boolean} - * @protected - */ - _buttonFocus: false, - - /** - * Stored value of the unique id for the container that holds the - * Flash uploader. - * - * @property _swfContainerId - * @type {String} - * @protected - */ - _swfContainerId: null, - - /** - * Stored reference to the instance of SWF used to host the - * Flash uploader. - * - * @property _swfReference - * @type {SWF} - * @protected - */ - _swfReference: null, - - /** - * Stored reference to the instance of Uploader.Queue used to manage - * the upload process. This is a read-only property that only exists - * during an active upload process. Only one queue can be active at - * a time; if an upload start is attempted while a queue is active, - * it will be ignored. - * - * @property queue - * @type {Y.Uploader.Queue} - */ - queue: null, - - /** - * Stored event bindings for keyboard navigation to and from the uploader. - * - * @property _tabElementBindings - * @type {Object} - * @protected - */ - _tabElementBindings: null, - - -/** - * Construction logic executed during UploaderFlash instantiation. - * - * @method initializer - * @protected - */ - initializer : function () { - - // Assign protected variable values - this._swfContainerId = Y.guid("uploader"); - this._swfReference = null; - this.queue = null; - this._buttonState = "up"; - this._buttonFocus = null; - this._tabElementBindings = null; - this._fileList = []; - - // Publish available events - - /** - * Signals that files have been selected. - * - * @event fileselect - * @param event {Event} The event object for the `fileselect` with the - * following payload: - *
          - *
          fileList
          - *
          An `Array` of files selected by the user, encapsulated - * in Y.FileFlash objects.
          - *
          - */ - this.publish("fileselect"); - - /** - * Signals that an upload of multiple files has been started. - * - * @event uploadstart - * @param event {Event} The event object for the `uploadstart`. - */ - this.publish("uploadstart"); - - /** - * Signals that an upload of a specific file has started. - * - * @event fileuploadstart - * @param event {Event} The event object for the `fileuploadstart` with the - * following payload: - *
          - *
          file
          - *
          A reference to the Y.File that dispatched the event.
          - *
          originEvent
          - *
          The original event dispatched by Y.File.
          - *
          - */ - this.publish("fileuploadstart"); - - /** - * Reports on upload progress of a specific file. - * - * @event uploadprogress - * @param event {Event} The event object for the `uploadprogress` with the - * following payload: - *
          - *
          bytesLoaded
          - *
          The number of bytes of the file that has been uploaded
          - *
          bytesTotal
          - *
          The total number of bytes in the file
          - *
          percentLoaded
          - *
          The fraction of the file that has been uploaded, out of 100
          - *
          originEvent
          - *
          The original event dispatched by the SWF uploader
          - *
          - */ - this.publish("uploadprogress"); - - /** - * Reports on the total upload progress of the file list. - * - * @event totaluploadprogress - * @param event {Event} The event object for the `totaluploadprogress` with the - * following payload: - *
          - *
          bytesLoaded
          - *
          The number of bytes of the file list that has been uploaded
          - *
          bytesTotal
          - *
          The total number of bytes in the file list
          - *
          percentLoaded
          - *
          The fraction of the file list that has been uploaded, out of 100
          - *
          - */ - this.publish("totaluploadprogress"); - - /** - * Signals that a single file upload has been completed. - * - * @event uploadcomplete - * @param event {Event} The event object for the `uploadcomplete` with the - * following payload: - *
          - *
          file
          - *
          The pointer to the instance of `Y.File` whose upload has been completed.
          - *
          originEvent
          - *
          The original event fired by the SWF Uploader
          - *
          data
          - *
          Data returned by the server.
          - *
          - */ - this.publish("uploadcomplete"); - - /** - * Signals that the upload process of the entire file list has been completed. - * - * @event alluploadscomplete - * @param event {Event} The event object for the `alluploadscomplete`. - */ - this.publish("alluploadscomplete"); - - /** - * Signals that a error has occurred in a specific file's upload process. - * - * @event uploaderror - * @param event {Event} The event object for the `uploaderror` with the - * following payload: - *
          - *
          originEvent
          - *
          The original error event fired by the SWF Uploader.
          - *
          file
          - *
          The pointer at the instance of Y.FileFlash that returned the error.
          - *
          source
          - *
          The source of the upload error, either "io" or "http"
          - *
          message
          - *
          The message that accompanied the error. Corresponds to the text of - * the error in cases where source is "io", and to the HTTP status for - cases where source is "http".
          - *
          - */ - this.publish("uploaderror"); - - /** - * Signals that a mouse has begun hovering over the `Select Files` button. - * - * @event mouseenter - * @param event {Event} The event object for the `mouseenter` event. - */ - this.publish("mouseenter"); - - /** - * Signals that a mouse has stopped hovering over the `Select Files` button. - * - * @event mouseleave - * @param event {Event} The event object for the `mouseleave` event. - */ - this.publish("mouseleave"); - - /** - * Signals that a mouse button has been pressed over the `Select Files` button. - * - * @event mousedown - * @param event {Event} The event object for the `mousedown` event. - */ - this.publish("mousedown"); - - /** - * Signals that a mouse button has been released over the `Select Files` button. - * - * @event mouseup - * @param event {Event} The event object for the `mouseup` event. - */ - this.publish("mouseup"); - - /** - * Signals that a mouse has been clicked over the `Select Files` button. - * - * @event click - * @param event {Event} The event object for the `click` event. - */ - this.publish("click"); - }, - - /** - * Creates the DOM structure for the UploaderFlash. - * UploaderFlash's DOM structure consists of two layers: the base "Select Files" - * button that can be replaced by the developer's widget of choice; and a transparent - * Flash overlay positoned above the button that captures all input events. - * The `position` style attribute of the `boundingBox` of the `Uploader` widget - * is forced to be `relative`, in order to accommodate the Flash player overlay - * (which is `position`ed `absolute`ly). - * - * @method renderUI - * @protected - */ - renderUI : function () { - var boundingBox = this.get("boundingBox"), - contentBox = this.get('contentBox'), - selFilesButton = this.get("selectFilesButton"); - - boundingBox.setStyle("position", "relative"); - selFilesButton.setStyles({width: "100%", height: "100%"}); - contentBox.append(selFilesButton); - contentBox.append(Y.Node.create(substitute(UploaderFlash.FLASH_CONTAINER, - {swfContainerId: this._swfContainerId}))); - var flashContainer = Y.one("#" + this._swfContainerId); - var params = {version: "10.0.45", - fixedAttributes: {wmode: "transparent", - allowScriptAccess:"always", - allowNetworking:"all", - scale: "noscale" - } - }; - this._swfReference = new Y.SWF(flashContainer, this.get("swfURL"), params); - }, - - /** - * Binds handlers to the UploaderFlash UI events and propagates attribute - * values to the Flash player. - * The propagation of initial values is set to occur once the Flash player - * instance is ready (as indicated by the `swfReady` event.) - * - * @method bindUI - * @protected - */ - bindUI : function () { - - this._swfReference.on("swfReady", function () { - this._setMultipleFiles(); - this._setFileFilters(); - this._triggerEnabled(); - this._attachTabElements(); - this.after("multipleFilesChange", this._setMultipleFiles, this); - this.after("fileFiltersChange", this._setFileFilters, this); - this.after("enabledChange", this._triggerEnabled, this); - this.after("tabElementsChange", this._attachTabElements); - }, this); - - this._swfReference.on("fileselect", this._updateFileList, this); - - - - // this._swfReference.on("trace", function (ev) {console.log(ev.message);}); - - this._swfReference.on("mouseenter", function () { - this.fire("mouseenter"); - this._setButtonClass("hover", true); - if (this._buttonState == "down") { - this._setButtonClass("active", true); - } - }, this); - this._swfReference.on("mouseleave", function () { - this.fire("mouseleave"); - this._setButtonClass("hover", false); - this._setButtonClass("active", false); - - }, this); - this._swfReference.on("mousedown", function () { - this.fire("mousedown"); - this._buttonState = "down"; - this._setButtonClass("active", true); - }, this); - this._swfReference.on("mouseup", function () { - this.fire("mouseup"); - this._buttonState = "up"; - this._setButtonClass("active", false); - }, this); - this._swfReference.on("click", function () { - this.fire("click"); - this._buttonFocus = true; - this._setButtonClass("focus", true); - Y.one("body").focus(); - this._swfReference._swf.focus(); - }, this); - }, - - /** - * Attaches keyboard bindings to enabling tabbing to and from the instance of the Flash - * player in the Uploader widget. If the previous and next elements are specified, the - * keyboard bindings enable the user to tab from the `tabElements["from"]` node to the - * Flash-powered "Select Files" button, and to the `tabElements["to"]` node. - * - * @method _attachTabElements - * @protected - * @param ev {Event} Optional event payload if called as a `tabElementsChange` handler. - */ - _attachTabElements : function (ev) { - if (this.get("tabElements") !== null && this.get("tabElements").from !== null && this.get("tabElements").to !== null) { - - if (this._tabElementBindings !== null) { - this._tabElementBindings.from.detach(); - this._tabElementBindings.to.detach(); - this._tabElementBindings.tabback.detach(); - this._tabElementBindings.tabforward.detach(); - this._tabElementBindings.focus.detach(); - this._tabElementBindings.blur.detach(); - } - else { - this._tabElementBindings = {}; - } - - var fromElement = Y.one(this.get("tabElements").from); - var toElement = Y.one(this.get("tabElements").to); - - - this._tabElementBindings.from = fromElement.on("keydown", function (ev) { - if (ev.keyCode == 9 && !ev.shiftKey) { - ev.preventDefault(); - this._swfReference._swf.setAttribute("tabindex", 0); - this._swfReference._swf.setAttribute("role", "button"); - this._swfReference._swf.setAttribute("aria-label", this.get("selectButtonLabel")); - this._swfReference._swf.focus(); - } - }, this); - this._tabElementBindings.to = toElement.on("keydown", function (ev) { - if (ev.keyCode == 9 && ev.shiftKey) { - ev.preventDefault(); - this._swfReference._swf.setAttribute("tabindex", 0); - this._swfReference._swf.setAttribute("role", "button"); - this._swfReference._swf.setAttribute("aria-label", this.get("selectButtonLabel")); - this._swfReference._swf.focus(); - } - }, this); - this._tabElementBindings.tabback = this._swfReference.on("tabback", function (ev) {this._swfReference._swf.blur(); setTimeout(function () {fromElement.focus();}, 30);}, this); - this._tabElementBindings.tabforward = this._swfReference.on("tabforward", function (ev) {this._swfReference._swf.blur(); setTimeout(function () {toElement.focus();}, 30);}, this); - - this._tabElementBindings.focus = this._swfReference._swf.on("focus", function (ev) {this._buttonFocus = true; this._setButtonClass("focus", true);}, this); - this._tabElementBindings.blur = this._swfReference._swf.on("blur", function (ev) {this._buttonFocus = false; this._setButtonClass("focus", false);}, this); - } - else if (this._tabElementBindings !== null) { - this._tabElementBindings.from.detach(); - this._tabElementBindings.to.detach(); - this._tabElementBindings.tabback.detach(); - this._tabElementBindings.tabforward.detach(); - this._tabElementBindings.focus.detach(); - this._tabElementBindings.blur.detach(); - } - }, - - - /** - * Adds or removes a specified state CSS class to the underlying uploader button. - * - * @method _setButtonClass - * @protected - * @param state {String} The name of the state enumerated in `buttonClassNames` attribute - * from which to derive the needed class name. - * @param add {Boolean} A Boolean indicating whether to add or remove the class. - */ - _setButtonClass : function (state, add) { - if (add) { - this.get("selectFilesButton").addClass(this.get("buttonClassNames")[state]); - } - else { - this.get("selectFilesButton").removeClass(this.get("buttonClassNames")[state]); - } - }, - - - /** - * Syncs the state of the `fileFilters` attribute between the instance of UploaderFlash - * and the Flash player. - * - * @method _setFileFilters - * @private - */ - _setFileFilters : function () { - if (this._swfReference && this.get("fileFilters").length > 0) { - this._swfReference.callSWF("setFileFilters", [this.get("fileFilters")]); - } - - }, - - - - /** - * Syncs the state of the `multipleFiles` attribute between this class - * and the Flash uploader. - * - * @method _setMultipleFiles - * @private - */ - _setMultipleFiles : function () { - if (this._swfReference) { - this._swfReference.callSWF("setAllowMultipleFiles", [this.get("multipleFiles")]); - } - }, - - /** - * Syncs the state of the `enabled` attribute between this class - * and the Flash uploader. - * - * @method _triggerEnabled - * @private - */ - _triggerEnabled : function () { - if (this.get("enabled")) { - this._swfReference.callSWF("enable"); - this._swfReference._swf.setAttribute("aria-disabled", "false"); - this._setButtonClass("disabled", false); - } - else { - this._swfReference.callSWF("disable"); - this._swfReference._swf.setAttribute("aria-disabled", "true"); - this._setButtonClass("disabled", true); - } - }, - - /** - * Getter for the `fileList` attribute - * - * @method _getFileList - * @private - */ - _getFileList : function (arr) { - return this._fileList.concat(); - }, - - /** - * Setter for the `fileList` attribute - * - * @method _setFileList - * @private - */ - _setFileList : function (val) { - this._fileList = val.concat(); - return this._fileList.concat(); - }, - - /** - * Adjusts the content of the `fileList` based on the results of file selection - * and the `appendNewFiles` attribute. If the `appendNewFiles` attribute is true, - * then selected files are appended to the existing list; otherwise, the list is - * cleared and populated with the newly selected files. - * - * @method _updateFileList - * @param ev {Event} The file selection event received from the uploader. - * @private - */ - _updateFileList : function (ev) { - - Y.one("body").focus(); - this._swfReference._swf.focus(); - - - var newfiles = ev.fileList, - fileConfObjects = [], - parsedFiles = [], - swfRef = this._swfReference, - filterFunc = this.get("fileFilterFunction"); - - Y.each(newfiles, function (value) { - var newFileConf = {}; - newFileConf.id = value.fileId; - newFileConf.name = value.fileReference.name; - newFileConf.size = value.fileReference.size; - newFileConf.type = value.fileReference.type; - newFileConf.dateCreated = value.fileReference.creationDate; - newFileConf.dateModified = value.fileReference.modificationDate; - newFileConf.uploader = swfRef; - - fileConfObjects.push(newFileConf); - }); - - if (filterFunc) { - Y.each(fileConfObjects, function (value) { - var newfile = new Y.FileFlash(value); - if (filterFunc(newfile)) { - parsedFiles.push(newfile); - } - }); - } - else { - Y.each(fileConfObjects, function (value) { - parsedFiles.push(new Y.FileFlash(value)); - }); - } - - if (parsedFiles.length > 0) { - var oldfiles = this.get("fileList"); - - this.set("fileList", - this.get("appendNewFiles") ? oldfiles.concat(parsedFiles) : parsedFiles ); - - this.fire("fileselect", {fileList: parsedFiles}); - } - - }, - - - - /** - * Handles and retransmits events fired by `Y.FileFlash` and `Y.Uploader.Queue`. - * - * @method _uploadEventHandler - * @param event The event dispatched during the upload process. - * @private - */ - _uploadEventHandler : function (event) { - - switch (event.type) { - case "file:uploadstart": - this.fire("fileuploadstart", event); - break; - case "file:uploadprogress": - this.fire("uploadprogress", event); - break; - case "uploaderqueue:totaluploadprogress": - this.fire("totaluploadprogress", event); - break; - case "file:uploadcomplete": - this.fire("uploadcomplete", event); - break; - case "uploaderqueue:alluploadscomplete": - this.queue = null; - this.fire("alluploadscomplete", event); - break; - case "file:uploaderror": - case "uploaderqueue:uploaderror": - this.fire("uploaderror", event); - break; - case "file:uploadcancel": - case "uploaderqueue:uploadcancel": - this.fire("uploadcancel", event); - break; - } - - }, - - - - /** - * Starts the upload of a specific file. - * - * @method upload - * @param file {Y.FileFlash} Reference to the instance of the file to be uploaded. - * @param url {String} The URL to upload the file to. - * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request. - * If not specified, the values from the attribute `postVarsPerFile` are used instead. - */ - - upload : function (file, url, postvars) { - - var uploadURL = url || this.get("uploadURL"), - postVars = postvars || this.get("postVarsPerFile"), - fileId = file.get("id"); - - postVars = postVars.hasOwnProperty(fileId) ? postVars[fileId] : postVars; - - if (file instanceof Y.FileFlash) { - - file.on("uploadstart", this._uploadEventHandler, this); - file.on("uploadprogress", this._uploadEventHandler, this); - file.on("uploadcomplete", this._uploadEventHandler, this); - file.on("uploaderror", this._uploadEventHandler, this); - file.on("uploadcancel", this._uploadEventHandler, this); - - file.startUpload(uploadURL, postVars, this.get("fileFieldName")); - } - }, - - /** - * Starts the upload of all files on the file list, using an automated queue. - * - * @method uploadAll - * @param url {String} The URL to upload the files to. - * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request. - * If not specified, the values from the attribute `postVarsPerFile` are used instead. - */ - uploadAll : function (url, postvars) { - this.uploadThese(this.get("fileList"), url, postvars); - }, - - /** - * Starts the upload of the files specified in the first argument, using an automated queue. - * - * @method uploadThese - * @param files {Array} The list of files to upload. - * @param url {String} The URL to upload the files to. - * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request. - * If not specified, the values from the attribute `postVarsPerFile` are used instead. - */ - uploadThese : function (files, url, postvars) { - if (!this.queue) { - var uploadURL = url || this.get("uploadURL"), - postVars = postvars || this.get("postVarsPerFile"); - - this.queue = new UploaderQueue({simUploads: this.get("simLimit"), - errorAction: this.get("errorAction"), - fileFieldName: this.get("fileFieldName"), - fileList: files, - uploadURL: uploadURL, - perFileParameters: postVars, - retryCount: this.get("retryCount") - }); - this.queue.on("uploadstart", this._uploadEventHandler, this); - this.queue.on("uploadprogress", this._uploadEventHandler, this); - this.queue.on("totaluploadprogress", this._uploadEventHandler, this); - this.queue.on("uploadcomplete", this._uploadEventHandler, this); - this.queue.on("alluploadscomplete", this._uploadEventHandler, this); - this.queue.on("alluploadscancelled", function (ev) {this.queue = null;}, this); - this.queue.on("uploaderror", this._uploadEventHandler, this); - this.queue.startUpload(); - - this.fire("uploadstart"); - } - } -}, - -{ - /** - * The template for the Flash player container. Since the Flash player container needs - * to completely overlay the &lquot;Select Files&rqot; control, it's positioned absolutely, - * with width and height set to 100% of the parent. - * - * @property FLASH_CONTAINER - * @type {String} - * @static - * @default "
          " - */ - FLASH_CONTAINER: "
          ", - - /** - * The template for the "Select Files" button. - * - * @property SELECT_FILES_BUTTON - * @type {String} - * @static - * @default "" - */ - SELECT_FILES_BUTTON: "", - - /** - * The static property reflecting the type of uploader that `Y.Uploader` - * aliases. The UploaderFlash value is `"flash"`. - * - * @property TYPE - * @type {String} - * @static - */ - TYPE: "flash", - - /** - * The identity of the widget. - * - * @property NAME - * @type String - * @default 'uploader' - * @readOnly - * @protected - * @static - */ - NAME: "uploader", - - /** - * Static property used to define the default attribute configuration of - * the Widget. - * - * @property ATTRS - * @type {Object} - * @protected - * @static - */ - ATTRS: { - - /** - * A Boolean indicating whether newly selected files should be appended - * to the existing file list, or whether they should replace it. - * - * @attribute appendNewFiles - * @type {Boolean} - * @default true - */ - appendNewFiles : { - value: true - }, - - /** - * The names of CSS classes that correspond to different button states - * of the "Select Files" control. These classes are assigned to the - * "Select Files" control based on the mouse states reported by the - * Flash player. The keys for the class names are: - *
            - *
          • `hover`: the class corresponding to mouse hovering over - * the "Select Files" button.
          • - *
          • `active`: the class corresponding to mouse down state of - * the "Select Files" button.
          • - *
          • `disabled`: the class corresponding to the disabled state - * of the "Select Files" button.
          • - *
          • `focus`: the class corresponding to the focused state of - * the "Select Files" button.
          • - *
          - * @attribute buttonClassNames - * @type {Object} - * @default { hover: "yui3-button-hover", - * active: "yui3-button-active", - * disabled: "yui3-button-disabled", - * focus: "yui3-button-selected" - * } - */ - buttonClassNames: { - value: { - "hover": "yui3-button-hover", - "active": "yui3-button-active", - "disabled": "yui3-button-disabled", - "focus": "yui3-button-selected" - } - }, - - /** - * A Boolean indicating whether the uploader is enabled or disabled for user input. - * - * @attribute enabled - * @type {Boolean} - * @default true - */ - enabled : { - value: true - }, - - /** - * The action performed when an upload error occurs for a specific file being uploaded. - * The possible values are: - *
            - *
          • `UploaderQueue.CONTINUE`: the error is ignored and the upload process is continued.
          • - *
          • `UploaderQueue.STOP`: the upload process is stopped as soon as any other parallel file - * uploads are finished.
          • - *
          • `UploaderQueue.RESTART_ASAP`: the file is added back to the front of the queue.
          • - *
          • `UploaderQueue.RESTART_AFTER`: the file is added to the back of the queue.
          • - *
          - * @attribute errorAction - * @type {String} - * @default UploaderQueue.CONTINUE - */ - errorAction: { - value: "continue", - validator: function (val, name) { - return (val === UploaderQueue.CONTINUE || val === UploaderQueue.STOP || val === UploaderQueue.RESTART_ASAP || val === UploaderQueue.RESTART_AFTER); - } - }, - - /** - * An array indicating what fileFilters should be applied to the file - * selection dialog. Each element in the array should be an object with - * the following key-value pairs: - * { - * description : String - extensions: String of the form &lquot;*.ext1;*.ext2;*.ext3;...&rquot; - * } - * @attribute fileFilters - * @type {Array} - * @default [] - */ - fileFilters: { - value: [] - }, - - /** - * A filtering function that is applied to every file selected by the user. - * The function receives the `Y.File` object and must return a Boolean value. - * If a `false` value is returned, the file in question is not added to the - * list of files to be uploaded. - * Use this function to put limits on file sizes or check the file names for - * correct extension, but make sure that a server-side check is also performed, - * since any client-side restrictions are only advisory and can be circumvented. - * - * @attribute fileFilterFunction - * @type {Function} - * @default null - */ - fileFilterFunction: { - value: null - }, - - /** - * A String specifying what should be the POST field name for the file - * content in the upload request. - * - * @attribute fileFieldName - * @type {String} - * @default Filedata - */ - fileFieldName: { - value: "Filedata" - }, - - /** - * The array of files to be uploaded. All elements in the array - * must be instances of `Y.FileFlash` and be instantiated with a `fileId` - * retrieved from an instance of the uploader. - * - * @attribute fileList - * @type {Array} - * @default [] - */ - fileList: { - value: [], - getter: "_getFileList", - setter: "_setFileList" - }, - - /** - * A Boolean indicating whether multiple file selection is enabled. - * - * @attribute multipleFiles - * @type {Boolean} - * @default false - */ - multipleFiles: { - value: false - }, - - /** - * An object, keyed by `fileId`, containing sets of key-value pairs - * that should be passed as POST variables along with each corresponding - * file. This attribute is only used if no POST variables are specifed - * in the upload method call. - * - * @attribute postVarsPerFile - * @type {Object} - * @default {} - */ - postVarsPerFile: { - value: {} - }, - - /** - * The label for the "Select Files" widget. This is the value that replaces the - * `{selectButtonLabel}` token in the `SELECT_FILES_BUTTON` template. - * - * @attribute selectButtonLabel - * @type {String} - * @default "Select Files" - */ - selectButtonLabel: { - value: "Select Files" - }, - - /** - * The widget that serves as the "Select Files" control for the file uploader - * - * - * @attribute selectFilesButton - * @type {Node | Widget} - * @default A standard HTML button with YUI CSS Button skin. - */ - selectFilesButton : { - valueFn: function () { - return Y.Node.create(substitute(Y.UploaderFlash.SELECT_FILES_BUTTON, {selectButtonLabel: this.get("selectButtonLabel")})); - } - }, - - /** - * The number of files that can be uploaded - * simultaneously if the automatic queue management - * is used. This value can be in the range between 2 - * and 5. - * - * @attribute simLimit - * @type {Number} - * @default 2 - */ - simLimit: { - value: 2, - validator: function (val, name) { - return (val >= 2 && val <= 5); - } - }, - - /** - * The URL to the SWF file of the flash uploader. A copy local to - * the server that hosts the page on which the uploader appears is - * recommended. - * - * @attribute swfURL - * @type {String} - * @default "CDN Prefix + uploader/assets/flashuploader.swf" with a - * random GET parameter for IE (to prevent buggy behavior when the SWF - * is cached). - */ - swfURL: { - valueFn: function () { - var prefix = Y.Env.cdn + "uploader/assets/flashuploader.swf"; - - if (Y.UA.ie > 0) { - return (prefix + "?t=" + Y.guid("uploader")); - } - return prefix; - } - }, - - /** - * The id's or `Node` references of the DOM elements that precede - * and follow the `Select Files` button in the tab order. Specifying - * these allows keyboard navigation to and from the Flash player - * layer of the uploader. - * The two keys corresponding to the DOM elements are: -
            - *
          • `from`: the id or the `Node` reference corresponding to the - * DOM element that precedes the `Select Files` button in the tab order.
          • - *
          • `to`: the id or the `Node` reference corresponding to the - * DOM element that follows the `Select Files` button in the tab order.
          • - *
          - * @attribute tabElements - * @type {Object} - * @default null - */ - tabElements: { - value: null - }, - - /** - * The URL to which file upload requested are POSTed. Only used if a different url is not passed to the upload method call. - * - * @attribute uploadURL - * @type {String} - * @default "" - */ - uploadURL: { - value: "" - }, - - /** - * The number of times to try re-uploading a file that failed to upload before - * cancelling its upload. - * - * @attribute retryCount - * @type {Number} - * @default 3 - */ - retryCount: { - value: 3 - } - } -}); - -Y.UploaderFlash.Queue = UploaderQueue; - - - - -}, '3.7.3', {"requires": ["swf", "widget", "substitute", "base", "cssbutton", "node", "event-custom", "file-flash", "uploader-queue"]}); diff --git a/lib/yuilib/3.7.3/build/uploader-flash/uploader-flash-min.js b/lib/yuilib/3.7.3/build/uploader-flash/uploader-flash-min.js deleted file mode 100644 index 66c161b2649..00000000000 --- a/lib/yuilib/3.7.3/build/uploader-flash/uploader-flash-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("uploader-flash",function(e,t){function u(e){u.superclass.constructor.apply(this,arguments)}var n=e.substitute,r=e.Uploader.Queue,i=e.ClassNameManager.getClassName,s="uploader",o=i(s,"selectfiles-button");e.UploaderFlash=e.extend(u,e.Widget,{_buttonState:"up",_buttonFocus:!1,_swfContainerId:null,_swfReference:null,queue:null,_tabElementBindings:null,initializer:function(){this._swfContainerId=e.guid("uploader"),this._swfReference=null,this.queue=null,this._buttonState="up",this._buttonFocus=null,this._tabElementBindings=null,this._fileList=[],this.publish("fileselect"),this.publish("uploadstart"),this.publish("fileuploadstart"),this.publish("uploadprogress"),this.publish("totaluploadprogress"),this.publish("uploadcomplete"),this.publish("alluploadscomplete"),this.publish("uploaderror"),this.publish("mouseenter"),this.publish("mouseleave"),this.publish("mousedown"),this.publish("mouseup"),this.publish("click")},renderUI:function(){var t=this.get("boundingBox"),r=this.get("contentBox"),i=this.get("selectFilesButton");t.setStyle("position","relative"),i.setStyles({width:"100%",height:"100%"}),r.append(i),r.append(e.Node.create(n(u.FLASH_CONTAINER,{swfContainerId:this._swfContainerId})));var s=e.one("#"+this._swfContainerId),o={version:"10.0.45",fixedAttributes:{wmode:"transparent",allowScriptAccess:"always",allowNetworking:"all",scale:"noscale"}};this._swfReference=new e.SWF(s,this.get("swfURL"),o)},bindUI:function(){this._swfReference.on("swfReady",function(){this._setMultipleFiles(),this._setFileFilters(),this._triggerEnabled(),this._attachTabElements(),this.after("multipleFilesChange",this._setMultipleFiles,this),this.after("fileFiltersChange",this._setFileFilters,this),this.after("enabledChange",this._triggerEnabled,this),this.after("tabElementsChange",this._attachTabElements)},this),this._swfReference.on("fileselect",this._updateFileList,this),this._swfReference.on("mouseenter",function(){this.fire("mouseenter"),this._setButtonClass("hover",!0),this._buttonState=="down"&&this._setButtonClass("active",!0)},this),this._swfReference.on("mouseleave",function(){this.fire("mouseleave"),this._setButtonClass("hover",!1),this._setButtonClass("active",!1)},this),this._swfReference.on("mousedown",function(){this.fire("mousedown"),this._buttonState="down",this._setButtonClass("active",!0)},this),this._swfReference.on("mouseup",function(){this.fire("mouseup"),this._buttonState="up",this._setButtonClass("active",!1)},this),this._swfReference.on("click",function(){this.fire("click"),this._buttonFocus=!0,this._setButtonClass("focus",!0),e.one("body").focus(),this._swfReference._swf.focus()},this)},_attachTabElements:function(t){if(this.get("tabElements")!==null&&this.get("tabElements").from!==null&&this.get("tabElements").to!==null){this._tabElementBindings!==null?(this._tabElementBindings.from.detach(),this._tabElementBindings.to.detach(),this._tabElementBindings.tabback.detach(),this._tabElementBindings.tabforward.detach(),this._tabElementBindings.focus.detach(),this._tabElementBindings.blur.detach()):this._tabElementBindings={};var n=e.one(this.get("tabElements").from),r=e.one(this.get("tabElements").to);this._tabElementBindings.from=n.on("keydown",function(e){e.keyCode==9&&!e.shiftKey&&(e.preventDefault(),this._swfReference._swf.setAttribute("tabindex",0),this._swfReference._swf.setAttribute("role","button"),this._swfReference._swf.setAttribute("aria-label",this.get("selectButtonLabel")),this._swfReference._swf.focus())},this),this._tabElementBindings.to=r.on("keydown",function(e){e.keyCode==9&&e.shiftKey&&(e.preventDefault(),this._swfReference._swf.setAttribute("tabindex",0),this._swfReference._swf.setAttribute("role","button"),this._swfReference._swf.setAttribute("aria-label",this.get("selectButtonLabel")),this._swfReference._swf.focus())},this),this._tabElementBindings.tabback=this._swfReference.on("tabback",function(e){this._swfReference._swf.blur(),setTimeout(function(){n.focus()},30)},this),this._tabElementBindings.tabforward=this._swfReference.on("tabforward",function(e){this._swfReference._swf.blur(),setTimeout(function(){r.focus()},30)},this),this._tabElementBindings.focus=this._swfReference._swf.on("focus",function(e){this._buttonFocus=!0,this._setButtonClass("focus",!0)},this),this._tabElementBindings.blur=this._swfReference._swf.on("blur",function(e){this._buttonFocus=!1,this._setButtonClass("focus",!1)},this)}else this._tabElementBindings!==null&&(this._tabElementBindings.from.detach(),this._tabElementBindings.to.detach(),this._tabElementBindings.tabback.detach(),this._tabElementBindings.tabforward.detach(),this._tabElementBindings.focus.detach(),this._tabElementBindings.blur.detach())},_setButtonClass:function(e,t){t?this.get("selectFilesButton").addClass(this.get("buttonClassNames")[e]):this.get("selectFilesButton").removeClass(this.get("buttonClassNames")[e])},_setFileFilters:function(){this._swfReference&&this.get("fileFilters").length>0&&this._swfReference.callSWF("setFileFilters",[this.get("fileFilters")])},_setMultipleFiles:function(){this._swfReference&&this._swfReference.callSWF("setAllowMultipleFiles",[this.get("multipleFiles")])},_triggerEnabled:function(){this.get("enabled")?(this._swfReference.callSWF("enable"),this._swfReference._swf.setAttribute("aria-disabled","false"),this._setButtonClass("disabled",!1)):(this._swfReference.callSWF("disable"),this._swfReference._swf.setAttribute("aria-disabled","true"),this._setButtonClass("disabled",!0))},_getFileList:function(e){return this._fileList.concat()},_setFileList:function(e){return this._fileList=e.concat(),this._fileList.concat()},_updateFileList:function(t){e.one("body").focus(),this._swfReference._swf.focus();var n=t.fileList,r=[],i=[],s=this._swfReference,o=this.get("fileFilterFunction");e.each(n,function(e){var t={};t.id=e.fileId,t.name=e.fileReference.name,t.size=e.fileReference.size,t.type=e.fileReference.type,t.dateCreated=e.fileReference.creationDate,t.dateModified=e.fileReference.modificationDate,t.uploader=s,r.push(t)}),o?e.each(r,function(t){var n=new e.FileFlash(t);o(n)&&i.push(n)}):e.each(r,function(t){i.push(new e.FileFlash(t))});if(i.length>0){var u=this.get("fileList");this.set("fileList",this.get("appendNewFiles")?u.concat(i):i),this.fire("fileselect",{fileList:i})}},_uploadEventHandler:function(e){switch(e.type){case"file:uploadstart":this.fire("fileuploadstart",e);break;case"file:uploadprogress":this.fire("uploadprogress",e);break;case"uploaderqueue:totaluploadprogress":this.fire("totaluploadprogress",e);break;case"file:uploadcomplete":this.fire("uploadcomplete",e);break;case"uploaderqueue:alluploadscomplete":this.queue=null,this.fire("alluploadscomplete",e);break;case"file:uploaderror":case"uploaderqueue:uploaderror":this.fire("uploaderror",e);break;case"file:uploadcancel":case"uploaderqueue:uploadcancel":this.fire("uploadcancel",e)}},upload:function(t,n,r){var i=n||this.get("uploadURL"),s=r||this.get("postVarsPerFile"),o=t.get("id");s=s.hasOwnProperty(o)?s[o]:s,t instanceof e.FileFlash&&(t.on("uploadstart",this._uploadEventHandler,this),t.on("uploadprogress",this._uploadEventHandler,this),t.on("uploadcomplete",this._uploadEventHandler,this),t.on("uploaderror",this._uploadEventHandler,this),t.on("uploadcancel",this._uploadEventHandler,this),t.startUpload(i,s,this.get("fileFieldName")))},uploadAll:function(e,t){this.uploadThese(this.get("fileList"),e,t)},uploadThese:function(e,t,n){if(!this.queue){var i=t||this.get("uploadURL"),s=n||this.get("postVarsPerFile");this.queue=new r({simUploads:this.get("simLimit"),errorAction:this.get("errorAction"),fileFieldName:this.get("fileFieldName"),fileList:e,uploadURL:i,perFileParameters:s,retryCount:this.get("retryCount")}),this.queue.on("uploadstart",this._uploadEventHandler,this),this.queue.on("uploadprogress",this._uploadEventHandler,this),this.queue.on("totaluploadprogress",this._uploadEventHandler,this),this.queue.on("uploadcomplete",this._uploadEventHandler,this),this.queue.on("alluploadscomplete",this._uploadEventHandler,this),this.queue.on("alluploadscancelled",function(e){this.queue=null},this),this.queue.on("uploaderror",this._uploadEventHandler,this),this.queue.startUpload(),this.fire("uploadstart")}}},{FLASH_CONTAINER:"
          ",SELECT_FILES_BUTTON:"",TYPE:"flash",NAME:"uploader",ATTRS:{appendNewFiles:{value:!0},buttonClassNames:{value:{hover:"yui3-button-hover",active:"yui3-button-active",disabled:"yui3-button-disabled",focus:"yui3-button-selected"}},enabled:{value:!0},errorAction:{value:"continue",validator:function(e,t){return e===r.CONTINUE||e===r.STOP||e===r.RESTART_ASAP||e===r.RESTART_AFTER}},fileFilters:{value:[]},fileFilterFunction:{value:null},fileFieldName:{value:"Filedata"},fileList:{value:[],getter:"_getFileList",setter:"_setFileList"},multipleFiles:{value:!1},postVarsPerFile:{value:{}},selectButtonLabel:{value:"Select Files"},selectFilesButton:{valueFn:function(){return e.Node.create(n(e.UploaderFlash.SELECT_FILES_BUTTON,{selectButtonLabel:this.get("selectButtonLabel")}))}},simLimit:{value:2,validator:function(e,t){return e>=2&&e<=5}},swfURL:{valueFn:function(){var t=e.Env.cdn+"uploader/assets/flashuploader.swf";return e.UA.ie>0?t+"?t="+e.guid("uploader"):t}},tabElements:{value:null},uploadURL:{value:""},retryCount:{value:3}}}),e.UploaderFlash.Queue=r},"3.7.3",{requires:["swf","widget","substitute","base","cssbutton","node","event-custom","file-flash","uploader-queue"]}); diff --git a/lib/yuilib/3.7.3/build/uploader-flash/uploader-flash.js b/lib/yuilib/3.7.3/build/uploader-flash/uploader-flash.js deleted file mode 100644 index 694c950152e..00000000000 --- a/lib/yuilib/3.7.3/build/uploader-flash/uploader-flash.js +++ /dev/null @@ -1,1041 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add('uploader-flash', function (Y, NAME) { - - - /** - * This module provides a UI for file selection and multiple file upload capability using - * Flash as a transport engine. - * The supported features include: automatic upload queue management, upload progress - * tracking, file filtering, server response retrieval and error reporting. - * - * @module uploader-flash - */ - -// Shorthands for external modules -var substitute = Y.substitute, - UploaderQueue = Y.Uploader.Queue, - getCN = Y.ClassNameManager.getClassName, - UPLOADER = 'uploader', - SELECT_FILES = getCN(UPLOADER, 'selectfiles-button'); - - - /** - * This module provides a UI for file selection and multiple file upload capability - * using Flash as a transport engine. - * @class UploaderFlash - * @extends Widget - * @constructor - * @param {Object} config Configuration object. - */ - -function UploaderFlash(config) { - UploaderFlash.superclass.constructor.apply ( this, arguments ); -} - - - -Y.UploaderFlash = Y.extend(UploaderFlash, Y.Widget, { - - /** - * Stored value of the current button state (based on - * mouse events dispatched by the Flash player) - * @property _buttonState - * @type {String} - * @protected - */ - _buttonState: "up", - - /** - * Stored value of the current button focus state (based - * on keyboard and mouse events). - * @property _buttonFocus - * @type {Boolean} - * @protected - */ - _buttonFocus: false, - - /** - * Stored value of the unique id for the container that holds the - * Flash uploader. - * - * @property _swfContainerId - * @type {String} - * @protected - */ - _swfContainerId: null, - - /** - * Stored reference to the instance of SWF used to host the - * Flash uploader. - * - * @property _swfReference - * @type {SWF} - * @protected - */ - _swfReference: null, - - /** - * Stored reference to the instance of Uploader.Queue used to manage - * the upload process. This is a read-only property that only exists - * during an active upload process. Only one queue can be active at - * a time; if an upload start is attempted while a queue is active, - * it will be ignored. - * - * @property queue - * @type {Y.Uploader.Queue} - */ - queue: null, - - /** - * Stored event bindings for keyboard navigation to and from the uploader. - * - * @property _tabElementBindings - * @type {Object} - * @protected - */ - _tabElementBindings: null, - - -/** - * Construction logic executed during UploaderFlash instantiation. - * - * @method initializer - * @protected - */ - initializer : function () { - - // Assign protected variable values - this._swfContainerId = Y.guid("uploader"); - this._swfReference = null; - this.queue = null; - this._buttonState = "up"; - this._buttonFocus = null; - this._tabElementBindings = null; - this._fileList = []; - - // Publish available events - - /** - * Signals that files have been selected. - * - * @event fileselect - * @param event {Event} The event object for the `fileselect` with the - * following payload: - *
          - *
          fileList
          - *
          An `Array` of files selected by the user, encapsulated - * in Y.FileFlash objects.
          - *
          - */ - this.publish("fileselect"); - - /** - * Signals that an upload of multiple files has been started. - * - * @event uploadstart - * @param event {Event} The event object for the `uploadstart`. - */ - this.publish("uploadstart"); - - /** - * Signals that an upload of a specific file has started. - * - * @event fileuploadstart - * @param event {Event} The event object for the `fileuploadstart` with the - * following payload: - *
          - *
          file
          - *
          A reference to the Y.File that dispatched the event.
          - *
          originEvent
          - *
          The original event dispatched by Y.File.
          - *
          - */ - this.publish("fileuploadstart"); - - /** - * Reports on upload progress of a specific file. - * - * @event uploadprogress - * @param event {Event} The event object for the `uploadprogress` with the - * following payload: - *
          - *
          bytesLoaded
          - *
          The number of bytes of the file that has been uploaded
          - *
          bytesTotal
          - *
          The total number of bytes in the file
          - *
          percentLoaded
          - *
          The fraction of the file that has been uploaded, out of 100
          - *
          originEvent
          - *
          The original event dispatched by the SWF uploader
          - *
          - */ - this.publish("uploadprogress"); - - /** - * Reports on the total upload progress of the file list. - * - * @event totaluploadprogress - * @param event {Event} The event object for the `totaluploadprogress` with the - * following payload: - *
          - *
          bytesLoaded
          - *
          The number of bytes of the file list that has been uploaded
          - *
          bytesTotal
          - *
          The total number of bytes in the file list
          - *
          percentLoaded
          - *
          The fraction of the file list that has been uploaded, out of 100
          - *
          - */ - this.publish("totaluploadprogress"); - - /** - * Signals that a single file upload has been completed. - * - * @event uploadcomplete - * @param event {Event} The event object for the `uploadcomplete` with the - * following payload: - *
          - *
          file
          - *
          The pointer to the instance of `Y.File` whose upload has been completed.
          - *
          originEvent
          - *
          The original event fired by the SWF Uploader
          - *
          data
          - *
          Data returned by the server.
          - *
          - */ - this.publish("uploadcomplete"); - - /** - * Signals that the upload process of the entire file list has been completed. - * - * @event alluploadscomplete - * @param event {Event} The event object for the `alluploadscomplete`. - */ - this.publish("alluploadscomplete"); - - /** - * Signals that a error has occurred in a specific file's upload process. - * - * @event uploaderror - * @param event {Event} The event object for the `uploaderror` with the - * following payload: - *
          - *
          originEvent
          - *
          The original error event fired by the SWF Uploader.
          - *
          file
          - *
          The pointer at the instance of Y.FileFlash that returned the error.
          - *
          source
          - *
          The source of the upload error, either "io" or "http"
          - *
          message
          - *
          The message that accompanied the error. Corresponds to the text of - * the error in cases where source is "io", and to the HTTP status for - cases where source is "http".
          - *
          - */ - this.publish("uploaderror"); - - /** - * Signals that a mouse has begun hovering over the `Select Files` button. - * - * @event mouseenter - * @param event {Event} The event object for the `mouseenter` event. - */ - this.publish("mouseenter"); - - /** - * Signals that a mouse has stopped hovering over the `Select Files` button. - * - * @event mouseleave - * @param event {Event} The event object for the `mouseleave` event. - */ - this.publish("mouseleave"); - - /** - * Signals that a mouse button has been pressed over the `Select Files` button. - * - * @event mousedown - * @param event {Event} The event object for the `mousedown` event. - */ - this.publish("mousedown"); - - /** - * Signals that a mouse button has been released over the `Select Files` button. - * - * @event mouseup - * @param event {Event} The event object for the `mouseup` event. - */ - this.publish("mouseup"); - - /** - * Signals that a mouse has been clicked over the `Select Files` button. - * - * @event click - * @param event {Event} The event object for the `click` event. - */ - this.publish("click"); - }, - - /** - * Creates the DOM structure for the UploaderFlash. - * UploaderFlash's DOM structure consists of two layers: the base "Select Files" - * button that can be replaced by the developer's widget of choice; and a transparent - * Flash overlay positoned above the button that captures all input events. - * The `position` style attribute of the `boundingBox` of the `Uploader` widget - * is forced to be `relative`, in order to accommodate the Flash player overlay - * (which is `position`ed `absolute`ly). - * - * @method renderUI - * @protected - */ - renderUI : function () { - var boundingBox = this.get("boundingBox"), - contentBox = this.get('contentBox'), - selFilesButton = this.get("selectFilesButton"); - - boundingBox.setStyle("position", "relative"); - selFilesButton.setStyles({width: "100%", height: "100%"}); - contentBox.append(selFilesButton); - contentBox.append(Y.Node.create(substitute(UploaderFlash.FLASH_CONTAINER, - {swfContainerId: this._swfContainerId}))); - var flashContainer = Y.one("#" + this._swfContainerId); - var params = {version: "10.0.45", - fixedAttributes: {wmode: "transparent", - allowScriptAccess:"always", - allowNetworking:"all", - scale: "noscale" - } - }; - this._swfReference = new Y.SWF(flashContainer, this.get("swfURL"), params); - }, - - /** - * Binds handlers to the UploaderFlash UI events and propagates attribute - * values to the Flash player. - * The propagation of initial values is set to occur once the Flash player - * instance is ready (as indicated by the `swfReady` event.) - * - * @method bindUI - * @protected - */ - bindUI : function () { - - this._swfReference.on("swfReady", function () { - this._setMultipleFiles(); - this._setFileFilters(); - this._triggerEnabled(); - this._attachTabElements(); - this.after("multipleFilesChange", this._setMultipleFiles, this); - this.after("fileFiltersChange", this._setFileFilters, this); - this.after("enabledChange", this._triggerEnabled, this); - this.after("tabElementsChange", this._attachTabElements); - }, this); - - this._swfReference.on("fileselect", this._updateFileList, this); - - - - // this._swfReference.on("trace", function (ev) {console.log(ev.message);}); - - this._swfReference.on("mouseenter", function () { - this.fire("mouseenter"); - this._setButtonClass("hover", true); - if (this._buttonState == "down") { - this._setButtonClass("active", true); - } - }, this); - this._swfReference.on("mouseleave", function () { - this.fire("mouseleave"); - this._setButtonClass("hover", false); - this._setButtonClass("active", false); - - }, this); - this._swfReference.on("mousedown", function () { - this.fire("mousedown"); - this._buttonState = "down"; - this._setButtonClass("active", true); - }, this); - this._swfReference.on("mouseup", function () { - this.fire("mouseup"); - this._buttonState = "up"; - this._setButtonClass("active", false); - }, this); - this._swfReference.on("click", function () { - this.fire("click"); - this._buttonFocus = true; - this._setButtonClass("focus", true); - Y.one("body").focus(); - this._swfReference._swf.focus(); - }, this); - }, - - /** - * Attaches keyboard bindings to enabling tabbing to and from the instance of the Flash - * player in the Uploader widget. If the previous and next elements are specified, the - * keyboard bindings enable the user to tab from the `tabElements["from"]` node to the - * Flash-powered "Select Files" button, and to the `tabElements["to"]` node. - * - * @method _attachTabElements - * @protected - * @param ev {Event} Optional event payload if called as a `tabElementsChange` handler. - */ - _attachTabElements : function (ev) { - if (this.get("tabElements") !== null && this.get("tabElements").from !== null && this.get("tabElements").to !== null) { - - if (this._tabElementBindings !== null) { - this._tabElementBindings.from.detach(); - this._tabElementBindings.to.detach(); - this._tabElementBindings.tabback.detach(); - this._tabElementBindings.tabforward.detach(); - this._tabElementBindings.focus.detach(); - this._tabElementBindings.blur.detach(); - } - else { - this._tabElementBindings = {}; - } - - var fromElement = Y.one(this.get("tabElements").from); - var toElement = Y.one(this.get("tabElements").to); - - - this._tabElementBindings.from = fromElement.on("keydown", function (ev) { - if (ev.keyCode == 9 && !ev.shiftKey) { - ev.preventDefault(); - this._swfReference._swf.setAttribute("tabindex", 0); - this._swfReference._swf.setAttribute("role", "button"); - this._swfReference._swf.setAttribute("aria-label", this.get("selectButtonLabel")); - this._swfReference._swf.focus(); - } - }, this); - this._tabElementBindings.to = toElement.on("keydown", function (ev) { - if (ev.keyCode == 9 && ev.shiftKey) { - ev.preventDefault(); - this._swfReference._swf.setAttribute("tabindex", 0); - this._swfReference._swf.setAttribute("role", "button"); - this._swfReference._swf.setAttribute("aria-label", this.get("selectButtonLabel")); - this._swfReference._swf.focus(); - } - }, this); - this._tabElementBindings.tabback = this._swfReference.on("tabback", function (ev) {this._swfReference._swf.blur(); setTimeout(function () {fromElement.focus();}, 30);}, this); - this._tabElementBindings.tabforward = this._swfReference.on("tabforward", function (ev) {this._swfReference._swf.blur(); setTimeout(function () {toElement.focus();}, 30);}, this); - - this._tabElementBindings.focus = this._swfReference._swf.on("focus", function (ev) {this._buttonFocus = true; this._setButtonClass("focus", true);}, this); - this._tabElementBindings.blur = this._swfReference._swf.on("blur", function (ev) {this._buttonFocus = false; this._setButtonClass("focus", false);}, this); - } - else if (this._tabElementBindings !== null) { - this._tabElementBindings.from.detach(); - this._tabElementBindings.to.detach(); - this._tabElementBindings.tabback.detach(); - this._tabElementBindings.tabforward.detach(); - this._tabElementBindings.focus.detach(); - this._tabElementBindings.blur.detach(); - } - }, - - - /** - * Adds or removes a specified state CSS class to the underlying uploader button. - * - * @method _setButtonClass - * @protected - * @param state {String} The name of the state enumerated in `buttonClassNames` attribute - * from which to derive the needed class name. - * @param add {Boolean} A Boolean indicating whether to add or remove the class. - */ - _setButtonClass : function (state, add) { - if (add) { - this.get("selectFilesButton").addClass(this.get("buttonClassNames")[state]); - } - else { - this.get("selectFilesButton").removeClass(this.get("buttonClassNames")[state]); - } - }, - - - /** - * Syncs the state of the `fileFilters` attribute between the instance of UploaderFlash - * and the Flash player. - * - * @method _setFileFilters - * @private - */ - _setFileFilters : function () { - if (this._swfReference && this.get("fileFilters").length > 0) { - this._swfReference.callSWF("setFileFilters", [this.get("fileFilters")]); - } - - }, - - - - /** - * Syncs the state of the `multipleFiles` attribute between this class - * and the Flash uploader. - * - * @method _setMultipleFiles - * @private - */ - _setMultipleFiles : function () { - if (this._swfReference) { - this._swfReference.callSWF("setAllowMultipleFiles", [this.get("multipleFiles")]); - } - }, - - /** - * Syncs the state of the `enabled` attribute between this class - * and the Flash uploader. - * - * @method _triggerEnabled - * @private - */ - _triggerEnabled : function () { - if (this.get("enabled")) { - this._swfReference.callSWF("enable"); - this._swfReference._swf.setAttribute("aria-disabled", "false"); - this._setButtonClass("disabled", false); - } - else { - this._swfReference.callSWF("disable"); - this._swfReference._swf.setAttribute("aria-disabled", "true"); - this._setButtonClass("disabled", true); - } - }, - - /** - * Getter for the `fileList` attribute - * - * @method _getFileList - * @private - */ - _getFileList : function (arr) { - return this._fileList.concat(); - }, - - /** - * Setter for the `fileList` attribute - * - * @method _setFileList - * @private - */ - _setFileList : function (val) { - this._fileList = val.concat(); - return this._fileList.concat(); - }, - - /** - * Adjusts the content of the `fileList` based on the results of file selection - * and the `appendNewFiles` attribute. If the `appendNewFiles` attribute is true, - * then selected files are appended to the existing list; otherwise, the list is - * cleared and populated with the newly selected files. - * - * @method _updateFileList - * @param ev {Event} The file selection event received from the uploader. - * @private - */ - _updateFileList : function (ev) { - - Y.one("body").focus(); - this._swfReference._swf.focus(); - - - var newfiles = ev.fileList, - fileConfObjects = [], - parsedFiles = [], - swfRef = this._swfReference, - filterFunc = this.get("fileFilterFunction"); - - Y.each(newfiles, function (value) { - var newFileConf = {}; - newFileConf.id = value.fileId; - newFileConf.name = value.fileReference.name; - newFileConf.size = value.fileReference.size; - newFileConf.type = value.fileReference.type; - newFileConf.dateCreated = value.fileReference.creationDate; - newFileConf.dateModified = value.fileReference.modificationDate; - newFileConf.uploader = swfRef; - - fileConfObjects.push(newFileConf); - }); - - if (filterFunc) { - Y.each(fileConfObjects, function (value) { - var newfile = new Y.FileFlash(value); - if (filterFunc(newfile)) { - parsedFiles.push(newfile); - } - }); - } - else { - Y.each(fileConfObjects, function (value) { - parsedFiles.push(new Y.FileFlash(value)); - }); - } - - if (parsedFiles.length > 0) { - var oldfiles = this.get("fileList"); - - this.set("fileList", - this.get("appendNewFiles") ? oldfiles.concat(parsedFiles) : parsedFiles ); - - this.fire("fileselect", {fileList: parsedFiles}); - } - - }, - - - - /** - * Handles and retransmits events fired by `Y.FileFlash` and `Y.Uploader.Queue`. - * - * @method _uploadEventHandler - * @param event The event dispatched during the upload process. - * @private - */ - _uploadEventHandler : function (event) { - - switch (event.type) { - case "file:uploadstart": - this.fire("fileuploadstart", event); - break; - case "file:uploadprogress": - this.fire("uploadprogress", event); - break; - case "uploaderqueue:totaluploadprogress": - this.fire("totaluploadprogress", event); - break; - case "file:uploadcomplete": - this.fire("uploadcomplete", event); - break; - case "uploaderqueue:alluploadscomplete": - this.queue = null; - this.fire("alluploadscomplete", event); - break; - case "file:uploaderror": - case "uploaderqueue:uploaderror": - this.fire("uploaderror", event); - break; - case "file:uploadcancel": - case "uploaderqueue:uploadcancel": - this.fire("uploadcancel", event); - break; - } - - }, - - - - /** - * Starts the upload of a specific file. - * - * @method upload - * @param file {Y.FileFlash} Reference to the instance of the file to be uploaded. - * @param url {String} The URL to upload the file to. - * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request. - * If not specified, the values from the attribute `postVarsPerFile` are used instead. - */ - - upload : function (file, url, postvars) { - - var uploadURL = url || this.get("uploadURL"), - postVars = postvars || this.get("postVarsPerFile"), - fileId = file.get("id"); - - postVars = postVars.hasOwnProperty(fileId) ? postVars[fileId] : postVars; - - if (file instanceof Y.FileFlash) { - - file.on("uploadstart", this._uploadEventHandler, this); - file.on("uploadprogress", this._uploadEventHandler, this); - file.on("uploadcomplete", this._uploadEventHandler, this); - file.on("uploaderror", this._uploadEventHandler, this); - file.on("uploadcancel", this._uploadEventHandler, this); - - file.startUpload(uploadURL, postVars, this.get("fileFieldName")); - } - }, - - /** - * Starts the upload of all files on the file list, using an automated queue. - * - * @method uploadAll - * @param url {String} The URL to upload the files to. - * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request. - * If not specified, the values from the attribute `postVarsPerFile` are used instead. - */ - uploadAll : function (url, postvars) { - this.uploadThese(this.get("fileList"), url, postvars); - }, - - /** - * Starts the upload of the files specified in the first argument, using an automated queue. - * - * @method uploadThese - * @param files {Array} The list of files to upload. - * @param url {String} The URL to upload the files to. - * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request. - * If not specified, the values from the attribute `postVarsPerFile` are used instead. - */ - uploadThese : function (files, url, postvars) { - if (!this.queue) { - var uploadURL = url || this.get("uploadURL"), - postVars = postvars || this.get("postVarsPerFile"); - - this.queue = new UploaderQueue({simUploads: this.get("simLimit"), - errorAction: this.get("errorAction"), - fileFieldName: this.get("fileFieldName"), - fileList: files, - uploadURL: uploadURL, - perFileParameters: postVars, - retryCount: this.get("retryCount") - }); - this.queue.on("uploadstart", this._uploadEventHandler, this); - this.queue.on("uploadprogress", this._uploadEventHandler, this); - this.queue.on("totaluploadprogress", this._uploadEventHandler, this); - this.queue.on("uploadcomplete", this._uploadEventHandler, this); - this.queue.on("alluploadscomplete", this._uploadEventHandler, this); - this.queue.on("alluploadscancelled", function (ev) {this.queue = null;}, this); - this.queue.on("uploaderror", this._uploadEventHandler, this); - this.queue.startUpload(); - - this.fire("uploadstart"); - } - } -}, - -{ - /** - * The template for the Flash player container. Since the Flash player container needs - * to completely overlay the &lquot;Select Files&rqot; control, it's positioned absolutely, - * with width and height set to 100% of the parent. - * - * @property FLASH_CONTAINER - * @type {String} - * @static - * @default "
          " - */ - FLASH_CONTAINER: "
          ", - - /** - * The template for the "Select Files" button. - * - * @property SELECT_FILES_BUTTON - * @type {String} - * @static - * @default "" - */ - SELECT_FILES_BUTTON: "", - - /** - * The static property reflecting the type of uploader that `Y.Uploader` - * aliases. The UploaderFlash value is `"flash"`. - * - * @property TYPE - * @type {String} - * @static - */ - TYPE: "flash", - - /** - * The identity of the widget. - * - * @property NAME - * @type String - * @default 'uploader' - * @readOnly - * @protected - * @static - */ - NAME: "uploader", - - /** - * Static property used to define the default attribute configuration of - * the Widget. - * - * @property ATTRS - * @type {Object} - * @protected - * @static - */ - ATTRS: { - - /** - * A Boolean indicating whether newly selected files should be appended - * to the existing file list, or whether they should replace it. - * - * @attribute appendNewFiles - * @type {Boolean} - * @default true - */ - appendNewFiles : { - value: true - }, - - /** - * The names of CSS classes that correspond to different button states - * of the "Select Files" control. These classes are assigned to the - * "Select Files" control based on the mouse states reported by the - * Flash player. The keys for the class names are: - *
            - *
          • `hover`: the class corresponding to mouse hovering over - * the "Select Files" button.
          • - *
          • `active`: the class corresponding to mouse down state of - * the "Select Files" button.
          • - *
          • `disabled`: the class corresponding to the disabled state - * of the "Select Files" button.
          • - *
          • `focus`: the class corresponding to the focused state of - * the "Select Files" button.
          • - *
          - * @attribute buttonClassNames - * @type {Object} - * @default { hover: "yui3-button-hover", - * active: "yui3-button-active", - * disabled: "yui3-button-disabled", - * focus: "yui3-button-selected" - * } - */ - buttonClassNames: { - value: { - "hover": "yui3-button-hover", - "active": "yui3-button-active", - "disabled": "yui3-button-disabled", - "focus": "yui3-button-selected" - } - }, - - /** - * A Boolean indicating whether the uploader is enabled or disabled for user input. - * - * @attribute enabled - * @type {Boolean} - * @default true - */ - enabled : { - value: true - }, - - /** - * The action performed when an upload error occurs for a specific file being uploaded. - * The possible values are: - *
            - *
          • `UploaderQueue.CONTINUE`: the error is ignored and the upload process is continued.
          • - *
          • `UploaderQueue.STOP`: the upload process is stopped as soon as any other parallel file - * uploads are finished.
          • - *
          • `UploaderQueue.RESTART_ASAP`: the file is added back to the front of the queue.
          • - *
          • `UploaderQueue.RESTART_AFTER`: the file is added to the back of the queue.
          • - *
          - * @attribute errorAction - * @type {String} - * @default UploaderQueue.CONTINUE - */ - errorAction: { - value: "continue", - validator: function (val, name) { - return (val === UploaderQueue.CONTINUE || val === UploaderQueue.STOP || val === UploaderQueue.RESTART_ASAP || val === UploaderQueue.RESTART_AFTER); - } - }, - - /** - * An array indicating what fileFilters should be applied to the file - * selection dialog. Each element in the array should be an object with - * the following key-value pairs: - * { - * description : String - extensions: String of the form &lquot;*.ext1;*.ext2;*.ext3;...&rquot; - * } - * @attribute fileFilters - * @type {Array} - * @default [] - */ - fileFilters: { - value: [] - }, - - /** - * A filtering function that is applied to every file selected by the user. - * The function receives the `Y.File` object and must return a Boolean value. - * If a `false` value is returned, the file in question is not added to the - * list of files to be uploaded. - * Use this function to put limits on file sizes or check the file names for - * correct extension, but make sure that a server-side check is also performed, - * since any client-side restrictions are only advisory and can be circumvented. - * - * @attribute fileFilterFunction - * @type {Function} - * @default null - */ - fileFilterFunction: { - value: null - }, - - /** - * A String specifying what should be the POST field name for the file - * content in the upload request. - * - * @attribute fileFieldName - * @type {String} - * @default Filedata - */ - fileFieldName: { - value: "Filedata" - }, - - /** - * The array of files to be uploaded. All elements in the array - * must be instances of `Y.FileFlash` and be instantiated with a `fileId` - * retrieved from an instance of the uploader. - * - * @attribute fileList - * @type {Array} - * @default [] - */ - fileList: { - value: [], - getter: "_getFileList", - setter: "_setFileList" - }, - - /** - * A Boolean indicating whether multiple file selection is enabled. - * - * @attribute multipleFiles - * @type {Boolean} - * @default false - */ - multipleFiles: { - value: false - }, - - /** - * An object, keyed by `fileId`, containing sets of key-value pairs - * that should be passed as POST variables along with each corresponding - * file. This attribute is only used if no POST variables are specifed - * in the upload method call. - * - * @attribute postVarsPerFile - * @type {Object} - * @default {} - */ - postVarsPerFile: { - value: {} - }, - - /** - * The label for the "Select Files" widget. This is the value that replaces the - * `{selectButtonLabel}` token in the `SELECT_FILES_BUTTON` template. - * - * @attribute selectButtonLabel - * @type {String} - * @default "Select Files" - */ - selectButtonLabel: { - value: "Select Files" - }, - - /** - * The widget that serves as the "Select Files" control for the file uploader - * - * - * @attribute selectFilesButton - * @type {Node | Widget} - * @default A standard HTML button with YUI CSS Button skin. - */ - selectFilesButton : { - valueFn: function () { - return Y.Node.create(substitute(Y.UploaderFlash.SELECT_FILES_BUTTON, {selectButtonLabel: this.get("selectButtonLabel")})); - } - }, - - /** - * The number of files that can be uploaded - * simultaneously if the automatic queue management - * is used. This value can be in the range between 2 - * and 5. - * - * @attribute simLimit - * @type {Number} - * @default 2 - */ - simLimit: { - value: 2, - validator: function (val, name) { - return (val >= 2 && val <= 5); - } - }, - - /** - * The URL to the SWF file of the flash uploader. A copy local to - * the server that hosts the page on which the uploader appears is - * recommended. - * - * @attribute swfURL - * @type {String} - * @default "CDN Prefix + uploader/assets/flashuploader.swf" with a - * random GET parameter for IE (to prevent buggy behavior when the SWF - * is cached). - */ - swfURL: { - valueFn: function () { - var prefix = Y.Env.cdn + "uploader/assets/flashuploader.swf"; - - if (Y.UA.ie > 0) { - return (prefix + "?t=" + Y.guid("uploader")); - } - return prefix; - } - }, - - /** - * The id's or `Node` references of the DOM elements that precede - * and follow the `Select Files` button in the tab order. Specifying - * these allows keyboard navigation to and from the Flash player - * layer of the uploader. - * The two keys corresponding to the DOM elements are: -
            - *
          • `from`: the id or the `Node` reference corresponding to the - * DOM element that precedes the `Select Files` button in the tab order.
          • - *
          • `to`: the id or the `Node` reference corresponding to the - * DOM element that follows the `Select Files` button in the tab order.
          • - *
          - * @attribute tabElements - * @type {Object} - * @default null - */ - tabElements: { - value: null - }, - - /** - * The URL to which file upload requested are POSTed. Only used if a different url is not passed to the upload method call. - * - * @attribute uploadURL - * @type {String} - * @default "" - */ - uploadURL: { - value: "" - }, - - /** - * The number of times to try re-uploading a file that failed to upload before - * cancelling its upload. - * - * @attribute retryCount - * @type {Number} - * @default 3 - */ - retryCount: { - value: 3 - } - } -}); - -Y.UploaderFlash.Queue = UploaderQueue; - - - - -}, '3.7.3', {"requires": ["swf", "widget", "substitute", "base", "cssbutton", "node", "event-custom", "file-flash", "uploader-queue"]}); diff --git a/lib/yuilib/3.7.3/build/uploader-html5/uploader-html5-coverage.js b/lib/yuilib/3.7.3/build/uploader-html5/uploader-html5-coverage.js deleted file mode 100644 index a70ccefe1c2..00000000000 --- a/lib/yuilib/3.7.3/build/uploader-html5/uploader-html5-coverage.js +++ /dev/null @@ -1,1218 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -if (typeof _yuitest_coverage == "undefined"){ - _yuitest_coverage = {}; - _yuitest_coverline = function(src, line){ - var coverage = _yuitest_coverage[src]; - if (!coverage.lines[line]){ - coverage.calledLines++; - } - coverage.lines[line]++; - }; - _yuitest_coverfunc = function(src, name, line){ - var coverage = _yuitest_coverage[src], - funcId = name + ":" + line; - if (!coverage.functions[funcId]){ - coverage.calledFunctions++; - } - coverage.functions[funcId]++; - }; -} -_yuitest_coverage["build/uploader-html5/uploader-html5.js"] = { - lines: {}, - functions: {}, - coveredLines: 0, - calledLines: 0, - coveredFunctions: 0, - calledFunctions: 0, - path: "build/uploader-html5/uploader-html5.js", - code: [] -}; -_yuitest_coverage["build/uploader-html5/uploader-html5.js"].code=["YUI.add('uploader-html5', function (Y, NAME) {","",""," /**"," * This module provides a UI for file selection and multiple file upload capability using"," * HTML5 XMLHTTPRequest Level 2 as a transport engine."," * The supported features include: automatic upload queue management, upload progress"," * tracking, drag-and-drop support, server response retrieval and error reporting."," *"," * @module uploader-html5"," */ ","","// Shorthands for the external modules","var substitute = Y.substitute,"," UploaderQueue = Y.Uploader.Queue;",""," /**"," * This module provides a UI for file selection and multiple file upload capability using"," * HTML5 XMLHTTPRequest Level 2 as a transport engine."," * @class UploaderHTML5"," * @extends Widget"," * @constructor"," */","","function UploaderHTML5(config) {"," UploaderHTML5.superclass.constructor.apply ( this, arguments );","}","","","","Y.UploaderHTML5 = Y.extend( UploaderHTML5, Y.Widget, {",""," /**"," * Stored reference to the instance of the file input field used to "," * initiate the file selection dialog."," *"," * @property _fileInputField"," * @type {Node}"," * @protected"," */"," _fileInputField: null,",""," /**"," * Stored reference to the click event binding of the `Select Files`"," * button."," *"," * @property _buttonBinding"," * @type {EventHandle}"," * @protected"," */"," _buttonBinding: null,",""," /**"," * Stored reference to the instance of Uploader.Queue used to manage"," * the upload process. This is a read-only property that only exists"," * during an active upload process. Only one queue can be active at"," * a time; if an upload start is attempted while a queue is active,"," * it will be ignored."," *"," * @property queue"," * @type {Y.Uploader.Queue}"," */"," queue: null,",""," // Y.UploaderHTML5 prototype",""," /**"," * Construction logic executed during UploaderHTML5 instantiation."," *"," * @method initializer"," * @protected"," */"," initializer : function () {",""," this._fileInputField = null;"," this.queue = null;"," this._buttonBinding = null;"," this._fileList = [];",""," // Publish available events",""," /**"," * Signals that files have been selected. "," *"," * @event fileselect"," * @param event {Event} The event object for the `fileselect` with the"," * following payload:"," *
          "," *
          fileList
          "," *
          An `Array` of files selected by the user, encapsulated"," * in Y.FileHTML5 objects.
          "," *
          "," */"," this.publish(\"fileselect\");",""," /**"," * Signals that an upload of multiple files has been started. "," *"," * @event uploadstart"," * @param event {Event} The event object for the `uploadstart`."," */"," this.publish(\"uploadstart\");",""," /**"," * Signals that an upload of a specific file has started. "," *"," * @event fileuploadstart"," * @param event {Event} The event object for the `fileuploadstart` with the"," * following payload:"," *
          "," *
          file
          "," *
          A reference to the Y.File that dispatched the event.
          "," *
          originEvent
          "," *
          The original event dispatched by Y.File.
          "," *
          "," */"," this.publish(\"fileuploadstart\");",""," /**"," * Reports on upload progress of a specific file. "," *"," * @event uploadprogress"," * @param event {Event} The event object for the `uploadprogress` with the"," * following payload:"," *
          "," *
          file
          "," *
          The pointer to the instance of `Y.File` that dispatched the event.
          "," *
          bytesLoaded
          "," *
          The number of bytes of the file that has been uploaded
          "," *
          bytesTotal
          "," *
          The total number of bytes in the file
          "," *
          percentLoaded
          "," *
          The fraction of the file that has been uploaded, out of 100
          "," *
          originEvent
          "," *
          The original event dispatched by the HTML5 uploader
          "," *
          "," */"," this.publish(\"uploadprogress\");",""," /**"," * Reports on the total upload progress of the file list. "," *"," * @event totaluploadprogress"," * @param event {Event} The event object for the `totaluploadprogress` with the"," * following payload:"," *
          "," *
          bytesLoaded
          "," *
          The number of bytes of the file list that has been uploaded
          "," *
          bytesTotal
          "," *
          The total number of bytes in the file list
          "," *
          percentLoaded
          "," *
          The fraction of the file list that has been uploaded, out of 100
          "," *
          "," */"," this.publish(\"totaluploadprogress\");",""," /**"," * Signals that a single file upload has been completed. "," *"," * @event uploadcomplete"," * @param event {Event} The event object for the `uploadcomplete` with the"," * following payload:"," *
          "," *
          file
          "," *
          The pointer to the instance of `Y.File` whose upload has been completed.
          "," *
          originEvent
          "," *
          The original event fired by the SWF Uploader
          "," *
          data
          "," *
          Data returned by the server.
          "," *
          "," */"," this.publish(\"uploadcomplete\");",""," /**"," * Signals that the upload process of the entire file list has been completed. "," *"," * @event alluploadscomplete"," * @param event {Event} The event object for the `alluploadscomplete`."," */"," this.publish(\"alluploadscomplete\");",""," /**"," * Signals that a error has occurred in a specific file's upload process. "," *"," * @event uploaderror"," * @param event {Event} The event object for the `uploaderror` with the"," * following payload:"," *
          "," *
          originEvent
          "," *
          The original error event fired by the HTML5 Uploader.
          "," *
          file
          "," *
          The pointer at the instance of Y.File that returned the error.
          "," *
          status
          "," *
          The status reported by the XMLHttpRequest object.
          "," *
          statusText
          "," *
          The statusText reported by the XMLHttpRequest object.
          "," *
          "," */"," this.publish(\"uploaderror\");",""," /**"," * Signals that a dragged object has entered into the uploader's associated drag-and-drop area. "," *"," * @event dragenter"," * @param event {Event} The event object for the `dragenter`."," */"," this.publish(\"dragenter\");",""," /**"," * Signals that an object has been dragged over the uploader's associated drag-and-drop area. "," *"," * @event dragover"," * @param event {Event} The event object for the `dragover`."," */"," this.publish(\"dragover\");",""," /**"," * Signals that an object has been dragged off of the uploader's associated drag-and-drop area. "," *"," * @event dragleave"," * @param event {Event} The event object for the `dragleave`."," */"," this.publish(\"dragleave\");",""," /**"," * Signals that an object has been dropped over the uploader's associated drag-and-drop area. "," *"," * @event drop"," * @param event {Event} The event object for the `drop`."," */"," this.publish(\"drop\");"," "," },",""," /**"," * Create the DOM structure for the UploaderHTML5."," * UploaderHTML5's DOM structure consists of a \"Select Files\" button that can "," * be replaced by the developer's widget of choice; and a hidden file input field"," * that is used to instantiate the File Select dialog."," *"," * @method renderUI"," * @protected"," */"," renderUI : function () {"," var boundingBox = this.get(\"boundingBox\"),"," contentBox = this.get('contentBox'),"," selButton = this.get(\"selectFilesButton\");",""," selButton.setStyles({width:\"100%\", height:\"100%\"});"," contentBox.append(selButton);"," this._fileInputField = Y.Node.create(UploaderHTML5.HTML5FILEFIELD_TEMPLATE);"," contentBox.append(this._fileInputField);"," },",""," /**"," * Binds to the UploaderHTML5 UI and subscribes to the necessary events."," *"," * @method bindUI"," * @protected"," */"," bindUI : function () {",""," this._bindSelectButton();"," this._setMultipleFiles();"," this._setFileFilters();"," this._bindDropArea();"," this._triggerEnabled();",""," this.after(\"multipleFilesChange\", this._setMultipleFiles, this);"," this.after(\"fileFiltersChange\", this._setFileFilters, this);"," this.after(\"enabledChange\", this._triggerEnabled, this);"," this.after(\"selectFilesButtonChange\", this._bindSelectButton, this);"," this.after(\"dragAndDropAreaChange\", this._bindDropArea, this);"," this.after(\"tabIndexChange\", function (ev) {this.get(\"selectFilesButton\").set(\"tabIndex\", this.get(\"tabIndex\"));}, this);"," this._fileInputField.on(\"change\", this._updateFileList, this);",""," this.get(\"selectFilesButton\").set(\"tabIndex\", this.get(\"tabIndex\"));"," },","",""," /**"," * Recreates the file field to null out the previous list of files and"," * thus allow for an identical file list selection."," * "," * @method _rebindFileField"," * @protected"," */"," _rebindFileField : function () {"," this._fileInputField.remove(true);"," this._fileInputField = Y.Node.create(UploaderHTML5.HTML5FILEFIELD_TEMPLATE);"," this.get(\"contentBox\").append(this._fileInputField);"," this._fileInputField.on(\"change\", this._updateFileList, this);"," this._setMultipleFiles();"," this._setFileFilters();"," },","",""," /**"," * Binds the specified drop area's drag and drop events to the"," * uploader's custom handler."," * "," * @method _bindDropArea"," * @protected"," */"," _bindDropArea : function (event) {"," var ev = event || {prevVal: null};",""," if (ev.prevVal !== null) {"," ev.prevVal.detach('drop', this._ddEventHandler);"," ev.prevVal.detach('dragenter', this._ddEventHandler);"," ev.prevVal.detach('dragover', this._ddEventHandler);"," ev.prevVal.detach('dragleave', this._ddEventHandler);"," }",""," var ddArea = this.get(\"dragAndDropArea\");",""," if (ddArea !== null) {"," ddArea.on('drop', this._ddEventHandler, this);"," ddArea.on('dragenter', this._ddEventHandler, this);"," ddArea.on('dragover', this._ddEventHandler, this);"," ddArea.on('dragleave', this._ddEventHandler, this);"," }"," },",""," /**"," * Binds the instantiation of the file select dialog to the current file select"," * control."," * "," * @method _bindSelectButton"," * @protected"," */"," _bindSelectButton : function () {"," this._buttonBinding = this.get(\"selectFilesButton\").on(\"click\", this.openFileSelectDialog, this);"," },",""," /**"," * Handles the drag and drop events from the uploader's specified drop"," * area."," * "," * @method _ddEventHandler"," * @protected"," */"," _ddEventHandler : function (event) {",""," event.stopPropagation();"," event.preventDefault(); "," "," switch (event.type) {"," case \"dragenter\":"," this.fire(\"dragenter\"); "," break;"," case \"dragover\":"," this.fire(\"dragover\");"," break;"," case \"dragleave\": "," this.fire(\"dragleave\");"," break;"," case \"drop\":",""," var newfiles = event._event.dataTransfer.files,"," parsedFiles = [],"," filterFunc = this.get(\"fileFilterFunction\");"," "," if (filterFunc) {"," Y.each(newfiles, function (value) {"," var newfile = new Y.FileHTML5(value);"," if (filterFunc(newfile)) {"," parsedFiles.push(newfile);"," }"," });"," }"," else {"," Y.each(newfiles, function (value) {"," parsedFiles.push(new Y.FileHTML5(value));"," });"," }",""," if (parsedFiles.length > 0) {"," var oldfiles = this.get(\"fileList\");"," this.set(\"fileList\", "," this.get(\"appendNewFiles\") ? oldfiles.concat(parsedFiles) : parsedFiles);"," this.fire(\"fileselect\", {fileList: parsedFiles});"," }",""," this.fire(\"drop\");"," break;"," }"," },",""," /**"," * Adds or removes a specified state CSS class to the underlying uploader button. "," *"," * @method _setButtonClass"," * @protected"," * @param state {String} The name of the state enumerated in `buttonClassNames` attribute"," * from which to derive the needed class name."," * @param add {Boolean} A Boolean indicating whether to add or remove the class."," */"," _setButtonClass : function (state, add) {"," if (add) {"," this.get(\"selectFilesButton\").addClass(this.get(\"buttonClassNames\")[state]);"," }"," else {"," this.get(\"selectFilesButton\").removeClass(this.get(\"buttonClassNames\")[state]);"," }"," },",""," /**"," * Syncs the state of the `multipleFiles` attribute between this class"," * and the file input field."," * "," * @method _setMultipleFiles"," * @protected"," */"," _setMultipleFiles : function () {"," if (this.get(\"multipleFiles\") === true) {"," this._fileInputField.set(\"multiple\", \"multiple\");"," }"," else {"," this._fileInputField.set(\"multiple\", \"\");"," }"," },",""," /**"," * Syncs the state of the `fileFilters` attribute between this class"," * and the file input field."," * "," * @method _setFileFilters"," * @protected"," */"," _setFileFilters : function () {"," if (this.get(\"fileFilters\").length > 0) {"," this._fileInputField.set(\"accept\", this.get(\"fileFilters\").join(\",\"));"," }"," else {"," this._fileInputField.set(\"accept\", \"\");"," }"," },","",""," /**"," * Syncs the state of the `enabled` attribute between this class"," * and the underlying button."," * "," * @method _triggerEnabled"," * @private"," */"," _triggerEnabled : function () {"," if (this.get(\"enabled\") && this._buttonBinding === null) {"," this._bindSelectButton();"," this._setButtonClass(\"disabled\", false);"," this.get(\"selectFilesButton\").setAttribute(\"aria-disabled\", \"false\");"," }"," else if (!this.get(\"enabled\") && this._buttonBinding) {"," this._buttonBinding.detach();"," this._buttonBinding = null;"," this._setButtonClass(\"disabled\", true);"," this.get(\"selectFilesButton\").setAttribute(\"aria-disabled\", \"true\");"," }"," },",""," /**"," * Getter for the `fileList` attribute"," * "," * @method _getFileList"," * @private"," */"," _getFileList : function (arr) {"," return this._fileList.concat();"," },",""," /**"," * Setter for the `fileList` attribute"," * "," * @method _setFileList"," * @private"," */"," _setFileList : function (val) {"," this._fileList = val.concat();"," return this._fileList.concat();"," },",""," /**"," * Adjusts the content of the `fileList` based on the results of file selection"," * and the `appendNewFiles` attribute. If the `appendNewFiles` attribute is true,"," * then selected files are appended to the existing list; otherwise, the list is"," * cleared and populated with the newly selected files."," * "," * @method _updateFileList"," * @param ev {Event} The file selection event received from the uploader."," * @protected"," */"," _updateFileList : function (ev) {"," var newfiles = ev.target.getDOMNode().files,"," parsedFiles = [],"," filterFunc = this.get(\"fileFilterFunction\");",""," if (filterFunc) {"," Y.each(newfiles, function (value) {"," var newfile = new Y.FileHTML5(value);"," if (filterFunc(newfile)) {"," parsedFiles.push(newfile);"," }"," });"," }"," else {"," Y.each(newfiles, function (value) {"," parsedFiles.push(new Y.FileHTML5(value));"," });"," }",""," if (parsedFiles.length > 0) {"," var oldfiles = this.get(\"fileList\");",""," this.set(\"fileList\", "," this.get(\"appendNewFiles\") ? oldfiles.concat(parsedFiles) : parsedFiles );",""," this.fire(\"fileselect\", {fileList: parsedFiles});"," }",""," this._rebindFileField();"," },","",""," /**"," * Handles and retransmits events fired by `Y.File` and `Y.Uploader.Queue`."," * "," * @method _uploadEventHandler"," * @param event The event dispatched during the upload process."," * @protected"," */"," _uploadEventHandler : function (event) {"," "," switch (event.type) {"," case \"file:uploadstart\":"," this.fire(\"fileuploadstart\", event);"," break;"," case \"file:uploadprogress\":"," this.fire(\"uploadprogress\", event);"," break;"," case \"uploaderqueue:totaluploadprogress\":"," this.fire(\"totaluploadprogress\", event);"," break;"," case \"file:uploadcomplete\":"," this.fire(\"uploadcomplete\", event);"," break;"," case \"uploaderqueue:alluploadscomplete\":"," this.queue = null;"," this.fire(\"alluploadscomplete\", event);"," break;"," case \"file:uploaderror\":"," case \"uploaderqueue:uploaderror\":"," this.fire(\"uploaderror\", event);"," break;"," case \"file:uploadcancel\":"," case \"uploaderqueue:uploadcancel\":"," this.fire(\"uploadcancel\", event);"," break;"," } ",""," },",""," /**"," * Opens the File Selection dialog by simulating a click on the file input field."," * "," * @method openFileSelectDialog"," */"," openFileSelectDialog : function () {"," var fileDomNode = this._fileInputField.getDOMNode();"," if (fileDomNode.click) {"," fileDomNode.click();"," } "," },",""," /**"," * Starts the upload of a specific file."," *"," * @method upload"," * @param file {Y.File} Reference to the instance of the file to be uploaded."," * @param url {String} The URL to upload the file to."," * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request."," * If not specified, the values from the attribute `postVarsPerFile` are used instead. "," */"," upload : function (file, url, postvars) {"," "," var uploadURL = url || this.get(\"uploadURL\"),"," postVars = postvars || this.get(\"postVarsPerFile\"),"," fileId = file.get(\"id\");",""," postVars = postVars.hasOwnProperty(fileId) ? postVars[fileId] : postVars;",""," if (file instanceof Y.FileHTML5) {"," "," file.on(\"uploadstart\", this._uploadEventHandler, this);"," file.on(\"uploadprogress\", this._uploadEventHandler, this);"," file.on(\"uploadcomplete\", this._uploadEventHandler, this);"," file.on(\"uploaderror\", this._uploadEventHandler, this);"," file.on(\"uploadcancel\", this._uploadEventHandler, this);",""," file.startUpload(uploadURL, postVars, this.get(\"fileFieldName\"));"," }"," },",""," /**"," * Starts the upload of all files on the file list, using an automated queue."," *"," * @method uploadAll"," * @param url {String} The URL to upload the files to."," * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request."," * If not specified, the values from the attribute `postVarsPerFile` are used instead. "," */"," uploadAll : function (url, postvars) {"," this.uploadThese(this.get(\"fileList\"), url, postvars);"," },",""," /**"," * Starts the upload of the files specified in the first argument, using an automated queue."," *"," * @method uploadThese"," * @param files {Array} The list of files to upload."," * @param url {String} The URL to upload the files to."," * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request."," * If not specified, the values from the attribute `postVarsPerFile` are used instead. "," */"," uploadThese : function (files, url, postvars) {"," if (!this.queue) {"," var uploadURL = url || this.get(\"uploadURL\"),"," postVars = postvars || this.get(\"postVarsPerFile\");",""," this.queue = new UploaderQueue({simUploads: this.get(\"simLimit\"), "," errorAction: this.get(\"errorAction\"),"," fileFieldName: this.get(\"fileFieldName\"),"," fileList: files,"," uploadURL: uploadURL,"," perFileParameters: postVars,"," retryCount: this.get(\"retryCount\"),"," uploadHeaders: this.get(\"uploadHeaders\"),"," withCredentials: this.get(\"withCredentials\")"," });"," this.queue.on(\"uploadstart\", this._uploadEventHandler, this);"," this.queue.on(\"uploadprogress\", this._uploadEventHandler, this);"," this.queue.on(\"totaluploadprogress\", this._uploadEventHandler, this);"," this.queue.on(\"uploadcomplete\", this._uploadEventHandler, this);"," this.queue.on(\"alluploadscomplete\", this._uploadEventHandler, this);"," this.queue.on(\"uploadcancel\", this._uploadEventHandler, this);"," this.queue.on(\"uploaderror\", this._uploadEventHandler, this);"," this.queue.startUpload(); "," "," this.fire(\"uploadstart\"); "," }"," else if (this.queue._currentState === UploaderQueue.UPLOADING) {"," this.queue.set(\"perFileParameters\", this.get(\"postVarsPerFile\"));"," Y.each(files, function (file) {"," this.queue.addToQueueBottom(file);"," }, this);"," }"," }","},","","{"," /**"," * The template for the hidden file input field container. The file input field will only"," * accept clicks if its visibility is set to hidden (and will not if it's `display` value"," * is set to `none`)"," *"," * @property HTML5FILEFIELD_TEMPLATE"," * @type {String}"," * @static"," */"," HTML5FILEFIELD_TEMPLATE: \"\","," "," /**"," * The template for the \"Select Files\" button."," *"," * @property SELECT_FILES_BUTTON"," * @type {String}"," * @static"," * @default \"\""," */ "," SELECT_FILES_BUTTON: \"\",",""," /**"," * The static property reflecting the type of uploader that `Y.Uploader`"," * aliases. The UploaderHTML5 value is `\"html5\"`."," * "," * @property TYPE"," * @type {String}"," * @static"," */"," TYPE: \"html5\",",""," /**"," * The identity of the widget."," *"," * @property NAME"," * @type String"," * @default 'uploader'"," * @readOnly"," * @protected"," * @static"," */"," NAME: \"uploader\",",""," /**"," * Static property used to define the default attribute configuration of"," * the Widget."," *"," * @property ATTRS"," * @type {Object}"," * @protected"," * @static"," */"," ATTRS: {",""," /**"," * A Boolean indicating whether newly selected files should be appended "," * to the existing file list, or whether they should replace it."," *"," * @attribute appendNewFiles"," * @type {Boolean}"," * @default true"," */"," appendNewFiles : {"," value: true"," },",""," /**"," * The names of CSS classes that correspond to different button states"," * of the \"Select Files\" control. These classes are assigned to the "," * \"Select Files\" control based on the configuration of the uploader."," * Currently, the only class name used is that corresponding to the "," * `disabled` state of the uploader. Other button states should be managed"," * directly via CSS selectors."," *
            "," *
          • `disabled`: the class corresponding to the disabled state"," * of the \"Select Files\" button.
          • "," *
          "," * @attribute buttonClassNames"," * @type {Object}"," * @default {"," * disabled: \"yui3-button-disabled\""," * }"," */"," buttonClassNames: {"," value: {"," \"hover\": \"yui3-button-hover\","," \"active\": \"yui3-button-active\","," \"disabled\": \"yui3-button-disabled\","," \"focus\": \"yui3-button-selected\""," }"," },",""," /**"," * The node that serves as the drop target for files."," *"," * @attribute dragAndDropArea"," * @type {Node}"," * @default null"," */"," dragAndDropArea: {"," value: null,"," setter: function (val) {"," return Y.one(val);"," }"," },",""," /**"," * A Boolean indicating whether the uploader is enabled or disabled for user input."," *"," * @attribute enabled"," * @type {Boolean}"," * @default true"," */"," enabled : {"," value: true"," },",""," /**"," * The action performed when an upload error occurs for a specific file being uploaded."," * The possible values are: "," *
            "," *
          • `UploaderQueue.CONTINUE`: the error is ignored and the upload process is continued.
          • "," *
          • `UploaderQueue.STOP`: the upload process is stopped as soon as any other parallel file"," * uploads are finished.
          • "," *
          • `UploaderQueue.RESTART_ASAP`: the file is added back to the front of the queue.
          • "," *
          • `UploaderQueue.RESTART_AFTER`: the file is added to the back of the queue.
          • "," *
          "," * @attribute errorAction"," * @type {String}"," * @default UploaderQueue.CONTINUE"," */"," errorAction: {"," value: \"continue\","," validator: function (val, name) {"," return (val === UploaderQueue.CONTINUE || val === UploaderQueue.STOP || val === UploaderQueue.RESTART_ASAP || val === UploaderQueue.RESTART_AFTER); }"," },",""," /**"," * An array indicating what fileFilters should be applied to the file"," * selection dialog. Each element in the array should be a string"," * indicating the Media (MIME) type for the files that should be supported"," * for selection. The Media type strings should be properly formatted"," * or this parameter will be ignored. Examples of valid strings include: "," * \"audio/*\", \"video/*\", \"application/pdf\", etc. More information"," * on valid Media type strings is available here: "," * http://www.iana.org/assignments/media-types/index.html"," * @attribute fileFilters"," * @type {Array}"," * @default []"," */"," fileFilters: {"," value: []"," },",""," /**"," * A filtering function that is applied to every file selected by the user."," * The function receives the `Y.File` object and must return a Boolean value."," * If a `false` value is returned, the file in question is not added to the"," * list of files to be uploaded."," * Use this function to put limits on file sizes or check the file names for"," * correct extension, but make sure that a server-side check is also performed,"," * since any client-side restrictions are only advisory and can be circumvented."," *"," * @attribute fileFilterFunction"," * @type {Function}"," * @default null"," */"," fileFilterFunction: {"," value: null"," },",""," /**"," * A String specifying what should be the POST field name for the file"," * content in the upload request."," *"," * @attribute fileFieldName"," * @type {String}"," * @default Filedata"," */"," fileFieldName: {"," value: \"Filedata\" "," },",""," /**"," * The array of files to be uploaded. All elements in the array"," * must be instances of `Y.File` and be instantiated with an instance"," * of native JavaScript File() class."," *"," * @attribute fileList"," * @type {Array}"," * @default []"," */"," fileList: {"," value: [],"," getter: \"_getFileList\","," setter: \"_setFileList\""," },",""," /**"," * A Boolean indicating whether multiple file selection is enabled."," *"," * @attribute multipleFiles"," * @type {Boolean}"," * @default false"," */"," multipleFiles: {"," value: false"," },",""," /**"," * An object, keyed by `fileId`, containing sets of key-value pairs"," * that should be passed as POST variables along with each corresponding"," * file. This attribute is only used if no POST variables are specifed"," * in the upload method call."," *"," * @attribute postVarsPerFile"," * @type {Object}"," * @default {}"," */"," postVarsPerFile: {"," value: {}"," },",""," /**"," * The label for the \"Select Files\" widget. This is the value that replaces the"," * `{selectButtonLabel}` token in the `SELECT_FILES_BUTTON` template."," * "," * @attribute selectButtonLabel"," * @type {String}"," * @default \"Select Files\""," */"," selectButtonLabel: {"," value: \"Select Files\""," },",""," /**"," * The widget that serves as the \"Select Files control for the file uploader"," * "," *"," * @attribute selectFilesButton"," * @type {Node | Widget}"," * @default A standard HTML button with YUI CSS Button skin."," */"," selectFilesButton : {"," valueFn: function () {"," return Y.Node.create(substitute(Y.UploaderHTML5.SELECT_FILES_BUTTON, {selectButtonLabel: this.get(\"selectButtonLabel\"),"," tabIndex: this.get(\"tabIndex\")}));"," }"," },",""," /**"," * The number of files that can be uploaded"," * simultaneously if the automatic queue management"," * is used. This value can be in the range between 2"," * and 5."," *"," * @attribute simLimit"," * @type {Number}"," * @default 2"," */"," simLimit: {"," value: 2,"," validator: function (val, name) {"," return (val >= 1 && val <= 5);"," }"," },",""," /**"," * The URL to which file upload requested are POSTed. Only used if a different url is not passed to the upload method call."," *"," * @attribute uploadURL"," * @type {String}"," * @default \"\""," */"," uploadURL: {"," value: \"\""," },",""," /**"," * Additional HTTP headers that should be included"," * in the upload request."," *"," *"," * @attribute uploadHeaders"," * @type {Object}"," * @default {}"," */ "," uploadHeaders: {"," value: {}"," },",""," /**"," * A Boolean that specifies whether the file should be"," * uploaded with the appropriate user credentials for the"," * domain. "," *"," * @attribute withCredentials"," * @type {Boolean}"," * @default true"," */ "," withCredentials: {"," value: true"," },",""," /**"," * The number of times to try re-uploading a file that failed to upload before"," * cancelling its upload."," *"," * @attribute retryCount"," * @type {Number}"," * @default 3"," */ "," retryCount: {"," value: 3"," }"," }","});","","Y.UploaderHTML5.Queue = UploaderQueue;","","","","}, '3.7.3', {\"requires\": [\"widget\", \"node-event-simulate\", \"substitute\", \"file-html5\", \"uploader-queue\"]});"]; -_yuitest_coverage["build/uploader-html5/uploader-html5.js"].lines = {"1":0,"14":0,"25":0,"26":0,"31":0,"75":0,"76":0,"77":0,"78":0,"94":0,"102":0,"117":0,"138":0,"155":0,"172":0,"180":0,"199":0,"207":0,"215":0,"223":0,"231":0,"245":0,"249":0,"250":0,"251":0,"252":0,"263":0,"264":0,"265":0,"266":0,"267":0,"269":0,"270":0,"271":0,"272":0,"273":0,"274":0,"275":0,"277":0,"289":0,"290":0,"291":0,"292":0,"293":0,"294":0,"306":0,"308":0,"309":0,"310":0,"311":0,"312":0,"315":0,"317":0,"318":0,"319":0,"320":0,"321":0,"333":0,"345":0,"346":0,"348":0,"350":0,"351":0,"353":0,"354":0,"356":0,"357":0,"360":0,"364":0,"365":0,"366":0,"367":0,"368":0,"373":0,"374":0,"378":0,"379":0,"380":0,"382":0,"385":0,"386":0,"400":0,"401":0,"404":0,"416":0,"417":0,"420":0,"432":0,"433":0,"436":0,"449":0,"450":0,"451":0,"452":0,"454":0,"455":0,"456":0,"457":0,"458":0,"469":0,"479":0,"480":0,"494":0,"498":0,"499":0,"500":0,"501":0,"502":0,"507":0,"508":0,"512":0,"513":0,"515":0,"518":0,"521":0,"534":0,"536":0,"537":0,"539":0,"540":0,"542":0,"543":0,"545":0,"546":0,"548":0,"549":0,"550":0,"553":0,"554":0,"557":0,"558":0,"569":0,"570":0,"571":0,"586":0,"590":0,"592":0,"594":0,"595":0,"596":0,"597":0,"598":0,"600":0,"613":0,"626":0,"627":0,"630":0,"640":0,"641":0,"642":0,"643":0,"644":0,"645":0,"646":0,"647":0,"649":0,"651":0,"652":0,"653":0,"654":0,"763":0,"795":0,"906":0,"924":0,"979":0}; -_yuitest_coverage["build/uploader-html5/uploader-html5.js"].functions = {"UploaderHTML5:25":0,"initializer:73":0,"renderUI:244":0,"(anonymous 2):274":0,"bindUI:261":0,"_rebindFileField:288":0,"_bindDropArea:305":0,"_bindSelectButton:332":0,"(anonymous 3):365":0,"(anonymous 4):373":0,"_ddEventHandler:343":0,"_setButtonClass:399":0,"_setMultipleFiles:415":0,"_setFileFilters:431":0,"_triggerEnabled:448":0,"_getFileList:468":0,"_setFileList:478":0,"(anonymous 5):499":0,"(anonymous 6):507":0,"_updateFileList:493":0,"_uploadEventHandler:532":0,"openFileSelectDialog:568":0,"upload:584":0,"uploadAll:612":0,"(anonymous 7):653":0,"uploadThese:625":0,"setter:762":0,"validator:794":0,"valueFn:905":0,"validator:923":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/uploader-html5/uploader-html5.js"].coveredLines = 165; -_yuitest_coverage["build/uploader-html5/uploader-html5.js"].coveredFunctions = 31; -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 1); -YUI.add('uploader-html5', function (Y, NAME) { - - - /** - * This module provides a UI for file selection and multiple file upload capability using - * HTML5 XMLHTTPRequest Level 2 as a transport engine. - * The supported features include: automatic upload queue management, upload progress - * tracking, drag-and-drop support, server response retrieval and error reporting. - * - * @module uploader-html5 - */ - -// Shorthands for the external modules -_yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "(anonymous 1)", 1); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 14); -var substitute = Y.substitute, - UploaderQueue = Y.Uploader.Queue; - - /** - * This module provides a UI for file selection and multiple file upload capability using - * HTML5 XMLHTTPRequest Level 2 as a transport engine. - * @class UploaderHTML5 - * @extends Widget - * @constructor - */ - -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 25); -function UploaderHTML5(config) { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "UploaderHTML5", 25); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 26); -UploaderHTML5.superclass.constructor.apply ( this, arguments ); -} - - - -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 31); -Y.UploaderHTML5 = Y.extend( UploaderHTML5, Y.Widget, { - - /** - * Stored reference to the instance of the file input field used to - * initiate the file selection dialog. - * - * @property _fileInputField - * @type {Node} - * @protected - */ - _fileInputField: null, - - /** - * Stored reference to the click event binding of the `Select Files` - * button. - * - * @property _buttonBinding - * @type {EventHandle} - * @protected - */ - _buttonBinding: null, - - /** - * Stored reference to the instance of Uploader.Queue used to manage - * the upload process. This is a read-only property that only exists - * during an active upload process. Only one queue can be active at - * a time; if an upload start is attempted while a queue is active, - * it will be ignored. - * - * @property queue - * @type {Y.Uploader.Queue} - */ - queue: null, - - // Y.UploaderHTML5 prototype - - /** - * Construction logic executed during UploaderHTML5 instantiation. - * - * @method initializer - * @protected - */ - initializer : function () { - - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "initializer", 73); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 75); -this._fileInputField = null; - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 76); -this.queue = null; - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 77); -this._buttonBinding = null; - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 78); -this._fileList = []; - - // Publish available events - - /** - * Signals that files have been selected. - * - * @event fileselect - * @param event {Event} The event object for the `fileselect` with the - * following payload: - *
          - *
          fileList
          - *
          An `Array` of files selected by the user, encapsulated - * in Y.FileHTML5 objects.
          - *
          - */ - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 94); -this.publish("fileselect"); - - /** - * Signals that an upload of multiple files has been started. - * - * @event uploadstart - * @param event {Event} The event object for the `uploadstart`. - */ - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 102); -this.publish("uploadstart"); - - /** - * Signals that an upload of a specific file has started. - * - * @event fileuploadstart - * @param event {Event} The event object for the `fileuploadstart` with the - * following payload: - *
          - *
          file
          - *
          A reference to the Y.File that dispatched the event.
          - *
          originEvent
          - *
          The original event dispatched by Y.File.
          - *
          - */ - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 117); -this.publish("fileuploadstart"); - - /** - * Reports on upload progress of a specific file. - * - * @event uploadprogress - * @param event {Event} The event object for the `uploadprogress` with the - * following payload: - *
          - *
          file
          - *
          The pointer to the instance of `Y.File` that dispatched the event.
          - *
          bytesLoaded
          - *
          The number of bytes of the file that has been uploaded
          - *
          bytesTotal
          - *
          The total number of bytes in the file
          - *
          percentLoaded
          - *
          The fraction of the file that has been uploaded, out of 100
          - *
          originEvent
          - *
          The original event dispatched by the HTML5 uploader
          - *
          - */ - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 138); -this.publish("uploadprogress"); - - /** - * Reports on the total upload progress of the file list. - * - * @event totaluploadprogress - * @param event {Event} The event object for the `totaluploadprogress` with the - * following payload: - *
          - *
          bytesLoaded
          - *
          The number of bytes of the file list that has been uploaded
          - *
          bytesTotal
          - *
          The total number of bytes in the file list
          - *
          percentLoaded
          - *
          The fraction of the file list that has been uploaded, out of 100
          - *
          - */ - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 155); -this.publish("totaluploadprogress"); - - /** - * Signals that a single file upload has been completed. - * - * @event uploadcomplete - * @param event {Event} The event object for the `uploadcomplete` with the - * following payload: - *
          - *
          file
          - *
          The pointer to the instance of `Y.File` whose upload has been completed.
          - *
          originEvent
          - *
          The original event fired by the SWF Uploader
          - *
          data
          - *
          Data returned by the server.
          - *
          - */ - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 172); -this.publish("uploadcomplete"); - - /** - * Signals that the upload process of the entire file list has been completed. - * - * @event alluploadscomplete - * @param event {Event} The event object for the `alluploadscomplete`. - */ - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 180); -this.publish("alluploadscomplete"); - - /** - * Signals that a error has occurred in a specific file's upload process. - * - * @event uploaderror - * @param event {Event} The event object for the `uploaderror` with the - * following payload: - *
          - *
          originEvent
          - *
          The original error event fired by the HTML5 Uploader.
          - *
          file
          - *
          The pointer at the instance of Y.File that returned the error.
          - *
          status
          - *
          The status reported by the XMLHttpRequest object.
          - *
          statusText
          - *
          The statusText reported by the XMLHttpRequest object.
          - *
          - */ - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 199); -this.publish("uploaderror"); - - /** - * Signals that a dragged object has entered into the uploader's associated drag-and-drop area. - * - * @event dragenter - * @param event {Event} The event object for the `dragenter`. - */ - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 207); -this.publish("dragenter"); - - /** - * Signals that an object has been dragged over the uploader's associated drag-and-drop area. - * - * @event dragover - * @param event {Event} The event object for the `dragover`. - */ - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 215); -this.publish("dragover"); - - /** - * Signals that an object has been dragged off of the uploader's associated drag-and-drop area. - * - * @event dragleave - * @param event {Event} The event object for the `dragleave`. - */ - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 223); -this.publish("dragleave"); - - /** - * Signals that an object has been dropped over the uploader's associated drag-and-drop area. - * - * @event drop - * @param event {Event} The event object for the `drop`. - */ - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 231); -this.publish("drop"); - - }, - - /** - * Create the DOM structure for the UploaderHTML5. - * UploaderHTML5's DOM structure consists of a "Select Files" button that can - * be replaced by the developer's widget of choice; and a hidden file input field - * that is used to instantiate the File Select dialog. - * - * @method renderUI - * @protected - */ - renderUI : function () { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "renderUI", 244); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 245); -var boundingBox = this.get("boundingBox"), - contentBox = this.get('contentBox'), - selButton = this.get("selectFilesButton"); - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 249); -selButton.setStyles({width:"100%", height:"100%"}); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 250); -contentBox.append(selButton); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 251); -this._fileInputField = Y.Node.create(UploaderHTML5.HTML5FILEFIELD_TEMPLATE); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 252); -contentBox.append(this._fileInputField); - }, - - /** - * Binds to the UploaderHTML5 UI and subscribes to the necessary events. - * - * @method bindUI - * @protected - */ - bindUI : function () { - - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "bindUI", 261); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 263); -this._bindSelectButton(); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 264); -this._setMultipleFiles(); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 265); -this._setFileFilters(); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 266); -this._bindDropArea(); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 267); -this._triggerEnabled(); - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 269); -this.after("multipleFilesChange", this._setMultipleFiles, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 270); -this.after("fileFiltersChange", this._setFileFilters, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 271); -this.after("enabledChange", this._triggerEnabled, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 272); -this.after("selectFilesButtonChange", this._bindSelectButton, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 273); -this.after("dragAndDropAreaChange", this._bindDropArea, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 274); -this.after("tabIndexChange", function (ev) {_yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "(anonymous 2)", 274); -this.get("selectFilesButton").set("tabIndex", this.get("tabIndex"));}, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 275); -this._fileInputField.on("change", this._updateFileList, this); - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 277); -this.get("selectFilesButton").set("tabIndex", this.get("tabIndex")); - }, - - - /** - * Recreates the file field to null out the previous list of files and - * thus allow for an identical file list selection. - * - * @method _rebindFileField - * @protected - */ - _rebindFileField : function () { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "_rebindFileField", 288); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 289); -this._fileInputField.remove(true); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 290); -this._fileInputField = Y.Node.create(UploaderHTML5.HTML5FILEFIELD_TEMPLATE); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 291); -this.get("contentBox").append(this._fileInputField); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 292); -this._fileInputField.on("change", this._updateFileList, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 293); -this._setMultipleFiles(); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 294); -this._setFileFilters(); - }, - - - /** - * Binds the specified drop area's drag and drop events to the - * uploader's custom handler. - * - * @method _bindDropArea - * @protected - */ - _bindDropArea : function (event) { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "_bindDropArea", 305); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 306); -var ev = event || {prevVal: null}; - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 308); -if (ev.prevVal !== null) { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 309); -ev.prevVal.detach('drop', this._ddEventHandler); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 310); -ev.prevVal.detach('dragenter', this._ddEventHandler); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 311); -ev.prevVal.detach('dragover', this._ddEventHandler); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 312); -ev.prevVal.detach('dragleave', this._ddEventHandler); - } - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 315); -var ddArea = this.get("dragAndDropArea"); - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 317); -if (ddArea !== null) { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 318); -ddArea.on('drop', this._ddEventHandler, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 319); -ddArea.on('dragenter', this._ddEventHandler, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 320); -ddArea.on('dragover', this._ddEventHandler, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 321); -ddArea.on('dragleave', this._ddEventHandler, this); - } - }, - - /** - * Binds the instantiation of the file select dialog to the current file select - * control. - * - * @method _bindSelectButton - * @protected - */ - _bindSelectButton : function () { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "_bindSelectButton", 332); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 333); -this._buttonBinding = this.get("selectFilesButton").on("click", this.openFileSelectDialog, this); - }, - - /** - * Handles the drag and drop events from the uploader's specified drop - * area. - * - * @method _ddEventHandler - * @protected - */ - _ddEventHandler : function (event) { - - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "_ddEventHandler", 343); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 345); -event.stopPropagation(); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 346); -event.preventDefault(); - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 348); -switch (event.type) { - case "dragenter": - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 350); -this.fire("dragenter"); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 351); -break; - case "dragover": - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 353); -this.fire("dragover"); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 354); -break; - case "dragleave": - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 356); -this.fire("dragleave"); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 357); -break; - case "drop": - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 360); -var newfiles = event._event.dataTransfer.files, - parsedFiles = [], - filterFunc = this.get("fileFilterFunction"); - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 364); -if (filterFunc) { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 365); -Y.each(newfiles, function (value) { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "(anonymous 3)", 365); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 366); -var newfile = new Y.FileHTML5(value); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 367); -if (filterFunc(newfile)) { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 368); -parsedFiles.push(newfile); - } - }); - } - else { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 373); -Y.each(newfiles, function (value) { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "(anonymous 4)", 373); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 374); -parsedFiles.push(new Y.FileHTML5(value)); - }); - } - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 378); -if (parsedFiles.length > 0) { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 379); -var oldfiles = this.get("fileList"); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 380); -this.set("fileList", - this.get("appendNewFiles") ? oldfiles.concat(parsedFiles) : parsedFiles); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 382); -this.fire("fileselect", {fileList: parsedFiles}); - } - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 385); -this.fire("drop"); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 386); -break; - } - }, - - /** - * Adds or removes a specified state CSS class to the underlying uploader button. - * - * @method _setButtonClass - * @protected - * @param state {String} The name of the state enumerated in `buttonClassNames` attribute - * from which to derive the needed class name. - * @param add {Boolean} A Boolean indicating whether to add or remove the class. - */ - _setButtonClass : function (state, add) { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "_setButtonClass", 399); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 400); -if (add) { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 401); -this.get("selectFilesButton").addClass(this.get("buttonClassNames")[state]); - } - else { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 404); -this.get("selectFilesButton").removeClass(this.get("buttonClassNames")[state]); - } - }, - - /** - * Syncs the state of the `multipleFiles` attribute between this class - * and the file input field. - * - * @method _setMultipleFiles - * @protected - */ - _setMultipleFiles : function () { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "_setMultipleFiles", 415); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 416); -if (this.get("multipleFiles") === true) { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 417); -this._fileInputField.set("multiple", "multiple"); - } - else { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 420); -this._fileInputField.set("multiple", ""); - } - }, - - /** - * Syncs the state of the `fileFilters` attribute between this class - * and the file input field. - * - * @method _setFileFilters - * @protected - */ - _setFileFilters : function () { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "_setFileFilters", 431); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 432); -if (this.get("fileFilters").length > 0) { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 433); -this._fileInputField.set("accept", this.get("fileFilters").join(",")); - } - else { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 436); -this._fileInputField.set("accept", ""); - } - }, - - - /** - * Syncs the state of the `enabled` attribute between this class - * and the underlying button. - * - * @method _triggerEnabled - * @private - */ - _triggerEnabled : function () { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "_triggerEnabled", 448); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 449); -if (this.get("enabled") && this._buttonBinding === null) { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 450); -this._bindSelectButton(); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 451); -this._setButtonClass("disabled", false); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 452); -this.get("selectFilesButton").setAttribute("aria-disabled", "false"); - } - else {_yuitest_coverline("build/uploader-html5/uploader-html5.js", 454); -if (!this.get("enabled") && this._buttonBinding) { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 455); -this._buttonBinding.detach(); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 456); -this._buttonBinding = null; - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 457); -this._setButtonClass("disabled", true); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 458); -this.get("selectFilesButton").setAttribute("aria-disabled", "true"); - }} - }, - - /** - * Getter for the `fileList` attribute - * - * @method _getFileList - * @private - */ - _getFileList : function (arr) { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "_getFileList", 468); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 469); -return this._fileList.concat(); - }, - - /** - * Setter for the `fileList` attribute - * - * @method _setFileList - * @private - */ - _setFileList : function (val) { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "_setFileList", 478); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 479); -this._fileList = val.concat(); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 480); -return this._fileList.concat(); - }, - - /** - * Adjusts the content of the `fileList` based on the results of file selection - * and the `appendNewFiles` attribute. If the `appendNewFiles` attribute is true, - * then selected files are appended to the existing list; otherwise, the list is - * cleared and populated with the newly selected files. - * - * @method _updateFileList - * @param ev {Event} The file selection event received from the uploader. - * @protected - */ - _updateFileList : function (ev) { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "_updateFileList", 493); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 494); -var newfiles = ev.target.getDOMNode().files, - parsedFiles = [], - filterFunc = this.get("fileFilterFunction"); - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 498); -if (filterFunc) { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 499); -Y.each(newfiles, function (value) { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "(anonymous 5)", 499); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 500); -var newfile = new Y.FileHTML5(value); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 501); -if (filterFunc(newfile)) { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 502); -parsedFiles.push(newfile); - } - }); - } - else { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 507); -Y.each(newfiles, function (value) { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "(anonymous 6)", 507); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 508); -parsedFiles.push(new Y.FileHTML5(value)); - }); - } - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 512); -if (parsedFiles.length > 0) { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 513); -var oldfiles = this.get("fileList"); - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 515); -this.set("fileList", - this.get("appendNewFiles") ? oldfiles.concat(parsedFiles) : parsedFiles ); - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 518); -this.fire("fileselect", {fileList: parsedFiles}); - } - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 521); -this._rebindFileField(); - }, - - - /** - * Handles and retransmits events fired by `Y.File` and `Y.Uploader.Queue`. - * - * @method _uploadEventHandler - * @param event The event dispatched during the upload process. - * @protected - */ - _uploadEventHandler : function (event) { - - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "_uploadEventHandler", 532); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 534); -switch (event.type) { - case "file:uploadstart": - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 536); -this.fire("fileuploadstart", event); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 537); -break; - case "file:uploadprogress": - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 539); -this.fire("uploadprogress", event); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 540); -break; - case "uploaderqueue:totaluploadprogress": - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 542); -this.fire("totaluploadprogress", event); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 543); -break; - case "file:uploadcomplete": - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 545); -this.fire("uploadcomplete", event); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 546); -break; - case "uploaderqueue:alluploadscomplete": - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 548); -this.queue = null; - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 549); -this.fire("alluploadscomplete", event); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 550); -break; - case "file:uploaderror": - case "uploaderqueue:uploaderror": - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 553); -this.fire("uploaderror", event); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 554); -break; - case "file:uploadcancel": - case "uploaderqueue:uploadcancel": - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 557); -this.fire("uploadcancel", event); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 558); -break; - } - - }, - - /** - * Opens the File Selection dialog by simulating a click on the file input field. - * - * @method openFileSelectDialog - */ - openFileSelectDialog : function () { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "openFileSelectDialog", 568); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 569); -var fileDomNode = this._fileInputField.getDOMNode(); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 570); -if (fileDomNode.click) { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 571); -fileDomNode.click(); - } - }, - - /** - * Starts the upload of a specific file. - * - * @method upload - * @param file {Y.File} Reference to the instance of the file to be uploaded. - * @param url {String} The URL to upload the file to. - * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request. - * If not specified, the values from the attribute `postVarsPerFile` are used instead. - */ - upload : function (file, url, postvars) { - - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "upload", 584); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 586); -var uploadURL = url || this.get("uploadURL"), - postVars = postvars || this.get("postVarsPerFile"), - fileId = file.get("id"); - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 590); -postVars = postVars.hasOwnProperty(fileId) ? postVars[fileId] : postVars; - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 592); -if (file instanceof Y.FileHTML5) { - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 594); -file.on("uploadstart", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 595); -file.on("uploadprogress", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 596); -file.on("uploadcomplete", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 597); -file.on("uploaderror", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 598); -file.on("uploadcancel", this._uploadEventHandler, this); - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 600); -file.startUpload(uploadURL, postVars, this.get("fileFieldName")); - } - }, - - /** - * Starts the upload of all files on the file list, using an automated queue. - * - * @method uploadAll - * @param url {String} The URL to upload the files to. - * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request. - * If not specified, the values from the attribute `postVarsPerFile` are used instead. - */ - uploadAll : function (url, postvars) { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "uploadAll", 612); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 613); -this.uploadThese(this.get("fileList"), url, postvars); - }, - - /** - * Starts the upload of the files specified in the first argument, using an automated queue. - * - * @method uploadThese - * @param files {Array} The list of files to upload. - * @param url {String} The URL to upload the files to. - * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request. - * If not specified, the values from the attribute `postVarsPerFile` are used instead. - */ - uploadThese : function (files, url, postvars) { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "uploadThese", 625); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 626); -if (!this.queue) { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 627); -var uploadURL = url || this.get("uploadURL"), - postVars = postvars || this.get("postVarsPerFile"); - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 630); -this.queue = new UploaderQueue({simUploads: this.get("simLimit"), - errorAction: this.get("errorAction"), - fileFieldName: this.get("fileFieldName"), - fileList: files, - uploadURL: uploadURL, - perFileParameters: postVars, - retryCount: this.get("retryCount"), - uploadHeaders: this.get("uploadHeaders"), - withCredentials: this.get("withCredentials") - }); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 640); -this.queue.on("uploadstart", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 641); -this.queue.on("uploadprogress", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 642); -this.queue.on("totaluploadprogress", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 643); -this.queue.on("uploadcomplete", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 644); -this.queue.on("alluploadscomplete", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 645); -this.queue.on("uploadcancel", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 646); -this.queue.on("uploaderror", this._uploadEventHandler, this); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 647); -this.queue.startUpload(); - - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 649); -this.fire("uploadstart"); - } - else {_yuitest_coverline("build/uploader-html5/uploader-html5.js", 651); -if (this.queue._currentState === UploaderQueue.UPLOADING) { - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 652); -this.queue.set("perFileParameters", this.get("postVarsPerFile")); - _yuitest_coverline("build/uploader-html5/uploader-html5.js", 653); -Y.each(files, function (file) { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "(anonymous 7)", 653); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 654); -this.queue.addToQueueBottom(file); - }, this); - }} - } -}, - -{ - /** - * The template for the hidden file input field container. The file input field will only - * accept clicks if its visibility is set to hidden (and will not if it's `display` value - * is set to `none`) - * - * @property HTML5FILEFIELD_TEMPLATE - * @type {String} - * @static - */ - HTML5FILEFIELD_TEMPLATE: "", - - /** - * The template for the "Select Files" button. - * - * @property SELECT_FILES_BUTTON - * @type {String} - * @static - * @default "" - */ - SELECT_FILES_BUTTON: "", - - /** - * The static property reflecting the type of uploader that `Y.Uploader` - * aliases. The UploaderHTML5 value is `"html5"`. - * - * @property TYPE - * @type {String} - * @static - */ - TYPE: "html5", - - /** - * The identity of the widget. - * - * @property NAME - * @type String - * @default 'uploader' - * @readOnly - * @protected - * @static - */ - NAME: "uploader", - - /** - * Static property used to define the default attribute configuration of - * the Widget. - * - * @property ATTRS - * @type {Object} - * @protected - * @static - */ - ATTRS: { - - /** - * A Boolean indicating whether newly selected files should be appended - * to the existing file list, or whether they should replace it. - * - * @attribute appendNewFiles - * @type {Boolean} - * @default true - */ - appendNewFiles : { - value: true - }, - - /** - * The names of CSS classes that correspond to different button states - * of the "Select Files" control. These classes are assigned to the - * "Select Files" control based on the configuration of the uploader. - * Currently, the only class name used is that corresponding to the - * `disabled` state of the uploader. Other button states should be managed - * directly via CSS selectors. - *
            - *
          • `disabled`: the class corresponding to the disabled state - * of the "Select Files" button.
          • - *
          - * @attribute buttonClassNames - * @type {Object} - * @default { - * disabled: "yui3-button-disabled" - * } - */ - buttonClassNames: { - value: { - "hover": "yui3-button-hover", - "active": "yui3-button-active", - "disabled": "yui3-button-disabled", - "focus": "yui3-button-selected" - } - }, - - /** - * The node that serves as the drop target for files. - * - * @attribute dragAndDropArea - * @type {Node} - * @default null - */ - dragAndDropArea: { - value: null, - setter: function (val) { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "setter", 762); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 763); -return Y.one(val); - } - }, - - /** - * A Boolean indicating whether the uploader is enabled or disabled for user input. - * - * @attribute enabled - * @type {Boolean} - * @default true - */ - enabled : { - value: true - }, - - /** - * The action performed when an upload error occurs for a specific file being uploaded. - * The possible values are: - *
            - *
          • `UploaderQueue.CONTINUE`: the error is ignored and the upload process is continued.
          • - *
          • `UploaderQueue.STOP`: the upload process is stopped as soon as any other parallel file - * uploads are finished.
          • - *
          • `UploaderQueue.RESTART_ASAP`: the file is added back to the front of the queue.
          • - *
          • `UploaderQueue.RESTART_AFTER`: the file is added to the back of the queue.
          • - *
          - * @attribute errorAction - * @type {String} - * @default UploaderQueue.CONTINUE - */ - errorAction: { - value: "continue", - validator: function (val, name) { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "validator", 794); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 795); -return (val === UploaderQueue.CONTINUE || val === UploaderQueue.STOP || val === UploaderQueue.RESTART_ASAP || val === UploaderQueue.RESTART_AFTER); } - }, - - /** - * An array indicating what fileFilters should be applied to the file - * selection dialog. Each element in the array should be a string - * indicating the Media (MIME) type for the files that should be supported - * for selection. The Media type strings should be properly formatted - * or this parameter will be ignored. Examples of valid strings include: - * "audio/*", "video/*", "application/pdf", etc. More information - * on valid Media type strings is available here: - * http://www.iana.org/assignments/media-types/index.html - * @attribute fileFilters - * @type {Array} - * @default [] - */ - fileFilters: { - value: [] - }, - - /** - * A filtering function that is applied to every file selected by the user. - * The function receives the `Y.File` object and must return a Boolean value. - * If a `false` value is returned, the file in question is not added to the - * list of files to be uploaded. - * Use this function to put limits on file sizes or check the file names for - * correct extension, but make sure that a server-side check is also performed, - * since any client-side restrictions are only advisory and can be circumvented. - * - * @attribute fileFilterFunction - * @type {Function} - * @default null - */ - fileFilterFunction: { - value: null - }, - - /** - * A String specifying what should be the POST field name for the file - * content in the upload request. - * - * @attribute fileFieldName - * @type {String} - * @default Filedata - */ - fileFieldName: { - value: "Filedata" - }, - - /** - * The array of files to be uploaded. All elements in the array - * must be instances of `Y.File` and be instantiated with an instance - * of native JavaScript File() class. - * - * @attribute fileList - * @type {Array} - * @default [] - */ - fileList: { - value: [], - getter: "_getFileList", - setter: "_setFileList" - }, - - /** - * A Boolean indicating whether multiple file selection is enabled. - * - * @attribute multipleFiles - * @type {Boolean} - * @default false - */ - multipleFiles: { - value: false - }, - - /** - * An object, keyed by `fileId`, containing sets of key-value pairs - * that should be passed as POST variables along with each corresponding - * file. This attribute is only used if no POST variables are specifed - * in the upload method call. - * - * @attribute postVarsPerFile - * @type {Object} - * @default {} - */ - postVarsPerFile: { - value: {} - }, - - /** - * The label for the "Select Files" widget. This is the value that replaces the - * `{selectButtonLabel}` token in the `SELECT_FILES_BUTTON` template. - * - * @attribute selectButtonLabel - * @type {String} - * @default "Select Files" - */ - selectButtonLabel: { - value: "Select Files" - }, - - /** - * The widget that serves as the "Select Files control for the file uploader - * - * - * @attribute selectFilesButton - * @type {Node | Widget} - * @default A standard HTML button with YUI CSS Button skin. - */ - selectFilesButton : { - valueFn: function () { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "valueFn", 905); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 906); -return Y.Node.create(substitute(Y.UploaderHTML5.SELECT_FILES_BUTTON, {selectButtonLabel: this.get("selectButtonLabel"), - tabIndex: this.get("tabIndex")})); - } - }, - - /** - * The number of files that can be uploaded - * simultaneously if the automatic queue management - * is used. This value can be in the range between 2 - * and 5. - * - * @attribute simLimit - * @type {Number} - * @default 2 - */ - simLimit: { - value: 2, - validator: function (val, name) { - _yuitest_coverfunc("build/uploader-html5/uploader-html5.js", "validator", 923); -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 924); -return (val >= 1 && val <= 5); - } - }, - - /** - * The URL to which file upload requested are POSTed. Only used if a different url is not passed to the upload method call. - * - * @attribute uploadURL - * @type {String} - * @default "" - */ - uploadURL: { - value: "" - }, - - /** - * Additional HTTP headers that should be included - * in the upload request. - * - * - * @attribute uploadHeaders - * @type {Object} - * @default {} - */ - uploadHeaders: { - value: {} - }, - - /** - * A Boolean that specifies whether the file should be - * uploaded with the appropriate user credentials for the - * domain. - * - * @attribute withCredentials - * @type {Boolean} - * @default true - */ - withCredentials: { - value: true - }, - - /** - * The number of times to try re-uploading a file that failed to upload before - * cancelling its upload. - * - * @attribute retryCount - * @type {Number} - * @default 3 - */ - retryCount: { - value: 3 - } - } -}); - -_yuitest_coverline("build/uploader-html5/uploader-html5.js", 979); -Y.UploaderHTML5.Queue = UploaderQueue; - - - -}, '3.7.3', {"requires": ["widget", "node-event-simulate", "substitute", "file-html5", "uploader-queue"]}); diff --git a/lib/yuilib/3.7.3/build/uploader-html5/uploader-html5-debug.js b/lib/yuilib/3.7.3/build/uploader-html5/uploader-html5-debug.js deleted file mode 100644 index 902c4b98eda..00000000000 --- a/lib/yuilib/3.7.3/build/uploader-html5/uploader-html5-debug.js +++ /dev/null @@ -1,989 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add('uploader-html5', function (Y, NAME) { - - - /** - * This module provides a UI for file selection and multiple file upload capability using - * HTML5 XMLHTTPRequest Level 2 as a transport engine. - * The supported features include: automatic upload queue management, upload progress - * tracking, drag-and-drop support, server response retrieval and error reporting. - * - * @module uploader-html5 - */ - -// Shorthands for the external modules -var substitute = Y.substitute, - UploaderQueue = Y.Uploader.Queue; - - /** - * This module provides a UI for file selection and multiple file upload capability using - * HTML5 XMLHTTPRequest Level 2 as a transport engine. - * @class UploaderHTML5 - * @extends Widget - * @constructor - */ - -function UploaderHTML5(config) { - UploaderHTML5.superclass.constructor.apply ( this, arguments ); -} - - - -Y.UploaderHTML5 = Y.extend( UploaderHTML5, Y.Widget, { - - /** - * Stored reference to the instance of the file input field used to - * initiate the file selection dialog. - * - * @property _fileInputField - * @type {Node} - * @protected - */ - _fileInputField: null, - - /** - * Stored reference to the click event binding of the `Select Files` - * button. - * - * @property _buttonBinding - * @type {EventHandle} - * @protected - */ - _buttonBinding: null, - - /** - * Stored reference to the instance of Uploader.Queue used to manage - * the upload process. This is a read-only property that only exists - * during an active upload process. Only one queue can be active at - * a time; if an upload start is attempted while a queue is active, - * it will be ignored. - * - * @property queue - * @type {Y.Uploader.Queue} - */ - queue: null, - - // Y.UploaderHTML5 prototype - - /** - * Construction logic executed during UploaderHTML5 instantiation. - * - * @method initializer - * @protected - */ - initializer : function () { - - this._fileInputField = null; - this.queue = null; - this._buttonBinding = null; - this._fileList = []; - - // Publish available events - - /** - * Signals that files have been selected. - * - * @event fileselect - * @param event {Event} The event object for the `fileselect` with the - * following payload: - *
          - *
          fileList
          - *
          An `Array` of files selected by the user, encapsulated - * in Y.FileHTML5 objects.
          - *
          - */ - this.publish("fileselect"); - - /** - * Signals that an upload of multiple files has been started. - * - * @event uploadstart - * @param event {Event} The event object for the `uploadstart`. - */ - this.publish("uploadstart"); - - /** - * Signals that an upload of a specific file has started. - * - * @event fileuploadstart - * @param event {Event} The event object for the `fileuploadstart` with the - * following payload: - *
          - *
          file
          - *
          A reference to the Y.File that dispatched the event.
          - *
          originEvent
          - *
          The original event dispatched by Y.File.
          - *
          - */ - this.publish("fileuploadstart"); - - /** - * Reports on upload progress of a specific file. - * - * @event uploadprogress - * @param event {Event} The event object for the `uploadprogress` with the - * following payload: - *
          - *
          file
          - *
          The pointer to the instance of `Y.File` that dispatched the event.
          - *
          bytesLoaded
          - *
          The number of bytes of the file that has been uploaded
          - *
          bytesTotal
          - *
          The total number of bytes in the file
          - *
          percentLoaded
          - *
          The fraction of the file that has been uploaded, out of 100
          - *
          originEvent
          - *
          The original event dispatched by the HTML5 uploader
          - *
          - */ - this.publish("uploadprogress"); - - /** - * Reports on the total upload progress of the file list. - * - * @event totaluploadprogress - * @param event {Event} The event object for the `totaluploadprogress` with the - * following payload: - *
          - *
          bytesLoaded
          - *
          The number of bytes of the file list that has been uploaded
          - *
          bytesTotal
          - *
          The total number of bytes in the file list
          - *
          percentLoaded
          - *
          The fraction of the file list that has been uploaded, out of 100
          - *
          - */ - this.publish("totaluploadprogress"); - - /** - * Signals that a single file upload has been completed. - * - * @event uploadcomplete - * @param event {Event} The event object for the `uploadcomplete` with the - * following payload: - *
          - *
          file
          - *
          The pointer to the instance of `Y.File` whose upload has been completed.
          - *
          originEvent
          - *
          The original event fired by the SWF Uploader
          - *
          data
          - *
          Data returned by the server.
          - *
          - */ - this.publish("uploadcomplete"); - - /** - * Signals that the upload process of the entire file list has been completed. - * - * @event alluploadscomplete - * @param event {Event} The event object for the `alluploadscomplete`. - */ - this.publish("alluploadscomplete"); - - /** - * Signals that a error has occurred in a specific file's upload process. - * - * @event uploaderror - * @param event {Event} The event object for the `uploaderror` with the - * following payload: - *
          - *
          originEvent
          - *
          The original error event fired by the HTML5 Uploader.
          - *
          file
          - *
          The pointer at the instance of Y.File that returned the error.
          - *
          status
          - *
          The status reported by the XMLHttpRequest object.
          - *
          statusText
          - *
          The statusText reported by the XMLHttpRequest object.
          - *
          - */ - this.publish("uploaderror"); - - /** - * Signals that a dragged object has entered into the uploader's associated drag-and-drop area. - * - * @event dragenter - * @param event {Event} The event object for the `dragenter`. - */ - this.publish("dragenter"); - - /** - * Signals that an object has been dragged over the uploader's associated drag-and-drop area. - * - * @event dragover - * @param event {Event} The event object for the `dragover`. - */ - this.publish("dragover"); - - /** - * Signals that an object has been dragged off of the uploader's associated drag-and-drop area. - * - * @event dragleave - * @param event {Event} The event object for the `dragleave`. - */ - this.publish("dragleave"); - - /** - * Signals that an object has been dropped over the uploader's associated drag-and-drop area. - * - * @event drop - * @param event {Event} The event object for the `drop`. - */ - this.publish("drop"); - - }, - - /** - * Create the DOM structure for the UploaderHTML5. - * UploaderHTML5's DOM structure consists of a "Select Files" button that can - * be replaced by the developer's widget of choice; and a hidden file input field - * that is used to instantiate the File Select dialog. - * - * @method renderUI - * @protected - */ - renderUI : function () { - var boundingBox = this.get("boundingBox"), - contentBox = this.get('contentBox'), - selButton = this.get("selectFilesButton"); - - selButton.setStyles({width:"100%", height:"100%"}); - contentBox.append(selButton); - this._fileInputField = Y.Node.create(UploaderHTML5.HTML5FILEFIELD_TEMPLATE); - contentBox.append(this._fileInputField); - }, - - /** - * Binds to the UploaderHTML5 UI and subscribes to the necessary events. - * - * @method bindUI - * @protected - */ - bindUI : function () { - - this._bindSelectButton(); - this._setMultipleFiles(); - this._setFileFilters(); - this._bindDropArea(); - this._triggerEnabled(); - - this.after("multipleFilesChange", this._setMultipleFiles, this); - this.after("fileFiltersChange", this._setFileFilters, this); - this.after("enabledChange", this._triggerEnabled, this); - this.after("selectFilesButtonChange", this._bindSelectButton, this); - this.after("dragAndDropAreaChange", this._bindDropArea, this); - this.after("tabIndexChange", function (ev) {this.get("selectFilesButton").set("tabIndex", this.get("tabIndex"));}, this); - this._fileInputField.on("change", this._updateFileList, this); - - this.get("selectFilesButton").set("tabIndex", this.get("tabIndex")); - }, - - - /** - * Recreates the file field to null out the previous list of files and - * thus allow for an identical file list selection. - * - * @method _rebindFileField - * @protected - */ - _rebindFileField : function () { - this._fileInputField.remove(true); - this._fileInputField = Y.Node.create(UploaderHTML5.HTML5FILEFIELD_TEMPLATE); - this.get("contentBox").append(this._fileInputField); - this._fileInputField.on("change", this._updateFileList, this); - this._setMultipleFiles(); - this._setFileFilters(); - }, - - - /** - * Binds the specified drop area's drag and drop events to the - * uploader's custom handler. - * - * @method _bindDropArea - * @protected - */ - _bindDropArea : function (event) { - var ev = event || {prevVal: null}; - - if (ev.prevVal !== null) { - ev.prevVal.detach('drop', this._ddEventHandler); - ev.prevVal.detach('dragenter', this._ddEventHandler); - ev.prevVal.detach('dragover', this._ddEventHandler); - ev.prevVal.detach('dragleave', this._ddEventHandler); - } - - var ddArea = this.get("dragAndDropArea"); - - if (ddArea !== null) { - ddArea.on('drop', this._ddEventHandler, this); - ddArea.on('dragenter', this._ddEventHandler, this); - ddArea.on('dragover', this._ddEventHandler, this); - ddArea.on('dragleave', this._ddEventHandler, this); - } - }, - - /** - * Binds the instantiation of the file select dialog to the current file select - * control. - * - * @method _bindSelectButton - * @protected - */ - _bindSelectButton : function () { - this._buttonBinding = this.get("selectFilesButton").on("click", this.openFileSelectDialog, this); - }, - - /** - * Handles the drag and drop events from the uploader's specified drop - * area. - * - * @method _ddEventHandler - * @protected - */ - _ddEventHandler : function (event) { - - event.stopPropagation(); - event.preventDefault(); - - switch (event.type) { - case "dragenter": - this.fire("dragenter"); - break; - case "dragover": - this.fire("dragover"); - break; - case "dragleave": - this.fire("dragleave"); - break; - case "drop": - - var newfiles = event._event.dataTransfer.files, - parsedFiles = [], - filterFunc = this.get("fileFilterFunction"); - - if (filterFunc) { - Y.each(newfiles, function (value) { - var newfile = new Y.FileHTML5(value); - if (filterFunc(newfile)) { - parsedFiles.push(newfile); - } - }); - } - else { - Y.each(newfiles, function (value) { - parsedFiles.push(new Y.FileHTML5(value)); - }); - } - - if (parsedFiles.length > 0) { - var oldfiles = this.get("fileList"); - this.set("fileList", - this.get("appendNewFiles") ? oldfiles.concat(parsedFiles) : parsedFiles); - this.fire("fileselect", {fileList: parsedFiles}); - } - - this.fire("drop"); - break; - } - }, - - /** - * Adds or removes a specified state CSS class to the underlying uploader button. - * - * @method _setButtonClass - * @protected - * @param state {String} The name of the state enumerated in `buttonClassNames` attribute - * from which to derive the needed class name. - * @param add {Boolean} A Boolean indicating whether to add or remove the class. - */ - _setButtonClass : function (state, add) { - if (add) { - this.get("selectFilesButton").addClass(this.get("buttonClassNames")[state]); - } - else { - this.get("selectFilesButton").removeClass(this.get("buttonClassNames")[state]); - } - }, - - /** - * Syncs the state of the `multipleFiles` attribute between this class - * and the file input field. - * - * @method _setMultipleFiles - * @protected - */ - _setMultipleFiles : function () { - if (this.get("multipleFiles") === true) { - this._fileInputField.set("multiple", "multiple"); - } - else { - this._fileInputField.set("multiple", ""); - } - }, - - /** - * Syncs the state of the `fileFilters` attribute between this class - * and the file input field. - * - * @method _setFileFilters - * @protected - */ - _setFileFilters : function () { - if (this.get("fileFilters").length > 0) { - this._fileInputField.set("accept", this.get("fileFilters").join(",")); - } - else { - this._fileInputField.set("accept", ""); - } - }, - - - /** - * Syncs the state of the `enabled` attribute between this class - * and the underlying button. - * - * @method _triggerEnabled - * @private - */ - _triggerEnabled : function () { - if (this.get("enabled") && this._buttonBinding === null) { - this._bindSelectButton(); - this._setButtonClass("disabled", false); - this.get("selectFilesButton").setAttribute("aria-disabled", "false"); - } - else if (!this.get("enabled") && this._buttonBinding) { - this._buttonBinding.detach(); - this._buttonBinding = null; - this._setButtonClass("disabled", true); - this.get("selectFilesButton").setAttribute("aria-disabled", "true"); - } - }, - - /** - * Getter for the `fileList` attribute - * - * @method _getFileList - * @private - */ - _getFileList : function (arr) { - return this._fileList.concat(); - }, - - /** - * Setter for the `fileList` attribute - * - * @method _setFileList - * @private - */ - _setFileList : function (val) { - this._fileList = val.concat(); - return this._fileList.concat(); - }, - - /** - * Adjusts the content of the `fileList` based on the results of file selection - * and the `appendNewFiles` attribute. If the `appendNewFiles` attribute is true, - * then selected files are appended to the existing list; otherwise, the list is - * cleared and populated with the newly selected files. - * - * @method _updateFileList - * @param ev {Event} The file selection event received from the uploader. - * @protected - */ - _updateFileList : function (ev) { - var newfiles = ev.target.getDOMNode().files, - parsedFiles = [], - filterFunc = this.get("fileFilterFunction"); - - if (filterFunc) { - Y.each(newfiles, function (value) { - var newfile = new Y.FileHTML5(value); - if (filterFunc(newfile)) { - parsedFiles.push(newfile); - } - }); - } - else { - Y.each(newfiles, function (value) { - parsedFiles.push(new Y.FileHTML5(value)); - }); - } - - if (parsedFiles.length > 0) { - var oldfiles = this.get("fileList"); - - this.set("fileList", - this.get("appendNewFiles") ? oldfiles.concat(parsedFiles) : parsedFiles ); - - this.fire("fileselect", {fileList: parsedFiles}); - } - - this._rebindFileField(); - }, - - - /** - * Handles and retransmits events fired by `Y.File` and `Y.Uploader.Queue`. - * - * @method _uploadEventHandler - * @param event The event dispatched during the upload process. - * @protected - */ - _uploadEventHandler : function (event) { - - switch (event.type) { - case "file:uploadstart": - this.fire("fileuploadstart", event); - break; - case "file:uploadprogress": - this.fire("uploadprogress", event); - break; - case "uploaderqueue:totaluploadprogress": - this.fire("totaluploadprogress", event); - break; - case "file:uploadcomplete": - this.fire("uploadcomplete", event); - break; - case "uploaderqueue:alluploadscomplete": - this.queue = null; - this.fire("alluploadscomplete", event); - break; - case "file:uploaderror": - case "uploaderqueue:uploaderror": - this.fire("uploaderror", event); - break; - case "file:uploadcancel": - case "uploaderqueue:uploadcancel": - this.fire("uploadcancel", event); - break; - } - - }, - - /** - * Opens the File Selection dialog by simulating a click on the file input field. - * - * @method openFileSelectDialog - */ - openFileSelectDialog : function () { - var fileDomNode = this._fileInputField.getDOMNode(); - if (fileDomNode.click) { - fileDomNode.click(); - } - }, - - /** - * Starts the upload of a specific file. - * - * @method upload - * @param file {Y.File} Reference to the instance of the file to be uploaded. - * @param url {String} The URL to upload the file to. - * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request. - * If not specified, the values from the attribute `postVarsPerFile` are used instead. - */ - upload : function (file, url, postvars) { - - var uploadURL = url || this.get("uploadURL"), - postVars = postvars || this.get("postVarsPerFile"), - fileId = file.get("id"); - - postVars = postVars.hasOwnProperty(fileId) ? postVars[fileId] : postVars; - - if (file instanceof Y.FileHTML5) { - - file.on("uploadstart", this._uploadEventHandler, this); - file.on("uploadprogress", this._uploadEventHandler, this); - file.on("uploadcomplete", this._uploadEventHandler, this); - file.on("uploaderror", this._uploadEventHandler, this); - file.on("uploadcancel", this._uploadEventHandler, this); - - file.startUpload(uploadURL, postVars, this.get("fileFieldName")); - } - }, - - /** - * Starts the upload of all files on the file list, using an automated queue. - * - * @method uploadAll - * @param url {String} The URL to upload the files to. - * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request. - * If not specified, the values from the attribute `postVarsPerFile` are used instead. - */ - uploadAll : function (url, postvars) { - this.uploadThese(this.get("fileList"), url, postvars); - }, - - /** - * Starts the upload of the files specified in the first argument, using an automated queue. - * - * @method uploadThese - * @param files {Array} The list of files to upload. - * @param url {String} The URL to upload the files to. - * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request. - * If not specified, the values from the attribute `postVarsPerFile` are used instead. - */ - uploadThese : function (files, url, postvars) { - if (!this.queue) { - var uploadURL = url || this.get("uploadURL"), - postVars = postvars || this.get("postVarsPerFile"); - - this.queue = new UploaderQueue({simUploads: this.get("simLimit"), - errorAction: this.get("errorAction"), - fileFieldName: this.get("fileFieldName"), - fileList: files, - uploadURL: uploadURL, - perFileParameters: postVars, - retryCount: this.get("retryCount"), - uploadHeaders: this.get("uploadHeaders"), - withCredentials: this.get("withCredentials") - }); - this.queue.on("uploadstart", this._uploadEventHandler, this); - this.queue.on("uploadprogress", this._uploadEventHandler, this); - this.queue.on("totaluploadprogress", this._uploadEventHandler, this); - this.queue.on("uploadcomplete", this._uploadEventHandler, this); - this.queue.on("alluploadscomplete", this._uploadEventHandler, this); - this.queue.on("uploadcancel", this._uploadEventHandler, this); - this.queue.on("uploaderror", this._uploadEventHandler, this); - this.queue.startUpload(); - - this.fire("uploadstart"); - } - else if (this.queue._currentState === UploaderQueue.UPLOADING) { - this.queue.set("perFileParameters", this.get("postVarsPerFile")); - Y.each(files, function (file) { - this.queue.addToQueueBottom(file); - }, this); - } - } -}, - -{ - /** - * The template for the hidden file input field container. The file input field will only - * accept clicks if its visibility is set to hidden (and will not if it's `display` value - * is set to `none`) - * - * @property HTML5FILEFIELD_TEMPLATE - * @type {String} - * @static - */ - HTML5FILEFIELD_TEMPLATE: "", - - /** - * The template for the "Select Files" button. - * - * @property SELECT_FILES_BUTTON - * @type {String} - * @static - * @default "" - */ - SELECT_FILES_BUTTON: "", - - /** - * The static property reflecting the type of uploader that `Y.Uploader` - * aliases. The UploaderHTML5 value is `"html5"`. - * - * @property TYPE - * @type {String} - * @static - */ - TYPE: "html5", - - /** - * The identity of the widget. - * - * @property NAME - * @type String - * @default 'uploader' - * @readOnly - * @protected - * @static - */ - NAME: "uploader", - - /** - * Static property used to define the default attribute configuration of - * the Widget. - * - * @property ATTRS - * @type {Object} - * @protected - * @static - */ - ATTRS: { - - /** - * A Boolean indicating whether newly selected files should be appended - * to the existing file list, or whether they should replace it. - * - * @attribute appendNewFiles - * @type {Boolean} - * @default true - */ - appendNewFiles : { - value: true - }, - - /** - * The names of CSS classes that correspond to different button states - * of the "Select Files" control. These classes are assigned to the - * "Select Files" control based on the configuration of the uploader. - * Currently, the only class name used is that corresponding to the - * `disabled` state of the uploader. Other button states should be managed - * directly via CSS selectors. - *
            - *
          • `disabled`: the class corresponding to the disabled state - * of the "Select Files" button.
          • - *
          - * @attribute buttonClassNames - * @type {Object} - * @default { - * disabled: "yui3-button-disabled" - * } - */ - buttonClassNames: { - value: { - "hover": "yui3-button-hover", - "active": "yui3-button-active", - "disabled": "yui3-button-disabled", - "focus": "yui3-button-selected" - } - }, - - /** - * The node that serves as the drop target for files. - * - * @attribute dragAndDropArea - * @type {Node} - * @default null - */ - dragAndDropArea: { - value: null, - setter: function (val) { - return Y.one(val); - } - }, - - /** - * A Boolean indicating whether the uploader is enabled or disabled for user input. - * - * @attribute enabled - * @type {Boolean} - * @default true - */ - enabled : { - value: true - }, - - /** - * The action performed when an upload error occurs for a specific file being uploaded. - * The possible values are: - *
            - *
          • `UploaderQueue.CONTINUE`: the error is ignored and the upload process is continued.
          • - *
          • `UploaderQueue.STOP`: the upload process is stopped as soon as any other parallel file - * uploads are finished.
          • - *
          • `UploaderQueue.RESTART_ASAP`: the file is added back to the front of the queue.
          • - *
          • `UploaderQueue.RESTART_AFTER`: the file is added to the back of the queue.
          • - *
          - * @attribute errorAction - * @type {String} - * @default UploaderQueue.CONTINUE - */ - errorAction: { - value: "continue", - validator: function (val, name) { - return (val === UploaderQueue.CONTINUE || val === UploaderQueue.STOP || val === UploaderQueue.RESTART_ASAP || val === UploaderQueue.RESTART_AFTER); } - }, - - /** - * An array indicating what fileFilters should be applied to the file - * selection dialog. Each element in the array should be a string - * indicating the Media (MIME) type for the files that should be supported - * for selection. The Media type strings should be properly formatted - * or this parameter will be ignored. Examples of valid strings include: - * "audio/*", "video/*", "application/pdf", etc. More information - * on valid Media type strings is available here: - * http://www.iana.org/assignments/media-types/index.html - * @attribute fileFilters - * @type {Array} - * @default [] - */ - fileFilters: { - value: [] - }, - - /** - * A filtering function that is applied to every file selected by the user. - * The function receives the `Y.File` object and must return a Boolean value. - * If a `false` value is returned, the file in question is not added to the - * list of files to be uploaded. - * Use this function to put limits on file sizes or check the file names for - * correct extension, but make sure that a server-side check is also performed, - * since any client-side restrictions are only advisory and can be circumvented. - * - * @attribute fileFilterFunction - * @type {Function} - * @default null - */ - fileFilterFunction: { - value: null - }, - - /** - * A String specifying what should be the POST field name for the file - * content in the upload request. - * - * @attribute fileFieldName - * @type {String} - * @default Filedata - */ - fileFieldName: { - value: "Filedata" - }, - - /** - * The array of files to be uploaded. All elements in the array - * must be instances of `Y.File` and be instantiated with an instance - * of native JavaScript File() class. - * - * @attribute fileList - * @type {Array} - * @default [] - */ - fileList: { - value: [], - getter: "_getFileList", - setter: "_setFileList" - }, - - /** - * A Boolean indicating whether multiple file selection is enabled. - * - * @attribute multipleFiles - * @type {Boolean} - * @default false - */ - multipleFiles: { - value: false - }, - - /** - * An object, keyed by `fileId`, containing sets of key-value pairs - * that should be passed as POST variables along with each corresponding - * file. This attribute is only used if no POST variables are specifed - * in the upload method call. - * - * @attribute postVarsPerFile - * @type {Object} - * @default {} - */ - postVarsPerFile: { - value: {} - }, - - /** - * The label for the "Select Files" widget. This is the value that replaces the - * `{selectButtonLabel}` token in the `SELECT_FILES_BUTTON` template. - * - * @attribute selectButtonLabel - * @type {String} - * @default "Select Files" - */ - selectButtonLabel: { - value: "Select Files" - }, - - /** - * The widget that serves as the "Select Files control for the file uploader - * - * - * @attribute selectFilesButton - * @type {Node | Widget} - * @default A standard HTML button with YUI CSS Button skin. - */ - selectFilesButton : { - valueFn: function () { - return Y.Node.create(substitute(Y.UploaderHTML5.SELECT_FILES_BUTTON, {selectButtonLabel: this.get("selectButtonLabel"), - tabIndex: this.get("tabIndex")})); - } - }, - - /** - * The number of files that can be uploaded - * simultaneously if the automatic queue management - * is used. This value can be in the range between 2 - * and 5. - * - * @attribute simLimit - * @type {Number} - * @default 2 - */ - simLimit: { - value: 2, - validator: function (val, name) { - return (val >= 1 && val <= 5); - } - }, - - /** - * The URL to which file upload requested are POSTed. Only used if a different url is not passed to the upload method call. - * - * @attribute uploadURL - * @type {String} - * @default "" - */ - uploadURL: { - value: "" - }, - - /** - * Additional HTTP headers that should be included - * in the upload request. - * - * - * @attribute uploadHeaders - * @type {Object} - * @default {} - */ - uploadHeaders: { - value: {} - }, - - /** - * A Boolean that specifies whether the file should be - * uploaded with the appropriate user credentials for the - * domain. - * - * @attribute withCredentials - * @type {Boolean} - * @default true - */ - withCredentials: { - value: true - }, - - /** - * The number of times to try re-uploading a file that failed to upload before - * cancelling its upload. - * - * @attribute retryCount - * @type {Number} - * @default 3 - */ - retryCount: { - value: 3 - } - } -}); - -Y.UploaderHTML5.Queue = UploaderQueue; - - - -}, '3.7.3', {"requires": ["widget", "node-event-simulate", "substitute", "file-html5", "uploader-queue"]}); diff --git a/lib/yuilib/3.7.3/build/uploader-html5/uploader-html5-min.js b/lib/yuilib/3.7.3/build/uploader-html5/uploader-html5-min.js deleted file mode 100644 index 0606b4833ce..00000000000 --- a/lib/yuilib/3.7.3/build/uploader-html5/uploader-html5-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("uploader-html5",function(e,t){function i(e){i.superclass.constructor.apply(this,arguments)}var n=e.substitute,r=e.Uploader.Queue;e.UploaderHTML5=e.extend(i,e.Widget,{_fileInputField:null,_buttonBinding:null,queue:null,initializer:function(){this._fileInputField=null,this.queue=null,this._buttonBinding=null,this._fileList=[],this.publish("fileselect"),this.publish("uploadstart"),this.publish("fileuploadstart"),this.publish("uploadprogress"),this.publish("totaluploadprogress"),this.publish("uploadcomplete"),this.publish("alluploadscomplete"),this.publish("uploaderror"),this.publish("dragenter"),this.publish("dragover"),this.publish("dragleave"),this.publish("drop")},renderUI:function(){var t=this.get("boundingBox"),n=this.get("contentBox"),r=this.get("selectFilesButton");r.setStyles({width:"100%",height:"100%"}),n.append(r),this._fileInputField=e.Node.create(i.HTML5FILEFIELD_TEMPLATE),n.append(this._fileInputField)},bindUI:function(){this._bindSelectButton(),this._setMultipleFiles(),this._setFileFilters(),this._bindDropArea(),this._triggerEnabled(),this.after("multipleFilesChange",this._setMultipleFiles,this),this.after("fileFiltersChange",this._setFileFilters,this),this.after("enabledChange",this._triggerEnabled,this),this.after("selectFilesButtonChange",this._bindSelectButton,this),this.after("dragAndDropAreaChange",this._bindDropArea,this),this.after("tabIndexChange",function(e){this.get("selectFilesButton").set("tabIndex",this.get("tabIndex"))},this),this._fileInputField.on("change",this._updateFileList,this),this.get("selectFilesButton").set("tabIndex",this.get("tabIndex"))},_rebindFileField:function(){this._fileInputField.remove(!0),this._fileInputField=e.Node.create(i.HTML5FILEFIELD_TEMPLATE),this.get("contentBox").append(this._fileInputField),this._fileInputField.on("change",this._updateFileList,this),this._setMultipleFiles(),this._setFileFilters()},_bindDropArea:function(e){var t=e||{prevVal:null};t.prevVal!==null&&(t.prevVal.detach("drop",this._ddEventHandler),t.prevVal.detach("dragenter",this._ddEventHandler),t.prevVal.detach("dragover",this._ddEventHandler),t.prevVal.detach("dragleave",this._ddEventHandler));var n=this.get("dragAndDropArea");n!==null&&(n.on("drop",this._ddEventHandler,this),n.on("dragenter",this._ddEventHandler,this),n.on("dragover",this._ddEventHandler,this),n.on("dragleave",this._ddEventHandler,this))},_bindSelectButton:function(){this._buttonBinding=this.get("selectFilesButton").on("click",this.openFileSelectDialog,this)},_ddEventHandler:function(t){t.stopPropagation(),t.preventDefault();switch(t.type){case"dragenter":this.fire("dragenter");break;case"dragover":this.fire("dragover");break;case"dragleave":this.fire("dragleave");break;case"drop":var n=t._event.dataTransfer.files,r=[],i=this.get("fileFilterFunction");i?e.each(n,function(t){var n=new e.FileHTML5(t);i(n)&&r.push(n)}):e.each(n,function(t){r.push(new e.FileHTML5(t))});if(r.length>0){var s=this.get("fileList");this.set("fileList",this.get("appendNewFiles")?s.concat(r):r),this.fire("fileselect",{fileList:r})}this.fire("drop")}},_setButtonClass:function(e,t){t?this.get("selectFilesButton").addClass(this.get("buttonClassNames")[e]):this.get("selectFilesButton").removeClass(this.get("buttonClassNames")[e])},_setMultipleFiles:function(){this.get("multipleFiles")===!0?this._fileInputField.set("multiple","multiple"):this._fileInputField.set("multiple","")},_setFileFilters:function(){this.get("fileFilters").length>0?this._fileInputField.set("accept",this.get("fileFilters").join(",")):this._fileInputField.set("accept","")},_triggerEnabled:function(){this.get("enabled")&&this._buttonBinding===null?(this._bindSelectButton(),this._setButtonClass("disabled",!1),this.get("selectFilesButton").setAttribute("aria-disabled","false")):!this.get("enabled")&&this._buttonBinding&&(this._buttonBinding.detach(),this._buttonBinding=null,this._setButtonClass("disabled",!0),this.get("selectFilesButton").setAttribute("aria-disabled","true"))},_getFileList:function(e){return this._fileList.concat()},_setFileList:function(e){return this._fileList=e.concat(),this._fileList.concat()},_updateFileList:function(t){var n=t.target.getDOMNode().files,r=[],i=this.get("fileFilterFunction");i?e.each(n,function(t){var n=new e.FileHTML5(t);i(n)&&r.push(n)}):e.each(n,function(t){r.push(new e.FileHTML5(t))});if(r.length>0){var s=this.get("fileList");this.set("fileList",this.get("appendNewFiles")?s.concat(r):r),this.fire("fileselect",{fileList:r})}this._rebindFileField()},_uploadEventHandler:function(e){switch(e.type){case"file:uploadstart":this.fire("fileuploadstart",e);break;case"file:uploadprogress":this.fire("uploadprogress",e);break;case"uploaderqueue:totaluploadprogress":this.fire("totaluploadprogress",e);break;case"file:uploadcomplete":this.fire("uploadcomplete",e);break;case"uploaderqueue:alluploadscomplete":this.queue=null,this.fire("alluploadscomplete",e);break;case"file:uploaderror":case"uploaderqueue:uploaderror":this.fire("uploaderror",e);break;case"file:uploadcancel":case"uploaderqueue:uploadcancel":this.fire("uploadcancel",e)}},openFileSelectDialog:function(){var e=this._fileInputField.getDOMNode();e.click&&e.click()},upload:function(t,n,r){var i=n||this.get("uploadURL"),s=r||this.get("postVarsPerFile"),o=t.get("id");s=s.hasOwnProperty(o)?s[o]:s,t instanceof e.FileHTML5&&(t.on("uploadstart",this._uploadEventHandler,this),t.on("uploadprogress",this._uploadEventHandler,this),t.on("uploadcomplete",this._uploadEventHandler,this),t.on("uploaderror",this._uploadEventHandler,this),t.on("uploadcancel",this._uploadEventHandler,this),t.startUpload(i,s,this.get("fileFieldName")))},uploadAll:function(e,t){this.uploadThese(this.get("fileList"),e,t)},uploadThese:function(t,n,i){if(!this.queue){var s=n||this.get("uploadURL"),o=i||this.get("postVarsPerFile");this.queue=new r({simUploads:this.get("simLimit"),errorAction:this.get("errorAction"),fileFieldName:this.get("fileFieldName"),fileList:t,uploadURL:s,perFileParameters:o,retryCount:this.get("retryCount"),uploadHeaders:this.get("uploadHeaders"),withCredentials:this.get("withCredentials")}),this.queue.on("uploadstart",this._uploadEventHandler,this),this.queue.on("uploadprogress",this._uploadEventHandler,this),this.queue.on("totaluploadprogress",this._uploadEventHandler,this),this.queue.on("uploadcomplete",this._uploadEventHandler,this),this.queue.on("alluploadscomplete",this._uploadEventHandler,this),this.queue.on("uploadcancel",this._uploadEventHandler,this),this.queue.on("uploaderror",this._uploadEventHandler,this),this.queue.startUpload(),this.fire("uploadstart")}else this.queue._currentState===r.UPLOADING&&(this.queue.set("perFileParameters",this.get("postVarsPerFile")),e.each(t,function(e){this.queue.addToQueueBottom(e)},this))}},{HTML5FILEFIELD_TEMPLATE:"",SELECT_FILES_BUTTON:"",TYPE:"html5",NAME:"uploader",ATTRS:{appendNewFiles:{value:!0},buttonClassNames:{value:{hover:"yui3-button-hover",active:"yui3-button-active",disabled:"yui3-button-disabled",focus:"yui3-button-selected"}},dragAndDropArea:{value:null,setter:function(t){return e.one(t)}},enabled:{value:!0},errorAction:{value:"continue",validator:function(e,t){return e===r.CONTINUE||e===r.STOP||e===r.RESTART_ASAP||e===r.RESTART_AFTER}},fileFilters:{value:[]},fileFilterFunction:{value:null},fileFieldName:{value:"Filedata"},fileList:{value:[],getter:"_getFileList",setter:"_setFileList"},multipleFiles:{value:!1},postVarsPerFile:{value:{}},selectButtonLabel:{value:"Select Files"},selectFilesButton:{valueFn:function(){return e.Node.create(n(e.UploaderHTML5.SELECT_FILES_BUTTON,{selectButtonLabel:this.get("selectButtonLabel"),tabIndex:this.get("tabIndex")}))}},simLimit:{value:2,validator:function(e,t){return e>=1&&e<=5}},uploadURL:{value:""},uploadHeaders:{value:{}},withCredentials:{value:!0},retryCount:{value:3}}}),e.UploaderHTML5.Queue=r},"3.7.3",{requires:["widget","node-event-simulate","substitute","file-html5","uploader-queue"]}); diff --git a/lib/yuilib/3.7.3/build/uploader-html5/uploader-html5.js b/lib/yuilib/3.7.3/build/uploader-html5/uploader-html5.js deleted file mode 100644 index 902c4b98eda..00000000000 --- a/lib/yuilib/3.7.3/build/uploader-html5/uploader-html5.js +++ /dev/null @@ -1,989 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add('uploader-html5', function (Y, NAME) { - - - /** - * This module provides a UI for file selection and multiple file upload capability using - * HTML5 XMLHTTPRequest Level 2 as a transport engine. - * The supported features include: automatic upload queue management, upload progress - * tracking, drag-and-drop support, server response retrieval and error reporting. - * - * @module uploader-html5 - */ - -// Shorthands for the external modules -var substitute = Y.substitute, - UploaderQueue = Y.Uploader.Queue; - - /** - * This module provides a UI for file selection and multiple file upload capability using - * HTML5 XMLHTTPRequest Level 2 as a transport engine. - * @class UploaderHTML5 - * @extends Widget - * @constructor - */ - -function UploaderHTML5(config) { - UploaderHTML5.superclass.constructor.apply ( this, arguments ); -} - - - -Y.UploaderHTML5 = Y.extend( UploaderHTML5, Y.Widget, { - - /** - * Stored reference to the instance of the file input field used to - * initiate the file selection dialog. - * - * @property _fileInputField - * @type {Node} - * @protected - */ - _fileInputField: null, - - /** - * Stored reference to the click event binding of the `Select Files` - * button. - * - * @property _buttonBinding - * @type {EventHandle} - * @protected - */ - _buttonBinding: null, - - /** - * Stored reference to the instance of Uploader.Queue used to manage - * the upload process. This is a read-only property that only exists - * during an active upload process. Only one queue can be active at - * a time; if an upload start is attempted while a queue is active, - * it will be ignored. - * - * @property queue - * @type {Y.Uploader.Queue} - */ - queue: null, - - // Y.UploaderHTML5 prototype - - /** - * Construction logic executed during UploaderHTML5 instantiation. - * - * @method initializer - * @protected - */ - initializer : function () { - - this._fileInputField = null; - this.queue = null; - this._buttonBinding = null; - this._fileList = []; - - // Publish available events - - /** - * Signals that files have been selected. - * - * @event fileselect - * @param event {Event} The event object for the `fileselect` with the - * following payload: - *
          - *
          fileList
          - *
          An `Array` of files selected by the user, encapsulated - * in Y.FileHTML5 objects.
          - *
          - */ - this.publish("fileselect"); - - /** - * Signals that an upload of multiple files has been started. - * - * @event uploadstart - * @param event {Event} The event object for the `uploadstart`. - */ - this.publish("uploadstart"); - - /** - * Signals that an upload of a specific file has started. - * - * @event fileuploadstart - * @param event {Event} The event object for the `fileuploadstart` with the - * following payload: - *
          - *
          file
          - *
          A reference to the Y.File that dispatched the event.
          - *
          originEvent
          - *
          The original event dispatched by Y.File.
          - *
          - */ - this.publish("fileuploadstart"); - - /** - * Reports on upload progress of a specific file. - * - * @event uploadprogress - * @param event {Event} The event object for the `uploadprogress` with the - * following payload: - *
          - *
          file
          - *
          The pointer to the instance of `Y.File` that dispatched the event.
          - *
          bytesLoaded
          - *
          The number of bytes of the file that has been uploaded
          - *
          bytesTotal
          - *
          The total number of bytes in the file
          - *
          percentLoaded
          - *
          The fraction of the file that has been uploaded, out of 100
          - *
          originEvent
          - *
          The original event dispatched by the HTML5 uploader
          - *
          - */ - this.publish("uploadprogress"); - - /** - * Reports on the total upload progress of the file list. - * - * @event totaluploadprogress - * @param event {Event} The event object for the `totaluploadprogress` with the - * following payload: - *
          - *
          bytesLoaded
          - *
          The number of bytes of the file list that has been uploaded
          - *
          bytesTotal
          - *
          The total number of bytes in the file list
          - *
          percentLoaded
          - *
          The fraction of the file list that has been uploaded, out of 100
          - *
          - */ - this.publish("totaluploadprogress"); - - /** - * Signals that a single file upload has been completed. - * - * @event uploadcomplete - * @param event {Event} The event object for the `uploadcomplete` with the - * following payload: - *
          - *
          file
          - *
          The pointer to the instance of `Y.File` whose upload has been completed.
          - *
          originEvent
          - *
          The original event fired by the SWF Uploader
          - *
          data
          - *
          Data returned by the server.
          - *
          - */ - this.publish("uploadcomplete"); - - /** - * Signals that the upload process of the entire file list has been completed. - * - * @event alluploadscomplete - * @param event {Event} The event object for the `alluploadscomplete`. - */ - this.publish("alluploadscomplete"); - - /** - * Signals that a error has occurred in a specific file's upload process. - * - * @event uploaderror - * @param event {Event} The event object for the `uploaderror` with the - * following payload: - *
          - *
          originEvent
          - *
          The original error event fired by the HTML5 Uploader.
          - *
          file
          - *
          The pointer at the instance of Y.File that returned the error.
          - *
          status
          - *
          The status reported by the XMLHttpRequest object.
          - *
          statusText
          - *
          The statusText reported by the XMLHttpRequest object.
          - *
          - */ - this.publish("uploaderror"); - - /** - * Signals that a dragged object has entered into the uploader's associated drag-and-drop area. - * - * @event dragenter - * @param event {Event} The event object for the `dragenter`. - */ - this.publish("dragenter"); - - /** - * Signals that an object has been dragged over the uploader's associated drag-and-drop area. - * - * @event dragover - * @param event {Event} The event object for the `dragover`. - */ - this.publish("dragover"); - - /** - * Signals that an object has been dragged off of the uploader's associated drag-and-drop area. - * - * @event dragleave - * @param event {Event} The event object for the `dragleave`. - */ - this.publish("dragleave"); - - /** - * Signals that an object has been dropped over the uploader's associated drag-and-drop area. - * - * @event drop - * @param event {Event} The event object for the `drop`. - */ - this.publish("drop"); - - }, - - /** - * Create the DOM structure for the UploaderHTML5. - * UploaderHTML5's DOM structure consists of a "Select Files" button that can - * be replaced by the developer's widget of choice; and a hidden file input field - * that is used to instantiate the File Select dialog. - * - * @method renderUI - * @protected - */ - renderUI : function () { - var boundingBox = this.get("boundingBox"), - contentBox = this.get('contentBox'), - selButton = this.get("selectFilesButton"); - - selButton.setStyles({width:"100%", height:"100%"}); - contentBox.append(selButton); - this._fileInputField = Y.Node.create(UploaderHTML5.HTML5FILEFIELD_TEMPLATE); - contentBox.append(this._fileInputField); - }, - - /** - * Binds to the UploaderHTML5 UI and subscribes to the necessary events. - * - * @method bindUI - * @protected - */ - bindUI : function () { - - this._bindSelectButton(); - this._setMultipleFiles(); - this._setFileFilters(); - this._bindDropArea(); - this._triggerEnabled(); - - this.after("multipleFilesChange", this._setMultipleFiles, this); - this.after("fileFiltersChange", this._setFileFilters, this); - this.after("enabledChange", this._triggerEnabled, this); - this.after("selectFilesButtonChange", this._bindSelectButton, this); - this.after("dragAndDropAreaChange", this._bindDropArea, this); - this.after("tabIndexChange", function (ev) {this.get("selectFilesButton").set("tabIndex", this.get("tabIndex"));}, this); - this._fileInputField.on("change", this._updateFileList, this); - - this.get("selectFilesButton").set("tabIndex", this.get("tabIndex")); - }, - - - /** - * Recreates the file field to null out the previous list of files and - * thus allow for an identical file list selection. - * - * @method _rebindFileField - * @protected - */ - _rebindFileField : function () { - this._fileInputField.remove(true); - this._fileInputField = Y.Node.create(UploaderHTML5.HTML5FILEFIELD_TEMPLATE); - this.get("contentBox").append(this._fileInputField); - this._fileInputField.on("change", this._updateFileList, this); - this._setMultipleFiles(); - this._setFileFilters(); - }, - - - /** - * Binds the specified drop area's drag and drop events to the - * uploader's custom handler. - * - * @method _bindDropArea - * @protected - */ - _bindDropArea : function (event) { - var ev = event || {prevVal: null}; - - if (ev.prevVal !== null) { - ev.prevVal.detach('drop', this._ddEventHandler); - ev.prevVal.detach('dragenter', this._ddEventHandler); - ev.prevVal.detach('dragover', this._ddEventHandler); - ev.prevVal.detach('dragleave', this._ddEventHandler); - } - - var ddArea = this.get("dragAndDropArea"); - - if (ddArea !== null) { - ddArea.on('drop', this._ddEventHandler, this); - ddArea.on('dragenter', this._ddEventHandler, this); - ddArea.on('dragover', this._ddEventHandler, this); - ddArea.on('dragleave', this._ddEventHandler, this); - } - }, - - /** - * Binds the instantiation of the file select dialog to the current file select - * control. - * - * @method _bindSelectButton - * @protected - */ - _bindSelectButton : function () { - this._buttonBinding = this.get("selectFilesButton").on("click", this.openFileSelectDialog, this); - }, - - /** - * Handles the drag and drop events from the uploader's specified drop - * area. - * - * @method _ddEventHandler - * @protected - */ - _ddEventHandler : function (event) { - - event.stopPropagation(); - event.preventDefault(); - - switch (event.type) { - case "dragenter": - this.fire("dragenter"); - break; - case "dragover": - this.fire("dragover"); - break; - case "dragleave": - this.fire("dragleave"); - break; - case "drop": - - var newfiles = event._event.dataTransfer.files, - parsedFiles = [], - filterFunc = this.get("fileFilterFunction"); - - if (filterFunc) { - Y.each(newfiles, function (value) { - var newfile = new Y.FileHTML5(value); - if (filterFunc(newfile)) { - parsedFiles.push(newfile); - } - }); - } - else { - Y.each(newfiles, function (value) { - parsedFiles.push(new Y.FileHTML5(value)); - }); - } - - if (parsedFiles.length > 0) { - var oldfiles = this.get("fileList"); - this.set("fileList", - this.get("appendNewFiles") ? oldfiles.concat(parsedFiles) : parsedFiles); - this.fire("fileselect", {fileList: parsedFiles}); - } - - this.fire("drop"); - break; - } - }, - - /** - * Adds or removes a specified state CSS class to the underlying uploader button. - * - * @method _setButtonClass - * @protected - * @param state {String} The name of the state enumerated in `buttonClassNames` attribute - * from which to derive the needed class name. - * @param add {Boolean} A Boolean indicating whether to add or remove the class. - */ - _setButtonClass : function (state, add) { - if (add) { - this.get("selectFilesButton").addClass(this.get("buttonClassNames")[state]); - } - else { - this.get("selectFilesButton").removeClass(this.get("buttonClassNames")[state]); - } - }, - - /** - * Syncs the state of the `multipleFiles` attribute between this class - * and the file input field. - * - * @method _setMultipleFiles - * @protected - */ - _setMultipleFiles : function () { - if (this.get("multipleFiles") === true) { - this._fileInputField.set("multiple", "multiple"); - } - else { - this._fileInputField.set("multiple", ""); - } - }, - - /** - * Syncs the state of the `fileFilters` attribute between this class - * and the file input field. - * - * @method _setFileFilters - * @protected - */ - _setFileFilters : function () { - if (this.get("fileFilters").length > 0) { - this._fileInputField.set("accept", this.get("fileFilters").join(",")); - } - else { - this._fileInputField.set("accept", ""); - } - }, - - - /** - * Syncs the state of the `enabled` attribute between this class - * and the underlying button. - * - * @method _triggerEnabled - * @private - */ - _triggerEnabled : function () { - if (this.get("enabled") && this._buttonBinding === null) { - this._bindSelectButton(); - this._setButtonClass("disabled", false); - this.get("selectFilesButton").setAttribute("aria-disabled", "false"); - } - else if (!this.get("enabled") && this._buttonBinding) { - this._buttonBinding.detach(); - this._buttonBinding = null; - this._setButtonClass("disabled", true); - this.get("selectFilesButton").setAttribute("aria-disabled", "true"); - } - }, - - /** - * Getter for the `fileList` attribute - * - * @method _getFileList - * @private - */ - _getFileList : function (arr) { - return this._fileList.concat(); - }, - - /** - * Setter for the `fileList` attribute - * - * @method _setFileList - * @private - */ - _setFileList : function (val) { - this._fileList = val.concat(); - return this._fileList.concat(); - }, - - /** - * Adjusts the content of the `fileList` based on the results of file selection - * and the `appendNewFiles` attribute. If the `appendNewFiles` attribute is true, - * then selected files are appended to the existing list; otherwise, the list is - * cleared and populated with the newly selected files. - * - * @method _updateFileList - * @param ev {Event} The file selection event received from the uploader. - * @protected - */ - _updateFileList : function (ev) { - var newfiles = ev.target.getDOMNode().files, - parsedFiles = [], - filterFunc = this.get("fileFilterFunction"); - - if (filterFunc) { - Y.each(newfiles, function (value) { - var newfile = new Y.FileHTML5(value); - if (filterFunc(newfile)) { - parsedFiles.push(newfile); - } - }); - } - else { - Y.each(newfiles, function (value) { - parsedFiles.push(new Y.FileHTML5(value)); - }); - } - - if (parsedFiles.length > 0) { - var oldfiles = this.get("fileList"); - - this.set("fileList", - this.get("appendNewFiles") ? oldfiles.concat(parsedFiles) : parsedFiles ); - - this.fire("fileselect", {fileList: parsedFiles}); - } - - this._rebindFileField(); - }, - - - /** - * Handles and retransmits events fired by `Y.File` and `Y.Uploader.Queue`. - * - * @method _uploadEventHandler - * @param event The event dispatched during the upload process. - * @protected - */ - _uploadEventHandler : function (event) { - - switch (event.type) { - case "file:uploadstart": - this.fire("fileuploadstart", event); - break; - case "file:uploadprogress": - this.fire("uploadprogress", event); - break; - case "uploaderqueue:totaluploadprogress": - this.fire("totaluploadprogress", event); - break; - case "file:uploadcomplete": - this.fire("uploadcomplete", event); - break; - case "uploaderqueue:alluploadscomplete": - this.queue = null; - this.fire("alluploadscomplete", event); - break; - case "file:uploaderror": - case "uploaderqueue:uploaderror": - this.fire("uploaderror", event); - break; - case "file:uploadcancel": - case "uploaderqueue:uploadcancel": - this.fire("uploadcancel", event); - break; - } - - }, - - /** - * Opens the File Selection dialog by simulating a click on the file input field. - * - * @method openFileSelectDialog - */ - openFileSelectDialog : function () { - var fileDomNode = this._fileInputField.getDOMNode(); - if (fileDomNode.click) { - fileDomNode.click(); - } - }, - - /** - * Starts the upload of a specific file. - * - * @method upload - * @param file {Y.File} Reference to the instance of the file to be uploaded. - * @param url {String} The URL to upload the file to. - * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request. - * If not specified, the values from the attribute `postVarsPerFile` are used instead. - */ - upload : function (file, url, postvars) { - - var uploadURL = url || this.get("uploadURL"), - postVars = postvars || this.get("postVarsPerFile"), - fileId = file.get("id"); - - postVars = postVars.hasOwnProperty(fileId) ? postVars[fileId] : postVars; - - if (file instanceof Y.FileHTML5) { - - file.on("uploadstart", this._uploadEventHandler, this); - file.on("uploadprogress", this._uploadEventHandler, this); - file.on("uploadcomplete", this._uploadEventHandler, this); - file.on("uploaderror", this._uploadEventHandler, this); - file.on("uploadcancel", this._uploadEventHandler, this); - - file.startUpload(uploadURL, postVars, this.get("fileFieldName")); - } - }, - - /** - * Starts the upload of all files on the file list, using an automated queue. - * - * @method uploadAll - * @param url {String} The URL to upload the files to. - * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request. - * If not specified, the values from the attribute `postVarsPerFile` are used instead. - */ - uploadAll : function (url, postvars) { - this.uploadThese(this.get("fileList"), url, postvars); - }, - - /** - * Starts the upload of the files specified in the first argument, using an automated queue. - * - * @method uploadThese - * @param files {Array} The list of files to upload. - * @param url {String} The URL to upload the files to. - * @param postVars {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request. - * If not specified, the values from the attribute `postVarsPerFile` are used instead. - */ - uploadThese : function (files, url, postvars) { - if (!this.queue) { - var uploadURL = url || this.get("uploadURL"), - postVars = postvars || this.get("postVarsPerFile"); - - this.queue = new UploaderQueue({simUploads: this.get("simLimit"), - errorAction: this.get("errorAction"), - fileFieldName: this.get("fileFieldName"), - fileList: files, - uploadURL: uploadURL, - perFileParameters: postVars, - retryCount: this.get("retryCount"), - uploadHeaders: this.get("uploadHeaders"), - withCredentials: this.get("withCredentials") - }); - this.queue.on("uploadstart", this._uploadEventHandler, this); - this.queue.on("uploadprogress", this._uploadEventHandler, this); - this.queue.on("totaluploadprogress", this._uploadEventHandler, this); - this.queue.on("uploadcomplete", this._uploadEventHandler, this); - this.queue.on("alluploadscomplete", this._uploadEventHandler, this); - this.queue.on("uploadcancel", this._uploadEventHandler, this); - this.queue.on("uploaderror", this._uploadEventHandler, this); - this.queue.startUpload(); - - this.fire("uploadstart"); - } - else if (this.queue._currentState === UploaderQueue.UPLOADING) { - this.queue.set("perFileParameters", this.get("postVarsPerFile")); - Y.each(files, function (file) { - this.queue.addToQueueBottom(file); - }, this); - } - } -}, - -{ - /** - * The template for the hidden file input field container. The file input field will only - * accept clicks if its visibility is set to hidden (and will not if it's `display` value - * is set to `none`) - * - * @property HTML5FILEFIELD_TEMPLATE - * @type {String} - * @static - */ - HTML5FILEFIELD_TEMPLATE: "", - - /** - * The template for the "Select Files" button. - * - * @property SELECT_FILES_BUTTON - * @type {String} - * @static - * @default "" - */ - SELECT_FILES_BUTTON: "", - - /** - * The static property reflecting the type of uploader that `Y.Uploader` - * aliases. The UploaderHTML5 value is `"html5"`. - * - * @property TYPE - * @type {String} - * @static - */ - TYPE: "html5", - - /** - * The identity of the widget. - * - * @property NAME - * @type String - * @default 'uploader' - * @readOnly - * @protected - * @static - */ - NAME: "uploader", - - /** - * Static property used to define the default attribute configuration of - * the Widget. - * - * @property ATTRS - * @type {Object} - * @protected - * @static - */ - ATTRS: { - - /** - * A Boolean indicating whether newly selected files should be appended - * to the existing file list, or whether they should replace it. - * - * @attribute appendNewFiles - * @type {Boolean} - * @default true - */ - appendNewFiles : { - value: true - }, - - /** - * The names of CSS classes that correspond to different button states - * of the "Select Files" control. These classes are assigned to the - * "Select Files" control based on the configuration of the uploader. - * Currently, the only class name used is that corresponding to the - * `disabled` state of the uploader. Other button states should be managed - * directly via CSS selectors. - *
            - *
          • `disabled`: the class corresponding to the disabled state - * of the "Select Files" button.
          • - *
          - * @attribute buttonClassNames - * @type {Object} - * @default { - * disabled: "yui3-button-disabled" - * } - */ - buttonClassNames: { - value: { - "hover": "yui3-button-hover", - "active": "yui3-button-active", - "disabled": "yui3-button-disabled", - "focus": "yui3-button-selected" - } - }, - - /** - * The node that serves as the drop target for files. - * - * @attribute dragAndDropArea - * @type {Node} - * @default null - */ - dragAndDropArea: { - value: null, - setter: function (val) { - return Y.one(val); - } - }, - - /** - * A Boolean indicating whether the uploader is enabled or disabled for user input. - * - * @attribute enabled - * @type {Boolean} - * @default true - */ - enabled : { - value: true - }, - - /** - * The action performed when an upload error occurs for a specific file being uploaded. - * The possible values are: - *
            - *
          • `UploaderQueue.CONTINUE`: the error is ignored and the upload process is continued.
          • - *
          • `UploaderQueue.STOP`: the upload process is stopped as soon as any other parallel file - * uploads are finished.
          • - *
          • `UploaderQueue.RESTART_ASAP`: the file is added back to the front of the queue.
          • - *
          • `UploaderQueue.RESTART_AFTER`: the file is added to the back of the queue.
          • - *
          - * @attribute errorAction - * @type {String} - * @default UploaderQueue.CONTINUE - */ - errorAction: { - value: "continue", - validator: function (val, name) { - return (val === UploaderQueue.CONTINUE || val === UploaderQueue.STOP || val === UploaderQueue.RESTART_ASAP || val === UploaderQueue.RESTART_AFTER); } - }, - - /** - * An array indicating what fileFilters should be applied to the file - * selection dialog. Each element in the array should be a string - * indicating the Media (MIME) type for the files that should be supported - * for selection. The Media type strings should be properly formatted - * or this parameter will be ignored. Examples of valid strings include: - * "audio/*", "video/*", "application/pdf", etc. More information - * on valid Media type strings is available here: - * http://www.iana.org/assignments/media-types/index.html - * @attribute fileFilters - * @type {Array} - * @default [] - */ - fileFilters: { - value: [] - }, - - /** - * A filtering function that is applied to every file selected by the user. - * The function receives the `Y.File` object and must return a Boolean value. - * If a `false` value is returned, the file in question is not added to the - * list of files to be uploaded. - * Use this function to put limits on file sizes or check the file names for - * correct extension, but make sure that a server-side check is also performed, - * since any client-side restrictions are only advisory and can be circumvented. - * - * @attribute fileFilterFunction - * @type {Function} - * @default null - */ - fileFilterFunction: { - value: null - }, - - /** - * A String specifying what should be the POST field name for the file - * content in the upload request. - * - * @attribute fileFieldName - * @type {String} - * @default Filedata - */ - fileFieldName: { - value: "Filedata" - }, - - /** - * The array of files to be uploaded. All elements in the array - * must be instances of `Y.File` and be instantiated with an instance - * of native JavaScript File() class. - * - * @attribute fileList - * @type {Array} - * @default [] - */ - fileList: { - value: [], - getter: "_getFileList", - setter: "_setFileList" - }, - - /** - * A Boolean indicating whether multiple file selection is enabled. - * - * @attribute multipleFiles - * @type {Boolean} - * @default false - */ - multipleFiles: { - value: false - }, - - /** - * An object, keyed by `fileId`, containing sets of key-value pairs - * that should be passed as POST variables along with each corresponding - * file. This attribute is only used if no POST variables are specifed - * in the upload method call. - * - * @attribute postVarsPerFile - * @type {Object} - * @default {} - */ - postVarsPerFile: { - value: {} - }, - - /** - * The label for the "Select Files" widget. This is the value that replaces the - * `{selectButtonLabel}` token in the `SELECT_FILES_BUTTON` template. - * - * @attribute selectButtonLabel - * @type {String} - * @default "Select Files" - */ - selectButtonLabel: { - value: "Select Files" - }, - - /** - * The widget that serves as the "Select Files control for the file uploader - * - * - * @attribute selectFilesButton - * @type {Node | Widget} - * @default A standard HTML button with YUI CSS Button skin. - */ - selectFilesButton : { - valueFn: function () { - return Y.Node.create(substitute(Y.UploaderHTML5.SELECT_FILES_BUTTON, {selectButtonLabel: this.get("selectButtonLabel"), - tabIndex: this.get("tabIndex")})); - } - }, - - /** - * The number of files that can be uploaded - * simultaneously if the automatic queue management - * is used. This value can be in the range between 2 - * and 5. - * - * @attribute simLimit - * @type {Number} - * @default 2 - */ - simLimit: { - value: 2, - validator: function (val, name) { - return (val >= 1 && val <= 5); - } - }, - - /** - * The URL to which file upload requested are POSTed. Only used if a different url is not passed to the upload method call. - * - * @attribute uploadURL - * @type {String} - * @default "" - */ - uploadURL: { - value: "" - }, - - /** - * Additional HTTP headers that should be included - * in the upload request. - * - * - * @attribute uploadHeaders - * @type {Object} - * @default {} - */ - uploadHeaders: { - value: {} - }, - - /** - * A Boolean that specifies whether the file should be - * uploaded with the appropriate user credentials for the - * domain. - * - * @attribute withCredentials - * @type {Boolean} - * @default true - */ - withCredentials: { - value: true - }, - - /** - * The number of times to try re-uploading a file that failed to upload before - * cancelling its upload. - * - * @attribute retryCount - * @type {Number} - * @default 3 - */ - retryCount: { - value: 3 - } - } -}); - -Y.UploaderHTML5.Queue = UploaderQueue; - - - -}, '3.7.3', {"requires": ["widget", "node-event-simulate", "substitute", "file-html5", "uploader-queue"]}); diff --git a/lib/yuilib/3.7.3/build/uploader-queue/uploader-queue-coverage.js b/lib/yuilib/3.7.3/build/uploader-queue/uploader-queue-coverage.js deleted file mode 100644 index e39e0aee30f..00000000000 --- a/lib/yuilib/3.7.3/build/uploader-queue/uploader-queue-coverage.js +++ /dev/null @@ -1,859 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -if (typeof _yuitest_coverage == "undefined"){ - _yuitest_coverage = {}; - _yuitest_coverline = function(src, line){ - var coverage = _yuitest_coverage[src]; - if (!coverage.lines[line]){ - coverage.calledLines++; - } - coverage.lines[line]++; - }; - _yuitest_coverfunc = function(src, name, line){ - var coverage = _yuitest_coverage[src], - funcId = name + ":" + line; - if (!coverage.functions[funcId]){ - coverage.calledFunctions++; - } - coverage.functions[funcId]++; - }; -} -_yuitest_coverage["build/uploader-queue/uploader-queue.js"] = { - lines: {}, - functions: {}, - coveredLines: 0, - calledLines: 0, - coveredFunctions: 0, - calledFunctions: 0, - path: "build/uploader-queue/uploader-queue.js", - code: [] -}; -_yuitest_coverage["build/uploader-queue/uploader-queue.js"].code=["YUI.add('uploader-queue', function (Y, NAME) {","",""," /**"," * The class manages a queue of files that should be uploaded to the server."," * It initializes the required number of uploads, tracks them as they progress,"," * and automatically advances to the next upload when a preceding one has completed."," * @module uploader-queue"," */ ",""," var Lang = Y.Lang,"," Bind = Y.bind,"," Win = Y.config.win,"," queuedFiles,"," numberOfUploads, "," currentUploadedByteValues,"," currentFiles,"," totalBytesUploaded,"," totalBytes;",""," /**"," * This class manages a queue of files to be uploaded to the server."," * @class Uploader.Queue"," * @extends Base"," * @constructor"," * @param {Object} config Configuration object"," */"," var UploaderQueue = function(o) {"," this.queuedFiles = [];"," this.uploadRetries = {};"," this.numberOfUploads = 0;"," this.currentUploadedByteValues = {};"," this.currentFiles = {};"," this.totalBytesUploaded = 0;"," this.totalBytes = 0; "," "," UploaderQueue.superclass.constructor.apply(this, arguments);"," };","",""," Y.extend(UploaderQueue, Y.Base, {",""," /**"," * Stored value of the current queue state"," * @property _currentState"," * @type {String}"," * @protected"," * @default UploaderQueue.STOPPED"," */"," _currentState: UploaderQueue.STOPPED,",""," /**"," * Construction logic executed during UploaderQueue instantiation."," *"," * @method initializer"," * @protected"," */"," initializer : function (cfg) {",""," },",""," /**"," * Handles and retransmits upload start event."," * "," * @method _uploadStartHandler"," * @param event The event dispatched during the upload process."," * @private"," */"," _uploadStartHandler : function (event) {"," var updatedEvent = event;"," updatedEvent.file = event.target;"," updatedEvent.originEvent = event;"," "," this.fire(\"uploadstart\", updatedEvent); "," },",""," /**"," * Handles and retransmits upload error event."," * "," * @method _uploadErrorHandler"," * @param event The event dispatched during the upload process."," * @private"," */"," _uploadErrorHandler : function (event) {"," var errorAction = this.get(\"errorAction\");"," var updatedEvent = event;"," updatedEvent.file = event.target;"," updatedEvent.originEvent = event;",""," this.numberOfUploads-=1;"," delete this.currentFiles[event.target.get(\"id\")];"," this._detachFileEvents(event.target);",""," event.target.cancelUpload();",""," if (errorAction === UploaderQueue.STOP) {"," this.pauseUpload();"," }",""," else if (errorAction === UploaderQueue.RESTART_ASAP) {"," var fileid = event.target.get(\"id\"),"," retries = this.uploadRetries[fileid] || 0;"," if (retries < this.get(\"retryCount\")) {"," this.uploadRetries[fileid] = retries + 1;"," this.addToQueueTop(event.target);"," }"," this._startNextFile();"," }"," else if (errorAction === UploaderQueue.RESTART_AFTER) {"," var fileid = event.target.get(\"id\"),"," retries = this.uploadRetries[fileid] || 0;"," if (retries < this.get(\"retryCount\")) {"," this.uploadRetries[fileid] = retries + 1;"," this.addToQueueBottom(event.target);"," }"," this._startNextFile();"," }",""," this.fire(\"uploaderror\", updatedEvent); "," },",""," /**"," * Launches the upload of the next file in the queue."," * "," * @method _startNextFile"," * @private"," */"," _startNextFile : function () {"," if (this.queuedFiles.length > 0) {"," var currentFile = this.queuedFiles.shift(),"," fileId = currentFile.get(\"id\"),"," parameters = this.get(\"perFileParameters\"),"," fileParameters = parameters.hasOwnProperty(fileId) ? parameters[fileId] : parameters;",""," this.currentUploadedByteValues[fileId] = 0;",""," currentFile.on(\"uploadstart\", this._uploadStartHandler, this);"," currentFile.on(\"uploadprogress\", this._uploadProgressHandler, this);"," currentFile.on(\"uploadcomplete\", this._uploadCompleteHandler, this);"," currentFile.on(\"uploaderror\", this._uploadErrorHandler, this);"," currentFile.on(\"uploadcancel\", this._uploadCancelHandler, this);",""," currentFile.set(\"xhrHeaders\", this.get(\"uploadHeaders\"));"," currentFile.set(\"xhrWithCredentials\", this.get(\"withCredentials\"));",""," currentFile.startUpload(this.get(\"uploadURL\"), fileParameters, this.get(\"fileFieldName\"));",""," this._registerUpload(currentFile);"," }"," },",""," /**"," * Register a new upload process."," * "," * @method _registerUpload"," * @private"," */"," _registerUpload : function (file) {"," this.numberOfUploads += 1;"," this.currentFiles[file.get(\"id\")] = file;"," },",""," /**"," * Unregisters a new upload process."," * "," * @method _unregisterUpload"," * @private"," */"," _unregisterUpload : function (file) {"," if (this.numberOfUploads > 0) {"," this.numberOfUploads -=1;"," }"," delete this.currentFiles[file.get(\"id\")];"," delete this.uploadRetries[file.get(\"id\")];",""," this._detachFileEvents(file);"," },",""," _detachFileEvents : function (file) {"," file.detach(\"uploadstart\", this._uploadStartHandler);"," file.detach(\"uploadprogress\", this._uploadProgressHandler);"," file.detach(\"uploadcomplete\", this._uploadCompleteHandler);"," file.detach(\"uploaderror\", this._uploadErrorHandler);"," file.detach(\"uploadcancel\", this._uploadCancelHandler);"," },",""," /**"," * Handles and retransmits upload complete event."," * "," * @method _uploadCompleteHandler"," * @param event The event dispatched during the upload process."," * @private"," */"," _uploadCompleteHandler : function (event) {",""," this._unregisterUpload(event.target);",""," this.totalBytesUploaded += event.target.get(\"size\");"," delete this.currentUploadedByteValues[event.target.get(\"id\")];","",""," if (this.queuedFiles.length > 0 && this._currentState === UploaderQueue.UPLOADING) {"," this._startNextFile();"," }"," "," var updatedEvent = event;"," updatedEvent.file = event.target;"," updatedEvent.originEvent = event;",""," var uploadedTotal = this.totalBytesUploaded;",""," Y.each(this.currentUploadedByteValues, function (value) {"," uploadedTotal += value; "," });"," "," var percentLoaded = Math.min(100, Math.round(10000*uploadedTotal/this.totalBytes) / 100); "," "," this.fire(\"totaluploadprogress\", {bytesLoaded: uploadedTotal, "," bytesTotal: this.totalBytes,"," percentLoaded: percentLoaded});",""," this.fire(\"uploadcomplete\", updatedEvent);",""," if (this.queuedFiles.length === 0 && this.numberOfUploads <= 0) {"," this.fire(\"alluploadscomplete\");"," this._currentState = UploaderQueue.STOPPED;"," }","",""," },",""," /**"," * Handles and retransmits upload cancel event."," * "," * @method _uploadCancelHandler"," * @param event The event dispatched during the upload process."," * @private"," */"," _uploadCancelHandler : function (event) {"," "," var updatedEvent = event;"," updatedEvent.originEvent = event;"," updatedEvent.file = event.target;",""," this.fire(\"uploadcacel\", updatedEvent);"," },","","",""," /**"," * Handles and retransmits upload progress event."," * "," * @method _uploadProgressHandler"," * @param event The event dispatched during the upload process."," * @private"," */"," _uploadProgressHandler : function (event) {"," "," this.currentUploadedByteValues[event.target.get(\"id\")] = event.bytesLoaded;"," "," var updatedEvent = event;"," updatedEvent.originEvent = event;"," updatedEvent.file = event.target;",""," this.fire(\"uploadprogress\", updatedEvent);"," "," var uploadedTotal = this.totalBytesUploaded;",""," Y.each(this.currentUploadedByteValues, function (value) {"," uploadedTotal += value; "," });"," "," var percentLoaded = Math.min(100, Math.round(10000*uploadedTotal/this.totalBytes) / 100);",""," this.fire(\"totaluploadprogress\", {bytesLoaded: uploadedTotal, "," bytesTotal: this.totalBytes,"," percentLoaded: percentLoaded});"," },",""," /**"," * Starts uploading the queued up file list."," * "," * @method startUpload"," */"," startUpload: function() {"," "," this.queuedFiles = this.get(\"fileList\").slice(0);"," this.numberOfUploads = 0;"," this.currentUploadedByteValues = {};"," this.currentFiles = {};"," this.totalBytesUploaded = 0;"," "," this._currentState = UploaderQueue.UPLOADING;",""," while (this.numberOfUploads < this.get(\"simUploads\") && this.queuedFiles.length > 0) {"," this._startNextFile();"," }"," },",""," /**"," * Pauses the upload process. The ongoing file uploads"," * will complete after this method is called, but no"," * new ones will be launched."," * "," * @method pauseUpload"," */"," pauseUpload: function () {"," this._currentState = UploaderQueue.STOPPED;"," },",""," /**"," * Restarts a paused upload process."," * "," * @method restartUpload"," */"," restartUpload: function () {"," this._currentState = UploaderQueue.UPLOADING;"," while (this.numberOfUploads < this.get(\"simUploads\")) {"," this._startNextFile();"," }"," },",""," /**"," * If a particular file is stuck in an ongoing upload without"," * any progress events, this method allows to force its reupload"," * by cancelling its upload and immediately relaunching it."," * "," * @method forceReupload"," * @param file {Y.File} The file to force reupload on."," */"," forceReupload : function (file) {"," var id = file.get(\"id\");"," if (this.currentFiles.hasOwnProperty(id)) {"," file.cancelUpload();"," this._unregisterUpload(file);"," this.addToQueueTop(file);"," this._startNextFile();"," }"," },",""," /**"," * Add a new file to the top of the queue (the upload will be"," * launched as soon as the current number of uploading files"," * drops below the maximum permissible value)."," * "," * @method addToQueueTop"," * @param file {Y.File} The file to add to the top of the queue."," */"," addToQueueTop: function (file) {"," this.queuedFiles.unshift(file);"," },",""," /**"," * Add a new file to the bottom of the queue (the upload will be"," * launched after all the other queued files are uploaded.)"," * "," * @method addToQueueBottom"," * @param file {Y.File} The file to add to the bottom of the queue."," */"," addToQueueBottom: function (file) {"," this.queuedFiles.push(file);"," },",""," /**"," * Cancels a specific file's upload. If no argument is passed,"," * all ongoing uploads are cancelled and the upload process is"," * stopped."," * "," * @method cancelUpload"," * @param file {Y.File} An optional parameter - the file whose upload"," * should be cancelled."," */"," cancelUpload: function (file) {",""," if (file) {"," var id = file.get(\"id\");"," if (this.currentFiles[id]) {"," this.currentFiles[id].cancelUpload();"," this._unregisterUpload(this.currentFiles[id]);"," if (this._currentState === UploaderQueue.UPLOADING) {"," this._startNextFile();"," }"," }"," else {"," for (var i = 0, len = this.queuedFiles.length; i < len; i++) {"," if (this.queuedFiles[i].get(\"id\") === id) {"," this.queuedFiles.splice(i, 1);"," break;"," }"," }"," }"," }"," else {"," for (var fid in this.currentFiles) {"," this.currentFiles[fid].cancelUpload();"," this._unregisterUpload(this.currentFiles[fid]);"," }",""," this.currentUploadedByteValues = {};"," this.currentFiles = {};"," this.totalBytesUploaded = 0;"," this.fire(\"alluploadscancelled\");"," this._currentState = UploaderQueue.STOPPED;"," }"," }"," }, ",""," {"," /** "," * Static constant for the value of the `errorAction` attribute:"," * prescribes the queue to continue uploading files in case of "," * an error."," * @property CONTINUE"," * @readOnly"," * @type {String}"," * @static"," */"," CONTINUE: \"continue\",",""," /** "," * Static constant for the value of the `errorAction` attribute:"," * prescribes the queue to stop uploading files in case of "," * an error."," * @property STOP"," * @readOnly"," * @type {String}"," * @static"," */"," STOP: \"stop\",",""," /** "," * Static constant for the value of the `errorAction` attribute:"," * prescribes the queue to restart a file upload immediately in case of "," * an error."," * @property RESTART_ASAP"," * @readOnly"," * @type {String}"," * @static"," */"," RESTART_ASAP: \"restartasap\",",""," /** "," * Static constant for the value of the `errorAction` attribute:"," * prescribes the queue to restart an errored out file upload after "," * other files have finished uploading."," * @property RESTART_AFTER"," * @readOnly"," * @type {String}"," * @static"," */"," RESTART_AFTER: \"restartafter\",",""," /** "," * Static constant for the value of the `_currentState` property:"," * implies that the queue is currently not uploading files."," * @property STOPPED"," * @readOnly"," * @type {String}"," * @static"," */"," STOPPED: \"stopped\",",""," /** "," * Static constant for the value of the `_currentState` property:"," * implies that the queue is currently uploading files."," * @property UPLOADING"," * @readOnly"," * @type {String}"," * @static"," */"," UPLOADING: \"uploading\",",""," /**"," * The identity of the class."," *"," * @property NAME"," * @type String"," * @default 'uploaderqueue'"," * @readOnly"," * @protected"," * @static"," */"," NAME: 'uploaderqueue',",""," /**"," * Static property used to define the default attribute configuration of"," * the class."," *"," * @property ATTRS"," * @type {Object}"," * @protected"," * @static"," */"," ATTRS: {"," "," /**"," * Maximum number of simultaneous uploads; must be in the"," * range between 1 and 5. The value of `2` is default. It"," * is recommended that this value does not exceed 3."," * @property simUploads"," * @type Number"," * @default 2"," */"," simUploads: {"," value: 2,"," validator: function (val, name) {"," return (val >= 1 && val <= 5);"," }"," },"," "," /**"," * The action to take in case of error. The valid values for this attribute are: "," * `Y.Uploader.Queue.CONTINUE` (the upload process should continue on other files, "," * ignoring the error), `Y.Uploader.Queue.STOP` (the upload process "," * should stop completely), `Y.Uploader.Queue.RESTART_ASAP` (the upload "," * should restart immediately on the errored out file and continue as planned), or"," * Y.Uploader.Queue.RESTART_AFTER (the upload of the errored out file should restart"," * after all other files have uploaded)"," * @property errorAction"," * @type String"," * @default Y.Uploader.Queue.CONTINUE"," */"," errorAction: {"," value: \"continue\","," validator: function (val, name) {"," return (val === UploaderQueue.CONTINUE || val === UploaderQueue.STOP || val === UploaderQueue.RESTART_ASAP || val === UploaderQueue.RESTART_AFTER);"," }"," },",""," /**"," * The total number of bytes that has been uploaded."," * @property bytesUploaded"," * @type Number"," */ "," bytesUploaded: {"," readOnly: true,"," value: 0"," },"," "," /**"," * The total number of bytes in the queue."," * @property bytesTotal"," * @type Number"," */ "," bytesTotal: {"," readOnly: true,"," value: 0"," },",""," /**"," * The queue file list. This file list should only be modified"," * before the upload has been started; modifying it after starting"," * the upload has no effect, and `addToQueueTop` or `addToQueueBottom` methods"," * should be used instead."," * @property fileList"," * @type Number"," */ "," fileList: {"," value: [],"," lazyAdd: false,"," setter: function (val) {"," var newValue = val;"," Y.Array.each(newValue, function (value) {"," this.totalBytes += value.get(\"size\");"," }, this);"," "," return val;"," } "," },",""," /**"," * A String specifying what should be the POST field name for the file"," * content in the upload request."," *"," * @attribute fileFieldName"," * @type {String}"," * @default Filedata"," */ "," fileFieldName: {"," value: \"Filedata\""," },",""," /**"," * The URL to POST the file upload requests to."," *"," * @attribute uploadURL"," * @type {String}"," * @default \"\""," */ "," uploadURL: {"," value: \"\""," },",""," /**"," * Additional HTTP headers that should be included"," * in the upload request. Due to Flash Player security"," * restrictions, this attribute is only honored in the"," * HTML5 Uploader."," *"," * @attribute uploadHeaders"," * @type {Object}"," * @default {}"," */ "," uploadHeaders: {"," value: {}"," },",""," /**"," * A Boolean that specifies whether the file should be"," * uploaded with the appropriate user credentials for the"," * domain. Due to Flash Player security restrictions, this"," * attribute is only honored in the HTML5 Uploader."," *"," * @attribute withCredentials"," * @type {Boolean}"," * @default true"," */ "," withCredentials: {"," value: true"," },","",""," /**"," * An object, keyed by `fileId`, containing sets of key-value pairs"," * that should be passed as POST variables along with each corresponding"," * file."," *"," * @attribute perFileParameters"," * @type {Object}"," * @default {}"," */ "," perFileParameters: {"," value: {}"," },",""," /**"," * The number of times to try re-uploading a file that failed to upload before"," * cancelling its upload."," *"," * @attribute retryCount"," * @type {Number}"," * @default 3"," */ "," retryCount: {"," value: 3"," }",""," }"," });","",""," Y.namespace('Uploader');"," Y.Uploader.Queue = UploaderQueue;","","}, '3.7.3', {\"requires\": [\"base\"]});"]; -_yuitest_coverage["build/uploader-queue/uploader-queue.js"].lines = {"1":0,"11":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"37":0,"41":0,"70":0,"71":0,"72":0,"74":0,"85":0,"86":0,"87":0,"88":0,"90":0,"91":0,"92":0,"94":0,"96":0,"97":0,"100":0,"101":0,"103":0,"104":0,"105":0,"107":0,"109":0,"110":0,"112":0,"113":0,"114":0,"116":0,"119":0,"129":0,"130":0,"135":0,"137":0,"138":0,"139":0,"140":0,"141":0,"143":0,"144":0,"146":0,"148":0,"159":0,"160":0,"170":0,"171":0,"173":0,"174":0,"176":0,"180":0,"181":0,"182":0,"183":0,"184":0,"196":0,"198":0,"199":0,"202":0,"203":0,"206":0,"207":0,"208":0,"210":0,"212":0,"213":0,"216":0,"218":0,"222":0,"224":0,"225":0,"226":0,"241":0,"242":0,"243":0,"245":0,"259":0,"261":0,"262":0,"263":0,"265":0,"267":0,"269":0,"270":0,"273":0,"275":0,"287":0,"288":0,"289":0,"290":0,"291":0,"293":0,"295":0,"296":0,"308":0,"317":0,"318":0,"319":0,"332":0,"333":0,"334":0,"335":0,"336":0,"337":0,"350":0,"361":0,"375":0,"376":0,"377":0,"378":0,"379":0,"380":0,"381":0,"385":0,"386":0,"387":0,"388":0,"394":0,"395":0,"396":0,"399":0,"400":0,"401":0,"402":0,"403":0,"507":0,"526":0,"562":0,"563":0,"564":0,"567":0,"652":0,"653":0}; -_yuitest_coverage["build/uploader-queue/uploader-queue.js"].functions = {"UploaderQueue:28":0,"_uploadStartHandler:69":0,"_uploadErrorHandler:84":0,"_startNextFile:128":0,"_registerUpload:158":0,"_unregisterUpload:169":0,"_detachFileEvents:179":0,"(anonymous 2):212":0,"_uploadCompleteHandler:194":0,"_uploadCancelHandler:239":0,"(anonymous 3):269":0,"_uploadProgressHandler:257":0,"startUpload:285":0,"pauseUpload:307":0,"restartUpload:316":0,"forceReupload:331":0,"addToQueueTop:349":0,"addToQueueBottom:360":0,"cancelUpload:373":0,"validator:506":0,"validator:525":0,"(anonymous 4):563":0,"setter:561":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/uploader-queue/uploader-queue.js"].coveredLines = 141; -_yuitest_coverage["build/uploader-queue/uploader-queue.js"].coveredFunctions = 24; -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 1); -YUI.add('uploader-queue', function (Y, NAME) { - - - /** - * The class manages a queue of files that should be uploaded to the server. - * It initializes the required number of uploads, tracks them as they progress, - * and automatically advances to the next upload when a preceding one has completed. - * @module uploader-queue - */ - - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "(anonymous 1)", 1); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 11); -var Lang = Y.Lang, - Bind = Y.bind, - Win = Y.config.win, - queuedFiles, - numberOfUploads, - currentUploadedByteValues, - currentFiles, - totalBytesUploaded, - totalBytes; - - /** - * This class manages a queue of files to be uploaded to the server. - * @class Uploader.Queue - * @extends Base - * @constructor - * @param {Object} config Configuration object - */ - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 28); -var UploaderQueue = function(o) { - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "UploaderQueue", 28); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 29); -this.queuedFiles = []; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 30); -this.uploadRetries = {}; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 31); -this.numberOfUploads = 0; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 32); -this.currentUploadedByteValues = {}; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 33); -this.currentFiles = {}; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 34); -this.totalBytesUploaded = 0; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 35); -this.totalBytes = 0; - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 37); -UploaderQueue.superclass.constructor.apply(this, arguments); - }; - - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 41); -Y.extend(UploaderQueue, Y.Base, { - - /** - * Stored value of the current queue state - * @property _currentState - * @type {String} - * @protected - * @default UploaderQueue.STOPPED - */ - _currentState: UploaderQueue.STOPPED, - - /** - * Construction logic executed during UploaderQueue instantiation. - * - * @method initializer - * @protected - */ - initializer : function (cfg) { - - }, - - /** - * Handles and retransmits upload start event. - * - * @method _uploadStartHandler - * @param event The event dispatched during the upload process. - * @private - */ - _uploadStartHandler : function (event) { - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "_uploadStartHandler", 69); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 70); -var updatedEvent = event; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 71); -updatedEvent.file = event.target; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 72); -updatedEvent.originEvent = event; - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 74); -this.fire("uploadstart", updatedEvent); - }, - - /** - * Handles and retransmits upload error event. - * - * @method _uploadErrorHandler - * @param event The event dispatched during the upload process. - * @private - */ - _uploadErrorHandler : function (event) { - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "_uploadErrorHandler", 84); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 85); -var errorAction = this.get("errorAction"); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 86); -var updatedEvent = event; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 87); -updatedEvent.file = event.target; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 88); -updatedEvent.originEvent = event; - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 90); -this.numberOfUploads-=1; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 91); -delete this.currentFiles[event.target.get("id")]; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 92); -this._detachFileEvents(event.target); - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 94); -event.target.cancelUpload(); - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 96); -if (errorAction === UploaderQueue.STOP) { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 97); -this.pauseUpload(); - } - - else {_yuitest_coverline("build/uploader-queue/uploader-queue.js", 100); -if (errorAction === UploaderQueue.RESTART_ASAP) { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 101); -var fileid = event.target.get("id"), - retries = this.uploadRetries[fileid] || 0; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 103); -if (retries < this.get("retryCount")) { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 104); -this.uploadRetries[fileid] = retries + 1; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 105); -this.addToQueueTop(event.target); - } - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 107); -this._startNextFile(); - } - else {_yuitest_coverline("build/uploader-queue/uploader-queue.js", 109); -if (errorAction === UploaderQueue.RESTART_AFTER) { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 110); -var fileid = event.target.get("id"), - retries = this.uploadRetries[fileid] || 0; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 112); -if (retries < this.get("retryCount")) { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 113); -this.uploadRetries[fileid] = retries + 1; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 114); -this.addToQueueBottom(event.target); - } - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 116); -this._startNextFile(); - }}} - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 119); -this.fire("uploaderror", updatedEvent); - }, - - /** - * Launches the upload of the next file in the queue. - * - * @method _startNextFile - * @private - */ - _startNextFile : function () { - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "_startNextFile", 128); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 129); -if (this.queuedFiles.length > 0) { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 130); -var currentFile = this.queuedFiles.shift(), - fileId = currentFile.get("id"), - parameters = this.get("perFileParameters"), - fileParameters = parameters.hasOwnProperty(fileId) ? parameters[fileId] : parameters; - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 135); -this.currentUploadedByteValues[fileId] = 0; - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 137); -currentFile.on("uploadstart", this._uploadStartHandler, this); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 138); -currentFile.on("uploadprogress", this._uploadProgressHandler, this); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 139); -currentFile.on("uploadcomplete", this._uploadCompleteHandler, this); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 140); -currentFile.on("uploaderror", this._uploadErrorHandler, this); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 141); -currentFile.on("uploadcancel", this._uploadCancelHandler, this); - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 143); -currentFile.set("xhrHeaders", this.get("uploadHeaders")); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 144); -currentFile.set("xhrWithCredentials", this.get("withCredentials")); - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 146); -currentFile.startUpload(this.get("uploadURL"), fileParameters, this.get("fileFieldName")); - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 148); -this._registerUpload(currentFile); - } - }, - - /** - * Register a new upload process. - * - * @method _registerUpload - * @private - */ - _registerUpload : function (file) { - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "_registerUpload", 158); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 159); -this.numberOfUploads += 1; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 160); -this.currentFiles[file.get("id")] = file; - }, - - /** - * Unregisters a new upload process. - * - * @method _unregisterUpload - * @private - */ - _unregisterUpload : function (file) { - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "_unregisterUpload", 169); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 170); -if (this.numberOfUploads > 0) { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 171); -this.numberOfUploads -=1; - } - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 173); -delete this.currentFiles[file.get("id")]; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 174); -delete this.uploadRetries[file.get("id")]; - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 176); -this._detachFileEvents(file); - }, - - _detachFileEvents : function (file) { - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "_detachFileEvents", 179); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 180); -file.detach("uploadstart", this._uploadStartHandler); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 181); -file.detach("uploadprogress", this._uploadProgressHandler); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 182); -file.detach("uploadcomplete", this._uploadCompleteHandler); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 183); -file.detach("uploaderror", this._uploadErrorHandler); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 184); -file.detach("uploadcancel", this._uploadCancelHandler); - }, - - /** - * Handles and retransmits upload complete event. - * - * @method _uploadCompleteHandler - * @param event The event dispatched during the upload process. - * @private - */ - _uploadCompleteHandler : function (event) { - - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "_uploadCompleteHandler", 194); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 196); -this._unregisterUpload(event.target); - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 198); -this.totalBytesUploaded += event.target.get("size"); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 199); -delete this.currentUploadedByteValues[event.target.get("id")]; - - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 202); -if (this.queuedFiles.length > 0 && this._currentState === UploaderQueue.UPLOADING) { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 203); -this._startNextFile(); - } - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 206); -var updatedEvent = event; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 207); -updatedEvent.file = event.target; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 208); -updatedEvent.originEvent = event; - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 210); -var uploadedTotal = this.totalBytesUploaded; - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 212); -Y.each(this.currentUploadedByteValues, function (value) { - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "(anonymous 2)", 212); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 213); -uploadedTotal += value; - }); - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 216); -var percentLoaded = Math.min(100, Math.round(10000*uploadedTotal/this.totalBytes) / 100); - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 218); -this.fire("totaluploadprogress", {bytesLoaded: uploadedTotal, - bytesTotal: this.totalBytes, - percentLoaded: percentLoaded}); - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 222); -this.fire("uploadcomplete", updatedEvent); - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 224); -if (this.queuedFiles.length === 0 && this.numberOfUploads <= 0) { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 225); -this.fire("alluploadscomplete"); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 226); -this._currentState = UploaderQueue.STOPPED; - } - - - }, - - /** - * Handles and retransmits upload cancel event. - * - * @method _uploadCancelHandler - * @param event The event dispatched during the upload process. - * @private - */ - _uploadCancelHandler : function (event) { - - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "_uploadCancelHandler", 239); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 241); -var updatedEvent = event; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 242); -updatedEvent.originEvent = event; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 243); -updatedEvent.file = event.target; - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 245); -this.fire("uploadcacel", updatedEvent); - }, - - - - /** - * Handles and retransmits upload progress event. - * - * @method _uploadProgressHandler - * @param event The event dispatched during the upload process. - * @private - */ - _uploadProgressHandler : function (event) { - - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "_uploadProgressHandler", 257); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 259); -this.currentUploadedByteValues[event.target.get("id")] = event.bytesLoaded; - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 261); -var updatedEvent = event; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 262); -updatedEvent.originEvent = event; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 263); -updatedEvent.file = event.target; - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 265); -this.fire("uploadprogress", updatedEvent); - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 267); -var uploadedTotal = this.totalBytesUploaded; - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 269); -Y.each(this.currentUploadedByteValues, function (value) { - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "(anonymous 3)", 269); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 270); -uploadedTotal += value; - }); - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 273); -var percentLoaded = Math.min(100, Math.round(10000*uploadedTotal/this.totalBytes) / 100); - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 275); -this.fire("totaluploadprogress", {bytesLoaded: uploadedTotal, - bytesTotal: this.totalBytes, - percentLoaded: percentLoaded}); - }, - - /** - * Starts uploading the queued up file list. - * - * @method startUpload - */ - startUpload: function() { - - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "startUpload", 285); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 287); -this.queuedFiles = this.get("fileList").slice(0); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 288); -this.numberOfUploads = 0; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 289); -this.currentUploadedByteValues = {}; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 290); -this.currentFiles = {}; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 291); -this.totalBytesUploaded = 0; - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 293); -this._currentState = UploaderQueue.UPLOADING; - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 295); -while (this.numberOfUploads < this.get("simUploads") && this.queuedFiles.length > 0) { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 296); -this._startNextFile(); - } - }, - - /** - * Pauses the upload process. The ongoing file uploads - * will complete after this method is called, but no - * new ones will be launched. - * - * @method pauseUpload - */ - pauseUpload: function () { - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "pauseUpload", 307); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 308); -this._currentState = UploaderQueue.STOPPED; - }, - - /** - * Restarts a paused upload process. - * - * @method restartUpload - */ - restartUpload: function () { - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "restartUpload", 316); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 317); -this._currentState = UploaderQueue.UPLOADING; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 318); -while (this.numberOfUploads < this.get("simUploads")) { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 319); -this._startNextFile(); - } - }, - - /** - * If a particular file is stuck in an ongoing upload without - * any progress events, this method allows to force its reupload - * by cancelling its upload and immediately relaunching it. - * - * @method forceReupload - * @param file {Y.File} The file to force reupload on. - */ - forceReupload : function (file) { - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "forceReupload", 331); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 332); -var id = file.get("id"); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 333); -if (this.currentFiles.hasOwnProperty(id)) { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 334); -file.cancelUpload(); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 335); -this._unregisterUpload(file); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 336); -this.addToQueueTop(file); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 337); -this._startNextFile(); - } - }, - - /** - * Add a new file to the top of the queue (the upload will be - * launched as soon as the current number of uploading files - * drops below the maximum permissible value). - * - * @method addToQueueTop - * @param file {Y.File} The file to add to the top of the queue. - */ - addToQueueTop: function (file) { - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "addToQueueTop", 349); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 350); -this.queuedFiles.unshift(file); - }, - - /** - * Add a new file to the bottom of the queue (the upload will be - * launched after all the other queued files are uploaded.) - * - * @method addToQueueBottom - * @param file {Y.File} The file to add to the bottom of the queue. - */ - addToQueueBottom: function (file) { - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "addToQueueBottom", 360); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 361); -this.queuedFiles.push(file); - }, - - /** - * Cancels a specific file's upload. If no argument is passed, - * all ongoing uploads are cancelled and the upload process is - * stopped. - * - * @method cancelUpload - * @param file {Y.File} An optional parameter - the file whose upload - * should be cancelled. - */ - cancelUpload: function (file) { - - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "cancelUpload", 373); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 375); -if (file) { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 376); -var id = file.get("id"); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 377); -if (this.currentFiles[id]) { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 378); -this.currentFiles[id].cancelUpload(); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 379); -this._unregisterUpload(this.currentFiles[id]); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 380); -if (this._currentState === UploaderQueue.UPLOADING) { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 381); -this._startNextFile(); - } - } - else { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 385); -for (var i = 0, len = this.queuedFiles.length; i < len; i++) { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 386); -if (this.queuedFiles[i].get("id") === id) { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 387); -this.queuedFiles.splice(i, 1); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 388); -break; - } - } - } - } - else { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 394); -for (var fid in this.currentFiles) { - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 395); -this.currentFiles[fid].cancelUpload(); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 396); -this._unregisterUpload(this.currentFiles[fid]); - } - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 399); -this.currentUploadedByteValues = {}; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 400); -this.currentFiles = {}; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 401); -this.totalBytesUploaded = 0; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 402); -this.fire("alluploadscancelled"); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 403); -this._currentState = UploaderQueue.STOPPED; - } - } - }, - - { - /** - * Static constant for the value of the `errorAction` attribute: - * prescribes the queue to continue uploading files in case of - * an error. - * @property CONTINUE - * @readOnly - * @type {String} - * @static - */ - CONTINUE: "continue", - - /** - * Static constant for the value of the `errorAction` attribute: - * prescribes the queue to stop uploading files in case of - * an error. - * @property STOP - * @readOnly - * @type {String} - * @static - */ - STOP: "stop", - - /** - * Static constant for the value of the `errorAction` attribute: - * prescribes the queue to restart a file upload immediately in case of - * an error. - * @property RESTART_ASAP - * @readOnly - * @type {String} - * @static - */ - RESTART_ASAP: "restartasap", - - /** - * Static constant for the value of the `errorAction` attribute: - * prescribes the queue to restart an errored out file upload after - * other files have finished uploading. - * @property RESTART_AFTER - * @readOnly - * @type {String} - * @static - */ - RESTART_AFTER: "restartafter", - - /** - * Static constant for the value of the `_currentState` property: - * implies that the queue is currently not uploading files. - * @property STOPPED - * @readOnly - * @type {String} - * @static - */ - STOPPED: "stopped", - - /** - * Static constant for the value of the `_currentState` property: - * implies that the queue is currently uploading files. - * @property UPLOADING - * @readOnly - * @type {String} - * @static - */ - UPLOADING: "uploading", - - /** - * The identity of the class. - * - * @property NAME - * @type String - * @default 'uploaderqueue' - * @readOnly - * @protected - * @static - */ - NAME: 'uploaderqueue', - - /** - * Static property used to define the default attribute configuration of - * the class. - * - * @property ATTRS - * @type {Object} - * @protected - * @static - */ - ATTRS: { - - /** - * Maximum number of simultaneous uploads; must be in the - * range between 1 and 5. The value of `2` is default. It - * is recommended that this value does not exceed 3. - * @property simUploads - * @type Number - * @default 2 - */ - simUploads: { - value: 2, - validator: function (val, name) { - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "validator", 506); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 507); -return (val >= 1 && val <= 5); - } - }, - - /** - * The action to take in case of error. The valid values for this attribute are: - * `Y.Uploader.Queue.CONTINUE` (the upload process should continue on other files, - * ignoring the error), `Y.Uploader.Queue.STOP` (the upload process - * should stop completely), `Y.Uploader.Queue.RESTART_ASAP` (the upload - * should restart immediately on the errored out file and continue as planned), or - * Y.Uploader.Queue.RESTART_AFTER (the upload of the errored out file should restart - * after all other files have uploaded) - * @property errorAction - * @type String - * @default Y.Uploader.Queue.CONTINUE - */ - errorAction: { - value: "continue", - validator: function (val, name) { - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "validator", 525); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 526); -return (val === UploaderQueue.CONTINUE || val === UploaderQueue.STOP || val === UploaderQueue.RESTART_ASAP || val === UploaderQueue.RESTART_AFTER); - } - }, - - /** - * The total number of bytes that has been uploaded. - * @property bytesUploaded - * @type Number - */ - bytesUploaded: { - readOnly: true, - value: 0 - }, - - /** - * The total number of bytes in the queue. - * @property bytesTotal - * @type Number - */ - bytesTotal: { - readOnly: true, - value: 0 - }, - - /** - * The queue file list. This file list should only be modified - * before the upload has been started; modifying it after starting - * the upload has no effect, and `addToQueueTop` or `addToQueueBottom` methods - * should be used instead. - * @property fileList - * @type Number - */ - fileList: { - value: [], - lazyAdd: false, - setter: function (val) { - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "setter", 561); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 562); -var newValue = val; - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 563); -Y.Array.each(newValue, function (value) { - _yuitest_coverfunc("build/uploader-queue/uploader-queue.js", "(anonymous 4)", 563); -_yuitest_coverline("build/uploader-queue/uploader-queue.js", 564); -this.totalBytes += value.get("size"); - }, this); - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 567); -return val; - } - }, - - /** - * A String specifying what should be the POST field name for the file - * content in the upload request. - * - * @attribute fileFieldName - * @type {String} - * @default Filedata - */ - fileFieldName: { - value: "Filedata" - }, - - /** - * The URL to POST the file upload requests to. - * - * @attribute uploadURL - * @type {String} - * @default "" - */ - uploadURL: { - value: "" - }, - - /** - * Additional HTTP headers that should be included - * in the upload request. Due to Flash Player security - * restrictions, this attribute is only honored in the - * HTML5 Uploader. - * - * @attribute uploadHeaders - * @type {Object} - * @default {} - */ - uploadHeaders: { - value: {} - }, - - /** - * A Boolean that specifies whether the file should be - * uploaded with the appropriate user credentials for the - * domain. Due to Flash Player security restrictions, this - * attribute is only honored in the HTML5 Uploader. - * - * @attribute withCredentials - * @type {Boolean} - * @default true - */ - withCredentials: { - value: true - }, - - - /** - * An object, keyed by `fileId`, containing sets of key-value pairs - * that should be passed as POST variables along with each corresponding - * file. - * - * @attribute perFileParameters - * @type {Object} - * @default {} - */ - perFileParameters: { - value: {} - }, - - /** - * The number of times to try re-uploading a file that failed to upload before - * cancelling its upload. - * - * @attribute retryCount - * @type {Number} - * @default 3 - */ - retryCount: { - value: 3 - } - - } - }); - - - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 652); -Y.namespace('Uploader'); - _yuitest_coverline("build/uploader-queue/uploader-queue.js", 653); -Y.Uploader.Queue = UploaderQueue; - -}, '3.7.3', {"requires": ["base"]}); diff --git a/lib/yuilib/3.7.3/build/uploader-queue/uploader-queue-debug.js b/lib/yuilib/3.7.3/build/uploader-queue/uploader-queue-debug.js deleted file mode 100644 index f5a36af2efe..00000000000 --- a/lib/yuilib/3.7.3/build/uploader-queue/uploader-queue-debug.js +++ /dev/null @@ -1,661 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add('uploader-queue', function (Y, NAME) { - - - /** - * The class manages a queue of files that should be uploaded to the server. - * It initializes the required number of uploads, tracks them as they progress, - * and automatically advances to the next upload when a preceding one has completed. - * @module uploader-queue - */ - - var Lang = Y.Lang, - Bind = Y.bind, - Win = Y.config.win, - queuedFiles, - numberOfUploads, - currentUploadedByteValues, - currentFiles, - totalBytesUploaded, - totalBytes; - - /** - * This class manages a queue of files to be uploaded to the server. - * @class Uploader.Queue - * @extends Base - * @constructor - * @param {Object} config Configuration object - */ - var UploaderQueue = function(o) { - this.queuedFiles = []; - this.uploadRetries = {}; - this.numberOfUploads = 0; - this.currentUploadedByteValues = {}; - this.currentFiles = {}; - this.totalBytesUploaded = 0; - this.totalBytes = 0; - - UploaderQueue.superclass.constructor.apply(this, arguments); - }; - - - Y.extend(UploaderQueue, Y.Base, { - - /** - * Stored value of the current queue state - * @property _currentState - * @type {String} - * @protected - * @default UploaderQueue.STOPPED - */ - _currentState: UploaderQueue.STOPPED, - - /** - * Construction logic executed during UploaderQueue instantiation. - * - * @method initializer - * @protected - */ - initializer : function (cfg) { - - }, - - /** - * Handles and retransmits upload start event. - * - * @method _uploadStartHandler - * @param event The event dispatched during the upload process. - * @private - */ - _uploadStartHandler : function (event) { - var updatedEvent = event; - updatedEvent.file = event.target; - updatedEvent.originEvent = event; - - this.fire("uploadstart", updatedEvent); - }, - - /** - * Handles and retransmits upload error event. - * - * @method _uploadErrorHandler - * @param event The event dispatched during the upload process. - * @private - */ - _uploadErrorHandler : function (event) { - var errorAction = this.get("errorAction"); - var updatedEvent = event; - updatedEvent.file = event.target; - updatedEvent.originEvent = event; - - this.numberOfUploads-=1; - delete this.currentFiles[event.target.get("id")]; - this._detachFileEvents(event.target); - - event.target.cancelUpload(); - - if (errorAction === UploaderQueue.STOP) { - this.pauseUpload(); - } - - else if (errorAction === UploaderQueue.RESTART_ASAP) { - var fileid = event.target.get("id"), - retries = this.uploadRetries[fileid] || 0; - if (retries < this.get("retryCount")) { - this.uploadRetries[fileid] = retries + 1; - this.addToQueueTop(event.target); - } - this._startNextFile(); - } - else if (errorAction === UploaderQueue.RESTART_AFTER) { - var fileid = event.target.get("id"), - retries = this.uploadRetries[fileid] || 0; - if (retries < this.get("retryCount")) { - this.uploadRetries[fileid] = retries + 1; - this.addToQueueBottom(event.target); - } - this._startNextFile(); - } - - this.fire("uploaderror", updatedEvent); - }, - - /** - * Launches the upload of the next file in the queue. - * - * @method _startNextFile - * @private - */ - _startNextFile : function () { - if (this.queuedFiles.length > 0) { - var currentFile = this.queuedFiles.shift(), - fileId = currentFile.get("id"), - parameters = this.get("perFileParameters"), - fileParameters = parameters.hasOwnProperty(fileId) ? parameters[fileId] : parameters; - - this.currentUploadedByteValues[fileId] = 0; - - currentFile.on("uploadstart", this._uploadStartHandler, this); - currentFile.on("uploadprogress", this._uploadProgressHandler, this); - currentFile.on("uploadcomplete", this._uploadCompleteHandler, this); - currentFile.on("uploaderror", this._uploadErrorHandler, this); - currentFile.on("uploadcancel", this._uploadCancelHandler, this); - - currentFile.set("xhrHeaders", this.get("uploadHeaders")); - currentFile.set("xhrWithCredentials", this.get("withCredentials")); - - currentFile.startUpload(this.get("uploadURL"), fileParameters, this.get("fileFieldName")); - - this._registerUpload(currentFile); - } - }, - - /** - * Register a new upload process. - * - * @method _registerUpload - * @private - */ - _registerUpload : function (file) { - this.numberOfUploads += 1; - this.currentFiles[file.get("id")] = file; - }, - - /** - * Unregisters a new upload process. - * - * @method _unregisterUpload - * @private - */ - _unregisterUpload : function (file) { - if (this.numberOfUploads > 0) { - this.numberOfUploads -=1; - } - delete this.currentFiles[file.get("id")]; - delete this.uploadRetries[file.get("id")]; - - this._detachFileEvents(file); - }, - - _detachFileEvents : function (file) { - file.detach("uploadstart", this._uploadStartHandler); - file.detach("uploadprogress", this._uploadProgressHandler); - file.detach("uploadcomplete", this._uploadCompleteHandler); - file.detach("uploaderror", this._uploadErrorHandler); - file.detach("uploadcancel", this._uploadCancelHandler); - }, - - /** - * Handles and retransmits upload complete event. - * - * @method _uploadCompleteHandler - * @param event The event dispatched during the upload process. - * @private - */ - _uploadCompleteHandler : function (event) { - - this._unregisterUpload(event.target); - - this.totalBytesUploaded += event.target.get("size"); - delete this.currentUploadedByteValues[event.target.get("id")]; - - - if (this.queuedFiles.length > 0 && this._currentState === UploaderQueue.UPLOADING) { - this._startNextFile(); - } - - var updatedEvent = event; - updatedEvent.file = event.target; - updatedEvent.originEvent = event; - - var uploadedTotal = this.totalBytesUploaded; - - Y.each(this.currentUploadedByteValues, function (value) { - uploadedTotal += value; - }); - - var percentLoaded = Math.min(100, Math.round(10000*uploadedTotal/this.totalBytes) / 100); - - this.fire("totaluploadprogress", {bytesLoaded: uploadedTotal, - bytesTotal: this.totalBytes, - percentLoaded: percentLoaded}); - - this.fire("uploadcomplete", updatedEvent); - - if (this.queuedFiles.length === 0 && this.numberOfUploads <= 0) { - this.fire("alluploadscomplete"); - this._currentState = UploaderQueue.STOPPED; - } - - - }, - - /** - * Handles and retransmits upload cancel event. - * - * @method _uploadCancelHandler - * @param event The event dispatched during the upload process. - * @private - */ - _uploadCancelHandler : function (event) { - - var updatedEvent = event; - updatedEvent.originEvent = event; - updatedEvent.file = event.target; - - this.fire("uploadcacel", updatedEvent); - }, - - - - /** - * Handles and retransmits upload progress event. - * - * @method _uploadProgressHandler - * @param event The event dispatched during the upload process. - * @private - */ - _uploadProgressHandler : function (event) { - - this.currentUploadedByteValues[event.target.get("id")] = event.bytesLoaded; - - var updatedEvent = event; - updatedEvent.originEvent = event; - updatedEvent.file = event.target; - - this.fire("uploadprogress", updatedEvent); - - var uploadedTotal = this.totalBytesUploaded; - - Y.each(this.currentUploadedByteValues, function (value) { - uploadedTotal += value; - }); - - var percentLoaded = Math.min(100, Math.round(10000*uploadedTotal/this.totalBytes) / 100); - - this.fire("totaluploadprogress", {bytesLoaded: uploadedTotal, - bytesTotal: this.totalBytes, - percentLoaded: percentLoaded}); - }, - - /** - * Starts uploading the queued up file list. - * - * @method startUpload - */ - startUpload: function() { - - this.queuedFiles = this.get("fileList").slice(0); - this.numberOfUploads = 0; - this.currentUploadedByteValues = {}; - this.currentFiles = {}; - this.totalBytesUploaded = 0; - - this._currentState = UploaderQueue.UPLOADING; - - while (this.numberOfUploads < this.get("simUploads") && this.queuedFiles.length > 0) { - this._startNextFile(); - } - }, - - /** - * Pauses the upload process. The ongoing file uploads - * will complete after this method is called, but no - * new ones will be launched. - * - * @method pauseUpload - */ - pauseUpload: function () { - this._currentState = UploaderQueue.STOPPED; - }, - - /** - * Restarts a paused upload process. - * - * @method restartUpload - */ - restartUpload: function () { - this._currentState = UploaderQueue.UPLOADING; - while (this.numberOfUploads < this.get("simUploads")) { - this._startNextFile(); - } - }, - - /** - * If a particular file is stuck in an ongoing upload without - * any progress events, this method allows to force its reupload - * by cancelling its upload and immediately relaunching it. - * - * @method forceReupload - * @param file {Y.File} The file to force reupload on. - */ - forceReupload : function (file) { - var id = file.get("id"); - if (this.currentFiles.hasOwnProperty(id)) { - file.cancelUpload(); - this._unregisterUpload(file); - this.addToQueueTop(file); - this._startNextFile(); - } - }, - - /** - * Add a new file to the top of the queue (the upload will be - * launched as soon as the current number of uploading files - * drops below the maximum permissible value). - * - * @method addToQueueTop - * @param file {Y.File} The file to add to the top of the queue. - */ - addToQueueTop: function (file) { - this.queuedFiles.unshift(file); - }, - - /** - * Add a new file to the bottom of the queue (the upload will be - * launched after all the other queued files are uploaded.) - * - * @method addToQueueBottom - * @param file {Y.File} The file to add to the bottom of the queue. - */ - addToQueueBottom: function (file) { - this.queuedFiles.push(file); - }, - - /** - * Cancels a specific file's upload. If no argument is passed, - * all ongoing uploads are cancelled and the upload process is - * stopped. - * - * @method cancelUpload - * @param file {Y.File} An optional parameter - the file whose upload - * should be cancelled. - */ - cancelUpload: function (file) { - - if (file) { - var id = file.get("id"); - if (this.currentFiles[id]) { - this.currentFiles[id].cancelUpload(); - this._unregisterUpload(this.currentFiles[id]); - if (this._currentState === UploaderQueue.UPLOADING) { - this._startNextFile(); - } - } - else { - for (var i = 0, len = this.queuedFiles.length; i < len; i++) { - if (this.queuedFiles[i].get("id") === id) { - this.queuedFiles.splice(i, 1); - break; - } - } - } - } - else { - for (var fid in this.currentFiles) { - this.currentFiles[fid].cancelUpload(); - this._unregisterUpload(this.currentFiles[fid]); - } - - this.currentUploadedByteValues = {}; - this.currentFiles = {}; - this.totalBytesUploaded = 0; - this.fire("alluploadscancelled"); - this._currentState = UploaderQueue.STOPPED; - } - } - }, - - { - /** - * Static constant for the value of the `errorAction` attribute: - * prescribes the queue to continue uploading files in case of - * an error. - * @property CONTINUE - * @readOnly - * @type {String} - * @static - */ - CONTINUE: "continue", - - /** - * Static constant for the value of the `errorAction` attribute: - * prescribes the queue to stop uploading files in case of - * an error. - * @property STOP - * @readOnly - * @type {String} - * @static - */ - STOP: "stop", - - /** - * Static constant for the value of the `errorAction` attribute: - * prescribes the queue to restart a file upload immediately in case of - * an error. - * @property RESTART_ASAP - * @readOnly - * @type {String} - * @static - */ - RESTART_ASAP: "restartasap", - - /** - * Static constant for the value of the `errorAction` attribute: - * prescribes the queue to restart an errored out file upload after - * other files have finished uploading. - * @property RESTART_AFTER - * @readOnly - * @type {String} - * @static - */ - RESTART_AFTER: "restartafter", - - /** - * Static constant for the value of the `_currentState` property: - * implies that the queue is currently not uploading files. - * @property STOPPED - * @readOnly - * @type {String} - * @static - */ - STOPPED: "stopped", - - /** - * Static constant for the value of the `_currentState` property: - * implies that the queue is currently uploading files. - * @property UPLOADING - * @readOnly - * @type {String} - * @static - */ - UPLOADING: "uploading", - - /** - * The identity of the class. - * - * @property NAME - * @type String - * @default 'uploaderqueue' - * @readOnly - * @protected - * @static - */ - NAME: 'uploaderqueue', - - /** - * Static property used to define the default attribute configuration of - * the class. - * - * @property ATTRS - * @type {Object} - * @protected - * @static - */ - ATTRS: { - - /** - * Maximum number of simultaneous uploads; must be in the - * range between 1 and 5. The value of `2` is default. It - * is recommended that this value does not exceed 3. - * @property simUploads - * @type Number - * @default 2 - */ - simUploads: { - value: 2, - validator: function (val, name) { - return (val >= 1 && val <= 5); - } - }, - - /** - * The action to take in case of error. The valid values for this attribute are: - * `Y.Uploader.Queue.CONTINUE` (the upload process should continue on other files, - * ignoring the error), `Y.Uploader.Queue.STOP` (the upload process - * should stop completely), `Y.Uploader.Queue.RESTART_ASAP` (the upload - * should restart immediately on the errored out file and continue as planned), or - * Y.Uploader.Queue.RESTART_AFTER (the upload of the errored out file should restart - * after all other files have uploaded) - * @property errorAction - * @type String - * @default Y.Uploader.Queue.CONTINUE - */ - errorAction: { - value: "continue", - validator: function (val, name) { - return (val === UploaderQueue.CONTINUE || val === UploaderQueue.STOP || val === UploaderQueue.RESTART_ASAP || val === UploaderQueue.RESTART_AFTER); - } - }, - - /** - * The total number of bytes that has been uploaded. - * @property bytesUploaded - * @type Number - */ - bytesUploaded: { - readOnly: true, - value: 0 - }, - - /** - * The total number of bytes in the queue. - * @property bytesTotal - * @type Number - */ - bytesTotal: { - readOnly: true, - value: 0 - }, - - /** - * The queue file list. This file list should only be modified - * before the upload has been started; modifying it after starting - * the upload has no effect, and `addToQueueTop` or `addToQueueBottom` methods - * should be used instead. - * @property fileList - * @type Number - */ - fileList: { - value: [], - lazyAdd: false, - setter: function (val) { - var newValue = val; - Y.Array.each(newValue, function (value) { - this.totalBytes += value.get("size"); - }, this); - - return val; - } - }, - - /** - * A String specifying what should be the POST field name for the file - * content in the upload request. - * - * @attribute fileFieldName - * @type {String} - * @default Filedata - */ - fileFieldName: { - value: "Filedata" - }, - - /** - * The URL to POST the file upload requests to. - * - * @attribute uploadURL - * @type {String} - * @default "" - */ - uploadURL: { - value: "" - }, - - /** - * Additional HTTP headers that should be included - * in the upload request. Due to Flash Player security - * restrictions, this attribute is only honored in the - * HTML5 Uploader. - * - * @attribute uploadHeaders - * @type {Object} - * @default {} - */ - uploadHeaders: { - value: {} - }, - - /** - * A Boolean that specifies whether the file should be - * uploaded with the appropriate user credentials for the - * domain. Due to Flash Player security restrictions, this - * attribute is only honored in the HTML5 Uploader. - * - * @attribute withCredentials - * @type {Boolean} - * @default true - */ - withCredentials: { - value: true - }, - - - /** - * An object, keyed by `fileId`, containing sets of key-value pairs - * that should be passed as POST variables along with each corresponding - * file. - * - * @attribute perFileParameters - * @type {Object} - * @default {} - */ - perFileParameters: { - value: {} - }, - - /** - * The number of times to try re-uploading a file that failed to upload before - * cancelling its upload. - * - * @attribute retryCount - * @type {Number} - * @default 3 - */ - retryCount: { - value: 3 - } - - } - }); - - - Y.namespace('Uploader'); - Y.Uploader.Queue = UploaderQueue; - -}, '3.7.3', {"requires": ["base"]}); diff --git a/lib/yuilib/3.7.3/build/uploader-queue/uploader-queue-min.js b/lib/yuilib/3.7.3/build/uploader-queue/uploader-queue-min.js deleted file mode 100644 index ad75741efdb..00000000000 --- a/lib/yuilib/3.7.3/build/uploader-queue/uploader-queue-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add("uploader-queue",function(e,t){var n=e.Lang,r=e.bind,i=e.config.win,s,o,u,a,f,l,c=function(e){this.queuedFiles=[],this.uploadRetries={},this.numberOfUploads=0,this.currentUploadedByteValues={},this.currentFiles={},this.totalBytesUploaded=0,this.totalBytes=0,c.superclass.constructor.apply(this,arguments)};e.extend(c,e.Base,{_currentState:c.STOPPED,initializer:function(e){},_uploadStartHandler:function(e){var t=e;t.file=e.target,t.originEvent=e,this.fire("uploadstart",t)},_uploadErrorHandler:function(e){var t=this.get("errorAction"),n=e;n.file=e.target,n.originEvent=e,this.numberOfUploads-=1,delete this.currentFiles[e.target.get("id")],this._detachFileEvents(e.target),e.target.cancelUpload();if(t===c.STOP)this.pauseUpload();else if(t===c.RESTART_ASAP){var r=e.target.get("id"),i=this.uploadRetries[r]||0;i0){var e=this.queuedFiles.shift(),t=e.get("id"),n=this.get("perFileParameters"),r=n.hasOwnProperty(t)?n[t]:n;this.currentUploadedByteValues[t]=0,e.on("uploadstart",this._uploadStartHandler,this),e.on("uploadprogress",this._uploadProgressHandler,this),e.on("uploadcomplete",this._uploadCompleteHandler,this),e.on("uploaderror",this._uploadErrorHandler,this),e.on("uploadcancel",this._uploadCancelHandler,this),e.set("xhrHeaders",this.get("uploadHeaders")),e.set("xhrWithCredentials",this.get("withCredentials")),e.startUpload(this.get("uploadURL"),r,this.get("fileFieldName")),this._registerUpload(e)}},_registerUpload:function(e){this.numberOfUploads+=1,this.currentFiles[e.get("id")]=e},_unregisterUpload:function(e){this.numberOfUploads>0&&(this.numberOfUploads-=1),delete this.currentFiles[e.get("id")],delete this.uploadRetries[e.get("id")],this._detachFileEvents(e)},_detachFileEvents:function(e){e.detach("uploadstart",this._uploadStartHandler),e.detach("uploadprogress",this._uploadProgressHandler),e.detach("uploadcomplete",this._uploadCompleteHandler),e.detach("uploaderror",this._uploadErrorHandler),e.detach("uploadcancel",this._uploadCancelHandler)},_uploadCompleteHandler:function(t){this._unregisterUpload(t.target),this.totalBytesUploaded+=t.target.get("size"),delete this.currentUploadedByteValues[t.target.get("id")],this.queuedFiles.length>0&&this._currentState===c.UPLOADING&&this._startNextFile();var n=t;n.file=t.target,n.originEvent=t;var r=this.totalBytesUploaded;e.each(this.currentUploadedByteValues,function(e){r+=e});var i=Math.min(100,Math.round(1e4*r/this.totalBytes)/100);this.fire("totaluploadprogress",{bytesLoaded:r,bytesTotal:this.totalBytes,percentLoaded:i}),this.fire("uploadcomplete",n),this.queuedFiles.length===0&&this.numberOfUploads<=0&&(this.fire("alluploadscomplete"),this._currentState=c.STOPPED)},_uploadCancelHandler:function(e){var t=e;t.originEvent=e,t.file=e.target,this.fire("uploadcacel",t)},_uploadProgressHandler:function(t){this.currentUploadedByteValues[t.target.get("id")]=t.bytesLoaded;var n=t;n.originEvent=t,n.file=t.target,this.fire("uploadprogress",n);var r=this.totalBytesUploaded;e.each(this.currentUploadedByteValues,function(e){r+=e});var i=Math.min(100,Math.round(1e4*r/this.totalBytes)/100);this.fire("totaluploadprogress",{bytesLoaded:r,bytesTotal:this.totalBytes,percentLoaded:i})},startUpload:function(){this.queuedFiles=this.get("fileList").slice(0),this.numberOfUploads=0,this.currentUploadedByteValues={},this.currentFiles={},this.totalBytesUploaded=0,this._currentState=c.UPLOADING;while(this.numberOfUploads0)this._startNextFile()},pauseUpload:function(){this._currentState=c.STOPPED},restartUpload:function(){this._currentState=c.UPLOADING;while(this.numberOfUploads=1&&e<=5}},errorAction:{value:"continue",validator:function(e,t){return e===c.CONTINUE||e===c.STOP||e===c.RESTART_ASAP||e===c.RESTART_AFTER}},bytesUploaded:{readOnly:!0,value:0},bytesTotal:{readOnly:!0,value:0},fileList:{value:[],lazyAdd:!1,setter:function(t){var n=t;return e.Array.each(n,function(e){this.totalBytes+=e.get("size")},this),t}},fileFieldName:{value:"Filedata"},uploadURL:{value:""},uploadHeaders:{value:{}},withCredentials:{value:!0},perFileParameters:{value:{}},retryCount:{value:3}}}),e.namespace("Uploader"),e.Uploader.Queue=c},"3.7.3",{requires:["base"]}); diff --git a/lib/yuilib/3.7.3/build/uploader-queue/uploader-queue.js b/lib/yuilib/3.7.3/build/uploader-queue/uploader-queue.js deleted file mode 100644 index f5a36af2efe..00000000000 --- a/lib/yuilib/3.7.3/build/uploader-queue/uploader-queue.js +++ /dev/null @@ -1,661 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add('uploader-queue', function (Y, NAME) { - - - /** - * The class manages a queue of files that should be uploaded to the server. - * It initializes the required number of uploads, tracks them as they progress, - * and automatically advances to the next upload when a preceding one has completed. - * @module uploader-queue - */ - - var Lang = Y.Lang, - Bind = Y.bind, - Win = Y.config.win, - queuedFiles, - numberOfUploads, - currentUploadedByteValues, - currentFiles, - totalBytesUploaded, - totalBytes; - - /** - * This class manages a queue of files to be uploaded to the server. - * @class Uploader.Queue - * @extends Base - * @constructor - * @param {Object} config Configuration object - */ - var UploaderQueue = function(o) { - this.queuedFiles = []; - this.uploadRetries = {}; - this.numberOfUploads = 0; - this.currentUploadedByteValues = {}; - this.currentFiles = {}; - this.totalBytesUploaded = 0; - this.totalBytes = 0; - - UploaderQueue.superclass.constructor.apply(this, arguments); - }; - - - Y.extend(UploaderQueue, Y.Base, { - - /** - * Stored value of the current queue state - * @property _currentState - * @type {String} - * @protected - * @default UploaderQueue.STOPPED - */ - _currentState: UploaderQueue.STOPPED, - - /** - * Construction logic executed during UploaderQueue instantiation. - * - * @method initializer - * @protected - */ - initializer : function (cfg) { - - }, - - /** - * Handles and retransmits upload start event. - * - * @method _uploadStartHandler - * @param event The event dispatched during the upload process. - * @private - */ - _uploadStartHandler : function (event) { - var updatedEvent = event; - updatedEvent.file = event.target; - updatedEvent.originEvent = event; - - this.fire("uploadstart", updatedEvent); - }, - - /** - * Handles and retransmits upload error event. - * - * @method _uploadErrorHandler - * @param event The event dispatched during the upload process. - * @private - */ - _uploadErrorHandler : function (event) { - var errorAction = this.get("errorAction"); - var updatedEvent = event; - updatedEvent.file = event.target; - updatedEvent.originEvent = event; - - this.numberOfUploads-=1; - delete this.currentFiles[event.target.get("id")]; - this._detachFileEvents(event.target); - - event.target.cancelUpload(); - - if (errorAction === UploaderQueue.STOP) { - this.pauseUpload(); - } - - else if (errorAction === UploaderQueue.RESTART_ASAP) { - var fileid = event.target.get("id"), - retries = this.uploadRetries[fileid] || 0; - if (retries < this.get("retryCount")) { - this.uploadRetries[fileid] = retries + 1; - this.addToQueueTop(event.target); - } - this._startNextFile(); - } - else if (errorAction === UploaderQueue.RESTART_AFTER) { - var fileid = event.target.get("id"), - retries = this.uploadRetries[fileid] || 0; - if (retries < this.get("retryCount")) { - this.uploadRetries[fileid] = retries + 1; - this.addToQueueBottom(event.target); - } - this._startNextFile(); - } - - this.fire("uploaderror", updatedEvent); - }, - - /** - * Launches the upload of the next file in the queue. - * - * @method _startNextFile - * @private - */ - _startNextFile : function () { - if (this.queuedFiles.length > 0) { - var currentFile = this.queuedFiles.shift(), - fileId = currentFile.get("id"), - parameters = this.get("perFileParameters"), - fileParameters = parameters.hasOwnProperty(fileId) ? parameters[fileId] : parameters; - - this.currentUploadedByteValues[fileId] = 0; - - currentFile.on("uploadstart", this._uploadStartHandler, this); - currentFile.on("uploadprogress", this._uploadProgressHandler, this); - currentFile.on("uploadcomplete", this._uploadCompleteHandler, this); - currentFile.on("uploaderror", this._uploadErrorHandler, this); - currentFile.on("uploadcancel", this._uploadCancelHandler, this); - - currentFile.set("xhrHeaders", this.get("uploadHeaders")); - currentFile.set("xhrWithCredentials", this.get("withCredentials")); - - currentFile.startUpload(this.get("uploadURL"), fileParameters, this.get("fileFieldName")); - - this._registerUpload(currentFile); - } - }, - - /** - * Register a new upload process. - * - * @method _registerUpload - * @private - */ - _registerUpload : function (file) { - this.numberOfUploads += 1; - this.currentFiles[file.get("id")] = file; - }, - - /** - * Unregisters a new upload process. - * - * @method _unregisterUpload - * @private - */ - _unregisterUpload : function (file) { - if (this.numberOfUploads > 0) { - this.numberOfUploads -=1; - } - delete this.currentFiles[file.get("id")]; - delete this.uploadRetries[file.get("id")]; - - this._detachFileEvents(file); - }, - - _detachFileEvents : function (file) { - file.detach("uploadstart", this._uploadStartHandler); - file.detach("uploadprogress", this._uploadProgressHandler); - file.detach("uploadcomplete", this._uploadCompleteHandler); - file.detach("uploaderror", this._uploadErrorHandler); - file.detach("uploadcancel", this._uploadCancelHandler); - }, - - /** - * Handles and retransmits upload complete event. - * - * @method _uploadCompleteHandler - * @param event The event dispatched during the upload process. - * @private - */ - _uploadCompleteHandler : function (event) { - - this._unregisterUpload(event.target); - - this.totalBytesUploaded += event.target.get("size"); - delete this.currentUploadedByteValues[event.target.get("id")]; - - - if (this.queuedFiles.length > 0 && this._currentState === UploaderQueue.UPLOADING) { - this._startNextFile(); - } - - var updatedEvent = event; - updatedEvent.file = event.target; - updatedEvent.originEvent = event; - - var uploadedTotal = this.totalBytesUploaded; - - Y.each(this.currentUploadedByteValues, function (value) { - uploadedTotal += value; - }); - - var percentLoaded = Math.min(100, Math.round(10000*uploadedTotal/this.totalBytes) / 100); - - this.fire("totaluploadprogress", {bytesLoaded: uploadedTotal, - bytesTotal: this.totalBytes, - percentLoaded: percentLoaded}); - - this.fire("uploadcomplete", updatedEvent); - - if (this.queuedFiles.length === 0 && this.numberOfUploads <= 0) { - this.fire("alluploadscomplete"); - this._currentState = UploaderQueue.STOPPED; - } - - - }, - - /** - * Handles and retransmits upload cancel event. - * - * @method _uploadCancelHandler - * @param event The event dispatched during the upload process. - * @private - */ - _uploadCancelHandler : function (event) { - - var updatedEvent = event; - updatedEvent.originEvent = event; - updatedEvent.file = event.target; - - this.fire("uploadcacel", updatedEvent); - }, - - - - /** - * Handles and retransmits upload progress event. - * - * @method _uploadProgressHandler - * @param event The event dispatched during the upload process. - * @private - */ - _uploadProgressHandler : function (event) { - - this.currentUploadedByteValues[event.target.get("id")] = event.bytesLoaded; - - var updatedEvent = event; - updatedEvent.originEvent = event; - updatedEvent.file = event.target; - - this.fire("uploadprogress", updatedEvent); - - var uploadedTotal = this.totalBytesUploaded; - - Y.each(this.currentUploadedByteValues, function (value) { - uploadedTotal += value; - }); - - var percentLoaded = Math.min(100, Math.round(10000*uploadedTotal/this.totalBytes) / 100); - - this.fire("totaluploadprogress", {bytesLoaded: uploadedTotal, - bytesTotal: this.totalBytes, - percentLoaded: percentLoaded}); - }, - - /** - * Starts uploading the queued up file list. - * - * @method startUpload - */ - startUpload: function() { - - this.queuedFiles = this.get("fileList").slice(0); - this.numberOfUploads = 0; - this.currentUploadedByteValues = {}; - this.currentFiles = {}; - this.totalBytesUploaded = 0; - - this._currentState = UploaderQueue.UPLOADING; - - while (this.numberOfUploads < this.get("simUploads") && this.queuedFiles.length > 0) { - this._startNextFile(); - } - }, - - /** - * Pauses the upload process. The ongoing file uploads - * will complete after this method is called, but no - * new ones will be launched. - * - * @method pauseUpload - */ - pauseUpload: function () { - this._currentState = UploaderQueue.STOPPED; - }, - - /** - * Restarts a paused upload process. - * - * @method restartUpload - */ - restartUpload: function () { - this._currentState = UploaderQueue.UPLOADING; - while (this.numberOfUploads < this.get("simUploads")) { - this._startNextFile(); - } - }, - - /** - * If a particular file is stuck in an ongoing upload without - * any progress events, this method allows to force its reupload - * by cancelling its upload and immediately relaunching it. - * - * @method forceReupload - * @param file {Y.File} The file to force reupload on. - */ - forceReupload : function (file) { - var id = file.get("id"); - if (this.currentFiles.hasOwnProperty(id)) { - file.cancelUpload(); - this._unregisterUpload(file); - this.addToQueueTop(file); - this._startNextFile(); - } - }, - - /** - * Add a new file to the top of the queue (the upload will be - * launched as soon as the current number of uploading files - * drops below the maximum permissible value). - * - * @method addToQueueTop - * @param file {Y.File} The file to add to the top of the queue. - */ - addToQueueTop: function (file) { - this.queuedFiles.unshift(file); - }, - - /** - * Add a new file to the bottom of the queue (the upload will be - * launched after all the other queued files are uploaded.) - * - * @method addToQueueBottom - * @param file {Y.File} The file to add to the bottom of the queue. - */ - addToQueueBottom: function (file) { - this.queuedFiles.push(file); - }, - - /** - * Cancels a specific file's upload. If no argument is passed, - * all ongoing uploads are cancelled and the upload process is - * stopped. - * - * @method cancelUpload - * @param file {Y.File} An optional parameter - the file whose upload - * should be cancelled. - */ - cancelUpload: function (file) { - - if (file) { - var id = file.get("id"); - if (this.currentFiles[id]) { - this.currentFiles[id].cancelUpload(); - this._unregisterUpload(this.currentFiles[id]); - if (this._currentState === UploaderQueue.UPLOADING) { - this._startNextFile(); - } - } - else { - for (var i = 0, len = this.queuedFiles.length; i < len; i++) { - if (this.queuedFiles[i].get("id") === id) { - this.queuedFiles.splice(i, 1); - break; - } - } - } - } - else { - for (var fid in this.currentFiles) { - this.currentFiles[fid].cancelUpload(); - this._unregisterUpload(this.currentFiles[fid]); - } - - this.currentUploadedByteValues = {}; - this.currentFiles = {}; - this.totalBytesUploaded = 0; - this.fire("alluploadscancelled"); - this._currentState = UploaderQueue.STOPPED; - } - } - }, - - { - /** - * Static constant for the value of the `errorAction` attribute: - * prescribes the queue to continue uploading files in case of - * an error. - * @property CONTINUE - * @readOnly - * @type {String} - * @static - */ - CONTINUE: "continue", - - /** - * Static constant for the value of the `errorAction` attribute: - * prescribes the queue to stop uploading files in case of - * an error. - * @property STOP - * @readOnly - * @type {String} - * @static - */ - STOP: "stop", - - /** - * Static constant for the value of the `errorAction` attribute: - * prescribes the queue to restart a file upload immediately in case of - * an error. - * @property RESTART_ASAP - * @readOnly - * @type {String} - * @static - */ - RESTART_ASAP: "restartasap", - - /** - * Static constant for the value of the `errorAction` attribute: - * prescribes the queue to restart an errored out file upload after - * other files have finished uploading. - * @property RESTART_AFTER - * @readOnly - * @type {String} - * @static - */ - RESTART_AFTER: "restartafter", - - /** - * Static constant for the value of the `_currentState` property: - * implies that the queue is currently not uploading files. - * @property STOPPED - * @readOnly - * @type {String} - * @static - */ - STOPPED: "stopped", - - /** - * Static constant for the value of the `_currentState` property: - * implies that the queue is currently uploading files. - * @property UPLOADING - * @readOnly - * @type {String} - * @static - */ - UPLOADING: "uploading", - - /** - * The identity of the class. - * - * @property NAME - * @type String - * @default 'uploaderqueue' - * @readOnly - * @protected - * @static - */ - NAME: 'uploaderqueue', - - /** - * Static property used to define the default attribute configuration of - * the class. - * - * @property ATTRS - * @type {Object} - * @protected - * @static - */ - ATTRS: { - - /** - * Maximum number of simultaneous uploads; must be in the - * range between 1 and 5. The value of `2` is default. It - * is recommended that this value does not exceed 3. - * @property simUploads - * @type Number - * @default 2 - */ - simUploads: { - value: 2, - validator: function (val, name) { - return (val >= 1 && val <= 5); - } - }, - - /** - * The action to take in case of error. The valid values for this attribute are: - * `Y.Uploader.Queue.CONTINUE` (the upload process should continue on other files, - * ignoring the error), `Y.Uploader.Queue.STOP` (the upload process - * should stop completely), `Y.Uploader.Queue.RESTART_ASAP` (the upload - * should restart immediately on the errored out file and continue as planned), or - * Y.Uploader.Queue.RESTART_AFTER (the upload of the errored out file should restart - * after all other files have uploaded) - * @property errorAction - * @type String - * @default Y.Uploader.Queue.CONTINUE - */ - errorAction: { - value: "continue", - validator: function (val, name) { - return (val === UploaderQueue.CONTINUE || val === UploaderQueue.STOP || val === UploaderQueue.RESTART_ASAP || val === UploaderQueue.RESTART_AFTER); - } - }, - - /** - * The total number of bytes that has been uploaded. - * @property bytesUploaded - * @type Number - */ - bytesUploaded: { - readOnly: true, - value: 0 - }, - - /** - * The total number of bytes in the queue. - * @property bytesTotal - * @type Number - */ - bytesTotal: { - readOnly: true, - value: 0 - }, - - /** - * The queue file list. This file list should only be modified - * before the upload has been started; modifying it after starting - * the upload has no effect, and `addToQueueTop` or `addToQueueBottom` methods - * should be used instead. - * @property fileList - * @type Number - */ - fileList: { - value: [], - lazyAdd: false, - setter: function (val) { - var newValue = val; - Y.Array.each(newValue, function (value) { - this.totalBytes += value.get("size"); - }, this); - - return val; - } - }, - - /** - * A String specifying what should be the POST field name for the file - * content in the upload request. - * - * @attribute fileFieldName - * @type {String} - * @default Filedata - */ - fileFieldName: { - value: "Filedata" - }, - - /** - * The URL to POST the file upload requests to. - * - * @attribute uploadURL - * @type {String} - * @default "" - */ - uploadURL: { - value: "" - }, - - /** - * Additional HTTP headers that should be included - * in the upload request. Due to Flash Player security - * restrictions, this attribute is only honored in the - * HTML5 Uploader. - * - * @attribute uploadHeaders - * @type {Object} - * @default {} - */ - uploadHeaders: { - value: {} - }, - - /** - * A Boolean that specifies whether the file should be - * uploaded with the appropriate user credentials for the - * domain. Due to Flash Player security restrictions, this - * attribute is only honored in the HTML5 Uploader. - * - * @attribute withCredentials - * @type {Boolean} - * @default true - */ - withCredentials: { - value: true - }, - - - /** - * An object, keyed by `fileId`, containing sets of key-value pairs - * that should be passed as POST variables along with each corresponding - * file. - * - * @attribute perFileParameters - * @type {Object} - * @default {} - */ - perFileParameters: { - value: {} - }, - - /** - * The number of times to try re-uploading a file that failed to upload before - * cancelling its upload. - * - * @attribute retryCount - * @type {Number} - * @default 3 - */ - retryCount: { - value: 3 - } - - } - }); - - - Y.namespace('Uploader'); - Y.Uploader.Queue = UploaderQueue; - -}, '3.7.3', {"requires": ["base"]}); diff --git a/lib/yuilib/3.7.3/build/uploader/uploader-coverage.js b/lib/yuilib/3.7.3/build/uploader/uploader-coverage.js deleted file mode 100644 index 3093d48ccae..00000000000 --- a/lib/yuilib/3.7.3/build/uploader/uploader-coverage.js +++ /dev/null @@ -1,100 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -if (typeof _yuitest_coverage == "undefined"){ - _yuitest_coverage = {}; - _yuitest_coverline = function(src, line){ - var coverage = _yuitest_coverage[src]; - if (!coverage.lines[line]){ - coverage.calledLines++; - } - coverage.lines[line]++; - }; - _yuitest_coverfunc = function(src, name, line){ - var coverage = _yuitest_coverage[src], - funcId = name + ":" + line; - if (!coverage.functions[funcId]){ - coverage.calledFunctions++; - } - coverage.functions[funcId]++; - }; -} -_yuitest_coverage["build/uploader/uploader.js"] = { - lines: {}, - functions: {}, - coveredLines: 0, - calledLines: 0, - coveredFunctions: 0, - calledFunctions: 0, - path: "build/uploader/uploader.js", - code: [] -}; -_yuitest_coverage["build/uploader/uploader.js"].code=["YUI.add('uploader', function (Y, NAME) {","","/**"," * Provides UI for selecting multiple files and functionality for "," * uploading multiple files to the server with support for either"," * html5 or Flash transport mechanisms, automatic queue management,"," * upload progress monitoring, and error events."," * @module uploader"," * @main uploader"," * @since 3.5.0"," */","","/**"," * `Y.Uploader` serves as an alias for either `Y.UploaderFlash`"," * or `Y.UploaderHTML5`, depending on the feature set available"," * in a specific browser. If neither HTML5 nor Flash transport layers are available, `Y.Uploader.TYPE` "," * static property is set to `\"none\"`."," *"," * @class Uploader"," */",""," /**"," * The static property reflecting the type of uploader that `Y.Uploader`"," * aliases. The possible values are:"," *
            "," *
          • `\"html5\"`: Y.Uploader is an alias for Y.UploaderHTML5
          • "," *
          • `\"flash\"`: Y.Uploader is an alias for Y.UploaderFlash
          • "," *
          • `\"none\"`: Neither Flash not HTML5 are available, and Y.Uploader does"," * not reference an actual implementation.
          • "," *
          "," *"," * @property TYPE"," * @type {String}"," * @static"," */",""," var Win = Y.config.win;",""," if (Win && Win.File && Win.FormData && Win.XMLHttpRequest) {"," Y.Uploader = Y.UploaderHTML5;"," }",""," else if (Y.SWFDetect.isFlashVersionAtLeast(10,0,45)) {"," Y.Uploader = Y.UploaderFlash;"," }",""," else {"," Y.namespace(\"Uploader\");"," Y.Uploader.TYPE = \"none\";"," }","","}, '3.7.3', {\"requires\": [\"uploader-html5\", \"uploader-flash\"]});"]; -_yuitest_coverage["build/uploader/uploader.js"].lines = {"1":0,"37":0,"39":0,"40":0,"43":0,"44":0,"48":0,"49":0}; -_yuitest_coverage["build/uploader/uploader.js"].functions = {"(anonymous 1):1":0}; -_yuitest_coverage["build/uploader/uploader.js"].coveredLines = 8; -_yuitest_coverage["build/uploader/uploader.js"].coveredFunctions = 1; -_yuitest_coverline("build/uploader/uploader.js", 1); -YUI.add('uploader', function (Y, NAME) { - -/** - * Provides UI for selecting multiple files and functionality for - * uploading multiple files to the server with support for either - * html5 or Flash transport mechanisms, automatic queue management, - * upload progress monitoring, and error events. - * @module uploader - * @main uploader - * @since 3.5.0 - */ - -/** - * `Y.Uploader` serves as an alias for either `Y.UploaderFlash` - * or `Y.UploaderHTML5`, depending on the feature set available - * in a specific browser. If neither HTML5 nor Flash transport layers are available, `Y.Uploader.TYPE` - * static property is set to `"none"`. - * - * @class Uploader - */ - - /** - * The static property reflecting the type of uploader that `Y.Uploader` - * aliases. The possible values are: - *
            - *
          • `"html5"`: Y.Uploader is an alias for Y.UploaderHTML5
          • - *
          • `"flash"`: Y.Uploader is an alias for Y.UploaderFlash
          • - *
          • `"none"`: Neither Flash not HTML5 are available, and Y.Uploader does - * not reference an actual implementation.
          • - *
          - * - * @property TYPE - * @type {String} - * @static - */ - - _yuitest_coverfunc("build/uploader/uploader.js", "(anonymous 1)", 1); -_yuitest_coverline("build/uploader/uploader.js", 37); -var Win = Y.config.win; - - _yuitest_coverline("build/uploader/uploader.js", 39); -if (Win && Win.File && Win.FormData && Win.XMLHttpRequest) { - _yuitest_coverline("build/uploader/uploader.js", 40); -Y.Uploader = Y.UploaderHTML5; - } - - else {_yuitest_coverline("build/uploader/uploader.js", 43); -if (Y.SWFDetect.isFlashVersionAtLeast(10,0,45)) { - _yuitest_coverline("build/uploader/uploader.js", 44); -Y.Uploader = Y.UploaderFlash; - } - - else { - _yuitest_coverline("build/uploader/uploader.js", 48); -Y.namespace("Uploader"); - _yuitest_coverline("build/uploader/uploader.js", 49); -Y.Uploader.TYPE = "none"; - }} - -}, '3.7.3', {"requires": ["uploader-html5", "uploader-flash"]}); diff --git a/lib/yuilib/3.7.3/build/uploader/uploader-debug.js b/lib/yuilib/3.7.3/build/uploader/uploader-debug.js deleted file mode 100644 index f7abef81956..00000000000 --- a/lib/yuilib/3.7.3/build/uploader/uploader-debug.js +++ /dev/null @@ -1,58 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add('uploader', function (Y, NAME) { - -/** - * Provides UI for selecting multiple files and functionality for - * uploading multiple files to the server with support for either - * html5 or Flash transport mechanisms, automatic queue management, - * upload progress monitoring, and error events. - * @module uploader - * @main uploader - * @since 3.5.0 - */ - -/** - * `Y.Uploader` serves as an alias for either `Y.UploaderFlash` - * or `Y.UploaderHTML5`, depending on the feature set available - * in a specific browser. If neither HTML5 nor Flash transport layers are available, `Y.Uploader.TYPE` - * static property is set to `"none"`. - * - * @class Uploader - */ - - /** - * The static property reflecting the type of uploader that `Y.Uploader` - * aliases. The possible values are: - *
            - *
          • `"html5"`: Y.Uploader is an alias for Y.UploaderHTML5
          • - *
          • `"flash"`: Y.Uploader is an alias for Y.UploaderFlash
          • - *
          • `"none"`: Neither Flash not HTML5 are available, and Y.Uploader does - * not reference an actual implementation.
          • - *
          - * - * @property TYPE - * @type {String} - * @static - */ - - var Win = Y.config.win; - - if (Win && Win.File && Win.FormData && Win.XMLHttpRequest) { - Y.Uploader = Y.UploaderHTML5; - } - - else if (Y.SWFDetect.isFlashVersionAtLeast(10,0,45)) { - Y.Uploader = Y.UploaderFlash; - } - - else { - Y.namespace("Uploader"); - Y.Uploader.TYPE = "none"; - } - -}, '3.7.3', {"requires": ["uploader-html5", "uploader-flash"]}); diff --git a/lib/yuilib/3.7.3/build/uploader/uploader.js b/lib/yuilib/3.7.3/build/uploader/uploader.js deleted file mode 100644 index f7abef81956..00000000000 --- a/lib/yuilib/3.7.3/build/uploader/uploader.js +++ /dev/null @@ -1,58 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -YUI.add('uploader', function (Y, NAME) { - -/** - * Provides UI for selecting multiple files and functionality for - * uploading multiple files to the server with support for either - * html5 or Flash transport mechanisms, automatic queue management, - * upload progress monitoring, and error events. - * @module uploader - * @main uploader - * @since 3.5.0 - */ - -/** - * `Y.Uploader` serves as an alias for either `Y.UploaderFlash` - * or `Y.UploaderHTML5`, depending on the feature set available - * in a specific browser. If neither HTML5 nor Flash transport layers are available, `Y.Uploader.TYPE` - * static property is set to `"none"`. - * - * @class Uploader - */ - - /** - * The static property reflecting the type of uploader that `Y.Uploader` - * aliases. The possible values are: - *
            - *
          • `"html5"`: Y.Uploader is an alias for Y.UploaderHTML5
          • - *
          • `"flash"`: Y.Uploader is an alias for Y.UploaderFlash
          • - *
          • `"none"`: Neither Flash not HTML5 are available, and Y.Uploader does - * not reference an actual implementation.
          • - *
          - * - * @property TYPE - * @type {String} - * @static - */ - - var Win = Y.config.win; - - if (Win && Win.File && Win.FormData && Win.XMLHttpRequest) { - Y.Uploader = Y.UploaderHTML5; - } - - else if (Y.SWFDetect.isFlashVersionAtLeast(10,0,45)) { - Y.Uploader = Y.UploaderFlash; - } - - else { - Y.namespace("Uploader"); - Y.Uploader.TYPE = "none"; - } - -}, '3.7.3', {"requires": ["uploader-html5", "uploader-flash"]}); diff --git a/lib/yuilib/3.7.3/build/widget-skin/assets/widget-base-core.css b/lib/yuilib/3.7.3/build/widget-skin/assets/widget-base-core.css deleted file mode 100644 index 9e5ce67a6a0..00000000000 --- a/lib/yuilib/3.7.3/build/widget-skin/assets/widget-base-core.css +++ /dev/null @@ -1,26 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -.yui3-widget-hidden { - display:none; -} - -.yui3-widget-content { - overflow:hidden; -} - -.yui3-widget-content-expanded { - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing:border-box; - height:100%; -} - -/* Only used for IE6, to go from a bigger size to a smaller size when using cb.sizeTo(bb) */ -.yui3-widget-tmp-forcesize { - overflow:hidden !important; -} \ No newline at end of file diff --git a/lib/yuilib/3.7.3/build/widget-uievents/assets/widget-base-core.css b/lib/yuilib/3.7.3/build/widget-uievents/assets/widget-base-core.css deleted file mode 100644 index 9e5ce67a6a0..00000000000 --- a/lib/yuilib/3.7.3/build/widget-uievents/assets/widget-base-core.css +++ /dev/null @@ -1,26 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -.yui3-widget-hidden { - display:none; -} - -.yui3-widget-content { - overflow:hidden; -} - -.yui3-widget-content-expanded { - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing:border-box; - height:100%; -} - -/* Only used for IE6, to go from a bigger size to a smaller size when using cb.sizeTo(bb) */ -.yui3-widget-tmp-forcesize { - overflow:hidden !important; -} \ No newline at end of file diff --git a/lib/yuilib/3.7.3/build/yui-base/yui-base-coverage.js b/lib/yuilib/3.7.3/build/yui-base/yui-base-coverage.js deleted file mode 100644 index 049f005c971..00000000000 --- a/lib/yuilib/3.7.3/build/yui-base/yui-base-coverage.js +++ /dev/null @@ -1,4795 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -if (typeof _yuitest_coverage == "undefined"){ - _yuitest_coverage = {}; - _yuitest_coverline = function(src, line){ - var coverage = _yuitest_coverage[src]; - if (!coverage.lines[line]){ - coverage.calledLines++; - } - coverage.lines[line]++; - }; - _yuitest_coverfunc = function(src, name, line){ - var coverage = _yuitest_coverage[src], - funcId = name + ":" + line; - if (!coverage.functions[funcId]){ - coverage.calledFunctions++; - } - coverage.functions[funcId]++; - }; -} -_yuitest_coverage["build/yui-base/yui-base.js"] = { - lines: {}, - functions: {}, - coveredLines: 0, - calledLines: 0, - coveredFunctions: 0, - calledFunctions: 0, - path: "build/yui-base/yui-base.js", - code: [] -}; -_yuitest_coverage["build/yui-base/yui-base.js"].code=["/**"," * The YUI module contains the components required for building the YUI seed"," * file. This includes the script loading mechanism, a simple queue, and"," * the core utilities for the library."," * @module yui"," * @main yui"," * @submodule yui-base"," */","","if (typeof YUI != 'undefined') {"," YUI._YUI = YUI;","}","","/**","The YUI global namespace object. If YUI is already defined, the","existing YUI object will not be overwritten so that defined","namespaces are preserved. It is the constructor for the object","the end user interacts with. As indicated below, each instance","has full custom event support, but only if the event system","is available. This is a self-instantiable factory function. You","can invoke it directly like this:",""," YUI().use('*', function(Y) {"," // ready"," });","","But it also works like this:",""," var Y = YUI();","","Configuring the YUI object:",""," YUI({"," debug: true,"," combine: false"," }).use('node', function(Y) {"," //Node is ready to use"," });","","See the API docs for the Config class","for the complete list of supported configuration properties accepted","by the YUI constuctor.","","@class YUI","@constructor","@global","@uses EventTarget","@param [o]* {Object} 0..n optional configuration objects. these values","are store in Y.config. See Config for the list of supported","properties.","*/"," /*global YUI*/"," /*global YUI_config*/"," var YUI = function() {"," var i = 0,"," Y = this,"," args = arguments,"," l = args.length,"," instanceOf = function(o, type) {"," return (o && o.hasOwnProperty && (o instanceof type));"," },"," gconf = (typeof YUI_config !== 'undefined') && YUI_config;",""," if (!(instanceOf(Y, YUI))) {"," Y = new YUI();"," } else {"," // set up the core environment"," Y._init();",""," /**"," YUI.GlobalConfig is a master configuration that might span"," multiple contexts in a non-browser environment. It is applied"," first to all instances in all contexts."," @property GlobalConfig"," @type {Object}"," @global"," @static"," @example","",""," YUI.GlobalConfig = {"," filter: 'debug'"," };",""," YUI().use('node', function(Y) {"," //debug files used here"," });",""," YUI({"," filter: 'min'"," }).use('node', function(Y) {"," //min files used here"," });",""," */"," if (YUI.GlobalConfig) {"," Y.applyConfig(YUI.GlobalConfig);"," }",""," /**"," YUI_config is a page-level config. It is applied to all"," instances created on the page. This is applied after"," YUI.GlobalConfig, and before the instance level configuration"," objects."," @global"," @property YUI_config"," @type {Object}"," @example","",""," //Single global var to include before YUI seed file"," YUI_config = {"," filter: 'debug'"," };",""," YUI().use('node', function(Y) {"," //debug files used here"," });",""," YUI({"," filter: 'min'"," }).use('node', function(Y) {"," //min files used here"," });"," */"," if (gconf) {"," Y.applyConfig(gconf);"," }",""," // bind the specified additional modules for this instance"," if (!l) {"," Y._setup();"," }"," }",""," if (l) {"," // Each instance can accept one or more configuration objects."," // These are applied after YUI.GlobalConfig and YUI_Config,"," // overriding values set in those config files if there is a '"," // matching property."," for (; i < l; i++) {"," Y.applyConfig(args[i]);"," }",""," Y._setup();"," }",""," Y.instanceOf = instanceOf;",""," return Y;"," };","","(function() {",""," var proto, prop,"," VERSION = '3.7.3',"," PERIOD = '.',"," BASE = 'http://yui.yahooapis.com/',"," /*"," These CSS class names can't be generated by"," getClassName since it is not available at the"," time they are being used."," */"," DOC_LABEL = 'yui3-js-enabled',"," CSS_STAMP_EL = 'yui3-css-stamp',"," NOOP = function() {},"," SLICE = Array.prototype.slice,"," APPLY_TO_AUTH = { 'io.xdrReady': 1, // the functions applyTo"," 'io.xdrResponse': 1, // can call. this should"," 'SWF.eventHandler': 1 }, // be done at build time"," hasWin = (typeof window != 'undefined'),"," win = (hasWin) ? window : null,"," doc = (hasWin) ? win.document : null,"," docEl = doc && doc.documentElement,"," docClass = docEl && docEl.className,"," instances = {},"," time = new Date().getTime(),"," add = function(el, type, fn, capture) {"," if (el && el.addEventListener) {"," el.addEventListener(type, fn, capture);"," } else if (el && el.attachEvent) {"," el.attachEvent('on' + type, fn);"," }"," },"," remove = function(el, type, fn, capture) {"," if (el && el.removeEventListener) {"," // this can throw an uncaught exception in FF"," try {"," el.removeEventListener(type, fn, capture);"," } catch (ex) {}"," } else if (el && el.detachEvent) {"," el.detachEvent('on' + type, fn);"," }"," },"," handleLoad = function() {"," YUI.Env.windowLoaded = true;"," YUI.Env.DOMReady = true;"," if (hasWin) {"," remove(window, 'load', handleLoad);"," }"," },"," getLoader = function(Y, o) {"," var loader = Y.Env._loader,"," lCore = [ 'loader-base' ],"," G_ENV = YUI.Env,"," mods = G_ENV.mods;",""," if (loader) {"," //loader._config(Y.config);"," loader.ignoreRegistered = false;"," loader.onEnd = null;"," loader.data = null;"," loader.required = [];"," loader.loadType = null;"," } else {"," loader = new Y.Loader(Y.config);"," Y.Env._loader = loader;"," }"," if (mods && mods.loader) {"," lCore = [].concat(lCore, YUI.Env.loaderExtras);"," }"," YUI.Env.core = Y.Array.dedupe([].concat(YUI.Env.core, lCore));",""," return loader;"," },",""," clobber = function(r, s) {"," for (var i in s) {"," if (s.hasOwnProperty(i)) {"," r[i] = s[i];"," }"," }"," },",""," ALREADY_DONE = { success: true };","","// Stamp the documentElement (HTML) with a class of \"yui-loaded\" to","// enable styles that need to key off of JS being enabled.","if (docEl && docClass.indexOf(DOC_LABEL) == -1) {"," if (docClass) {"," docClass += ' ';"," }"," docClass += DOC_LABEL;"," docEl.className = docClass;","}","","if (VERSION.indexOf('@') > -1) {"," VERSION = '3.5.0'; // dev time hack for cdn test","}","","proto = {"," /**"," * Applies a new configuration object to the YUI instance config."," * This will merge new group/module definitions, and will also"," * update the loader cache if necessary. Updating Y.config directly"," * will not update the cache."," * @method applyConfig"," * @param {Object} o the configuration object."," * @since 3.2.0"," */"," applyConfig: function(o) {",""," o = o || NOOP;",""," var attr,"," name,"," // detail,"," config = this.config,"," mods = config.modules,"," groups = config.groups,"," aliases = config.aliases,"," loader = this.Env._loader;",""," for (name in o) {"," if (o.hasOwnProperty(name)) {"," attr = o[name];"," if (mods && name == 'modules') {"," clobber(mods, attr);"," } else if (aliases && name == 'aliases') {"," clobber(aliases, attr);"," } else if (groups && name == 'groups') {"," clobber(groups, attr);"," } else if (name == 'win') {"," config[name] = (attr && attr.contentWindow) || attr;"," config.doc = config[name] ? config[name].document : null;"," } else if (name == '_yuid') {"," // preserve the guid"," } else {"," config[name] = attr;"," }"," }"," }",""," if (loader) {"," loader._config(o);"," }",""," },"," /**"," * Old way to apply a config to the instance (calls `applyConfig` under the hood)"," * @private"," * @method _config"," * @param {Object} o The config to apply"," */"," _config: function(o) {"," this.applyConfig(o);"," },",""," /**"," * Initialize this YUI instance"," * @private"," * @method _init"," */"," _init: function() {"," var filter, el,"," Y = this,"," G_ENV = YUI.Env,"," Env = Y.Env,"," prop;",""," /**"," * The version number of the YUI instance."," * @property version"," * @type string"," */"," Y.version = VERSION;",""," if (!Env) {"," Y.Env = {"," core: ['get', 'features', 'intl-base', 'yui-log', 'yui-later'],"," loaderExtras: ['loader-rollup', 'loader-yui3'],"," mods: {}, // flat module map"," versions: {}, // version module map"," base: BASE,"," cdn: BASE + VERSION + '/build/',"," // bootstrapped: false,"," _idx: 0,"," _used: {},"," _attached: {},"," _missed: [],"," _yidx: 0,"," _uidx: 0,"," _guidp: 'y',"," _loaded: {},"," // serviced: {},"," // Regex in English:"," // I'll start at the \\b(simpleyui)."," // 1. Look in the test string for \"simpleyui\" or \"yui\" or"," // \"yui-base\" or \"yui-davglass\" or \"yui-foobar\" that comes after a word break. That is, it"," // can't match \"foyui\" or \"i_heart_simpleyui\". This can be anywhere in the string."," // 2. After #1 must come a forward slash followed by the string matched in #1, so"," // \"yui-base/yui-base\" or \"simpleyui/simpleyui\" or \"yui-pants/yui-pants\"."," // 3. The second occurence of the #1 token can optionally be followed by \"-debug\" or \"-min\","," // so \"yui/yui-min\", \"yui/yui-debug\", \"yui-base/yui-base-debug\". NOT \"yui/yui-tshirt\"."," // 4. This is followed by \".js\", so \"yui/yui.js\", \"simpleyui/simpleyui-min.js\""," // 0. Going back to the beginning, now. If all that stuff in 1-4 comes after a \"?\" in the string,"," // then capture the junk between the LAST \"&\" and the string in 1-4. So"," // \"blah?foo/yui/yui.js\" will capture \"foo/\" and \"blah?some/thing.js&3.3.0/build/yui-davglass/yui-davglass.js\""," // will capture \"3.3.0/build/\""," //"," // Regex Exploded:"," // (?:\\? Find a ?"," // (?:[^&]*&) followed by 0..n characters followed by an &"," // * in fact, find as many sets of characters followed by a & as you can"," // ([^&]*) capture the stuff after the last & in \\1"," // )? but it's ok if all this ?junk&more_junk stuff isn't even there"," // \\b(simpleyui| after a word break find either the string \"simpleyui\" or"," // yui(?:-\\w+)? the string \"yui\" optionally followed by a -, then more characters"," // ) and store the simpleyui or yui-* string in \\2"," // \\/\\2 then comes a / followed by the simpleyui or yui-* string in \\2"," // (?:-(min|debug))? optionally followed by \"-min\" or \"-debug\""," // .js and ending in \".js\""," _BASE_RE: /(?:\\?(?:[^&]*&)*([^&]*))?\\b(simpleyui|yui(?:-\\w+)?)\\/\\2(?:-(min|debug))?\\.js/,"," parseBasePath: function(src, pattern) {"," var match = src.match(pattern),"," path, filter;",""," if (match) {"," path = RegExp.leftContext || src.slice(0, src.indexOf(match[0]));",""," // this is to set up the path to the loader. The file"," // filter for loader should match the yui include."," filter = match[3];",""," // extract correct path for mixed combo urls"," // http://yuilibrary.com/projects/yui3/ticket/2528423"," if (match[1]) {"," path += '?' + match[1];"," }"," path = {"," filter: filter,"," path: path"," };"," }"," return path;"," },"," getBase: G_ENV && G_ENV.getBase ||"," function(pattern) {"," var nodes = (doc && doc.getElementsByTagName('script')) || [],"," path = Env.cdn, parsed,"," i, len, src;",""," for (i = 0, len = nodes.length; i < len; ++i) {"," src = nodes[i].src;"," if (src) {"," parsed = Y.Env.parseBasePath(src, pattern);"," if (parsed) {"," filter = parsed.filter;"," path = parsed.path;"," break;"," }"," }"," }",""," // use CDN default"," return path;"," }",""," };",""," Env = Y.Env;",""," Env._loaded[VERSION] = {};",""," if (G_ENV && Y !== YUI) {"," Env._yidx = ++G_ENV._yidx;"," Env._guidp = ('yui_' + VERSION + '_' +"," Env._yidx + '_' + time).replace(/\\./g, '_').replace(/-/g, '_');"," } else if (YUI._YUI) {",""," G_ENV = YUI._YUI.Env;"," Env._yidx += G_ENV._yidx;"," Env._uidx += G_ENV._uidx;",""," for (prop in G_ENV) {"," if (!(prop in Env)) {"," Env[prop] = G_ENV[prop];"," }"," }",""," delete YUI._YUI;"," }",""," Y.id = Y.stamp(Y);"," instances[Y.id] = Y;",""," }",""," Y.constructor = YUI;",""," // configuration defaults"," Y.config = Y.config || {"," bootstrap: true,"," cacheUse: true,"," debug: true,"," doc: doc,"," fetchCSS: true,"," throwFail: true,"," useBrowserConsole: true,"," useNativeES5: true,"," win: win"," };",""," //Register the CSS stamp element"," if (doc && !doc.getElementById(CSS_STAMP_EL)) {"," el = doc.createElement('div');"," el.innerHTML = '';"," YUI.Env.cssStampEl = el.firstChild;"," if (doc.body) {"," doc.body.appendChild(YUI.Env.cssStampEl);"," } else {"," docEl.insertBefore(YUI.Env.cssStampEl, docEl.firstChild);"," }"," }",""," Y.config.lang = Y.config.lang || 'en-US';",""," Y.config.base = YUI.config.base || Y.Env.getBase(Y.Env._BASE_RE);",""," if (!filter || (!('mindebug').indexOf(filter))) {"," filter = 'min';"," }"," filter = (filter) ? '-' + filter : filter;"," Y.config.loaderPath = YUI.config.loaderPath || 'loader/loader' + filter + '.js';",""," },",""," /**"," * Finishes the instance setup. Attaches whatever modules were defined"," * when the yui modules was registered."," * @method _setup"," * @private"," */"," _setup: function(o) {"," var i, Y = this,"," core = [],"," mods = YUI.Env.mods,"," extras = Y.config.core || [].concat(YUI.Env.core); //Clone it..",""," for (i = 0; i < extras.length; i++) {"," if (mods[extras[i]]) {"," core.push(extras[i]);"," }"," }",""," Y._attach(['yui-base']);"," Y._attach(core);",""," if (Y.Loader) {"," getLoader(Y);"," }",""," },",""," /**"," * Executes a method on a YUI instance with"," * the specified id if the specified method is whitelisted."," * @method applyTo"," * @param id {String} the YUI instance id."," * @param method {String} the name of the method to exectute."," * Ex: 'Object.keys'."," * @param args {Array} the arguments to apply to the method."," * @return {Object} the return value from the applied method or null."," */"," applyTo: function(id, method, args) {"," if (!(method in APPLY_TO_AUTH)) {"," this.log(method + ': applyTo not allowed', 'warn', 'yui');"," return null;"," }",""," var instance = instances[id], nest, m, i;"," if (instance) {"," nest = method.split('.');"," m = instance;"," for (i = 0; i < nest.length; i = i + 1) {"," m = m[nest[i]];"," if (!m) {"," this.log('applyTo not found: ' + method, 'warn', 'yui');"," }"," }"," return m && m.apply(instance, args);"," }",""," return null;"," },","","/**","Registers a module with the YUI global. The easiest way to create a","first-class YUI module is to use the YUI component ","build tool Shifter.","","The build system will produce the `YUI.add` wrapper for your module, along","with any configuration info required for the module.","","@method add","@param name {String} module name.","@param fn {Function} entry point into the module that is used to bind module to the YUI instance.","@param {YUI} fn.Y The YUI instance this module is executed in.","@param {String} fn.name The name of the module","@param version {String} version string.","@param details {Object} optional config data:","@param details.requires {Array} features that must be present before this module can be attached.","@param details.optional {Array} optional features that should be present if loadOptional"," is defined. Note: modules are not often loaded this way in YUI 3,"," but this field is still useful to inform the user that certain"," features in the component will require additional dependencies.","@param details.use {Array} features that are included within this module which need to"," be attached automatically when this module is attached. This"," supports the YUI 3 rollup system -- a module with submodules"," defined will need to have the submodules listed in the 'use'"," config. The YUI component build tool does this for you.","@return {YUI} the YUI instance.","@example",""," YUI.add('davglass', function(Y, name) {"," Y.davglass = function() {"," alert('Dav was here!');"," };"," }, '3.4.0', { requires: ['yui-base', 'harley-davidson', 'mt-dew'] });","","*/"," add: function(name, fn, version, details) {"," details = details || {};"," var env = YUI.Env,"," mod = {"," name: name,"," fn: fn,"," version: version,"," details: details"," },"," //Instance hash so we don't apply it to the same instance twice"," applied = {},"," loader, inst,"," i, versions = env.versions;",""," env.mods[name] = mod;"," versions[version] = versions[version] || {};"," versions[version][name] = mod;",""," for (i in instances) {"," if (instances.hasOwnProperty(i)) {"," inst = instances[i];"," if (!applied[inst.id]) {"," applied[inst.id] = true;"," loader = inst.Env._loader;"," if (loader) {"," if (!loader.moduleInfo[name] || loader.moduleInfo[name].temp) {"," loader.addModule(details, name);"," }"," }"," }"," }"," }",""," return this;"," },",""," /**"," * Executes the function associated with each required"," * module, binding the module to the YUI instance."," * @param {Array} r The array of modules to attach"," * @param {Boolean} [moot=false] Don't throw a warning if the module is not attached"," * @method _attach"," * @private"," */"," _attach: function(r, moot) {"," var i, name, mod, details, req, use, after,"," mods = YUI.Env.mods,"," aliases = YUI.Env.aliases,"," Y = this, j,"," cache = YUI.Env._renderedMods,"," loader = Y.Env._loader,"," done = Y.Env._attached,"," len = r.length, loader, def, go,"," c = [];",""," //Check for conditional modules (in a second+ instance) and add their requirements"," //TODO I hate this entire method, it needs to be fixed ASAP (3.5.0) ^davglass"," for (i = 0; i < len; i++) {"," name = r[i];"," mod = mods[name];"," c.push(name);"," if (loader && loader.conditions[name]) {"," for (j in loader.conditions[name]) {"," if (loader.conditions[name].hasOwnProperty(j)) {"," def = loader.conditions[name][j];"," go = def && ((def.ua && Y.UA[def.ua]) || (def.test && def.test(Y)));"," if (go) {"," c.push(def.name);"," }"," }"," }"," }"," }"," r = c;"," len = r.length;",""," for (i = 0; i < len; i++) {"," if (!done[r[i]]) {"," name = r[i];"," mod = mods[name];",""," if (aliases && aliases[name] && !mod) {"," Y._attach(aliases[name]);"," continue;"," }"," if (!mod) {"," if (loader && loader.moduleInfo[name]) {"," mod = loader.moduleInfo[name];"," moot = true;"," }","",""," //if (!loader || !loader.moduleInfo[name]) {"," //if ((!loader || !loader.moduleInfo[name]) && !moot) {"," if (!moot && name) {"," if ((name.indexOf('skin-') === -1) && (name.indexOf('css') === -1)) {"," Y.Env._missed.push(name);"," Y.Env._missed = Y.Array.dedupe(Y.Env._missed);"," Y.message('NOT loaded: ' + name, 'warn', 'yui');"," }"," }"," } else {"," done[name] = true;"," //Don't like this, but in case a mod was asked for once, then we fetch it"," //We need to remove it from the missed list ^davglass"," for (j = 0; j < Y.Env._missed.length; j++) {"," if (Y.Env._missed[j] === name) {"," Y.message('Found: ' + name + ' (was reported as missing earlier)', 'warn', 'yui');"," Y.Env._missed.splice(j, 1);"," }"," }"," /*"," If it's a temp module, we need to redo it's requirements if it's already loaded"," since it may have been loaded by another instance and it's dependencies might"," have been redefined inside the fetched file."," */"," if (loader && cache && cache[name] && cache[name].temp) {"," loader.getRequires(cache[name]);"," req = [];"," for (j in loader.moduleInfo[name].expanded_map) {"," if (loader.moduleInfo[name].expanded_map.hasOwnProperty(j)) {"," req.push(j);"," }"," }"," Y._attach(req);"," }"," "," details = mod.details;"," req = details.requires;"," use = details.use;"," after = details.after;"," //Force Intl load if there is a language (Loader logic) @todo fix this shit"," if (details.lang) {"," req = req || [];"," req.unshift('intl');"," }",""," if (req) {"," for (j = 0; j < req.length; j++) {"," if (!done[req[j]]) {"," if (!Y._attach(req)) {"," return false;"," }"," break;"," }"," }"," }",""," if (after) {"," for (j = 0; j < after.length; j++) {"," if (!done[after[j]]) {"," if (!Y._attach(after, true)) {"," return false;"," }"," break;"," }"," }"," }",""," if (mod.fn) {"," if (Y.config.throwFail) {"," mod.fn(Y, name);"," } else {"," try {"," mod.fn(Y, name);"," } catch (e) {"," Y.error('Attach error: ' + name, e, name);"," return false;"," }"," }"," }",""," if (use) {"," for (j = 0; j < use.length; j++) {"," if (!done[use[j]]) {"," if (!Y._attach(use)) {"," return false;"," }"," break;"," }"," }"," }","","",""," }"," }"," }",""," return true;"," },"," /**"," * Delays the `use` callback until another event has taken place. Like: window.onload, domready, contentready, available."," * @private"," * @method _delayCallback"," * @param {Callback} cb The original `use` callback"," * @param {String|Object} until Either an event (load, domready) or an Object containing event/args keys for contentready/available"," */"," _delayCallback: function(cb, until) {",""," var Y = this,"," mod = ['event-base'];",""," until = (Y.Lang.isObject(until) ? until : { event: until });",""," if (until.event === 'load') {"," mod.push('event-synthetic');"," }",""," return function() {"," var args = arguments;"," Y._use(mod, function() {"," Y.on(until.event, function() {"," args[1].delayUntil = until.event;"," cb.apply(Y, args);"," }, until.args);"," });"," };"," },",""," /**"," * Attaches one or more modules to the YUI instance. When this"," * is executed, the requirements are analyzed, and one of"," * several things can happen:"," *"," * * All requirements are available on the page -- The modules"," * are attached to the instance. If supplied, the use callback"," * is executed synchronously."," *"," * * Modules are missing, the Get utility is not available OR"," * the 'bootstrap' config is false -- A warning is issued about"," * the missing modules and all available modules are attached."," *"," * * Modules are missing, the Loader is not available but the Get"," * utility is and boostrap is not false -- The loader is bootstrapped"," * before doing the following...."," *"," * * Modules are missing and the Loader is available -- The loader"," * expands the dependency tree and fetches missing modules. When"," * the loader is finshed the callback supplied to use is executed"," * asynchronously."," *"," * @method use"," * @param modules* {String|Array} 1-n modules to bind (uses arguments array)."," * @param [callback] {Function} callback function executed when"," * the instance has the required functionality. If included, it"," * must be the last parameter."," * @param callback.Y {YUI} The `YUI` instance created for this sandbox"," * @param callback.status {Object} Object containing `success`, `msg` and `data` properties"," *"," * @example"," * // loads and attaches dd and its dependencies"," * YUI().use('dd', function(Y) {});"," *"," * // loads and attaches dd and node as well as all of their dependencies (since 3.4.0)"," * YUI().use(['dd', 'node'], function(Y) {});"," *"," * // attaches all modules that are available on the page"," * YUI().use('*', function(Y) {});"," *"," * // intrinsic YUI gallery support (since 3.1.0)"," * YUI().use('gallery-yql', function(Y) {});"," *"," * // intrinsic YUI 2in3 support (since 3.1.0)"," * YUI().use('yui2-datatable', function(Y) {});"," *"," * @return {YUI} the YUI instance."," */"," use: function() {"," var args = SLICE.call(arguments, 0),"," callback = args[args.length - 1],"," Y = this,"," i = 0,"," a = [],"," name,"," Env = Y.Env,"," provisioned = true;",""," // The last argument supplied to use can be a load complete callback"," if (Y.Lang.isFunction(callback)) {"," args.pop();"," if (Y.config.delayUntil) {"," callback = Y._delayCallback(callback, Y.config.delayUntil);"," }"," } else {"," callback = null;"," }"," if (Y.Lang.isArray(args[0])) {"," args = args[0];"," }",""," if (Y.config.cacheUse) {"," while ((name = args[i++])) {"," if (!Env._attached[name]) {"," provisioned = false;"," break;"," }"," }",""," if (provisioned) {"," if (args.length) {"," }"," Y._notify(callback, ALREADY_DONE, args);"," return Y;"," }"," }",""," if (Y._loading) {"," Y._useQueue = Y._useQueue || new Y.Queue();"," Y._useQueue.add([args, callback]);"," } else {"," Y._use(args, function(Y, response) {"," Y._notify(callback, response, args);"," });"," }",""," return Y;"," },"," /**"," * Notify handler from Loader for attachment/load errors"," * @method _notify"," * @param callback {Function} The callback to pass to the `Y.config.loadErrorFn`"," * @param response {Object} The response returned from Loader"," * @param args {Array} The aruments passed from Loader"," * @private"," */"," _notify: function(callback, response, args) {"," if (!response.success && this.config.loadErrorFn) {"," this.config.loadErrorFn.call(this, this, callback, response, args);"," } else if (callback) {"," if (this.Env._missed && this.Env._missed.length) {"," response.msg = 'Missing modules: ' + this.Env._missed.join();"," response.success = false;"," }"," if (this.config.throwFail) {"," callback(this, response);"," } else {"," try {"," callback(this, response);"," } catch (e) {"," this.error('use callback error', e, args);"," }"," }"," }"," },",""," /**"," * This private method is called from the `use` method queue. To ensure that only one set of loading"," * logic is performed at a time."," * @method _use"," * @private"," * @param args* {String} 1-n modules to bind (uses arguments array)."," * @param *callback {Function} callback function executed when"," * the instance has the required functionality. If included, it"," * must be the last parameter."," */"," _use: function(args, callback) {",""," if (!this.Array) {"," this._attach(['yui-base']);"," }",""," var len, loader, handleBoot, handleRLS,"," Y = this,"," G_ENV = YUI.Env,"," mods = G_ENV.mods,"," Env = Y.Env,"," used = Env._used,"," aliases = G_ENV.aliases,"," queue = G_ENV._loaderQueue,"," firstArg = args[0],"," YArray = Y.Array,"," config = Y.config,"," boot = config.bootstrap,"," missing = [],"," i,"," r = [],"," ret = true,"," fetchCSS = config.fetchCSS,"," process = function(names, skip) {",""," var i = 0, a = [], name, len, m, req, use;",""," if (!names.length) {"," return;"," }",""," if (aliases) {"," len = names.length;"," for (i = 0; i < len; i++) {"," if (aliases[names[i]] && !mods[names[i]]) {"," a = [].concat(a, aliases[names[i]]);"," } else {"," a.push(names[i]);"," }"," }"," names = a;"," }"," "," len = names.length;"," "," for (i = 0; i < len; i++) {"," name = names[i];"," if (!skip) {"," r.push(name);"," }",""," // only attach a module once"," if (used[name]) {"," continue;"," }"," "," m = mods[name];"," req = null;"," use = null;",""," if (m) {"," used[name] = true;"," req = m.details.requires;"," use = m.details.use;"," } else {"," // CSS files don't register themselves, see if it has"," // been loaded"," if (!G_ENV._loaded[VERSION][name]) {"," missing.push(name);"," } else {"," used[name] = true; // probably css"," }"," }",""," // make sure requirements are attached"," if (req && req.length) {"," process(req);"," }",""," // make sure we grab the submodule dependencies too"," if (use && use.length) {"," process(use, 1);"," }"," }",""," },",""," handleLoader = function(fromLoader) {"," var response = fromLoader || {"," success: true,"," msg: 'not dynamic'"," },"," redo, origMissing,"," ret = true,"," data = response.data;",""," Y._loading = false;",""," if (data) {"," origMissing = missing;"," missing = [];"," r = [];"," process(data);"," redo = missing.length;"," if (redo) {"," if ([].concat(missing).sort().join() =="," origMissing.sort().join()) {"," redo = false;"," }"," }"," }",""," if (redo && data) {"," Y._loading = true;"," Y._use(missing, function() {"," if (Y._attach(data)) {"," Y._notify(callback, response, data);"," }"," });"," } else {"," if (data) {"," ret = Y._attach(data);"," }"," if (ret) {"," Y._notify(callback, response, args);"," }"," }",""," if (Y._useQueue && Y._useQueue.size() && !Y._loading) {"," Y._use.apply(Y, Y._useQueue.next());"," }",""," };","",""," // YUI().use('*'); // bind everything available"," if (firstArg === '*') {"," args = [];"," for (i in mods) {"," if (mods.hasOwnProperty(i)) {"," args.push(i);"," }"," }"," ret = Y._attach(args);"," if (ret) {"," handleLoader();"," }"," return Y;"," }",""," if ((mods.loader || mods['loader-base']) && !Y.Loader) {"," Y._attach(['loader' + ((!mods.loader) ? '-base' : '')]);"," }","",""," // use loader to expand dependencies and sort the"," // requirements if it is available."," if (boot && Y.Loader && args.length) {"," loader = getLoader(Y);"," loader.require(args);"," loader.ignoreRegistered = true;"," loader._boot = true;"," loader.calculate(null, (fetchCSS) ? null : 'js');"," args = loader.sorted;"," loader._boot = false;"," }"," "," process(args);",""," len = missing.length;","",""," if (len) {"," missing = YArray.dedupe(missing);"," len = missing.length;"," }","",""," // dynamic load"," if (boot && len && Y.Loader) {"," Y._loading = true;"," loader = getLoader(Y);"," loader.onEnd = handleLoader;"," loader.context = Y;"," loader.data = args;"," loader.ignoreRegistered = false;"," loader.require(args);"," loader.insert(null, (fetchCSS) ? null : 'js');",""," } else if (boot && len && Y.Get && !Env.bootstrapped) {",""," Y._loading = true;",""," handleBoot = function() {"," Y._loading = false;"," queue.running = false;"," Env.bootstrapped = true;"," G_ENV._bootstrapping = false;"," if (Y._attach(['loader'])) {"," Y._use(args, callback);"," }"," };",""," if (G_ENV._bootstrapping) {"," queue.add(handleBoot);"," } else {"," G_ENV._bootstrapping = true;"," Y.Get.script(config.base + config.loaderPath, {"," onEnd: handleBoot"," });"," }",""," } else {"," ret = Y._attach(args);"," if (ret) {"," handleLoader();"," }"," }",""," return Y;"," },","",""," /**"," Adds a namespace object onto the YUI global if called statically.",""," // creates YUI.your.namespace.here as nested objects"," YUI.namespace(\"your.namespace.here\");",""," If called as a method on a YUI instance, it creates the"," namespace on the instance.",""," // creates Y.property.package"," Y.namespace(\"property.package\");",""," Dots in the input string cause `namespace` to create nested objects for"," each token. If any part of the requested namespace already exists, the"," current object will be left in place. This allows multiple calls to"," `namespace` to preserve existing namespaced properties.",""," If the first token in the namespace string is \"YAHOO\", the token is"," discarded.",""," Be careful with namespace tokens. Reserved words may work in some browsers"," and not others. For instance, the following will fail in some browsers"," because the supported version of JavaScript reserves the word \"long\":",""," Y.namespace(\"really.long.nested.namespace\");",""," Note: If you pass multiple arguments to create multiple namespaces, only"," the last one created is returned from this function.",""," @method namespace"," @param {String} namespace* namespaces to create."," @return {Object} A reference to the last namespace object created."," **/"," namespace: function() {"," var a = arguments, o, i = 0, j, d, arg;",""," for (; i < a.length; i++) {"," o = this; //Reset base object per argument or it will get reused from the last"," arg = a[i];"," if (arg.indexOf(PERIOD) > -1) { //Skip this if no \".\" is present"," d = arg.split(PERIOD);"," for (j = (d[0] == 'YAHOO') ? 1 : 0; j < d.length; j++) {"," o[d[j]] = o[d[j]] || {};"," o = o[d[j]];"," }"," } else {"," o[arg] = o[arg] || {};"," o = o[arg]; //Reset base object to the new object so it's returned"," }"," }"," return o;"," },",""," // this is replaced if the log module is included"," log: NOOP,"," message: NOOP,"," // this is replaced if the dump module is included"," dump: function (o) { return ''+o; },",""," /**"," * Report an error. The reporting mechanism is controlled by"," * the `throwFail` configuration attribute. If throwFail is"," * not specified, the message is written to the Logger, otherwise"," * a JS error is thrown. If an `errorFn` is specified in the config"," * it must return `true` to keep the error from being thrown."," * @method error"," * @param msg {String} the error message."," * @param e {Error|String} Optional JS error that was caught, or an error string."," * @param src Optional additional info (passed to `Y.config.errorFn` and `Y.message`)"," * and `throwFail` is specified, this error will be re-thrown."," * @return {YUI} this YUI instance."," */"," error: function(msg, e, src) {"," //TODO Add check for window.onerror here",""," var Y = this, ret;",""," if (Y.config.errorFn) {"," ret = Y.config.errorFn.apply(Y, arguments);"," }",""," if (!ret) {"," throw (e || new Error(msg));"," } else {"," Y.message(msg, 'error', ''+src); // don't scrub this one"," }",""," return Y;"," },",""," /**"," * Generate an id that is unique among all YUI instances"," * @method guid"," * @param pre {String} optional guid prefix."," * @return {String} the guid."," */"," guid: function(pre) {"," var id = this.Env._guidp + '_' + (++this.Env._uidx);"," return (pre) ? (pre + id) : id;"," },",""," /**"," * Returns a `guid` associated with an object. If the object"," * does not have one, a new one is created unless `readOnly`"," * is specified."," * @method stamp"," * @param o {Object} The object to stamp."," * @param readOnly {Boolean} if `true`, a valid guid will only"," * be returned if the object has one assigned to it."," * @return {String} The object's guid or null."," */"," stamp: function(o, readOnly) {"," var uid;"," if (!o) {"," return o;"," }",""," // IE generates its own unique ID for dom nodes"," // The uniqueID property of a document node returns a new ID"," if (o.uniqueID && o.nodeType && o.nodeType !== 9) {"," uid = o.uniqueID;"," } else {"," uid = (typeof o === 'string') ? o : o._yuid;"," }",""," if (!uid) {"," uid = this.guid();"," if (!readOnly) {"," try {"," o._yuid = uid;"," } catch (e) {"," uid = null;"," }"," }"," }"," return uid;"," },",""," /**"," * Destroys the YUI instance"," * @method destroy"," * @since 3.3.0"," */"," destroy: function() {"," var Y = this;"," if (Y.Event) {"," Y.Event._unload();"," }"," delete instances[Y.id];"," delete Y.Env;"," delete Y.config;"," }",""," /**"," * instanceof check for objects that works around"," * memory leak in IE when the item tested is"," * window/document"," * @method instanceOf"," * @param o {Object} The object to check."," * @param type {Object} The class to check against."," * @since 3.3.0"," */","};",""," YUI.prototype = proto;",""," // inheritance utilities are not available yet"," for (prop in proto) {"," if (proto.hasOwnProperty(prop)) {"," YUI[prop] = proto[prop];"," }"," }",""," /**","Static method on the Global YUI object to apply a config to all YUI instances.","It's main use case is \"mashups\" where several third party scripts are trying to write to","a global YUI config at the same time. This way they can all call `YUI.applyConfig({})` instead of","overwriting other scripts configs.","@static","@since 3.5.0","@method applyConfig","@param {Object} o the configuration object.","@example",""," YUI.applyConfig({"," modules: {"," davglass: {"," fullpath: './davglass.js'"," }"," }"," });",""," YUI.applyConfig({"," modules: {"," foo: {"," fullpath: './foo.js'"," }"," }"," });",""," YUI().use('davglass', function(Y) {"," //Module davglass will be available here.."," });",""," */"," YUI.applyConfig = function(o) {"," if (!o) {"," return;"," }"," //If there is a GlobalConfig, apply it first to set the defaults"," if (YUI.GlobalConfig) {"," this.prototype.applyConfig.call(this, YUI.GlobalConfig);"," }"," //Apply this config to it"," this.prototype.applyConfig.call(this, o);"," //Reset GlobalConfig to the combined config"," YUI.GlobalConfig = this.config;"," };",""," // set up the environment"," YUI._init();",""," if (hasWin) {"," // add a window load event at load time so we can capture"," // the case where it fires before dynamic loading is"," // complete."," add(window, 'load', handleLoad);"," } else {"," handleLoad();"," }",""," YUI.Env.add = add;"," YUI.Env.remove = remove;",""," /*global exports*/"," // Support the CommonJS method for exporting our single global"," if (typeof exports == 'object') {"," exports.YUI = YUI;"," }","","}());","","","/**"," * The config object contains all of the configuration options for"," * the `YUI` instance. This object is supplied by the implementer"," * when instantiating a `YUI` instance. Some properties have default"," * values if they are not supplied by the implementer. This should"," * not be updated directly because some values are cached. Use"," * `applyConfig()` to update the config object on a YUI instance that"," * has already been configured."," *"," * @class config"," * @static"," */","","/**"," * Allows the YUI seed file to fetch the loader component and library"," * metadata to dynamically load additional dependencies."," *"," * @property bootstrap"," * @type boolean"," * @default true"," */","","/**"," * Turns on writing Ylog messages to the browser console."," *"," * @property debug"," * @type boolean"," * @default true"," */","","/**"," * Log to the browser console if debug is on and the browser has a"," * supported console."," *"," * @property useBrowserConsole"," * @type boolean"," * @default true"," */","","/**"," * A hash of log sources that should be logged. If specified, only"," * log messages from these sources will be logged."," *"," * @property logInclude"," * @type object"," */","","/**"," * A hash of log sources that should be not be logged. If specified,"," * all sources are logged if not on this list."," *"," * @property logExclude"," * @type object"," */","","/**"," * Set to true if the yui seed file was dynamically loaded in"," * order to bootstrap components relying on the window load event"," * and the `domready` custom event."," *"," * @property injected"," * @type boolean"," * @default false"," */","","/**"," * If `throwFail` is set, `Y.error` will generate or re-throw a JS Error."," * Otherwise the failure is logged."," *"," * @property throwFail"," * @type boolean"," * @default true"," */","","/**"," * The window/frame that this instance should operate in."," *"," * @property win"," * @type Window"," * @default the window hosting YUI"," */","","/**"," * The document associated with the 'win' configuration."," *"," * @property doc"," * @type Document"," * @default the document hosting YUI"," */","","/**"," * A list of modules that defines the YUI core (overrides the default list)."," *"," * @property core"," * @type Array"," * @default [ get,features,intl-base,yui-log,yui-later,loader-base, loader-rollup, loader-yui3 ]"," */","","/**"," * A list of languages in order of preference. This list is matched against"," * the list of available languages in modules that the YUI instance uses to"," * determine the best possible localization of language sensitive modules."," * Languages are represented using BCP 47 language tags, such as \"en-GB\" for"," * English as used in the United Kingdom, or \"zh-Hans-CN\" for simplified"," * Chinese as used in China. The list can be provided as a comma-separated"," * list or as an array."," *"," * @property lang"," * @type string|string[]"," */","","/**"," * The default date format"," * @property dateFormat"," * @type string"," * @deprecated use configuration in `DataType.Date.format()` instead."," */","","/**"," * The default locale"," * @property locale"," * @type string"," * @deprecated use `config.lang` instead."," */","","/**"," * The default interval when polling in milliseconds."," * @property pollInterval"," * @type int"," * @default 20"," */","","/**"," * The number of dynamic nodes to insert by default before"," * automatically removing them. This applies to script nodes"," * because removing the node will not make the evaluated script"," * unavailable. Dynamic CSS is not auto purged, because removing"," * a linked style sheet will also remove the style definitions."," * @property purgethreshold"," * @type int"," * @default 20"," */","","/**"," * The default interval when polling in milliseconds."," * @property windowResizeDelay"," * @type int"," * @default 40"," */","","/**"," * Base directory for dynamic loading"," * @property base"," * @type string"," */","","/*"," * The secure base dir (not implemented)"," * For dynamic loading."," * @property secureBase"," * @type string"," */","","/**"," * The YUI combo service base dir. Ex: `http://yui.yahooapis.com/combo?`"," * For dynamic loading."," * @property comboBase"," * @type string"," */","","/**"," * The root path to prepend to module path for the combo service."," * Ex: 3.0.0b1/build/"," * For dynamic loading."," * @property root"," * @type string"," */","","/**"," * A filter to apply to result urls. This filter will modify the default"," * path for all modules. The default path for the YUI library is the"," * minified version of the files (e.g., event-min.js). The filter property"," * can be a predefined filter or a custom filter. The valid predefined"," * filters are:"," *
          "," *
          DEBUG
          "," *
          Selects the debug versions of the library (e.g., event-debug.js)."," * This option will automatically include the Logger widget
          "," *
          RAW
          "," *
          Selects the non-minified version of the library (e.g., event.js).
          "," *
          "," * You can also define a custom filter, which must be an object literal"," * containing a search expression and a replace string:"," *"," * myFilter: {"," * 'searchExp': \"-min\\\\.js\","," * 'replaceStr': \"-debug.js\""," * }"," *"," * For dynamic loading."," *"," * @property filter"," * @type string|object"," */","","/**"," * The `skin` config let's you configure application level skin"," * customizations. It contains the following attributes which"," * can be specified to override the defaults:"," *"," * // The default skin, which is automatically applied if not"," * // overriden by a component-specific skin definition."," * // Change this in to apply a different skin globally"," * defaultSkin: 'sam',"," *"," * // This is combined with the loader base property to get"," * // the default root directory for a skin."," * base: 'assets/skins/',"," *"," * // Any component-specific overrides can be specified here,"," * // making it possible to load different skins for different"," * // components. It is possible to load more than one skin"," * // for a given component as well."," * overrides: {"," * slider: ['capsule', 'round']"," * }"," *"," * For dynamic loading."," *"," * @property skin"," */","","/**"," * Hash of per-component filter specification. If specified for a given"," * component, this overrides the filter config."," *"," * For dynamic loading."," *"," * @property filters"," */","","/**"," * Use the YUI combo service to reduce the number of http connections"," * required to load your dependencies. Turning this off will"," * disable combo handling for YUI and all module groups configured"," * with a combo service."," *"," * For dynamic loading."," *"," * @property combine"," * @type boolean"," * @default true if 'base' is not supplied, false if it is."," */","","/**"," * A list of modules that should never be dynamically loaded"," *"," * @property ignore"," * @type string[]"," */","","/**"," * A list of modules that should always be loaded when required, even if already"," * present on the page."," *"," * @property force"," * @type string[]"," */","","/**"," * Node or id for a node that should be used as the insertion point for new"," * nodes. For dynamic loading."," *"," * @property insertBefore"," * @type string"," */","","/**"," * Object literal containing attributes to add to dynamically loaded script"," * nodes."," * @property jsAttributes"," * @type string"," */","","/**"," * Object literal containing attributes to add to dynamically loaded link"," * nodes."," * @property cssAttributes"," * @type string"," */","","/**"," * Number of milliseconds before a timeout occurs when dynamically"," * loading nodes. If not set, there is no timeout."," * @property timeout"," * @type int"," */","","/**"," * Callback for the 'CSSComplete' event. When dynamically loading YUI"," * components with CSS, this property fires when the CSS is finished"," * loading but script loading is still ongoing. This provides an"," * opportunity to enhance the presentation of a loading page a little"," * bit before the entire loading process is done."," *"," * @property onCSS"," * @type function"," */","","/**"," * A hash of module definitions to add to the list of YUI components."," * These components can then be dynamically loaded side by side with"," * YUI via the `use()` method. This is a hash, the key is the module"," * name, and the value is an object literal specifying the metdata"," * for the module. See `Loader.addModule` for the supported module"," * metadata fields. Also see groups, which provides a way to"," * configure the base and combo spec for a set of modules."," *"," * modules: {"," * mymod1: {"," * requires: ['node'],"," * fullpath: '/mymod1/mymod1.js'"," * },"," * mymod2: {"," * requires: ['mymod1'],"," * fullpath: '/mymod2/mymod2.js'"," * },"," * mymod3: '/js/mymod3.js',"," * mycssmod: '/css/mycssmod.css'"," * }"," *"," *"," * @property modules"," * @type object"," */","","/**"," * Aliases are dynamic groups of modules that can be used as"," * shortcuts."," *"," * YUI({"," * aliases: {"," * davglass: [ 'node', 'yql', 'dd' ],"," * mine: [ 'davglass', 'autocomplete']"," * }"," * }).use('mine', function(Y) {"," * //Node, YQL, DD & AutoComplete available here.."," * });"," *"," * @property aliases"," * @type object"," */","","/**"," * A hash of module group definitions. It for each group you"," * can specify a list of modules and the base path and"," * combo spec to use when dynamically loading the modules."," *"," * groups: {"," * yui2: {"," * // specify whether or not this group has a combo service"," * combine: true,"," *"," * // The comboSeperator to use with this group's combo handler"," * comboSep: ';',"," *"," * // The maxURLLength for this server"," * maxURLLength: 500,"," *"," * // the base path for non-combo paths"," * base: 'http://yui.yahooapis.com/2.8.0r4/build/',"," *"," * // the path to the combo service"," * comboBase: 'http://yui.yahooapis.com/combo?',"," *"," * // a fragment to prepend to the path attribute when"," * // when building combo urls"," * root: '2.8.0r4/build/',"," *"," * // the module definitions"," * modules: {"," * yui2_yde: {"," * path: \"yahoo-dom-event/yahoo-dom-event.js\""," * },"," * yui2_anim: {"," * path: \"animation/animation.js\","," * requires: ['yui2_yde']"," * }"," * }"," * }"," * }"," *"," * @property groups"," * @type object"," */","","/**"," * The loader 'path' attribute to the loader itself. This is combined"," * with the 'base' attribute to dynamically load the loader component"," * when boostrapping with the get utility alone."," *"," * @property loaderPath"," * @type string"," * @default loader/loader-min.js"," */","","/**"," * Specifies whether or not YUI().use(...) will attempt to load CSS"," * resources at all. Any truthy value will cause CSS dependencies"," * to load when fetching script. The special value 'force' will"," * cause CSS dependencies to be loaded even if no script is needed."," *"," * @property fetchCSS"," * @type boolean|string"," * @default true"," */","","/**"," * The default gallery version to build gallery module urls"," * @property gallery"," * @type string"," * @since 3.1.0"," */","","/**"," * The default YUI 2 version to build yui2 module urls. This is for"," * intrinsic YUI 2 support via the 2in3 project. Also see the '2in3'"," * config for pulling different revisions of the wrapped YUI 2"," * modules."," * @since 3.1.0"," * @property yui2"," * @type string"," * @default 2.9.0"," */","","/**"," * The 2in3 project is a deployment of the various versions of YUI 2"," * deployed as first-class YUI 3 modules. Eventually, the wrapper"," * for the modules will change (but the underlying YUI 2 code will"," * be the same), and you can select a particular version of"," * the wrapper modules via this config."," * @since 3.1.0"," * @property 2in3"," * @type string"," * @default 4"," */","","/**"," * Alternative console log function for use in environments without"," * a supported native console. The function is executed in the"," * YUI instance context."," * @since 3.1.0"," * @property logFn"," * @type Function"," */","","/**"," * A callback to execute when Y.error is called. It receives the"," * error message and an javascript error object if Y.error was"," * executed because a javascript error was caught. The function"," * is executed in the YUI instance context. Returning `true` from this"," * function will stop the Error from being thrown."," *"," * @since 3.2.0"," * @property errorFn"," * @type Function"," */","","/**"," * A callback to execute when the loader fails to load one or"," * more resource. This could be because of a script load"," * failure. It can also fail if a javascript module fails"," * to register itself, but only when the 'requireRegistration'"," * is true. If this function is defined, the use() callback will"," * only be called when the loader succeeds, otherwise it always"," * executes unless there was a javascript error when attaching"," * a module."," *"," * @since 3.3.0"," * @property loadErrorFn"," * @type Function"," */","","/**"," * When set to true, the YUI loader will expect that all modules"," * it is responsible for loading will be first-class YUI modules"," * that register themselves with the YUI global. If this is"," * set to true, loader will fail if the module registration fails"," * to happen after the script is loaded."," *"," * @since 3.3.0"," * @property requireRegistration"," * @type boolean"," * @default false"," */","","/**"," * Cache serviced use() requests."," * @since 3.3.0"," * @property cacheUse"," * @type boolean"," * @default true"," * @deprecated no longer used"," */","","/**"," * Whether or not YUI should use native ES5 functionality when available for"," * features like `Y.Array.each()`, `Y.Object()`, etc. When `false`, YUI will"," * always use its own fallback implementations instead of relying on ES5"," * functionality, even when it's available."," *"," * @property useNativeES5"," * @type Boolean"," * @default true"," * @since 3.5.0"," */","","/**","Delay the `use` callback until a specific event has passed (`load`, `domready`, `contentready` or `available`)","@property delayUntil","@type String|Object","@since 3.6.0","@example","","You can use `load` or `domready` strings by default:",""," YUI({"," delayUntil: 'domready'"," }, function(Y) {"," //This will not fire until 'domeready'"," });","","Or you can delay until a node is available (with `available` or `contentready`):",""," YUI({"," delayUntil: {"," event: 'available',"," args: '#foo'"," }"," }, function(Y) {"," //This will not fire until '#foo' is "," // available in the DOM"," });"," ","","*/","YUI.add('yui-base', function (Y, NAME) {","","/*"," * YUI stub"," * @module yui"," * @submodule yui-base"," */","/**"," * The YUI module contains the components required for building the YUI"," * seed file. This includes the script loading mechanism, a simple queue,"," * and the core utilities for the library."," * @module yui"," * @submodule yui-base"," */","","/**"," * Provides core language utilites and extensions used throughout YUI."," *"," * @class Lang"," * @static"," */","","var L = Y.Lang || (Y.Lang = {}),","","STRING_PROTO = String.prototype,","TOSTRING = Object.prototype.toString,","","TYPES = {"," 'undefined' : 'undefined',"," 'number' : 'number',"," 'boolean' : 'boolean',"," 'string' : 'string',"," '[object Function]': 'function',"," '[object RegExp]' : 'regexp',"," '[object Array]' : 'array',"," '[object Date]' : 'date',"," '[object Error]' : 'error'","},","","SUBREGEX = /\\{\\s*([^|}]+?)\\s*(?:\\|([^}]*))?\\s*\\}/g,","TRIMREGEX = /^\\s+|\\s+$/g,","NATIVE_FN_REGEX = /\\{\\s*\\[(?:native code|function)\\]\\s*\\}/i;","","// -- Protected Methods --------------------------------------------------------","","/**","Returns `true` if the given function appears to be implemented in native code,","`false` otherwise. Will always return `false` -- even in ES5-capable browsers --","if the `useNativeES5` YUI config option is set to `false`.","","This isn't guaranteed to be 100% accurate and won't work for anything other than","functions, but it can be useful for determining whether a function like","`Array.prototype.forEach` is native or a JS shim provided by another library.","","There's a great article by @kangax discussing certain flaws with this technique:","","","While his points are valid, it's still possible to benefit from this function","as long as it's used carefully and sparingly, and in such a way that false","negatives have minimal consequences. It's used internally to avoid using","potentially broken non-native ES5 shims that have been added to the page by","other libraries.","","@method _isNative","@param {Function} fn Function to test.","@return {Boolean} `true` if _fn_ appears to be native, `false` otherwise.","@static","@protected","@since 3.5.0","**/","L._isNative = function (fn) {"," return !!(Y.config.useNativeES5 && fn && NATIVE_FN_REGEX.test(fn));","};","","// -- Public Methods -----------------------------------------------------------","","/**"," * Determines whether or not the provided item is an array."," *"," * Returns `false` for array-like collections such as the function `arguments`"," * collection or `HTMLElement` collections. Use `Y.Array.test()` if you want to"," * test for an array-like collection."," *"," * @method isArray"," * @param o The object to test."," * @return {boolean} true if o is an array."," * @static"," */","L.isArray = L._isNative(Array.isArray) ? Array.isArray : function (o) {"," return L.type(o) === 'array';","};","","/**"," * Determines whether or not the provided item is a boolean."," * @method isBoolean"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a boolean."," */","L.isBoolean = function(o) {"," return typeof o === 'boolean';","};","","/**"," * Determines whether or not the supplied item is a date instance."," * @method isDate"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a date."," */","L.isDate = function(o) {"," return L.type(o) === 'date' && o.toString() !== 'Invalid Date' && !isNaN(o);","};","","/**"," *

          "," * Determines whether or not the provided item is a function."," * Note: Internet Explorer thinks certain functions are objects:"," *

          "," *"," *
          "," * var obj = document.createElement(\"object\");"," * Y.Lang.isFunction(obj.getAttribute) // reports false in IE"," *  "," * var input = document.createElement(\"input\"); // append to body"," * Y.Lang.isFunction(input.focus) // reports false in IE"," * 
          "," *"," *

          "," * You will have to implement additional tests if these functions"," * matter to you."," *

          "," *"," * @method isFunction"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a function."," */","L.isFunction = function(o) {"," return L.type(o) === 'function';","};","","/**"," * Determines whether or not the provided item is null."," * @method isNull"," * @static"," * @param o The object to test."," * @return {boolean} true if o is null."," */","L.isNull = function(o) {"," return o === null;","};","","/**"," * Determines whether or not the provided item is a legal number."," * @method isNumber"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a number."," */","L.isNumber = function(o) {"," return typeof o === 'number' && isFinite(o);","};","","/**"," * Determines whether or not the provided item is of type object"," * or function. Note that arrays are also objects, so"," * Y.Lang.isObject([]) === true."," * @method isObject"," * @static"," * @param o The object to test."," * @param failfn {boolean} fail if the input is a function."," * @return {boolean} true if o is an object."," * @see isPlainObject"," */","L.isObject = function(o, failfn) {"," var t = typeof o;"," return (o && (t === 'object' ||"," (!failfn && (t === 'function' || L.isFunction(o))))) || false;","};","","/**"," * Determines whether or not the provided item is a string."," * @method isString"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a string."," */","L.isString = function(o) {"," return typeof o === 'string';","};","","/**"," * Determines whether or not the provided item is undefined."," * @method isUndefined"," * @static"," * @param o The object to test."," * @return {boolean} true if o is undefined."," */","L.isUndefined = function(o) {"," return typeof o === 'undefined';","};","","/**"," * A convenience method for detecting a legitimate non-null value."," * Returns false for null/undefined/NaN, true for other values,"," * including 0/false/''"," * @method isValue"," * @static"," * @param o The item to test."," * @return {boolean} true if it is not null/undefined/NaN || false."," */","L.isValue = function(o) {"," var t = L.type(o);",""," switch (t) {"," case 'number':"," return isFinite(o);",""," case 'null': // fallthru"," case 'undefined':"," return false;",""," default:"," return !!t;"," }","};","","/**"," * Returns the current time in milliseconds."," *"," * @method now"," * @return {Number} Current time in milliseconds."," * @static"," * @since 3.3.0"," */","L.now = Date.now || function () {"," return new Date().getTime();","};","","/**"," * Lightweight version of Y.substitute. Uses the same template"," * structure as Y.substitute, but doesn't support recursion,"," * auto-object coersion, or formats."," * @method sub"," * @param {string} s String to be modified."," * @param {object} o Object containing replacement values."," * @return {string} the substitute result."," * @static"," * @since 3.2.0"," */","L.sub = function(s, o) {"," return s.replace ? s.replace(SUBREGEX, function (match, key) {"," return L.isUndefined(o[key]) ? match : o[key];"," }) : s;","};","","/**"," * Returns a string without any leading or trailing whitespace. If"," * the input is not a string, the input will be returned untouched."," * @method trim"," * @static"," * @param s {string} the string to trim."," * @return {string} the trimmed string."," */","L.trim = STRING_PROTO.trim ? function(s) {"," return s && s.trim ? s.trim() : s;","} : function (s) {"," try {"," return s.replace(TRIMREGEX, '');"," } catch (e) {"," return s;"," }","};","","/**"," * Returns a string without any leading whitespace."," * @method trimLeft"," * @static"," * @param s {string} the string to trim."," * @return {string} the trimmed string."," */","L.trimLeft = STRING_PROTO.trimLeft ? function (s) {"," return s.trimLeft();","} : function (s) {"," return s.replace(/^\\s+/, '');","};","","/**"," * Returns a string without any trailing whitespace."," * @method trimRight"," * @static"," * @param s {string} the string to trim."," * @return {string} the trimmed string."," */","L.trimRight = STRING_PROTO.trimRight ? function (s) {"," return s.trimRight();","} : function (s) {"," return s.replace(/\\s+$/, '');","};","","/**","Returns one of the following strings, representing the type of the item passed","in:",""," * \"array\""," * \"boolean\""," * \"date\""," * \"error\""," * \"function\""," * \"null\""," * \"number\""," * \"object\""," * \"regexp\""," * \"string\""," * \"undefined\"","","Known issues:",""," * `typeof HTMLElementCollection` returns function in Safari, but"," `Y.Lang.type()` reports \"object\", which could be a good thing --"," but it actually caused the logic in Y.Lang.isObject to fail.","","@method type","@param o the item to test.","@return {string} the detected type.","@static","**/","L.type = function(o) {"," return TYPES[typeof o] || TYPES[TOSTRING.call(o)] || (o ? 'object' : 'null');","};","/**","@module yui","@submodule yui-base","*/","","var Lang = Y.Lang,"," Native = Array.prototype,",""," hasOwn = Object.prototype.hasOwnProperty;","","/**","Provides utility methods for working with arrays. Additional array helpers can","be found in the `collection` and `array-extras` modules.","","`Y.Array(thing)` returns a native array created from _thing_. Depending on","_thing_'s type, one of the following will happen:",""," * Arrays are returned unmodified unless a non-zero _startIndex_ is"," specified."," * Array-like collections (see `Array.test()`) are converted to arrays."," * For everything else, a new array is created with _thing_ as the sole"," item.","","Note: elements that are also collections, such as `
          ` and ``, to be array-like.","","@method test","@param {Object} obj Object to test.","@return {Number} A number indicating the results of the test:",""," * 0: Neither an array nor an array-like collection."," * 1: Real array."," * 2: Array-like collection.","","@static","**/","YArray.test = function (obj) {"," var result = 0;",""," if (Lang.isArray(obj)) {"," result = 1;"," } else if (Lang.isObject(obj)) {"," try {"," // indexed, but no tagName (element) or scrollTo/document (window. From DOM.isWindow test which we can't use here),"," // or functions without apply/call (Safari"," // HTMLElementCollection bug)."," if ('length' in obj && !obj.tagName && !(obj.scrollTo && obj.document) && !obj.apply) {"," result = 2;"," }"," } catch (ex) {}"," }",""," return result;","};","/**"," * The YUI module contains the components required for building the YUI"," * seed file. This includes the script loading mechanism, a simple queue,"," * and the core utilities for the library."," * @module yui"," * @submodule yui-base"," */","","/**"," * A simple FIFO queue. Items are added to the Queue with add(1..n items) and"," * removed using next()."," *"," * @class Queue"," * @constructor"," * @param {MIXED} item* 0..n items to seed the queue."," */","function Queue() {"," this._init();"," this.add.apply(this, arguments);","}","","Queue.prototype = {"," /**"," * Initialize the queue"," *"," * @method _init"," * @protected"," */"," _init: function() {"," /**"," * The collection of enqueued items"," *"," * @property _q"," * @type Array"," * @protected"," */"," this._q = [];"," },",""," /**"," * Get the next item in the queue. FIFO support"," *"," * @method next"," * @return {MIXED} the next item in the queue."," */"," next: function() {"," return this._q.shift();"," },",""," /**"," * Get the last in the queue. LIFO support."," *"," * @method last"," * @return {MIXED} the last item in the queue."," */"," last: function() {"," return this._q.pop();"," },",""," /**"," * Add 0..n items to the end of the queue."," *"," * @method add"," * @param {MIXED} item* 0..n items."," * @return {object} this queue."," */"," add: function() {"," this._q.push.apply(this._q, arguments);",""," return this;"," },",""," /**"," * Returns the current number of queued items."," *"," * @method size"," * @return {Number} The size."," */"," size: function() {"," return this._q.length;"," }","};","","Y.Queue = Queue;","","YUI.Env._loaderQueue = YUI.Env._loaderQueue || new Queue();","","/**","The YUI module contains the components required for building the YUI seed file.","This includes the script loading mechanism, a simple queue, and the core","utilities for the library.","","@module yui","@submodule yui-base","**/","","var CACHED_DELIMITER = '__',",""," hasOwn = Object.prototype.hasOwnProperty,"," isObject = Y.Lang.isObject;","","/**","Returns a wrapper for a function which caches the return value of that function,","keyed off of the combined string representation of the argument values provided","when the wrapper is called.","","Calling this function again with the same arguments will return the cached value","rather than executing the wrapped function.","","Note that since the cache is keyed off of the string representation of arguments","passed to the wrapper function, arguments that aren't strings and don't provide","a meaningful `toString()` method may result in unexpected caching behavior. For","example, the objects `{}` and `{foo: 'bar'}` would both be converted to the","string `[object Object]` when used as a cache key.","","@method cached","@param {Function} source The function to memoize.","@param {Object} [cache={}] Object in which to store cached values. You may seed"," this object with pre-existing cached values if desired.","@param {any} [refetch] If supplied, this value is compared with the cached value"," using a `==` comparison. If the values are equal, the wrapped function is"," executed again even though a cached value exists.","@return {Function} Wrapped function.","@for YUI","**/","Y.cached = function (source, cache, refetch) {"," cache || (cache = {});",""," return function (arg) {"," var key = arguments.length > 1 ?"," Array.prototype.join.call(arguments, CACHED_DELIMITER) :"," String(arg);",""," if (!(key in cache) || (refetch && cache[key] == refetch)) {"," cache[key] = source.apply(source, arguments);"," }",""," return cache[key];"," };","};","","/**","Returns the `location` object from the window/frame in which this YUI instance","operates, or `undefined` when executing in a non-browser environment","(e.g. Node.js).","","It is _not_ recommended to hold references to the `window.location` object","outside of the scope of a function in which its properties are being accessed or","its methods are being called. This is because of a nasty bug/issue that exists","in both Safari and MobileSafari browsers:","[WebKit Bug 34679](https://bugs.webkit.org/show_bug.cgi?id=34679).","","@method getLocation","@return {location} The `location` object from the window/frame in which this YUI"," instance operates.","@since 3.5.0","**/","Y.getLocation = function () {"," // It is safer to look this up every time because yui-base is attached to a"," // YUI instance before a user's config is applied; i.e. `Y.config.win` does"," // not point the correct window object when this file is loaded."," var win = Y.config.win;",""," // It is not safe to hold a reference to the `location` object outside the"," // scope in which it is being used. The WebKit engine used in Safari and"," // MobileSafari will \"disconnect\" the `location` object from the `window`"," // when a page is restored from back/forward history cache."," return win && win.location;","};","","/**","Returns a new object containing all of the properties of all the supplied","objects. The properties from later objects will overwrite those in earlier","objects.","","Passing in a single object will create a shallow copy of it. For a deep copy,","use `clone()`.","","@method merge","@param {Object} objects* One or more objects to merge.","@return {Object} A new merged object.","**/","Y.merge = function () {"," var i = 0,"," len = arguments.length,"," result = {},"," key,"," obj;",""," for (; i < len; ++i) {"," obj = arguments[i];",""," for (key in obj) {"," if (hasOwn.call(obj, key)) {"," result[key] = obj[key];"," }"," }"," }",""," return result;","};","","/**","Mixes _supplier_'s properties into _receiver_.","","Properties on _receiver_ or _receiver_'s prototype will not be overwritten or","shadowed unless the _overwrite_ parameter is `true`, and will not be merged","unless the _merge_ parameter is `true`.","","In the default mode (0), only properties the supplier owns are copied (prototype","properties are not copied). The following copying modes are available:",""," * `0`: _Default_. Object to object."," * `1`: Prototype to prototype."," * `2`: Prototype to prototype and object to object."," * `3`: Prototype to object."," * `4`: Object to prototype.","","@method mix","@param {Function|Object} receiver The object or function to receive the mixed"," properties.","@param {Function|Object} supplier The object or function supplying the"," properties to be mixed.","@param {Boolean} [overwrite=false] If `true`, properties that already exist"," on the receiver will be overwritten with properties from the supplier.","@param {String[]} [whitelist] An array of property names to copy. If"," specified, only the whitelisted properties will be copied, and all others"," will be ignored.","@param {Number} [mode=0] Mix mode to use. See above for available modes.","@param {Boolean} [merge=false] If `true`, objects and arrays that already"," exist on the receiver will have the corresponding object/array from the"," supplier merged into them, rather than being skipped or overwritten. When"," both _overwrite_ and _merge_ are `true`, _merge_ takes precedence.","@return {Function|Object|YUI} The receiver, or the YUI instance if the"," specified receiver is falsy.","**/","Y.mix = function(receiver, supplier, overwrite, whitelist, mode, merge) {"," var alwaysOverwrite, exists, from, i, key, len, to;",""," // If no supplier is given, we return the receiver. If no receiver is given,"," // we return Y. Returning Y doesn't make much sense to me, but it's"," // grandfathered in for backcompat reasons."," if (!receiver || !supplier) {"," return receiver || Y;"," }",""," if (mode) {"," // In mode 2 (prototype to prototype and object to object), we recurse"," // once to do the proto to proto mix. The object to object mix will be"," // handled later on."," if (mode === 2) {"," Y.mix(receiver.prototype, supplier.prototype, overwrite,"," whitelist, 0, merge);"," }",""," // Depending on which mode is specified, we may be copying from or to"," // the prototypes of the supplier and receiver."," from = mode === 1 || mode === 3 ? supplier.prototype : supplier;"," to = mode === 1 || mode === 4 ? receiver.prototype : receiver;",""," // If either the supplier or receiver doesn't actually have a"," // prototype property, then we could end up with an undefined `from`"," // or `to`. If that happens, we abort and return the receiver."," if (!from || !to) {"," return receiver;"," }"," } else {"," from = supplier;"," to = receiver;"," }",""," // If `overwrite` is truthy and `merge` is falsy, then we can skip a"," // property existence check on each iteration and save some time."," alwaysOverwrite = overwrite && !merge;",""," if (whitelist) {"," for (i = 0, len = whitelist.length; i < len; ++i) {"," key = whitelist[i];",""," // We call `Object.prototype.hasOwnProperty` instead of calling"," // `hasOwnProperty` on the object itself, since the object's"," // `hasOwnProperty` method may have been overridden or removed."," // Also, some native objects don't implement a `hasOwnProperty`"," // method."," if (!hasOwn.call(from, key)) {"," continue;"," }",""," // The `key in to` check here is (sadly) intentional for backwards"," // compatibility reasons. It prevents undesired shadowing of"," // prototype members on `to`."," exists = alwaysOverwrite ? false : key in to;",""," if (merge && exists && isObject(to[key], true)"," && isObject(from[key], true)) {"," // If we're in merge mode, and the key is present on both"," // objects, and the value on both objects is either an object or"," // an array (but not a function), then we recurse to merge the"," // `from` value into the `to` value instead of overwriting it."," //"," // Note: It's intentional that the whitelist isn't passed to the"," // recursive call here. This is legacy behavior that lots of"," // code still depends on."," Y.mix(to[key], from[key], overwrite, null, 0, merge);"," } else if (overwrite || !exists) {"," // We're not in merge mode, so we'll only copy the `from` value"," // to the `to` value if we're in overwrite mode or if the"," // current key doesn't exist on the `to` object."," to[key] = from[key];"," }"," }"," } else {"," for (key in from) {"," // The code duplication here is for runtime performance reasons."," // Combining whitelist and non-whitelist operations into a single"," // loop or breaking the shared logic out into a function both result"," // in worse performance, and Y.mix is critical enough that the byte"," // tradeoff is worth it."," if (!hasOwn.call(from, key)) {"," continue;"," }",""," // The `key in to` check here is (sadly) intentional for backwards"," // compatibility reasons. It prevents undesired shadowing of"," // prototype members on `to`."," exists = alwaysOverwrite ? false : key in to;",""," if (merge && exists && isObject(to[key], true)"," && isObject(from[key], true)) {"," Y.mix(to[key], from[key], overwrite, null, 0, merge);"," } else if (overwrite || !exists) {"," to[key] = from[key];"," }"," }",""," // If this is an IE browser with the JScript enumeration bug, force"," // enumeration of the buggy properties by making a recursive call with"," // the buggy properties as the whitelist."," if (Y.Object._hasEnumBug) {"," Y.mix(to, from, overwrite, Y.Object._forceEnum, mode, merge);"," }"," }",""," return receiver;","};","/**"," * The YUI module contains the components required for building the YUI"," * seed file. This includes the script loading mechanism, a simple queue,"," * and the core utilities for the library."," * @module yui"," * @submodule yui-base"," */","","/**"," * Adds utilities to the YUI instance for working with objects."," *"," * @class Object"," */","","var Lang = Y.Lang,"," hasOwn = Object.prototype.hasOwnProperty,",""," UNDEFINED, // <-- Note the comma. We're still declaring vars.","","/**"," * Returns a new object that uses _obj_ as its prototype. This method wraps the"," * native ES5 `Object.create()` method if available, but doesn't currently"," * pass through `Object.create()`'s second argument (properties) in order to"," * ensure compatibility with older browsers."," *"," * @method ()"," * @param {Object} obj Prototype object."," * @return {Object} New object using _obj_ as its prototype."," * @static"," */","O = Y.Object = Lang._isNative(Object.create) ? function (obj) {"," // We currently wrap the native Object.create instead of simply aliasing it"," // to ensure consistency with our fallback shim, which currently doesn't"," // support Object.create()'s second argument (properties). Once we have a"," // safe fallback for the properties arg, we can stop wrapping"," // Object.create()."," return Object.create(obj);","} : (function () {"," // Reusable constructor function for the Object.create() shim."," function F() {}",""," // The actual shim."," return function (obj) {"," F.prototype = obj;"," return new F();"," };","}()),","","/**"," * Property names that IE doesn't enumerate in for..in loops, even when they"," * should be enumerable. When `_hasEnumBug` is `true`, it's necessary to"," * manually enumerate these properties."," *"," * @property _forceEnum"," * @type String[]"," * @protected"," * @static"," */","forceEnum = O._forceEnum = ["," 'hasOwnProperty',"," 'isPrototypeOf',"," 'propertyIsEnumerable',"," 'toString',"," 'toLocaleString',"," 'valueOf'","],","","/**"," * `true` if this browser has the JScript enumeration bug that prevents"," * enumeration of the properties named in the `_forceEnum` array, `false`"," * otherwise."," *"," * See:"," * - "," * - "," *"," * @property _hasEnumBug"," * @type Boolean"," * @protected"," * @static"," */","hasEnumBug = O._hasEnumBug = !{valueOf: 0}.propertyIsEnumerable('valueOf'),","","/**"," * `true` if this browser incorrectly considers the `prototype` property of"," * functions to be enumerable. Currently known to affect Opera 11.50."," *"," * @property _hasProtoEnumBug"," * @type Boolean"," * @protected"," * @static"," */","hasProtoEnumBug = O._hasProtoEnumBug = (function () {}).propertyIsEnumerable('prototype'),","","/**"," * Returns `true` if _key_ exists on _obj_, `false` if _key_ doesn't exist or"," * exists only on _obj_'s prototype. This is essentially a safer version of"," * `obj.hasOwnProperty()`."," *"," * @method owns"," * @param {Object} obj Object to test."," * @param {String} key Property name to look for."," * @return {Boolean} `true` if _key_ exists on _obj_, `false` otherwise."," * @static"," */","owns = O.owns = function (obj, key) {"," return !!obj && hasOwn.call(obj, key);","}; // <-- End of var declarations.","","/**"," * Alias for `owns()`."," *"," * @method hasKey"," * @param {Object} obj Object to test."," * @param {String} key Property name to look for."," * @return {Boolean} `true` if _key_ exists on _obj_, `false` otherwise."," * @static"," */","O.hasKey = owns;","","/**"," * Returns an array containing the object's enumerable keys. Does not include"," * prototype keys or non-enumerable keys."," *"," * Note that keys are returned in enumeration order (that is, in the same order"," * that they would be enumerated by a `for-in` loop), which may not be the same"," * as the order in which they were defined."," *"," * This method is an alias for the native ES5 `Object.keys()` method if"," * available."," *"," * @example"," *"," * Y.Object.keys({a: 'foo', b: 'bar', c: 'baz'});"," * // => ['a', 'b', 'c']"," *"," * @method keys"," * @param {Object} obj An object."," * @return {String[]} Array of keys."," * @static"," */","O.keys = Lang._isNative(Object.keys) ? Object.keys : function (obj) {"," if (!Lang.isObject(obj)) {"," throw new TypeError('Object.keys called on a non-object');"," }",""," var keys = [],"," i, key, len;",""," if (hasProtoEnumBug && typeof obj === 'function') {"," for (key in obj) {"," if (owns(obj, key) && key !== 'prototype') {"," keys.push(key);"," }"," }"," } else {"," for (key in obj) {"," if (owns(obj, key)) {"," keys.push(key);"," }"," }"," }",""," if (hasEnumBug) {"," for (i = 0, len = forceEnum.length; i < len; ++i) {"," key = forceEnum[i];",""," if (owns(obj, key)) {"," keys.push(key);"," }"," }"," }",""," return keys;","};","","/**"," * Returns an array containing the values of the object's enumerable keys."," *"," * Note that values are returned in enumeration order (that is, in the same"," * order that they would be enumerated by a `for-in` loop), which may not be the"," * same as the order in which they were defined."," *"," * @example"," *"," * Y.Object.values({a: 'foo', b: 'bar', c: 'baz'});"," * // => ['foo', 'bar', 'baz']"," *"," * @method values"," * @param {Object} obj An object."," * @return {Array} Array of values."," * @static"," */","O.values = function (obj) {"," var keys = O.keys(obj),"," i = 0,"," len = keys.length,"," values = [];",""," for (; i < len; ++i) {"," values.push(obj[keys[i]]);"," }",""," return values;","};","","/**"," * Returns the number of enumerable keys owned by an object."," *"," * @method size"," * @param {Object} obj An object."," * @return {Number} The object's size."," * @static"," */","O.size = function (obj) {"," try {"," return O.keys(obj).length;"," } catch (ex) {"," return 0; // Legacy behavior for non-objects."," }","};","","/**"," * Returns `true` if the object owns an enumerable property with the specified"," * value."," *"," * @method hasValue"," * @param {Object} obj An object."," * @param {any} value The value to search for."," * @return {Boolean} `true` if _obj_ contains _value_, `false` otherwise."," * @static"," */","O.hasValue = function (obj, value) {"," return Y.Array.indexOf(O.values(obj), value) > -1;","};","","/**"," * Executes a function on each enumerable property in _obj_. The function"," * receives the value, the key, and the object itself as parameters (in that"," * order)."," *"," * By default, only properties owned by _obj_ are enumerated. To include"," * prototype properties, set the _proto_ parameter to `true`."," *"," * @method each"," * @param {Object} obj Object to enumerate."," * @param {Function} fn Function to execute on each enumerable property."," * @param {mixed} fn.value Value of the current property."," * @param {String} fn.key Key of the current property."," * @param {Object} fn.obj Object being enumerated."," * @param {Object} [thisObj] `this` object to use when calling _fn_."," * @param {Boolean} [proto=false] Include prototype properties."," * @return {YUI} the YUI instance."," * @chainable"," * @static"," */","O.each = function (obj, fn, thisObj, proto) {"," var key;",""," for (key in obj) {"," if (proto || owns(obj, key)) {"," fn.call(thisObj || Y, obj[key], key, obj);"," }"," }",""," return Y;","};","","/**"," * Executes a function on each enumerable property in _obj_, but halts if the"," * function returns a truthy value. The function receives the value, the key,"," * and the object itself as paramters (in that order)."," *"," * By default, only properties owned by _obj_ are enumerated. To include"," * prototype properties, set the _proto_ parameter to `true`."," *"," * @method some"," * @param {Object} obj Object to enumerate."," * @param {Function} fn Function to execute on each enumerable property."," * @param {mixed} fn.value Value of the current property."," * @param {String} fn.key Key of the current property."," * @param {Object} fn.obj Object being enumerated."," * @param {Object} [thisObj] `this` object to use when calling _fn_."," * @param {Boolean} [proto=false] Include prototype properties."," * @return {Boolean} `true` if any execution of _fn_ returns a truthy value,"," * `false` otherwise."," * @static"," */","O.some = function (obj, fn, thisObj, proto) {"," var key;",""," for (key in obj) {"," if (proto || owns(obj, key)) {"," if (fn.call(thisObj || Y, obj[key], key, obj)) {"," return true;"," }"," }"," }",""," return false;","};","","/**"," * Retrieves the sub value at the provided path,"," * from the value object provided."," *"," * @method getValue"," * @static"," * @param o The object from which to extract the property value."," * @param path {Array} A path array, specifying the object traversal path"," * from which to obtain the sub value."," * @return {Any} The value stored in the path, undefined if not found,"," * undefined if the source is not an object. Returns the source object"," * if an empty path is provided."," */","O.getValue = function(o, path) {"," if (!Lang.isObject(o)) {"," return UNDEFINED;"," }",""," var i,"," p = Y.Array(path),"," l = p.length;",""," for (i = 0; o !== UNDEFINED && i < l; i++) {"," o = o[p[i]];"," }",""," return o;","};","","/**"," * Sets the sub-attribute value at the provided path on the"," * value object. Returns the modified value object, or"," * undefined if the path is invalid."," *"," * @method setValue"," * @static"," * @param o The object on which to set the sub value."," * @param path {Array} A path array, specifying the object traversal path"," * at which to set the sub value."," * @param val {Any} The new value for the sub-attribute."," * @return {Object} The modified object, with the new sub value set, or"," * undefined, if the path was invalid."," */","O.setValue = function(o, path, val) {"," var i,"," p = Y.Array(path),"," leafIdx = p.length - 1,"," ref = o;",""," if (leafIdx >= 0) {"," for (i = 0; ref !== UNDEFINED && i < leafIdx; i++) {"," ref = ref[p[i]];"," }",""," if (ref !== UNDEFINED) {"," ref[p[i]] = val;"," } else {"," return UNDEFINED;"," }"," }",""," return o;","};","","/**"," * Returns `true` if the object has no enumerable properties of its own."," *"," * @method isEmpty"," * @param {Object} obj An object."," * @return {Boolean} `true` if the object is empty."," * @static"," * @since 3.2.0"," */","O.isEmpty = function (obj) {"," return !O.keys(Object(obj)).length;","};","/**"," * The YUI module contains the components required for building the YUI seed"," * file. This includes the script loading mechanism, a simple queue, and the"," * core utilities for the library."," * @module yui"," * @submodule yui-base"," */","","/**"," * YUI user agent detection."," * Do not fork for a browser if it can be avoided. Use feature detection when"," * you can. Use the user agent as a last resort. For all fields listed"," * as @type float, UA stores a version number for the browser engine,"," * 0 otherwise. This value may or may not map to the version number of"," * the browser using the engine. The value is presented as a float so"," * that it can easily be used for boolean evaluation as well as for"," * looking for a particular range of versions. Because of this,"," * some of the granularity of the version info may be lost. The fields that"," * are @type string default to null. The API docs list the values that"," * these fields can have."," * @class UA"," * @static"," */","","/**","* Static method on `YUI.Env` for parsing a UA string. Called at instantiation","* to populate `Y.UA`.","*","* @static","* @method parseUA","* @param {String} [subUA=navigator.userAgent] UA string to parse","* @return {Object} The Y.UA object","*/","YUI.Env.parseUA = function(subUA) {",""," var numberify = function(s) {"," var c = 0;"," return parseFloat(s.replace(/\\./g, function() {"," return (c++ === 1) ? '' : '.';"," }));"," },",""," win = Y.config.win,",""," nav = win && win.navigator,",""," o = {",""," /**"," * Internet Explorer version number or 0. Example: 6"," * @property ie"," * @type float"," * @static"," */"," ie: 0,",""," /**"," * Opera version number or 0. Example: 9.2"," * @property opera"," * @type float"," * @static"," */"," opera: 0,",""," /**"," * Gecko engine revision number. Will evaluate to 1 if Gecko"," * is detected but the revision could not be found. Other browsers"," * will be 0. Example: 1.8"," *
          ","         * Firefox 1.0.0.4: 1.7.8   <-- Reports 1.7","         * Firefox 1.5.0.9: 1.8.0.9 <-- 1.8","         * Firefox 2.0.0.3: 1.8.1.3 <-- 1.81","         * Firefox 3.0   <-- 1.9","         * Firefox 3.5   <-- 1.91","         * 
          "," * @property gecko"," * @type float"," * @static"," */"," gecko: 0,",""," /**"," * AppleWebKit version. KHTML browsers that are not WebKit browsers"," * will evaluate to 1, other browsers 0. Example: 418.9"," *
          ","         * Safari 1.3.2 (312.6): 312.8.1 <-- Reports 312.8 -- currently the","         *                                   latest available for Mac OSX 10.3.","         * Safari 2.0.2:         416     <-- hasOwnProperty introduced","         * Safari 2.0.4:         418     <-- preventDefault fixed","         * Safari 2.0.4 (419.3): 418.9.1 <-- One version of Safari may run","         *                                   different versions of webkit","         * Safari 2.0.4 (419.3): 419     <-- Tiger installations that have been","         *                                   updated, but not updated","         *                                   to the latest patch.","         * Webkit 212 nightly:   522+    <-- Safari 3.0 precursor (with native","         * SVG and many major issues fixed).","         * Safari 3.0.4 (523.12) 523.12  <-- First Tiger release - automatic","         * update from 2.x via the 10.4.11 OS patch.","         * Webkit nightly 1/2008:525+    <-- Supports DOMContentLoaded event.","         *                                   yahoo.com user agent hack removed.","         * 
          "," * http://en.wikipedia.org/wiki/Safari_version_history"," * @property webkit"," * @type float"," * @static"," */"," webkit: 0,",""," /**"," * Safari will be detected as webkit, but this property will also"," * be populated with the Safari version number"," * @property safari"," * @type float"," * @static"," */"," safari: 0,",""," /**"," * Chrome will be detected as webkit, but this property will also"," * be populated with the Chrome version number"," * @property chrome"," * @type float"," * @static"," */"," chrome: 0,",""," /**"," * The mobile property will be set to a string containing any relevant"," * user agent information when a modern mobile browser is detected."," * Currently limited to Safari on the iPhone/iPod Touch, Nokia N-series"," * devices with the WebKit-based browser, and Opera Mini."," * @property mobile"," * @type string"," * @default null"," * @static"," */"," mobile: null,",""," /**"," * Adobe AIR version number or 0. Only populated if webkit is detected."," * Example: 1.0"," * @property air"," * @type float"," */"," air: 0,"," /**"," * PhantomJS version number or 0. Only populated if webkit is detected."," * Example: 1.0"," * @property phantomjs"," * @type float"," */"," phantomjs: 0,"," /**"," * Detects Apple iPad's OS version"," * @property ipad"," * @type float"," * @static"," */"," ipad: 0,"," /**"," * Detects Apple iPhone's OS version"," * @property iphone"," * @type float"," * @static"," */"," iphone: 0,"," /**"," * Detects Apples iPod's OS version"," * @property ipod"," * @type float"," * @static"," */"," ipod: 0,"," /**"," * General truthy check for iPad, iPhone or iPod"," * @property ios"," * @type Boolean"," * @default null"," * @static"," */"," ios: null,"," /**"," * Detects Googles Android OS version"," * @property android"," * @type float"," * @static"," */"," android: 0,"," /**"," * Detects Kindle Silk"," * @property silk"," * @type float"," * @static"," */"," silk: 0,"," /**"," * Detects Kindle Silk Acceleration"," * @property accel"," * @type Boolean"," * @static"," */"," accel: false,"," /**"," * Detects Palms WebOS version"," * @property webos"," * @type float"," * @static"," */"," webos: 0,",""," /**"," * Google Caja version number or 0."," * @property caja"," * @type float"," */"," caja: nav && nav.cajaVersion,",""," /**"," * Set to true if the page appears to be in SSL"," * @property secure"," * @type boolean"," * @static"," */"," secure: false,",""," /**"," * The operating system. Currently only detecting windows or macintosh"," * @property os"," * @type string"," * @default null"," * @static"," */"," os: null,",""," /**"," * The Nodejs Version"," * @property nodejs"," * @type float"," * @default 0"," * @static"," */"," nodejs: 0,"," /*"," * Window8/IE10 Application host environment"," * @property winjs"," * @type Boolean"," * @static"," */"," winjs: !!((typeof Windows !== \"undefined\") && Windows.System),"," /**"," * Are touch/msPointer events available on this device"," * @property touchEnabled"," * @type Boolean"," * @static"," */"," touchEnabled: false"," },",""," ua = subUA || nav && nav.userAgent,",""," loc = win && win.location,",""," href = loc && loc.href,",""," m;",""," /**"," * The User Agent string that was parsed"," * @property userAgent"," * @type String"," * @static"," */"," o.userAgent = ua;","",""," o.secure = href && (href.toLowerCase().indexOf('https') === 0);",""," if (ua) {",""," if ((/windows|win32/i).test(ua)) {"," o.os = 'windows';"," } else if ((/macintosh|mac_powerpc/i).test(ua)) {"," o.os = 'macintosh';"," } else if ((/android/i).test(ua)) {"," o.os = 'android';"," } else if ((/symbos/i).test(ua)) {"," o.os = 'symbos';"," } else if ((/linux/i).test(ua)) {"," o.os = 'linux';"," } else if ((/rhino/i).test(ua)) {"," o.os = 'rhino';"," }",""," // Modern KHTML browsers should qualify as Safari X-Grade"," if ((/KHTML/).test(ua)) {"," o.webkit = 1;"," }"," if ((/IEMobile|XBLWP7/).test(ua)) {"," o.mobile = 'windows';"," }"," if ((/Fennec/).test(ua)) {"," o.mobile = 'gecko';"," }"," // Modern WebKit browsers are at least X-Grade"," m = ua.match(/AppleWebKit\\/([^\\s]*)/);"," if (m && m[1]) {"," o.webkit = numberify(m[1]);"," o.safari = o.webkit;",""," if (/PhantomJS/.test(ua)) {"," m = ua.match(/PhantomJS\\/([^\\s]*)/);"," if (m && m[1]) {"," o.phantomjs = numberify(m[1]);"," }"," }",""," // Mobile browser check"," if (/ Mobile\\//.test(ua) || (/iPad|iPod|iPhone/).test(ua)) {"," o.mobile = 'Apple'; // iPhone or iPod Touch",""," m = ua.match(/OS ([^\\s]*)/);"," if (m && m[1]) {"," m = numberify(m[1].replace('_', '.'));"," }"," o.ios = m;"," o.os = 'ios';"," o.ipad = o.ipod = o.iphone = 0;",""," m = ua.match(/iPad|iPod|iPhone/);"," if (m && m[0]) {"," o[m[0].toLowerCase()] = o.ios;"," }"," } else {"," m = ua.match(/NokiaN[^\\/]*|webOS\\/\\d\\.\\d/);"," if (m) {"," // Nokia N-series, webOS, ex: NokiaN95"," o.mobile = m[0];"," }"," if (/webOS/.test(ua)) {"," o.mobile = 'WebOS';"," m = ua.match(/webOS\\/([^\\s]*);/);"," if (m && m[1]) {"," o.webos = numberify(m[1]);"," }"," }"," if (/ Android/.test(ua)) {"," if (/Mobile/.test(ua)) {"," o.mobile = 'Android';"," }"," m = ua.match(/Android ([^\\s]*);/);"," if (m && m[1]) {"," o.android = numberify(m[1]);"," }",""," }"," if (/Silk/.test(ua)) {"," m = ua.match(/Silk\\/([^\\s]*)\\)/);"," if (m && m[1]) {"," o.silk = numberify(m[1]);"," }"," if (!o.android) {"," o.android = 2.34; //Hack for desktop mode in Kindle"," o.os = 'Android';"," }"," if (/Accelerated=true/.test(ua)) {"," o.accel = true;"," }"," }"," }",""," m = ua.match(/(Chrome|CrMo|CriOS)\\/([^\\s]*)/);"," if (m && m[1] && m[2]) {"," o.chrome = numberify(m[2]); // Chrome"," o.safari = 0; //Reset safari back to 0"," if (m[1] === 'CrMo') {"," o.mobile = 'chrome';"," }"," } else {"," m = ua.match(/AdobeAIR\\/([^\\s]*)/);"," if (m) {"," o.air = m[0]; // Adobe AIR 1.0 or better"," }"," }"," }",""," if (!o.webkit) { // not webkit","// @todo check Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1316; fi; U; ssr)"," if (/Opera/.test(ua)) {"," m = ua.match(/Opera[\\s\\/]([^\\s]*)/);"," if (m && m[1]) {"," o.opera = numberify(m[1]);"," }"," m = ua.match(/Version\\/([^\\s]*)/);"," if (m && m[1]) {"," o.opera = numberify(m[1]); // opera 10+"," }",""," if (/Opera Mobi/.test(ua)) {"," o.mobile = 'opera';"," m = ua.replace('Opera Mobi', '').match(/Opera ([^\\s]*)/);"," if (m && m[1]) {"," o.opera = numberify(m[1]);"," }"," }"," m = ua.match(/Opera Mini[^;]*/);",""," if (m) {"," o.mobile = m[0]; // ex: Opera Mini/2.0.4509/1316"," }"," } else { // not opera or webkit"," m = ua.match(/MSIE\\s([^;]*)/);"," if (m && m[1]) {"," o.ie = numberify(m[1]);"," } else { // not opera, webkit, or ie"," m = ua.match(/Gecko\\/([^\\s]*)/);"," if (m) {"," o.gecko = 1; // Gecko detected, look for revision"," m = ua.match(/rv:([^\\s\\)]*)/);"," if (m && m[1]) {"," o.gecko = numberify(m[1]);"," }"," }"," }"," }"," }"," }",""," //Check for known properties to tell if touch events are enabled on this device or if"," //the number of MSPointer touchpoints on this device is greater than 0."," if (win && nav && !(o.chrome && o.chrome < 6)) {"," o.touchEnabled = ((\"ontouchstart\" in win) || ((\"msMaxTouchPoints\" in nav) && (nav.msMaxTouchPoints > 0)));"," }",""," //It was a parsed UA, do not assign the global value."," if (!subUA) {",""," if (typeof process === 'object') {",""," if (process.versions && process.versions.node) {"," //NodeJS"," o.os = process.platform;"," o.nodejs = numberify(process.versions.node);"," }"," }",""," YUI.Env.UA = o;",""," }",""," return o;","};","","","Y.UA = YUI.Env.UA || YUI.Env.parseUA();","","/**","Performs a simple comparison between two version numbers, accounting for","standard versioning logic such as the fact that \"535.8\" is a lower version than","\"535.24\", even though a simple numerical comparison would indicate that it's","greater. Also accounts for cases such as \"1.1\" vs. \"1.1.0\", which are","considered equivalent.","","Returns -1 if version _a_ is lower than version _b_, 0 if they're equivalent,","1 if _a_ is higher than _b_.","","Versions may be numbers or strings containing numbers and dots. For example,","both `535` and `\"535.8.10\"` are acceptable. A version string containing","non-numeric characters, like `\"535.8.beta\"`, may produce unexpected results.","","@method compareVersions","@param {Number|String} a First version number to compare.","@param {Number|String} b Second version number to compare.","@return -1 if _a_ is lower than _b_, 0 if they're equivalent, 1 if _a_ is"," higher than _b_.","**/","Y.UA.compareVersions = function (a, b) {"," var aPart, aParts, bPart, bParts, i, len;",""," if (a === b) {"," return 0;"," }",""," aParts = (a + '').split('.');"," bParts = (b + '').split('.');",""," for (i = 0, len = Math.max(aParts.length, bParts.length); i < len; ++i) {"," aPart = parseInt(aParts[i], 10);"," bPart = parseInt(bParts[i], 10);",""," isNaN(aPart) && (aPart = 0);"," isNaN(bPart) && (bPart = 0);",""," if (aPart < bPart) {"," return -1;"," }",""," if (aPart > bPart) {"," return 1;"," }"," }",""," return 0;","};","YUI.Env.aliases = {"," \"anim\": [\"anim-base\",\"anim-color\",\"anim-curve\",\"anim-easing\",\"anim-node-plugin\",\"anim-scroll\",\"anim-xy\"],"," \"anim-shape-transform\": [\"anim-shape\"],"," \"app\": [\"app-base\",\"app-content\",\"app-transitions\",\"lazy-model-list\",\"model\",\"model-list\",\"model-sync-rest\",\"router\",\"view\",\"view-node-map\"],"," \"attribute\": [\"attribute-base\",\"attribute-complex\"],"," \"autocomplete\": [\"autocomplete-base\",\"autocomplete-sources\",\"autocomplete-list\",\"autocomplete-plugin\"],"," \"base\": [\"base-base\",\"base-pluginhost\",\"base-build\"],"," \"cache\": [\"cache-base\",\"cache-offline\",\"cache-plugin\"],"," \"collection\": [\"array-extras\",\"arraylist\",\"arraylist-add\",\"arraylist-filter\",\"array-invoke\"],"," \"controller\": [\"router\"],"," \"dataschema\": [\"dataschema-base\",\"dataschema-json\",\"dataschema-xml\",\"dataschema-array\",\"dataschema-text\"],"," \"datasource\": [\"datasource-local\",\"datasource-io\",\"datasource-get\",\"datasource-function\",\"datasource-cache\",\"datasource-jsonschema\",\"datasource-xmlschema\",\"datasource-arrayschema\",\"datasource-textschema\",\"datasource-polling\"],"," \"datatable\": [\"datatable-core\",\"datatable-table\",\"datatable-head\",\"datatable-body\",\"datatable-base\",\"datatable-column-widths\",\"datatable-message\",\"datatable-mutable\",\"datatable-sort\",\"datatable-datasource\"],"," \"datatable-deprecated\": [\"datatable-base-deprecated\",\"datatable-datasource-deprecated\",\"datatable-sort-deprecated\",\"datatable-scroll-deprecated\"],"," \"datatype\": [\"datatype-date\",\"datatype-number\",\"datatype-xml\"],"," \"datatype-date\": [\"datatype-date-parse\",\"datatype-date-format\",\"datatype-date-math\"],"," \"datatype-number\": [\"datatype-number-parse\",\"datatype-number-format\"],"," \"datatype-xml\": [\"datatype-xml-parse\",\"datatype-xml-format\"],"," \"dd\": [\"dd-ddm-base\",\"dd-ddm\",\"dd-ddm-drop\",\"dd-drag\",\"dd-proxy\",\"dd-constrain\",\"dd-drop\",\"dd-scroll\",\"dd-delegate\"],"," \"dom\": [\"dom-base\",\"dom-screen\",\"dom-style\",\"selector-native\",\"selector\"],"," \"editor\": [\"frame\",\"editor-selection\",\"exec-command\",\"editor-base\",\"editor-para\",\"editor-br\",\"editor-bidi\",\"editor-tab\",\"createlink-base\"],"," \"event\": [\"event-base\",\"event-delegate\",\"event-synthetic\",\"event-mousewheel\",\"event-mouseenter\",\"event-key\",\"event-focus\",\"event-resize\",\"event-hover\",\"event-outside\",\"event-touch\",\"event-move\",\"event-flick\",\"event-valuechange\",\"event-tap\"],"," \"event-custom\": [\"event-custom-base\",\"event-custom-complex\"],"," \"event-gestures\": [\"event-flick\",\"event-move\"],"," \"handlebars\": [\"handlebars-compiler\"],"," \"highlight\": [\"highlight-base\",\"highlight-accentfold\"],"," \"history\": [\"history-base\",\"history-hash\",\"history-hash-ie\",\"history-html5\"],"," \"io\": [\"io-base\",\"io-xdr\",\"io-form\",\"io-upload-iframe\",\"io-queue\"],"," \"json\": [\"json-parse\",\"json-stringify\"],"," \"loader\": [\"loader-base\",\"loader-rollup\",\"loader-yui3\"],"," \"node\": [\"node-base\",\"node-event-delegate\",\"node-pluginhost\",\"node-screen\",\"node-style\"],"," \"pluginhost\": [\"pluginhost-base\",\"pluginhost-config\"],"," \"querystring\": [\"querystring-parse\",\"querystring-stringify\"],"," \"recordset\": [\"recordset-base\",\"recordset-sort\",\"recordset-filter\",\"recordset-indexer\"],"," \"resize\": [\"resize-base\",\"resize-proxy\",\"resize-constrain\"],"," \"slider\": [\"slider-base\",\"slider-value-range\",\"clickable-rail\",\"range-slider\"],"," \"text\": [\"text-accentfold\",\"text-wordbreak\"],"," \"widget\": [\"widget-base\",\"widget-htmlparser\",\"widget-skin\",\"widget-uievents\"]","};","","","}, '3.7.3', {\"use\": [\"get\", \"features\", \"intl-base\", \"yui-log\", \"yui-later\"]});"]; -/** - * The YUI module contains the components required for building the YUI seed - * file. This includes the script loading mechanism, a simple queue, and - * the core utilities for the library. - * @module yui - * @main yui - * @submodule yui-base - */ - -_yuitest_coverage["build/yui-base/yui-base.js"].lines = {"10":0,"11":0,"54":0,"55":0,"60":0,"64":0,"65":0,"68":0,"96":0,"97":0,"126":0,"127":0,"131":0,"132":0,"136":0,"141":0,"142":0,"145":0,"148":0,"150":0,"153":0,"155":0,"179":0,"180":0,"181":0,"182":0,"186":0,"188":0,"189":0,"191":0,"192":0,"196":0,"197":0,"198":0,"199":0,"203":0,"208":0,"210":0,"211":0,"212":0,"213":0,"214":0,"216":0,"217":0,"219":0,"220":0,"222":0,"224":0,"228":0,"229":0,"230":0,"239":0,"240":0,"241":0,"243":0,"244":0,"247":0,"248":0,"251":0,"263":0,"265":0,"274":0,"275":0,"276":0,"277":0,"278":0,"279":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"286":0,"289":0,"294":0,"295":0,"306":0,"315":0,"326":0,"328":0,"329":0,"375":0,"378":0,"379":0,"383":0,"387":0,"388":0,"390":0,"395":0,"399":0,"403":0,"404":0,"405":0,"406":0,"407":0,"408":0,"409":0,"410":0,"416":0,"421":0,"423":0,"425":0,"426":0,"427":0,"429":0,"431":0,"432":0,"433":0,"435":0,"436":0,"437":0,"441":0,"444":0,"445":0,"449":0,"452":0,"465":0,"466":0,"467":0,"468":0,"469":0,"470":0,"472":0,"476":0,"478":0,"480":0,"481":0,"483":0,"484":0,"495":0,"500":0,"501":0,"502":0,"506":0,"507":0,"509":0,"510":0,"526":0,"527":0,"528":0,"531":0,"532":0,"533":0,"534":0,"535":0,"536":0,"537":0,"538":0,"541":0,"544":0,"583":0,"584":0,"596":0,"597":0,"598":0,"600":0,"601":0,"602":0,"603":0,"604":0,"605":0,"606":0,"607":0,"608":0,"615":0,"627":0,"639":0,"640":0,"641":0,"642":0,"643":0,"644":0,"645":0,"646":0,"647":0,"648":0,"649":0,"655":0,"656":0,"658":0,"659":0,"660":0,"661":0,"663":0,"664":0,"665":0,"667":0,"668":0,"669":0,"670":0,"676":0,"677":0,"678":0,"679":0,"680":0,"684":0,"687":0,"688":0,"689":0,"690":0,"698":0,"699":0,"700":0,"701":0,"702":0,"703":0,"706":0,"709":0,"710":0,"711":0,"712":0,"714":0,"715":0,"716":0,"719":0,"720":0,"721":0,"722":0,"723":0,"725":0,"730":0,"731":0,"732":0,"733":0,"734":0,"736":0,"741":0,"742":0,"743":0,"745":0,"746":0,"748":0,"749":0,"754":0,"755":0,"756":0,"757":0,"758":0,"760":0,"771":0,"782":0,"785":0,"787":0,"788":0,"791":0,"792":0,"793":0,"794":0,"795":0,"796":0,"851":0,"861":0,"862":0,"863":0,"864":0,"867":0,"869":0,"870":0,"873":0,"874":0,"875":0,"876":0,"877":0,"881":0,"882":0,"884":0,"885":0,"889":0,"890":0,"891":0,"893":0,"894":0,"898":0,"909":0,"910":0,"911":0,"912":0,"913":0,"914":0,"916":0,"917":0,"919":0,"920":0,"922":0,"940":0,"941":0,"944":0,"963":0,"965":0,"966":0,"969":0,"970":0,"971":0,"972":0,"973":0,"975":0,"978":0,"981":0,"983":0,"984":0,"985":0,"986":0,"990":0,"991":0,"994":0,"995":0,"996":0,"998":0,"999":0,"1000":0,"1001":0,"1005":0,"1006":0,"1008":0,"1013":0,"1014":0,"1018":0,"1019":0,"1026":0,"1034":0,"1036":0,"1037":0,"1038":0,"1039":0,"1040":0,"1041":0,"1042":0,"1043":0,"1045":0,"1050":0,"1051":0,"1052":0,"1053":0,"1054":0,"1058":0,"1059":0,"1061":0,"1062":0,"1066":0,"1067":0,"1074":0,"1075":0,"1076":0,"1077":0,"1078":0,"1081":0,"1082":0,"1083":0,"1085":0,"1088":0,"1089":0,"1095":0,"1096":0,"1097":0,"1098":0,"1099":0,"1100":0,"1101":0,"1102":0,"1105":0,"1107":0,"1110":0,"1111":0,"1112":0,"1117":0,"1118":0,"1119":0,"1120":0,"1121":0,"1122":0,"1123":0,"1124":0,"1125":0,"1127":0,"1129":0,"1131":0,"1132":0,"1133":0,"1134":0,"1135":0,"1136":0,"1137":0,"1141":0,"1142":0,"1144":0,"1145":0,"1151":0,"1152":0,"1153":0,"1157":0,"1195":0,"1197":0,"1198":0,"1199":0,"1200":0,"1201":0,"1202":0,"1203":0,"1204":0,"1207":0,"1208":0,"1211":0,"1218":0,"1236":0,"1238":0,"1239":0,"1242":0,"1243":0,"1245":0,"1248":0,"1258":0,"1259":0,"1273":0,"1274":0,"1275":0,"1280":0,"1281":0,"1283":0,"1286":0,"1287":0,"1288":0,"1289":0,"1290":0,"1292":0,"1296":0,"1305":0,"1306":0,"1307":0,"1309":0,"1310":0,"1311":0,"1325":0,"1328":0,"1329":0,"1330":0,"1366":0,"1367":0,"1368":0,"1371":0,"1372":0,"1375":0,"1377":0,"1381":0,"1383":0,"1387":0,"1389":0,"1392":0,"1393":0,"1397":0,"1398":0,"1950":0,"1972":0,"2020":0,"2021":0,"2038":0,"2039":0,"2049":0,"2050":0,"2060":0,"2061":0,"2088":0,"2089":0,"2099":0,"2100":0,"2110":0,"2111":0,"2125":0,"2126":0,"2127":0,"2138":0,"2139":0,"2149":0,"2150":0,"2162":0,"2163":0,"2165":0,"2167":0,"2171":0,"2174":0,"2186":0,"2187":0,"2201":0,"2202":0,"2203":0,"2215":0,"2216":0,"2218":0,"2219":0,"2221":0,"2232":0,"2233":0,"2235":0,"2245":0,"2246":0,"2248":0,"2278":0,"2279":0,"2286":0,"2319":0,"2320":0,"2322":0,"2324":0,"2326":0,"2327":0,"2329":0,"2331":0,"2332":0,"2335":0,"2339":0,"2342":0,"2358":0,"2359":0,"2363":0,"2364":0,"2366":0,"2367":0,"2368":0,"2372":0,"2390":0,"2391":0,"2392":0,"2394":0,"2395":0,"2396":0,"2400":0,"2427":0,"2428":0,"2432":0,"2433":0,"2434":0,"2438":0,"2455":0,"2456":0,"2459":0,"2461":0,"2462":0,"2464":0,"2465":0,"2467":0,"2468":0,"2472":0,"2473":0,"2474":0,"2478":0,"2500":0,"2501":0,"2520":0,"2521":0,"2523":0,"2524":0,"2525":0,"2529":0,"2550":0,"2551":0,"2553":0,"2554":0,"2555":0,"2556":0,"2560":0,"2561":0,"2566":0,"2584":0,"2585":0,"2586":0,"2589":0,"2604":0,"2614":0,"2624":0,"2635":0,"2637":0,"2647":0,"2651":0,"2653":0,"2664":0,"2693":0,"2694":0,"2696":0,"2697":0,"2701":0,"2702":0,"2705":0,"2725":0,"2729":0,"2735":0,"2750":0,"2751":0,"2757":0,"2758":0,"2760":0,"2761":0,"2762":0,"2767":0,"2804":0,"2805":0,"2810":0,"2811":0,"2814":0,"2818":0,"2819":0,"2825":0,"2826":0,"2831":0,"2832":0,"2835":0,"2836":0,"2841":0,"2843":0,"2844":0,"2845":0,"2852":0,"2853":0,"2859":0,"2861":0,"2871":0,"2872":0,"2876":0,"2880":0,"2886":0,"2887":0,"2893":0,"2895":0,"2897":0,"2898":0,"2899":0,"2906":0,"2907":0,"2911":0,"2927":0,"2949":0,"2952":0,"2955":0,"2956":0,"2957":0,"3019":0,"3031":0,"3054":0,"3055":0,"3056":0,"3059":0,"3062":0,"3063":0,"3064":0,"3065":0,"3069":0,"3070":0,"3071":0,"3076":0,"3077":0,"3078":0,"3080":0,"3081":0,"3086":0,"3106":0,"3107":0,"3112":0,"3113":0,"3116":0,"3127":0,"3128":0,"3129":0,"3131":0,"3145":0,"3146":0,"3169":0,"3170":0,"3172":0,"3173":0,"3174":0,"3178":0,"3201":0,"3202":0,"3204":0,"3205":0,"3206":0,"3207":0,"3212":0,"3228":0,"3229":0,"3230":0,"3233":0,"3237":0,"3238":0,"3241":0,"3258":0,"3259":0,"3264":0,"3265":0,"3266":0,"3269":0,"3270":0,"3272":0,"3276":0,"3288":0,"3289":0,"3324":0,"3326":0,"3327":0,"3328":0,"3329":0,"3563":0,"3566":0,"3568":0,"3570":0,"3571":0,"3572":0,"3573":0,"3574":0,"3575":0,"3576":0,"3577":0,"3578":0,"3579":0,"3580":0,"3581":0,"3585":0,"3586":0,"3588":0,"3589":0,"3591":0,"3592":0,"3595":0,"3596":0,"3597":0,"3598":0,"3600":0,"3601":0,"3602":0,"3603":0,"3608":0,"3609":0,"3611":0,"3612":0,"3613":0,"3615":0,"3616":0,"3617":0,"3619":0,"3620":0,"3621":0,"3624":0,"3625":0,"3627":0,"3629":0,"3630":0,"3631":0,"3632":0,"3633":0,"3636":0,"3637":0,"3638":0,"3640":0,"3641":0,"3642":0,"3646":0,"3647":0,"3648":0,"3649":0,"3651":0,"3652":0,"3653":0,"3655":0,"3656":0,"3661":0,"3662":0,"3663":0,"3664":0,"3665":0,"3666":0,"3669":0,"3670":0,"3671":0,"3676":0,"3678":0,"3679":0,"3680":0,"3681":0,"3683":0,"3684":0,"3685":0,"3688":0,"3689":0,"3690":0,"3691":0,"3692":0,"3695":0,"3697":0,"3698":0,"3701":0,"3702":0,"3703":0,"3705":0,"3706":0,"3707":0,"3708":0,"3709":0,"3710":0,"3720":0,"3721":0,"3725":0,"3727":0,"3729":0,"3731":0,"3732":0,"3736":0,"3740":0,"3744":0,"3766":0,"3767":0,"3769":0,"3770":0,"3773":0,"3774":0,"3776":0,"3777":0,"3778":0,"3780":0,"3781":0,"3783":0,"3784":0,"3787":0,"3788":0,"3792":0,"3794":0}; -_yuitest_coverage["build/yui-base/yui-base.js"].functions = {"instanceOf:59":0,"YUI:54":0,"add:178":0,"remove:185":0,"handleLoad:195":0,"getLoader:202":0,"clobber:227":0,"applyConfig:261":0,"_config:305":0,"parseBasePath:374":0,"(anonymous 2):398":0,"_init:314":0,"_setup:494":0,"applyTo:525":0,"add:582":0,"_attach:626":0,"(anonymous 5):794":0,"(anonymous 4):793":0,"(anonymous 3):791":0,"_delayCallback:780":0,"(anonymous 6):893":0,"use:850":0,"_notify:908":0,"process:961":0,"(anonymous 7):1052":0,"handleLoader:1025":0,"handleBoot:1131":0,"_use:938":0,"namespace:1194":0,"dump:1218":0,"error:1233":0,"guid:1257":0,"stamp:1272":0,"destroy:1304":0,"applyConfig:1366":0,"(anonymous 1):153":0,"_isNative:2020":0,"isArray:2038":0,"isBoolean:2049":0,"isDate:2060":0,"isFunction:2088":0,"isNull:2099":0,"isNumber:2110":0,"isObject:2125":0,"isString:2138":0,"isUndefined:2149":0,"isValue:2162":0,"(anonymous 9):2186":0,"(anonymous 10):2202":0,"sub:2201":0,"(anonymous 11):2215":0,"}:2217":0,"(anonymous 12):2232":0,"}:2234":0,"(anonymous 13):2245":0,"}:2247":0,"type:2278":0,"YArray:2319":0,"dedupe:2358":0,"(anonymous 14):2390":0,"}:2393":0,"hash:2427":0,"(anonymous 15):2455":0,"}:2457":0,"numericSort:2500":0,"(anonymous 16):2520":0,"}:2522":0,"test:2550":0,"Queue:2584":0,"_init:2596":0,"next:2613":0,"last:2623":0,"add:2634":0,"size:2646":0,"(anonymous 17):2696":0,"cached:2693":0,"getLocation:2725":0,"merge:2750":0,"mix:2804":0,"(anonymous 18):2943":0,"F:2952":0,"(anonymous 20):2955":0,"(anonymous 19):2950":0,"owns:3018":0,"keys:3054":0,"values:3106":0,"size:3127":0,"hasValue:3145":0,"each:3169":0,"some:3201":0,"getValue:3228":0,"setValue:3258":0,"isEmpty:3288":0,"(anonymous 22):3328":0,"numberify:3326":0,"parseUA:3324":0,"compareVersions:3766":0,"(anonymous 8):1950":0}; -_yuitest_coverage["build/yui-base/yui-base.js"].coveredLines = 824; -_yuitest_coverage["build/yui-base/yui-base.js"].coveredFunctions = 98; -_yuitest_coverline("build/yui-base/yui-base.js", 10); -if (typeof YUI != 'undefined') { - _yuitest_coverline("build/yui-base/yui-base.js", 11); -YUI._YUI = YUI; -} - -/** -The YUI global namespace object. If YUI is already defined, the -existing YUI object will not be overwritten so that defined -namespaces are preserved. It is the constructor for the object -the end user interacts with. As indicated below, each instance -has full custom event support, but only if the event system -is available. This is a self-instantiable factory function. You -can invoke it directly like this: - - YUI().use('*', function(Y) { - // ready - }); - -But it also works like this: - - var Y = YUI(); - -Configuring the YUI object: - - YUI({ - debug: true, - combine: false - }).use('node', function(Y) { - //Node is ready to use - }); - -See the API docs for the Config class -for the complete list of supported configuration properties accepted -by the YUI constuctor. - -@class YUI -@constructor -@global -@uses EventTarget -@param [o]* {Object} 0..n optional configuration objects. these values -are store in Y.config. See Config for the list of supported -properties. -*/ - /*global YUI*/ - /*global YUI_config*/ - _yuitest_coverline("build/yui-base/yui-base.js", 54); -var YUI = function() { - _yuitest_coverfunc("build/yui-base/yui-base.js", "YUI", 54); -_yuitest_coverline("build/yui-base/yui-base.js", 55); -var i = 0, - Y = this, - args = arguments, - l = args.length, - instanceOf = function(o, type) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "instanceOf", 59); -_yuitest_coverline("build/yui-base/yui-base.js", 60); -return (o && o.hasOwnProperty && (o instanceof type)); - }, - gconf = (typeof YUI_config !== 'undefined') && YUI_config; - - _yuitest_coverline("build/yui-base/yui-base.js", 64); -if (!(instanceOf(Y, YUI))) { - _yuitest_coverline("build/yui-base/yui-base.js", 65); -Y = new YUI(); - } else { - // set up the core environment - _yuitest_coverline("build/yui-base/yui-base.js", 68); -Y._init(); - - /** - YUI.GlobalConfig is a master configuration that might span - multiple contexts in a non-browser environment. It is applied - first to all instances in all contexts. - @property GlobalConfig - @type {Object} - @global - @static - @example - - - YUI.GlobalConfig = { - filter: 'debug' - }; - - YUI().use('node', function(Y) { - //debug files used here - }); - - YUI({ - filter: 'min' - }).use('node', function(Y) { - //min files used here - }); - - */ - _yuitest_coverline("build/yui-base/yui-base.js", 96); -if (YUI.GlobalConfig) { - _yuitest_coverline("build/yui-base/yui-base.js", 97); -Y.applyConfig(YUI.GlobalConfig); - } - - /** - YUI_config is a page-level config. It is applied to all - instances created on the page. This is applied after - YUI.GlobalConfig, and before the instance level configuration - objects. - @global - @property YUI_config - @type {Object} - @example - - - //Single global var to include before YUI seed file - YUI_config = { - filter: 'debug' - }; - - YUI().use('node', function(Y) { - //debug files used here - }); - - YUI({ - filter: 'min' - }).use('node', function(Y) { - //min files used here - }); - */ - _yuitest_coverline("build/yui-base/yui-base.js", 126); -if (gconf) { - _yuitest_coverline("build/yui-base/yui-base.js", 127); -Y.applyConfig(gconf); - } - - // bind the specified additional modules for this instance - _yuitest_coverline("build/yui-base/yui-base.js", 131); -if (!l) { - _yuitest_coverline("build/yui-base/yui-base.js", 132); -Y._setup(); - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 136); -if (l) { - // Each instance can accept one or more configuration objects. - // These are applied after YUI.GlobalConfig and YUI_Config, - // overriding values set in those config files if there is a ' - // matching property. - _yuitest_coverline("build/yui-base/yui-base.js", 141); -for (; i < l; i++) { - _yuitest_coverline("build/yui-base/yui-base.js", 142); -Y.applyConfig(args[i]); - } - - _yuitest_coverline("build/yui-base/yui-base.js", 145); -Y._setup(); - } - - _yuitest_coverline("build/yui-base/yui-base.js", 148); -Y.instanceOf = instanceOf; - - _yuitest_coverline("build/yui-base/yui-base.js", 150); -return Y; - }; - -_yuitest_coverline("build/yui-base/yui-base.js", 153); -(function() { - - _yuitest_coverfunc("build/yui-base/yui-base.js", "(anonymous 1)", 153); -_yuitest_coverline("build/yui-base/yui-base.js", 155); -var proto, prop, - VERSION = '3.7.3', - PERIOD = '.', - BASE = 'http://yui.yahooapis.com/', - /* - These CSS class names can't be generated by - getClassName since it is not available at the - time they are being used. - */ - DOC_LABEL = 'yui3-js-enabled', - CSS_STAMP_EL = 'yui3-css-stamp', - NOOP = function() {}, - SLICE = Array.prototype.slice, - APPLY_TO_AUTH = { 'io.xdrReady': 1, // the functions applyTo - 'io.xdrResponse': 1, // can call. this should - 'SWF.eventHandler': 1 }, // be done at build time - hasWin = (typeof window != 'undefined'), - win = (hasWin) ? window : null, - doc = (hasWin) ? win.document : null, - docEl = doc && doc.documentElement, - docClass = docEl && docEl.className, - instances = {}, - time = new Date().getTime(), - add = function(el, type, fn, capture) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "add", 178); -_yuitest_coverline("build/yui-base/yui-base.js", 179); -if (el && el.addEventListener) { - _yuitest_coverline("build/yui-base/yui-base.js", 180); -el.addEventListener(type, fn, capture); - } else {_yuitest_coverline("build/yui-base/yui-base.js", 181); -if (el && el.attachEvent) { - _yuitest_coverline("build/yui-base/yui-base.js", 182); -el.attachEvent('on' + type, fn); - }} - }, - remove = function(el, type, fn, capture) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "remove", 185); -_yuitest_coverline("build/yui-base/yui-base.js", 186); -if (el && el.removeEventListener) { - // this can throw an uncaught exception in FF - _yuitest_coverline("build/yui-base/yui-base.js", 188); -try { - _yuitest_coverline("build/yui-base/yui-base.js", 189); -el.removeEventListener(type, fn, capture); - } catch (ex) {} - } else {_yuitest_coverline("build/yui-base/yui-base.js", 191); -if (el && el.detachEvent) { - _yuitest_coverline("build/yui-base/yui-base.js", 192); -el.detachEvent('on' + type, fn); - }} - }, - handleLoad = function() { - _yuitest_coverfunc("build/yui-base/yui-base.js", "handleLoad", 195); -_yuitest_coverline("build/yui-base/yui-base.js", 196); -YUI.Env.windowLoaded = true; - _yuitest_coverline("build/yui-base/yui-base.js", 197); -YUI.Env.DOMReady = true; - _yuitest_coverline("build/yui-base/yui-base.js", 198); -if (hasWin) { - _yuitest_coverline("build/yui-base/yui-base.js", 199); -remove(window, 'load', handleLoad); - } - }, - getLoader = function(Y, o) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "getLoader", 202); -_yuitest_coverline("build/yui-base/yui-base.js", 203); -var loader = Y.Env._loader, - lCore = [ 'loader-base' ], - G_ENV = YUI.Env, - mods = G_ENV.mods; - - _yuitest_coverline("build/yui-base/yui-base.js", 208); -if (loader) { - //loader._config(Y.config); - _yuitest_coverline("build/yui-base/yui-base.js", 210); -loader.ignoreRegistered = false; - _yuitest_coverline("build/yui-base/yui-base.js", 211); -loader.onEnd = null; - _yuitest_coverline("build/yui-base/yui-base.js", 212); -loader.data = null; - _yuitest_coverline("build/yui-base/yui-base.js", 213); -loader.required = []; - _yuitest_coverline("build/yui-base/yui-base.js", 214); -loader.loadType = null; - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 216); -loader = new Y.Loader(Y.config); - _yuitest_coverline("build/yui-base/yui-base.js", 217); -Y.Env._loader = loader; - } - _yuitest_coverline("build/yui-base/yui-base.js", 219); -if (mods && mods.loader) { - _yuitest_coverline("build/yui-base/yui-base.js", 220); -lCore = [].concat(lCore, YUI.Env.loaderExtras); - } - _yuitest_coverline("build/yui-base/yui-base.js", 222); -YUI.Env.core = Y.Array.dedupe([].concat(YUI.Env.core, lCore)); - - _yuitest_coverline("build/yui-base/yui-base.js", 224); -return loader; - }, - - clobber = function(r, s) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "clobber", 227); -_yuitest_coverline("build/yui-base/yui-base.js", 228); -for (var i in s) { - _yuitest_coverline("build/yui-base/yui-base.js", 229); -if (s.hasOwnProperty(i)) { - _yuitest_coverline("build/yui-base/yui-base.js", 230); -r[i] = s[i]; - } - } - }, - - ALREADY_DONE = { success: true }; - -// Stamp the documentElement (HTML) with a class of "yui-loaded" to -// enable styles that need to key off of JS being enabled. -_yuitest_coverline("build/yui-base/yui-base.js", 239); -if (docEl && docClass.indexOf(DOC_LABEL) == -1) { - _yuitest_coverline("build/yui-base/yui-base.js", 240); -if (docClass) { - _yuitest_coverline("build/yui-base/yui-base.js", 241); -docClass += ' '; - } - _yuitest_coverline("build/yui-base/yui-base.js", 243); -docClass += DOC_LABEL; - _yuitest_coverline("build/yui-base/yui-base.js", 244); -docEl.className = docClass; -} - -_yuitest_coverline("build/yui-base/yui-base.js", 247); -if (VERSION.indexOf('@') > -1) { - _yuitest_coverline("build/yui-base/yui-base.js", 248); -VERSION = '3.5.0'; // dev time hack for cdn test -} - -_yuitest_coverline("build/yui-base/yui-base.js", 251); -proto = { - /** - * Applies a new configuration object to the YUI instance config. - * This will merge new group/module definitions, and will also - * update the loader cache if necessary. Updating Y.config directly - * will not update the cache. - * @method applyConfig - * @param {Object} o the configuration object. - * @since 3.2.0 - */ - applyConfig: function(o) { - - _yuitest_coverfunc("build/yui-base/yui-base.js", "applyConfig", 261); -_yuitest_coverline("build/yui-base/yui-base.js", 263); -o = o || NOOP; - - _yuitest_coverline("build/yui-base/yui-base.js", 265); -var attr, - name, - // detail, - config = this.config, - mods = config.modules, - groups = config.groups, - aliases = config.aliases, - loader = this.Env._loader; - - _yuitest_coverline("build/yui-base/yui-base.js", 274); -for (name in o) { - _yuitest_coverline("build/yui-base/yui-base.js", 275); -if (o.hasOwnProperty(name)) { - _yuitest_coverline("build/yui-base/yui-base.js", 276); -attr = o[name]; - _yuitest_coverline("build/yui-base/yui-base.js", 277); -if (mods && name == 'modules') { - _yuitest_coverline("build/yui-base/yui-base.js", 278); -clobber(mods, attr); - } else {_yuitest_coverline("build/yui-base/yui-base.js", 279); -if (aliases && name == 'aliases') { - _yuitest_coverline("build/yui-base/yui-base.js", 280); -clobber(aliases, attr); - } else {_yuitest_coverline("build/yui-base/yui-base.js", 281); -if (groups && name == 'groups') { - _yuitest_coverline("build/yui-base/yui-base.js", 282); -clobber(groups, attr); - } else {_yuitest_coverline("build/yui-base/yui-base.js", 283); -if (name == 'win') { - _yuitest_coverline("build/yui-base/yui-base.js", 284); -config[name] = (attr && attr.contentWindow) || attr; - _yuitest_coverline("build/yui-base/yui-base.js", 285); -config.doc = config[name] ? config[name].document : null; - } else {_yuitest_coverline("build/yui-base/yui-base.js", 286); -if (name == '_yuid') { - // preserve the guid - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 289); -config[name] = attr; - }}}}} - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 294); -if (loader) { - _yuitest_coverline("build/yui-base/yui-base.js", 295); -loader._config(o); - } - - }, - /** - * Old way to apply a config to the instance (calls `applyConfig` under the hood) - * @private - * @method _config - * @param {Object} o The config to apply - */ - _config: function(o) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "_config", 305); -_yuitest_coverline("build/yui-base/yui-base.js", 306); -this.applyConfig(o); - }, - - /** - * Initialize this YUI instance - * @private - * @method _init - */ - _init: function() { - _yuitest_coverfunc("build/yui-base/yui-base.js", "_init", 314); -_yuitest_coverline("build/yui-base/yui-base.js", 315); -var filter, el, - Y = this, - G_ENV = YUI.Env, - Env = Y.Env, - prop; - - /** - * The version number of the YUI instance. - * @property version - * @type string - */ - _yuitest_coverline("build/yui-base/yui-base.js", 326); -Y.version = VERSION; - - _yuitest_coverline("build/yui-base/yui-base.js", 328); -if (!Env) { - _yuitest_coverline("build/yui-base/yui-base.js", 329); -Y.Env = { - core: ['get', 'features', 'intl-base', 'yui-log', 'yui-later'], - loaderExtras: ['loader-rollup', 'loader-yui3'], - mods: {}, // flat module map - versions: {}, // version module map - base: BASE, - cdn: BASE + VERSION + '/build/', - // bootstrapped: false, - _idx: 0, - _used: {}, - _attached: {}, - _missed: [], - _yidx: 0, - _uidx: 0, - _guidp: 'y', - _loaded: {}, - // serviced: {}, - // Regex in English: - // I'll start at the \b(simpleyui). - // 1. Look in the test string for "simpleyui" or "yui" or - // "yui-base" or "yui-davglass" or "yui-foobar" that comes after a word break. That is, it - // can't match "foyui" or "i_heart_simpleyui". This can be anywhere in the string. - // 2. After #1 must come a forward slash followed by the string matched in #1, so - // "yui-base/yui-base" or "simpleyui/simpleyui" or "yui-pants/yui-pants". - // 3. The second occurence of the #1 token can optionally be followed by "-debug" or "-min", - // so "yui/yui-min", "yui/yui-debug", "yui-base/yui-base-debug". NOT "yui/yui-tshirt". - // 4. This is followed by ".js", so "yui/yui.js", "simpleyui/simpleyui-min.js" - // 0. Going back to the beginning, now. If all that stuff in 1-4 comes after a "?" in the string, - // then capture the junk between the LAST "&" and the string in 1-4. So - // "blah?foo/yui/yui.js" will capture "foo/" and "blah?some/thing.js&3.3.0/build/yui-davglass/yui-davglass.js" - // will capture "3.3.0/build/" - // - // Regex Exploded: - // (?:\? Find a ? - // (?:[^&]*&) followed by 0..n characters followed by an & - // * in fact, find as many sets of characters followed by a & as you can - // ([^&]*) capture the stuff after the last & in \1 - // )? but it's ok if all this ?junk&more_junk stuff isn't even there - // \b(simpleyui| after a word break find either the string "simpleyui" or - // yui(?:-\w+)? the string "yui" optionally followed by a -, then more characters - // ) and store the simpleyui or yui-* string in \2 - // \/\2 then comes a / followed by the simpleyui or yui-* string in \2 - // (?:-(min|debug))? optionally followed by "-min" or "-debug" - // .js and ending in ".js" - _BASE_RE: /(?:\?(?:[^&]*&)*([^&]*))?\b(simpleyui|yui(?:-\w+)?)\/\2(?:-(min|debug))?\.js/, - parseBasePath: function(src, pattern) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "parseBasePath", 374); -_yuitest_coverline("build/yui-base/yui-base.js", 375); -var match = src.match(pattern), - path, filter; - - _yuitest_coverline("build/yui-base/yui-base.js", 378); -if (match) { - _yuitest_coverline("build/yui-base/yui-base.js", 379); -path = RegExp.leftContext || src.slice(0, src.indexOf(match[0])); - - // this is to set up the path to the loader. The file - // filter for loader should match the yui include. - _yuitest_coverline("build/yui-base/yui-base.js", 383); -filter = match[3]; - - // extract correct path for mixed combo urls - // http://yuilibrary.com/projects/yui3/ticket/2528423 - _yuitest_coverline("build/yui-base/yui-base.js", 387); -if (match[1]) { - _yuitest_coverline("build/yui-base/yui-base.js", 388); -path += '?' + match[1]; - } - _yuitest_coverline("build/yui-base/yui-base.js", 390); -path = { - filter: filter, - path: path - }; - } - _yuitest_coverline("build/yui-base/yui-base.js", 395); -return path; - }, - getBase: G_ENV && G_ENV.getBase || - function(pattern) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "(anonymous 2)", 398); -_yuitest_coverline("build/yui-base/yui-base.js", 399); -var nodes = (doc && doc.getElementsByTagName('script')) || [], - path = Env.cdn, parsed, - i, len, src; - - _yuitest_coverline("build/yui-base/yui-base.js", 403); -for (i = 0, len = nodes.length; i < len; ++i) { - _yuitest_coverline("build/yui-base/yui-base.js", 404); -src = nodes[i].src; - _yuitest_coverline("build/yui-base/yui-base.js", 405); -if (src) { - _yuitest_coverline("build/yui-base/yui-base.js", 406); -parsed = Y.Env.parseBasePath(src, pattern); - _yuitest_coverline("build/yui-base/yui-base.js", 407); -if (parsed) { - _yuitest_coverline("build/yui-base/yui-base.js", 408); -filter = parsed.filter; - _yuitest_coverline("build/yui-base/yui-base.js", 409); -path = parsed.path; - _yuitest_coverline("build/yui-base/yui-base.js", 410); -break; - } - } - } - - // use CDN default - _yuitest_coverline("build/yui-base/yui-base.js", 416); -return path; - } - - }; - - _yuitest_coverline("build/yui-base/yui-base.js", 421); -Env = Y.Env; - - _yuitest_coverline("build/yui-base/yui-base.js", 423); -Env._loaded[VERSION] = {}; - - _yuitest_coverline("build/yui-base/yui-base.js", 425); -if (G_ENV && Y !== YUI) { - _yuitest_coverline("build/yui-base/yui-base.js", 426); -Env._yidx = ++G_ENV._yidx; - _yuitest_coverline("build/yui-base/yui-base.js", 427); -Env._guidp = ('yui_' + VERSION + '_' + - Env._yidx + '_' + time).replace(/\./g, '_').replace(/-/g, '_'); - } else {_yuitest_coverline("build/yui-base/yui-base.js", 429); -if (YUI._YUI) { - - _yuitest_coverline("build/yui-base/yui-base.js", 431); -G_ENV = YUI._YUI.Env; - _yuitest_coverline("build/yui-base/yui-base.js", 432); -Env._yidx += G_ENV._yidx; - _yuitest_coverline("build/yui-base/yui-base.js", 433); -Env._uidx += G_ENV._uidx; - - _yuitest_coverline("build/yui-base/yui-base.js", 435); -for (prop in G_ENV) { - _yuitest_coverline("build/yui-base/yui-base.js", 436); -if (!(prop in Env)) { - _yuitest_coverline("build/yui-base/yui-base.js", 437); -Env[prop] = G_ENV[prop]; - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 441); -delete YUI._YUI; - }} - - _yuitest_coverline("build/yui-base/yui-base.js", 444); -Y.id = Y.stamp(Y); - _yuitest_coverline("build/yui-base/yui-base.js", 445); -instances[Y.id] = Y; - - } - - _yuitest_coverline("build/yui-base/yui-base.js", 449); -Y.constructor = YUI; - - // configuration defaults - _yuitest_coverline("build/yui-base/yui-base.js", 452); -Y.config = Y.config || { - bootstrap: true, - cacheUse: true, - debug: true, - doc: doc, - fetchCSS: true, - throwFail: true, - useBrowserConsole: true, - useNativeES5: true, - win: win - }; - - //Register the CSS stamp element - _yuitest_coverline("build/yui-base/yui-base.js", 465); -if (doc && !doc.getElementById(CSS_STAMP_EL)) { - _yuitest_coverline("build/yui-base/yui-base.js", 466); -el = doc.createElement('div'); - _yuitest_coverline("build/yui-base/yui-base.js", 467); -el.innerHTML = '
          '; - _yuitest_coverline("build/yui-base/yui-base.js", 468); -YUI.Env.cssStampEl = el.firstChild; - _yuitest_coverline("build/yui-base/yui-base.js", 469); -if (doc.body) { - _yuitest_coverline("build/yui-base/yui-base.js", 470); -doc.body.appendChild(YUI.Env.cssStampEl); - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 472); -docEl.insertBefore(YUI.Env.cssStampEl, docEl.firstChild); - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 476); -Y.config.lang = Y.config.lang || 'en-US'; - - _yuitest_coverline("build/yui-base/yui-base.js", 478); -Y.config.base = YUI.config.base || Y.Env.getBase(Y.Env._BASE_RE); - - _yuitest_coverline("build/yui-base/yui-base.js", 480); -if (!filter || (!('mindebug').indexOf(filter))) { - _yuitest_coverline("build/yui-base/yui-base.js", 481); -filter = 'min'; - } - _yuitest_coverline("build/yui-base/yui-base.js", 483); -filter = (filter) ? '-' + filter : filter; - _yuitest_coverline("build/yui-base/yui-base.js", 484); -Y.config.loaderPath = YUI.config.loaderPath || 'loader/loader' + filter + '.js'; - - }, - - /** - * Finishes the instance setup. Attaches whatever modules were defined - * when the yui modules was registered. - * @method _setup - * @private - */ - _setup: function(o) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "_setup", 494); -_yuitest_coverline("build/yui-base/yui-base.js", 495); -var i, Y = this, - core = [], - mods = YUI.Env.mods, - extras = Y.config.core || [].concat(YUI.Env.core); //Clone it.. - - _yuitest_coverline("build/yui-base/yui-base.js", 500); -for (i = 0; i < extras.length; i++) { - _yuitest_coverline("build/yui-base/yui-base.js", 501); -if (mods[extras[i]]) { - _yuitest_coverline("build/yui-base/yui-base.js", 502); -core.push(extras[i]); - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 506); -Y._attach(['yui-base']); - _yuitest_coverline("build/yui-base/yui-base.js", 507); -Y._attach(core); - - _yuitest_coverline("build/yui-base/yui-base.js", 509); -if (Y.Loader) { - _yuitest_coverline("build/yui-base/yui-base.js", 510); -getLoader(Y); - } - - }, - - /** - * Executes a method on a YUI instance with - * the specified id if the specified method is whitelisted. - * @method applyTo - * @param id {String} the YUI instance id. - * @param method {String} the name of the method to exectute. - * Ex: 'Object.keys'. - * @param args {Array} the arguments to apply to the method. - * @return {Object} the return value from the applied method or null. - */ - applyTo: function(id, method, args) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "applyTo", 525); -_yuitest_coverline("build/yui-base/yui-base.js", 526); -if (!(method in APPLY_TO_AUTH)) { - _yuitest_coverline("build/yui-base/yui-base.js", 527); -this.log(method + ': applyTo not allowed', 'warn', 'yui'); - _yuitest_coverline("build/yui-base/yui-base.js", 528); -return null; - } - - _yuitest_coverline("build/yui-base/yui-base.js", 531); -var instance = instances[id], nest, m, i; - _yuitest_coverline("build/yui-base/yui-base.js", 532); -if (instance) { - _yuitest_coverline("build/yui-base/yui-base.js", 533); -nest = method.split('.'); - _yuitest_coverline("build/yui-base/yui-base.js", 534); -m = instance; - _yuitest_coverline("build/yui-base/yui-base.js", 535); -for (i = 0; i < nest.length; i = i + 1) { - _yuitest_coverline("build/yui-base/yui-base.js", 536); -m = m[nest[i]]; - _yuitest_coverline("build/yui-base/yui-base.js", 537); -if (!m) { - _yuitest_coverline("build/yui-base/yui-base.js", 538); -this.log('applyTo not found: ' + method, 'warn', 'yui'); - } - } - _yuitest_coverline("build/yui-base/yui-base.js", 541); -return m && m.apply(instance, args); - } - - _yuitest_coverline("build/yui-base/yui-base.js", 544); -return null; - }, - -/** -Registers a module with the YUI global. The easiest way to create a -first-class YUI module is to use the YUI component -build tool Shifter. - -The build system will produce the `YUI.add` wrapper for your module, along -with any configuration info required for the module. - -@method add -@param name {String} module name. -@param fn {Function} entry point into the module that is used to bind module to the YUI instance. -@param {YUI} fn.Y The YUI instance this module is executed in. -@param {String} fn.name The name of the module -@param version {String} version string. -@param details {Object} optional config data: -@param details.requires {Array} features that must be present before this module can be attached. -@param details.optional {Array} optional features that should be present if loadOptional - is defined. Note: modules are not often loaded this way in YUI 3, - but this field is still useful to inform the user that certain - features in the component will require additional dependencies. -@param details.use {Array} features that are included within this module which need to - be attached automatically when this module is attached. This - supports the YUI 3 rollup system -- a module with submodules - defined will need to have the submodules listed in the 'use' - config. The YUI component build tool does this for you. -@return {YUI} the YUI instance. -@example - - YUI.add('davglass', function(Y, name) { - Y.davglass = function() { - alert('Dav was here!'); - }; - }, '3.4.0', { requires: ['yui-base', 'harley-davidson', 'mt-dew'] }); - -*/ - add: function(name, fn, version, details) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "add", 582); -_yuitest_coverline("build/yui-base/yui-base.js", 583); -details = details || {}; - _yuitest_coverline("build/yui-base/yui-base.js", 584); -var env = YUI.Env, - mod = { - name: name, - fn: fn, - version: version, - details: details - }, - //Instance hash so we don't apply it to the same instance twice - applied = {}, - loader, inst, - i, versions = env.versions; - - _yuitest_coverline("build/yui-base/yui-base.js", 596); -env.mods[name] = mod; - _yuitest_coverline("build/yui-base/yui-base.js", 597); -versions[version] = versions[version] || {}; - _yuitest_coverline("build/yui-base/yui-base.js", 598); -versions[version][name] = mod; - - _yuitest_coverline("build/yui-base/yui-base.js", 600); -for (i in instances) { - _yuitest_coverline("build/yui-base/yui-base.js", 601); -if (instances.hasOwnProperty(i)) { - _yuitest_coverline("build/yui-base/yui-base.js", 602); -inst = instances[i]; - _yuitest_coverline("build/yui-base/yui-base.js", 603); -if (!applied[inst.id]) { - _yuitest_coverline("build/yui-base/yui-base.js", 604); -applied[inst.id] = true; - _yuitest_coverline("build/yui-base/yui-base.js", 605); -loader = inst.Env._loader; - _yuitest_coverline("build/yui-base/yui-base.js", 606); -if (loader) { - _yuitest_coverline("build/yui-base/yui-base.js", 607); -if (!loader.moduleInfo[name] || loader.moduleInfo[name].temp) { - _yuitest_coverline("build/yui-base/yui-base.js", 608); -loader.addModule(details, name); - } - } - } - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 615); -return this; - }, - - /** - * Executes the function associated with each required - * module, binding the module to the YUI instance. - * @param {Array} r The array of modules to attach - * @param {Boolean} [moot=false] Don't throw a warning if the module is not attached - * @method _attach - * @private - */ - _attach: function(r, moot) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "_attach", 626); -_yuitest_coverline("build/yui-base/yui-base.js", 627); -var i, name, mod, details, req, use, after, - mods = YUI.Env.mods, - aliases = YUI.Env.aliases, - Y = this, j, - cache = YUI.Env._renderedMods, - loader = Y.Env._loader, - done = Y.Env._attached, - len = r.length, loader, def, go, - c = []; - - //Check for conditional modules (in a second+ instance) and add their requirements - //TODO I hate this entire method, it needs to be fixed ASAP (3.5.0) ^davglass - _yuitest_coverline("build/yui-base/yui-base.js", 639); -for (i = 0; i < len; i++) { - _yuitest_coverline("build/yui-base/yui-base.js", 640); -name = r[i]; - _yuitest_coverline("build/yui-base/yui-base.js", 641); -mod = mods[name]; - _yuitest_coverline("build/yui-base/yui-base.js", 642); -c.push(name); - _yuitest_coverline("build/yui-base/yui-base.js", 643); -if (loader && loader.conditions[name]) { - _yuitest_coverline("build/yui-base/yui-base.js", 644); -for (j in loader.conditions[name]) { - _yuitest_coverline("build/yui-base/yui-base.js", 645); -if (loader.conditions[name].hasOwnProperty(j)) { - _yuitest_coverline("build/yui-base/yui-base.js", 646); -def = loader.conditions[name][j]; - _yuitest_coverline("build/yui-base/yui-base.js", 647); -go = def && ((def.ua && Y.UA[def.ua]) || (def.test && def.test(Y))); - _yuitest_coverline("build/yui-base/yui-base.js", 648); -if (go) { - _yuitest_coverline("build/yui-base/yui-base.js", 649); -c.push(def.name); - } - } - } - } - } - _yuitest_coverline("build/yui-base/yui-base.js", 655); -r = c; - _yuitest_coverline("build/yui-base/yui-base.js", 656); -len = r.length; - - _yuitest_coverline("build/yui-base/yui-base.js", 658); -for (i = 0; i < len; i++) { - _yuitest_coverline("build/yui-base/yui-base.js", 659); -if (!done[r[i]]) { - _yuitest_coverline("build/yui-base/yui-base.js", 660); -name = r[i]; - _yuitest_coverline("build/yui-base/yui-base.js", 661); -mod = mods[name]; - - _yuitest_coverline("build/yui-base/yui-base.js", 663); -if (aliases && aliases[name] && !mod) { - _yuitest_coverline("build/yui-base/yui-base.js", 664); -Y._attach(aliases[name]); - _yuitest_coverline("build/yui-base/yui-base.js", 665); -continue; - } - _yuitest_coverline("build/yui-base/yui-base.js", 667); -if (!mod) { - _yuitest_coverline("build/yui-base/yui-base.js", 668); -if (loader && loader.moduleInfo[name]) { - _yuitest_coverline("build/yui-base/yui-base.js", 669); -mod = loader.moduleInfo[name]; - _yuitest_coverline("build/yui-base/yui-base.js", 670); -moot = true; - } - - - //if (!loader || !loader.moduleInfo[name]) { - //if ((!loader || !loader.moduleInfo[name]) && !moot) { - _yuitest_coverline("build/yui-base/yui-base.js", 676); -if (!moot && name) { - _yuitest_coverline("build/yui-base/yui-base.js", 677); -if ((name.indexOf('skin-') === -1) && (name.indexOf('css') === -1)) { - _yuitest_coverline("build/yui-base/yui-base.js", 678); -Y.Env._missed.push(name); - _yuitest_coverline("build/yui-base/yui-base.js", 679); -Y.Env._missed = Y.Array.dedupe(Y.Env._missed); - _yuitest_coverline("build/yui-base/yui-base.js", 680); -Y.message('NOT loaded: ' + name, 'warn', 'yui'); - } - } - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 684); -done[name] = true; - //Don't like this, but in case a mod was asked for once, then we fetch it - //We need to remove it from the missed list ^davglass - _yuitest_coverline("build/yui-base/yui-base.js", 687); -for (j = 0; j < Y.Env._missed.length; j++) { - _yuitest_coverline("build/yui-base/yui-base.js", 688); -if (Y.Env._missed[j] === name) { - _yuitest_coverline("build/yui-base/yui-base.js", 689); -Y.message('Found: ' + name + ' (was reported as missing earlier)', 'warn', 'yui'); - _yuitest_coverline("build/yui-base/yui-base.js", 690); -Y.Env._missed.splice(j, 1); - } - } - /* - If it's a temp module, we need to redo it's requirements if it's already loaded - since it may have been loaded by another instance and it's dependencies might - have been redefined inside the fetched file. - */ - _yuitest_coverline("build/yui-base/yui-base.js", 698); -if (loader && cache && cache[name] && cache[name].temp) { - _yuitest_coverline("build/yui-base/yui-base.js", 699); -loader.getRequires(cache[name]); - _yuitest_coverline("build/yui-base/yui-base.js", 700); -req = []; - _yuitest_coverline("build/yui-base/yui-base.js", 701); -for (j in loader.moduleInfo[name].expanded_map) { - _yuitest_coverline("build/yui-base/yui-base.js", 702); -if (loader.moduleInfo[name].expanded_map.hasOwnProperty(j)) { - _yuitest_coverline("build/yui-base/yui-base.js", 703); -req.push(j); - } - } - _yuitest_coverline("build/yui-base/yui-base.js", 706); -Y._attach(req); - } - - _yuitest_coverline("build/yui-base/yui-base.js", 709); -details = mod.details; - _yuitest_coverline("build/yui-base/yui-base.js", 710); -req = details.requires; - _yuitest_coverline("build/yui-base/yui-base.js", 711); -use = details.use; - _yuitest_coverline("build/yui-base/yui-base.js", 712); -after = details.after; - //Force Intl load if there is a language (Loader logic) @todo fix this shit - _yuitest_coverline("build/yui-base/yui-base.js", 714); -if (details.lang) { - _yuitest_coverline("build/yui-base/yui-base.js", 715); -req = req || []; - _yuitest_coverline("build/yui-base/yui-base.js", 716); -req.unshift('intl'); - } - - _yuitest_coverline("build/yui-base/yui-base.js", 719); -if (req) { - _yuitest_coverline("build/yui-base/yui-base.js", 720); -for (j = 0; j < req.length; j++) { - _yuitest_coverline("build/yui-base/yui-base.js", 721); -if (!done[req[j]]) { - _yuitest_coverline("build/yui-base/yui-base.js", 722); -if (!Y._attach(req)) { - _yuitest_coverline("build/yui-base/yui-base.js", 723); -return false; - } - _yuitest_coverline("build/yui-base/yui-base.js", 725); -break; - } - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 730); -if (after) { - _yuitest_coverline("build/yui-base/yui-base.js", 731); -for (j = 0; j < after.length; j++) { - _yuitest_coverline("build/yui-base/yui-base.js", 732); -if (!done[after[j]]) { - _yuitest_coverline("build/yui-base/yui-base.js", 733); -if (!Y._attach(after, true)) { - _yuitest_coverline("build/yui-base/yui-base.js", 734); -return false; - } - _yuitest_coverline("build/yui-base/yui-base.js", 736); -break; - } - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 741); -if (mod.fn) { - _yuitest_coverline("build/yui-base/yui-base.js", 742); -if (Y.config.throwFail) { - _yuitest_coverline("build/yui-base/yui-base.js", 743); -mod.fn(Y, name); - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 745); -try { - _yuitest_coverline("build/yui-base/yui-base.js", 746); -mod.fn(Y, name); - } catch (e) { - _yuitest_coverline("build/yui-base/yui-base.js", 748); -Y.error('Attach error: ' + name, e, name); - _yuitest_coverline("build/yui-base/yui-base.js", 749); -return false; - } - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 754); -if (use) { - _yuitest_coverline("build/yui-base/yui-base.js", 755); -for (j = 0; j < use.length; j++) { - _yuitest_coverline("build/yui-base/yui-base.js", 756); -if (!done[use[j]]) { - _yuitest_coverline("build/yui-base/yui-base.js", 757); -if (!Y._attach(use)) { - _yuitest_coverline("build/yui-base/yui-base.js", 758); -return false; - } - _yuitest_coverline("build/yui-base/yui-base.js", 760); -break; - } - } - } - - - - } - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 771); -return true; - }, - /** - * Delays the `use` callback until another event has taken place. Like: window.onload, domready, contentready, available. - * @private - * @method _delayCallback - * @param {Callback} cb The original `use` callback - * @param {String|Object} until Either an event (load, domready) or an Object containing event/args keys for contentready/available - */ - _delayCallback: function(cb, until) { - - _yuitest_coverfunc("build/yui-base/yui-base.js", "_delayCallback", 780); -_yuitest_coverline("build/yui-base/yui-base.js", 782); -var Y = this, - mod = ['event-base']; - - _yuitest_coverline("build/yui-base/yui-base.js", 785); -until = (Y.Lang.isObject(until) ? until : { event: until }); - - _yuitest_coverline("build/yui-base/yui-base.js", 787); -if (until.event === 'load') { - _yuitest_coverline("build/yui-base/yui-base.js", 788); -mod.push('event-synthetic'); - } - - _yuitest_coverline("build/yui-base/yui-base.js", 791); -return function() { - _yuitest_coverfunc("build/yui-base/yui-base.js", "(anonymous 3)", 791); -_yuitest_coverline("build/yui-base/yui-base.js", 792); -var args = arguments; - _yuitest_coverline("build/yui-base/yui-base.js", 793); -Y._use(mod, function() { - _yuitest_coverfunc("build/yui-base/yui-base.js", "(anonymous 4)", 793); -_yuitest_coverline("build/yui-base/yui-base.js", 794); -Y.on(until.event, function() { - _yuitest_coverfunc("build/yui-base/yui-base.js", "(anonymous 5)", 794); -_yuitest_coverline("build/yui-base/yui-base.js", 795); -args[1].delayUntil = until.event; - _yuitest_coverline("build/yui-base/yui-base.js", 796); -cb.apply(Y, args); - }, until.args); - }); - }; - }, - - /** - * Attaches one or more modules to the YUI instance. When this - * is executed, the requirements are analyzed, and one of - * several things can happen: - * - * * All requirements are available on the page -- The modules - * are attached to the instance. If supplied, the use callback - * is executed synchronously. - * - * * Modules are missing, the Get utility is not available OR - * the 'bootstrap' config is false -- A warning is issued about - * the missing modules and all available modules are attached. - * - * * Modules are missing, the Loader is not available but the Get - * utility is and boostrap is not false -- The loader is bootstrapped - * before doing the following.... - * - * * Modules are missing and the Loader is available -- The loader - * expands the dependency tree and fetches missing modules. When - * the loader is finshed the callback supplied to use is executed - * asynchronously. - * - * @method use - * @param modules* {String|Array} 1-n modules to bind (uses arguments array). - * @param [callback] {Function} callback function executed when - * the instance has the required functionality. If included, it - * must be the last parameter. - * @param callback.Y {YUI} The `YUI` instance created for this sandbox - * @param callback.status {Object} Object containing `success`, `msg` and `data` properties - * - * @example - * // loads and attaches dd and its dependencies - * YUI().use('dd', function(Y) {}); - * - * // loads and attaches dd and node as well as all of their dependencies (since 3.4.0) - * YUI().use(['dd', 'node'], function(Y) {}); - * - * // attaches all modules that are available on the page - * YUI().use('*', function(Y) {}); - * - * // intrinsic YUI gallery support (since 3.1.0) - * YUI().use('gallery-yql', function(Y) {}); - * - * // intrinsic YUI 2in3 support (since 3.1.0) - * YUI().use('yui2-datatable', function(Y) {}); - * - * @return {YUI} the YUI instance. - */ - use: function() { - _yuitest_coverfunc("build/yui-base/yui-base.js", "use", 850); -_yuitest_coverline("build/yui-base/yui-base.js", 851); -var args = SLICE.call(arguments, 0), - callback = args[args.length - 1], - Y = this, - i = 0, - a = [], - name, - Env = Y.Env, - provisioned = true; - - // The last argument supplied to use can be a load complete callback - _yuitest_coverline("build/yui-base/yui-base.js", 861); -if (Y.Lang.isFunction(callback)) { - _yuitest_coverline("build/yui-base/yui-base.js", 862); -args.pop(); - _yuitest_coverline("build/yui-base/yui-base.js", 863); -if (Y.config.delayUntil) { - _yuitest_coverline("build/yui-base/yui-base.js", 864); -callback = Y._delayCallback(callback, Y.config.delayUntil); - } - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 867); -callback = null; - } - _yuitest_coverline("build/yui-base/yui-base.js", 869); -if (Y.Lang.isArray(args[0])) { - _yuitest_coverline("build/yui-base/yui-base.js", 870); -args = args[0]; - } - - _yuitest_coverline("build/yui-base/yui-base.js", 873); -if (Y.config.cacheUse) { - _yuitest_coverline("build/yui-base/yui-base.js", 874); -while ((name = args[i++])) { - _yuitest_coverline("build/yui-base/yui-base.js", 875); -if (!Env._attached[name]) { - _yuitest_coverline("build/yui-base/yui-base.js", 876); -provisioned = false; - _yuitest_coverline("build/yui-base/yui-base.js", 877); -break; - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 881); -if (provisioned) { - _yuitest_coverline("build/yui-base/yui-base.js", 882); -if (args.length) { - } - _yuitest_coverline("build/yui-base/yui-base.js", 884); -Y._notify(callback, ALREADY_DONE, args); - _yuitest_coverline("build/yui-base/yui-base.js", 885); -return Y; - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 889); -if (Y._loading) { - _yuitest_coverline("build/yui-base/yui-base.js", 890); -Y._useQueue = Y._useQueue || new Y.Queue(); - _yuitest_coverline("build/yui-base/yui-base.js", 891); -Y._useQueue.add([args, callback]); - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 893); -Y._use(args, function(Y, response) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "(anonymous 6)", 893); -_yuitest_coverline("build/yui-base/yui-base.js", 894); -Y._notify(callback, response, args); - }); - } - - _yuitest_coverline("build/yui-base/yui-base.js", 898); -return Y; - }, - /** - * Notify handler from Loader for attachment/load errors - * @method _notify - * @param callback {Function} The callback to pass to the `Y.config.loadErrorFn` - * @param response {Object} The response returned from Loader - * @param args {Array} The aruments passed from Loader - * @private - */ - _notify: function(callback, response, args) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "_notify", 908); -_yuitest_coverline("build/yui-base/yui-base.js", 909); -if (!response.success && this.config.loadErrorFn) { - _yuitest_coverline("build/yui-base/yui-base.js", 910); -this.config.loadErrorFn.call(this, this, callback, response, args); - } else {_yuitest_coverline("build/yui-base/yui-base.js", 911); -if (callback) { - _yuitest_coverline("build/yui-base/yui-base.js", 912); -if (this.Env._missed && this.Env._missed.length) { - _yuitest_coverline("build/yui-base/yui-base.js", 913); -response.msg = 'Missing modules: ' + this.Env._missed.join(); - _yuitest_coverline("build/yui-base/yui-base.js", 914); -response.success = false; - } - _yuitest_coverline("build/yui-base/yui-base.js", 916); -if (this.config.throwFail) { - _yuitest_coverline("build/yui-base/yui-base.js", 917); -callback(this, response); - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 919); -try { - _yuitest_coverline("build/yui-base/yui-base.js", 920); -callback(this, response); - } catch (e) { - _yuitest_coverline("build/yui-base/yui-base.js", 922); -this.error('use callback error', e, args); - } - } - }} - }, - - /** - * This private method is called from the `use` method queue. To ensure that only one set of loading - * logic is performed at a time. - * @method _use - * @private - * @param args* {String} 1-n modules to bind (uses arguments array). - * @param *callback {Function} callback function executed when - * the instance has the required functionality. If included, it - * must be the last parameter. - */ - _use: function(args, callback) { - - _yuitest_coverfunc("build/yui-base/yui-base.js", "_use", 938); -_yuitest_coverline("build/yui-base/yui-base.js", 940); -if (!this.Array) { - _yuitest_coverline("build/yui-base/yui-base.js", 941); -this._attach(['yui-base']); - } - - _yuitest_coverline("build/yui-base/yui-base.js", 944); -var len, loader, handleBoot, handleRLS, - Y = this, - G_ENV = YUI.Env, - mods = G_ENV.mods, - Env = Y.Env, - used = Env._used, - aliases = G_ENV.aliases, - queue = G_ENV._loaderQueue, - firstArg = args[0], - YArray = Y.Array, - config = Y.config, - boot = config.bootstrap, - missing = [], - i, - r = [], - ret = true, - fetchCSS = config.fetchCSS, - process = function(names, skip) { - - _yuitest_coverfunc("build/yui-base/yui-base.js", "process", 961); -_yuitest_coverline("build/yui-base/yui-base.js", 963); -var i = 0, a = [], name, len, m, req, use; - - _yuitest_coverline("build/yui-base/yui-base.js", 965); -if (!names.length) { - _yuitest_coverline("build/yui-base/yui-base.js", 966); -return; - } - - _yuitest_coverline("build/yui-base/yui-base.js", 969); -if (aliases) { - _yuitest_coverline("build/yui-base/yui-base.js", 970); -len = names.length; - _yuitest_coverline("build/yui-base/yui-base.js", 971); -for (i = 0; i < len; i++) { - _yuitest_coverline("build/yui-base/yui-base.js", 972); -if (aliases[names[i]] && !mods[names[i]]) { - _yuitest_coverline("build/yui-base/yui-base.js", 973); -a = [].concat(a, aliases[names[i]]); - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 975); -a.push(names[i]); - } - } - _yuitest_coverline("build/yui-base/yui-base.js", 978); -names = a; - } - - _yuitest_coverline("build/yui-base/yui-base.js", 981); -len = names.length; - - _yuitest_coverline("build/yui-base/yui-base.js", 983); -for (i = 0; i < len; i++) { - _yuitest_coverline("build/yui-base/yui-base.js", 984); -name = names[i]; - _yuitest_coverline("build/yui-base/yui-base.js", 985); -if (!skip) { - _yuitest_coverline("build/yui-base/yui-base.js", 986); -r.push(name); - } - - // only attach a module once - _yuitest_coverline("build/yui-base/yui-base.js", 990); -if (used[name]) { - _yuitest_coverline("build/yui-base/yui-base.js", 991); -continue; - } - - _yuitest_coverline("build/yui-base/yui-base.js", 994); -m = mods[name]; - _yuitest_coverline("build/yui-base/yui-base.js", 995); -req = null; - _yuitest_coverline("build/yui-base/yui-base.js", 996); -use = null; - - _yuitest_coverline("build/yui-base/yui-base.js", 998); -if (m) { - _yuitest_coverline("build/yui-base/yui-base.js", 999); -used[name] = true; - _yuitest_coverline("build/yui-base/yui-base.js", 1000); -req = m.details.requires; - _yuitest_coverline("build/yui-base/yui-base.js", 1001); -use = m.details.use; - } else { - // CSS files don't register themselves, see if it has - // been loaded - _yuitest_coverline("build/yui-base/yui-base.js", 1005); -if (!G_ENV._loaded[VERSION][name]) { - _yuitest_coverline("build/yui-base/yui-base.js", 1006); -missing.push(name); - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 1008); -used[name] = true; // probably css - } - } - - // make sure requirements are attached - _yuitest_coverline("build/yui-base/yui-base.js", 1013); -if (req && req.length) { - _yuitest_coverline("build/yui-base/yui-base.js", 1014); -process(req); - } - - // make sure we grab the submodule dependencies too - _yuitest_coverline("build/yui-base/yui-base.js", 1018); -if (use && use.length) { - _yuitest_coverline("build/yui-base/yui-base.js", 1019); -process(use, 1); - } - } - - }, - - handleLoader = function(fromLoader) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "handleLoader", 1025); -_yuitest_coverline("build/yui-base/yui-base.js", 1026); -var response = fromLoader || { - success: true, - msg: 'not dynamic' - }, - redo, origMissing, - ret = true, - data = response.data; - - _yuitest_coverline("build/yui-base/yui-base.js", 1034); -Y._loading = false; - - _yuitest_coverline("build/yui-base/yui-base.js", 1036); -if (data) { - _yuitest_coverline("build/yui-base/yui-base.js", 1037); -origMissing = missing; - _yuitest_coverline("build/yui-base/yui-base.js", 1038); -missing = []; - _yuitest_coverline("build/yui-base/yui-base.js", 1039); -r = []; - _yuitest_coverline("build/yui-base/yui-base.js", 1040); -process(data); - _yuitest_coverline("build/yui-base/yui-base.js", 1041); -redo = missing.length; - _yuitest_coverline("build/yui-base/yui-base.js", 1042); -if (redo) { - _yuitest_coverline("build/yui-base/yui-base.js", 1043); -if ([].concat(missing).sort().join() == - origMissing.sort().join()) { - _yuitest_coverline("build/yui-base/yui-base.js", 1045); -redo = false; - } - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 1050); -if (redo && data) { - _yuitest_coverline("build/yui-base/yui-base.js", 1051); -Y._loading = true; - _yuitest_coverline("build/yui-base/yui-base.js", 1052); -Y._use(missing, function() { - _yuitest_coverfunc("build/yui-base/yui-base.js", "(anonymous 7)", 1052); -_yuitest_coverline("build/yui-base/yui-base.js", 1053); -if (Y._attach(data)) { - _yuitest_coverline("build/yui-base/yui-base.js", 1054); -Y._notify(callback, response, data); - } - }); - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 1058); -if (data) { - _yuitest_coverline("build/yui-base/yui-base.js", 1059); -ret = Y._attach(data); - } - _yuitest_coverline("build/yui-base/yui-base.js", 1061); -if (ret) { - _yuitest_coverline("build/yui-base/yui-base.js", 1062); -Y._notify(callback, response, args); - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 1066); -if (Y._useQueue && Y._useQueue.size() && !Y._loading) { - _yuitest_coverline("build/yui-base/yui-base.js", 1067); -Y._use.apply(Y, Y._useQueue.next()); - } - - }; - - - // YUI().use('*'); // bind everything available - _yuitest_coverline("build/yui-base/yui-base.js", 1074); -if (firstArg === '*') { - _yuitest_coverline("build/yui-base/yui-base.js", 1075); -args = []; - _yuitest_coverline("build/yui-base/yui-base.js", 1076); -for (i in mods) { - _yuitest_coverline("build/yui-base/yui-base.js", 1077); -if (mods.hasOwnProperty(i)) { - _yuitest_coverline("build/yui-base/yui-base.js", 1078); -args.push(i); - } - } - _yuitest_coverline("build/yui-base/yui-base.js", 1081); -ret = Y._attach(args); - _yuitest_coverline("build/yui-base/yui-base.js", 1082); -if (ret) { - _yuitest_coverline("build/yui-base/yui-base.js", 1083); -handleLoader(); - } - _yuitest_coverline("build/yui-base/yui-base.js", 1085); -return Y; - } - - _yuitest_coverline("build/yui-base/yui-base.js", 1088); -if ((mods.loader || mods['loader-base']) && !Y.Loader) { - _yuitest_coverline("build/yui-base/yui-base.js", 1089); -Y._attach(['loader' + ((!mods.loader) ? '-base' : '')]); - } - - - // use loader to expand dependencies and sort the - // requirements if it is available. - _yuitest_coverline("build/yui-base/yui-base.js", 1095); -if (boot && Y.Loader && args.length) { - _yuitest_coverline("build/yui-base/yui-base.js", 1096); -loader = getLoader(Y); - _yuitest_coverline("build/yui-base/yui-base.js", 1097); -loader.require(args); - _yuitest_coverline("build/yui-base/yui-base.js", 1098); -loader.ignoreRegistered = true; - _yuitest_coverline("build/yui-base/yui-base.js", 1099); -loader._boot = true; - _yuitest_coverline("build/yui-base/yui-base.js", 1100); -loader.calculate(null, (fetchCSS) ? null : 'js'); - _yuitest_coverline("build/yui-base/yui-base.js", 1101); -args = loader.sorted; - _yuitest_coverline("build/yui-base/yui-base.js", 1102); -loader._boot = false; - } - - _yuitest_coverline("build/yui-base/yui-base.js", 1105); -process(args); - - _yuitest_coverline("build/yui-base/yui-base.js", 1107); -len = missing.length; - - - _yuitest_coverline("build/yui-base/yui-base.js", 1110); -if (len) { - _yuitest_coverline("build/yui-base/yui-base.js", 1111); -missing = YArray.dedupe(missing); - _yuitest_coverline("build/yui-base/yui-base.js", 1112); -len = missing.length; - } - - - // dynamic load - _yuitest_coverline("build/yui-base/yui-base.js", 1117); -if (boot && len && Y.Loader) { - _yuitest_coverline("build/yui-base/yui-base.js", 1118); -Y._loading = true; - _yuitest_coverline("build/yui-base/yui-base.js", 1119); -loader = getLoader(Y); - _yuitest_coverline("build/yui-base/yui-base.js", 1120); -loader.onEnd = handleLoader; - _yuitest_coverline("build/yui-base/yui-base.js", 1121); -loader.context = Y; - _yuitest_coverline("build/yui-base/yui-base.js", 1122); -loader.data = args; - _yuitest_coverline("build/yui-base/yui-base.js", 1123); -loader.ignoreRegistered = false; - _yuitest_coverline("build/yui-base/yui-base.js", 1124); -loader.require(args); - _yuitest_coverline("build/yui-base/yui-base.js", 1125); -loader.insert(null, (fetchCSS) ? null : 'js'); - - } else {_yuitest_coverline("build/yui-base/yui-base.js", 1127); -if (boot && len && Y.Get && !Env.bootstrapped) { - - _yuitest_coverline("build/yui-base/yui-base.js", 1129); -Y._loading = true; - - _yuitest_coverline("build/yui-base/yui-base.js", 1131); -handleBoot = function() { - _yuitest_coverfunc("build/yui-base/yui-base.js", "handleBoot", 1131); -_yuitest_coverline("build/yui-base/yui-base.js", 1132); -Y._loading = false; - _yuitest_coverline("build/yui-base/yui-base.js", 1133); -queue.running = false; - _yuitest_coverline("build/yui-base/yui-base.js", 1134); -Env.bootstrapped = true; - _yuitest_coverline("build/yui-base/yui-base.js", 1135); -G_ENV._bootstrapping = false; - _yuitest_coverline("build/yui-base/yui-base.js", 1136); -if (Y._attach(['loader'])) { - _yuitest_coverline("build/yui-base/yui-base.js", 1137); -Y._use(args, callback); - } - }; - - _yuitest_coverline("build/yui-base/yui-base.js", 1141); -if (G_ENV._bootstrapping) { - _yuitest_coverline("build/yui-base/yui-base.js", 1142); -queue.add(handleBoot); - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 1144); -G_ENV._bootstrapping = true; - _yuitest_coverline("build/yui-base/yui-base.js", 1145); -Y.Get.script(config.base + config.loaderPath, { - onEnd: handleBoot - }); - } - - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 1151); -ret = Y._attach(args); - _yuitest_coverline("build/yui-base/yui-base.js", 1152); -if (ret) { - _yuitest_coverline("build/yui-base/yui-base.js", 1153); -handleLoader(); - } - }} - - _yuitest_coverline("build/yui-base/yui-base.js", 1157); -return Y; - }, - - - /** - Adds a namespace object onto the YUI global if called statically. - - // creates YUI.your.namespace.here as nested objects - YUI.namespace("your.namespace.here"); - - If called as a method on a YUI instance, it creates the - namespace on the instance. - - // creates Y.property.package - Y.namespace("property.package"); - - Dots in the input string cause `namespace` to create nested objects for - each token. If any part of the requested namespace already exists, the - current object will be left in place. This allows multiple calls to - `namespace` to preserve existing namespaced properties. - - If the first token in the namespace string is "YAHOO", the token is - discarded. - - Be careful with namespace tokens. Reserved words may work in some browsers - and not others. For instance, the following will fail in some browsers - because the supported version of JavaScript reserves the word "long": - - Y.namespace("really.long.nested.namespace"); - - Note: If you pass multiple arguments to create multiple namespaces, only - the last one created is returned from this function. - - @method namespace - @param {String} namespace* namespaces to create. - @return {Object} A reference to the last namespace object created. - **/ - namespace: function() { - _yuitest_coverfunc("build/yui-base/yui-base.js", "namespace", 1194); -_yuitest_coverline("build/yui-base/yui-base.js", 1195); -var a = arguments, o, i = 0, j, d, arg; - - _yuitest_coverline("build/yui-base/yui-base.js", 1197); -for (; i < a.length; i++) { - _yuitest_coverline("build/yui-base/yui-base.js", 1198); -o = this; //Reset base object per argument or it will get reused from the last - _yuitest_coverline("build/yui-base/yui-base.js", 1199); -arg = a[i]; - _yuitest_coverline("build/yui-base/yui-base.js", 1200); -if (arg.indexOf(PERIOD) > -1) { //Skip this if no "." is present - _yuitest_coverline("build/yui-base/yui-base.js", 1201); -d = arg.split(PERIOD); - _yuitest_coverline("build/yui-base/yui-base.js", 1202); -for (j = (d[0] == 'YAHOO') ? 1 : 0; j < d.length; j++) { - _yuitest_coverline("build/yui-base/yui-base.js", 1203); -o[d[j]] = o[d[j]] || {}; - _yuitest_coverline("build/yui-base/yui-base.js", 1204); -o = o[d[j]]; - } - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 1207); -o[arg] = o[arg] || {}; - _yuitest_coverline("build/yui-base/yui-base.js", 1208); -o = o[arg]; //Reset base object to the new object so it's returned - } - } - _yuitest_coverline("build/yui-base/yui-base.js", 1211); -return o; - }, - - // this is replaced if the log module is included - log: NOOP, - message: NOOP, - // this is replaced if the dump module is included - dump: function (o) { _yuitest_coverfunc("build/yui-base/yui-base.js", "dump", 1218); -_yuitest_coverline("build/yui-base/yui-base.js", 1218); -return ''+o; }, - - /** - * Report an error. The reporting mechanism is controlled by - * the `throwFail` configuration attribute. If throwFail is - * not specified, the message is written to the Logger, otherwise - * a JS error is thrown. If an `errorFn` is specified in the config - * it must return `true` to keep the error from being thrown. - * @method error - * @param msg {String} the error message. - * @param e {Error|String} Optional JS error that was caught, or an error string. - * @param src Optional additional info (passed to `Y.config.errorFn` and `Y.message`) - * and `throwFail` is specified, this error will be re-thrown. - * @return {YUI} this YUI instance. - */ - error: function(msg, e, src) { - //TODO Add check for window.onerror here - - _yuitest_coverfunc("build/yui-base/yui-base.js", "error", 1233); -_yuitest_coverline("build/yui-base/yui-base.js", 1236); -var Y = this, ret; - - _yuitest_coverline("build/yui-base/yui-base.js", 1238); -if (Y.config.errorFn) { - _yuitest_coverline("build/yui-base/yui-base.js", 1239); -ret = Y.config.errorFn.apply(Y, arguments); - } - - _yuitest_coverline("build/yui-base/yui-base.js", 1242); -if (!ret) { - _yuitest_coverline("build/yui-base/yui-base.js", 1243); -throw (e || new Error(msg)); - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 1245); -Y.message(msg, 'error', ''+src); // don't scrub this one - } - - _yuitest_coverline("build/yui-base/yui-base.js", 1248); -return Y; - }, - - /** - * Generate an id that is unique among all YUI instances - * @method guid - * @param pre {String} optional guid prefix. - * @return {String} the guid. - */ - guid: function(pre) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "guid", 1257); -_yuitest_coverline("build/yui-base/yui-base.js", 1258); -var id = this.Env._guidp + '_' + (++this.Env._uidx); - _yuitest_coverline("build/yui-base/yui-base.js", 1259); -return (pre) ? (pre + id) : id; - }, - - /** - * Returns a `guid` associated with an object. If the object - * does not have one, a new one is created unless `readOnly` - * is specified. - * @method stamp - * @param o {Object} The object to stamp. - * @param readOnly {Boolean} if `true`, a valid guid will only - * be returned if the object has one assigned to it. - * @return {String} The object's guid or null. - */ - stamp: function(o, readOnly) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "stamp", 1272); -_yuitest_coverline("build/yui-base/yui-base.js", 1273); -var uid; - _yuitest_coverline("build/yui-base/yui-base.js", 1274); -if (!o) { - _yuitest_coverline("build/yui-base/yui-base.js", 1275); -return o; - } - - // IE generates its own unique ID for dom nodes - // The uniqueID property of a document node returns a new ID - _yuitest_coverline("build/yui-base/yui-base.js", 1280); -if (o.uniqueID && o.nodeType && o.nodeType !== 9) { - _yuitest_coverline("build/yui-base/yui-base.js", 1281); -uid = o.uniqueID; - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 1283); -uid = (typeof o === 'string') ? o : o._yuid; - } - - _yuitest_coverline("build/yui-base/yui-base.js", 1286); -if (!uid) { - _yuitest_coverline("build/yui-base/yui-base.js", 1287); -uid = this.guid(); - _yuitest_coverline("build/yui-base/yui-base.js", 1288); -if (!readOnly) { - _yuitest_coverline("build/yui-base/yui-base.js", 1289); -try { - _yuitest_coverline("build/yui-base/yui-base.js", 1290); -o._yuid = uid; - } catch (e) { - _yuitest_coverline("build/yui-base/yui-base.js", 1292); -uid = null; - } - } - } - _yuitest_coverline("build/yui-base/yui-base.js", 1296); -return uid; - }, - - /** - * Destroys the YUI instance - * @method destroy - * @since 3.3.0 - */ - destroy: function() { - _yuitest_coverfunc("build/yui-base/yui-base.js", "destroy", 1304); -_yuitest_coverline("build/yui-base/yui-base.js", 1305); -var Y = this; - _yuitest_coverline("build/yui-base/yui-base.js", 1306); -if (Y.Event) { - _yuitest_coverline("build/yui-base/yui-base.js", 1307); -Y.Event._unload(); - } - _yuitest_coverline("build/yui-base/yui-base.js", 1309); -delete instances[Y.id]; - _yuitest_coverline("build/yui-base/yui-base.js", 1310); -delete Y.Env; - _yuitest_coverline("build/yui-base/yui-base.js", 1311); -delete Y.config; - } - - /** - * instanceof check for objects that works around - * memory leak in IE when the item tested is - * window/document - * @method instanceOf - * @param o {Object} The object to check. - * @param type {Object} The class to check against. - * @since 3.3.0 - */ -}; - - _yuitest_coverline("build/yui-base/yui-base.js", 1325); -YUI.prototype = proto; - - // inheritance utilities are not available yet - _yuitest_coverline("build/yui-base/yui-base.js", 1328); -for (prop in proto) { - _yuitest_coverline("build/yui-base/yui-base.js", 1329); -if (proto.hasOwnProperty(prop)) { - _yuitest_coverline("build/yui-base/yui-base.js", 1330); -YUI[prop] = proto[prop]; - } - } - - /** -Static method on the Global YUI object to apply a config to all YUI instances. -It's main use case is "mashups" where several third party scripts are trying to write to -a global YUI config at the same time. This way they can all call `YUI.applyConfig({})` instead of -overwriting other scripts configs. -@static -@since 3.5.0 -@method applyConfig -@param {Object} o the configuration object. -@example - - YUI.applyConfig({ - modules: { - davglass: { - fullpath: './davglass.js' - } - } - }); - - YUI.applyConfig({ - modules: { - foo: { - fullpath: './foo.js' - } - } - }); - - YUI().use('davglass', function(Y) { - //Module davglass will be available here.. - }); - - */ - _yuitest_coverline("build/yui-base/yui-base.js", 1366); -YUI.applyConfig = function(o) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "applyConfig", 1366); -_yuitest_coverline("build/yui-base/yui-base.js", 1367); -if (!o) { - _yuitest_coverline("build/yui-base/yui-base.js", 1368); -return; - } - //If there is a GlobalConfig, apply it first to set the defaults - _yuitest_coverline("build/yui-base/yui-base.js", 1371); -if (YUI.GlobalConfig) { - _yuitest_coverline("build/yui-base/yui-base.js", 1372); -this.prototype.applyConfig.call(this, YUI.GlobalConfig); - } - //Apply this config to it - _yuitest_coverline("build/yui-base/yui-base.js", 1375); -this.prototype.applyConfig.call(this, o); - //Reset GlobalConfig to the combined config - _yuitest_coverline("build/yui-base/yui-base.js", 1377); -YUI.GlobalConfig = this.config; - }; - - // set up the environment - _yuitest_coverline("build/yui-base/yui-base.js", 1381); -YUI._init(); - - _yuitest_coverline("build/yui-base/yui-base.js", 1383); -if (hasWin) { - // add a window load event at load time so we can capture - // the case where it fires before dynamic loading is - // complete. - _yuitest_coverline("build/yui-base/yui-base.js", 1387); -add(window, 'load', handleLoad); - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 1389); -handleLoad(); - } - - _yuitest_coverline("build/yui-base/yui-base.js", 1392); -YUI.Env.add = add; - _yuitest_coverline("build/yui-base/yui-base.js", 1393); -YUI.Env.remove = remove; - - /*global exports*/ - // Support the CommonJS method for exporting our single global - _yuitest_coverline("build/yui-base/yui-base.js", 1397); -if (typeof exports == 'object') { - _yuitest_coverline("build/yui-base/yui-base.js", 1398); -exports.YUI = YUI; - } - -}()); - - -/** - * The config object contains all of the configuration options for - * the `YUI` instance. This object is supplied by the implementer - * when instantiating a `YUI` instance. Some properties have default - * values if they are not supplied by the implementer. This should - * not be updated directly because some values are cached. Use - * `applyConfig()` to update the config object on a YUI instance that - * has already been configured. - * - * @class config - * @static - */ - -/** - * Allows the YUI seed file to fetch the loader component and library - * metadata to dynamically load additional dependencies. - * - * @property bootstrap - * @type boolean - * @default true - */ - -/** - * Turns on writing Ylog messages to the browser console. - * - * @property debug - * @type boolean - * @default true - */ - -/** - * Log to the browser console if debug is on and the browser has a - * supported console. - * - * @property useBrowserConsole - * @type boolean - * @default true - */ - -/** - * A hash of log sources that should be logged. If specified, only - * log messages from these sources will be logged. - * - * @property logInclude - * @type object - */ - -/** - * A hash of log sources that should be not be logged. If specified, - * all sources are logged if not on this list. - * - * @property logExclude - * @type object - */ - -/** - * Set to true if the yui seed file was dynamically loaded in - * order to bootstrap components relying on the window load event - * and the `domready` custom event. - * - * @property injected - * @type boolean - * @default false - */ - -/** - * If `throwFail` is set, `Y.error` will generate or re-throw a JS Error. - * Otherwise the failure is logged. - * - * @property throwFail - * @type boolean - * @default true - */ - -/** - * The window/frame that this instance should operate in. - * - * @property win - * @type Window - * @default the window hosting YUI - */ - -/** - * The document associated with the 'win' configuration. - * - * @property doc - * @type Document - * @default the document hosting YUI - */ - -/** - * A list of modules that defines the YUI core (overrides the default list). - * - * @property core - * @type Array - * @default [ get,features,intl-base,yui-log,yui-later,loader-base, loader-rollup, loader-yui3 ] - */ - -/** - * A list of languages in order of preference. This list is matched against - * the list of available languages in modules that the YUI instance uses to - * determine the best possible localization of language sensitive modules. - * Languages are represented using BCP 47 language tags, such as "en-GB" for - * English as used in the United Kingdom, or "zh-Hans-CN" for simplified - * Chinese as used in China. The list can be provided as a comma-separated - * list or as an array. - * - * @property lang - * @type string|string[] - */ - -/** - * The default date format - * @property dateFormat - * @type string - * @deprecated use configuration in `DataType.Date.format()` instead. - */ - -/** - * The default locale - * @property locale - * @type string - * @deprecated use `config.lang` instead. - */ - -/** - * The default interval when polling in milliseconds. - * @property pollInterval - * @type int - * @default 20 - */ - -/** - * The number of dynamic nodes to insert by default before - * automatically removing them. This applies to script nodes - * because removing the node will not make the evaluated script - * unavailable. Dynamic CSS is not auto purged, because removing - * a linked style sheet will also remove the style definitions. - * @property purgethreshold - * @type int - * @default 20 - */ - -/** - * The default interval when polling in milliseconds. - * @property windowResizeDelay - * @type int - * @default 40 - */ - -/** - * Base directory for dynamic loading - * @property base - * @type string - */ - -/* - * The secure base dir (not implemented) - * For dynamic loading. - * @property secureBase - * @type string - */ - -/** - * The YUI combo service base dir. Ex: `http://yui.yahooapis.com/combo?` - * For dynamic loading. - * @property comboBase - * @type string - */ - -/** - * The root path to prepend to module path for the combo service. - * Ex: 3.0.0b1/build/ - * For dynamic loading. - * @property root - * @type string - */ - -/** - * A filter to apply to result urls. This filter will modify the default - * path for all modules. The default path for the YUI library is the - * minified version of the files (e.g., event-min.js). The filter property - * can be a predefined filter or a custom filter. The valid predefined - * filters are: - *
          - *
          DEBUG
          - *
          Selects the debug versions of the library (e.g., event-debug.js). - * This option will automatically include the Logger widget
          - *
          RAW
          - *
          Selects the non-minified version of the library (e.g., event.js).
          - *
          - * You can also define a custom filter, which must be an object literal - * containing a search expression and a replace string: - * - * myFilter: { - * 'searchExp': "-min\\.js", - * 'replaceStr': "-debug.js" - * } - * - * For dynamic loading. - * - * @property filter - * @type string|object - */ - -/** - * The `skin` config let's you configure application level skin - * customizations. It contains the following attributes which - * can be specified to override the defaults: - * - * // The default skin, which is automatically applied if not - * // overriden by a component-specific skin definition. - * // Change this in to apply a different skin globally - * defaultSkin: 'sam', - * - * // This is combined with the loader base property to get - * // the default root directory for a skin. - * base: 'assets/skins/', - * - * // Any component-specific overrides can be specified here, - * // making it possible to load different skins for different - * // components. It is possible to load more than one skin - * // for a given component as well. - * overrides: { - * slider: ['capsule', 'round'] - * } - * - * For dynamic loading. - * - * @property skin - */ - -/** - * Hash of per-component filter specification. If specified for a given - * component, this overrides the filter config. - * - * For dynamic loading. - * - * @property filters - */ - -/** - * Use the YUI combo service to reduce the number of http connections - * required to load your dependencies. Turning this off will - * disable combo handling for YUI and all module groups configured - * with a combo service. - * - * For dynamic loading. - * - * @property combine - * @type boolean - * @default true if 'base' is not supplied, false if it is. - */ - -/** - * A list of modules that should never be dynamically loaded - * - * @property ignore - * @type string[] - */ - -/** - * A list of modules that should always be loaded when required, even if already - * present on the page. - * - * @property force - * @type string[] - */ - -/** - * Node or id for a node that should be used as the insertion point for new - * nodes. For dynamic loading. - * - * @property insertBefore - * @type string - */ - -/** - * Object literal containing attributes to add to dynamically loaded script - * nodes. - * @property jsAttributes - * @type string - */ - -/** - * Object literal containing attributes to add to dynamically loaded link - * nodes. - * @property cssAttributes - * @type string - */ - -/** - * Number of milliseconds before a timeout occurs when dynamically - * loading nodes. If not set, there is no timeout. - * @property timeout - * @type int - */ - -/** - * Callback for the 'CSSComplete' event. When dynamically loading YUI - * components with CSS, this property fires when the CSS is finished - * loading but script loading is still ongoing. This provides an - * opportunity to enhance the presentation of a loading page a little - * bit before the entire loading process is done. - * - * @property onCSS - * @type function - */ - -/** - * A hash of module definitions to add to the list of YUI components. - * These components can then be dynamically loaded side by side with - * YUI via the `use()` method. This is a hash, the key is the module - * name, and the value is an object literal specifying the metdata - * for the module. See `Loader.addModule` for the supported module - * metadata fields. Also see groups, which provides a way to - * configure the base and combo spec for a set of modules. - * - * modules: { - * mymod1: { - * requires: ['node'], - * fullpath: '/mymod1/mymod1.js' - * }, - * mymod2: { - * requires: ['mymod1'], - * fullpath: '/mymod2/mymod2.js' - * }, - * mymod3: '/js/mymod3.js', - * mycssmod: '/css/mycssmod.css' - * } - * - * - * @property modules - * @type object - */ - -/** - * Aliases are dynamic groups of modules that can be used as - * shortcuts. - * - * YUI({ - * aliases: { - * davglass: [ 'node', 'yql', 'dd' ], - * mine: [ 'davglass', 'autocomplete'] - * } - * }).use('mine', function(Y) { - * //Node, YQL, DD & AutoComplete available here.. - * }); - * - * @property aliases - * @type object - */ - -/** - * A hash of module group definitions. It for each group you - * can specify a list of modules and the base path and - * combo spec to use when dynamically loading the modules. - * - * groups: { - * yui2: { - * // specify whether or not this group has a combo service - * combine: true, - * - * // The comboSeperator to use with this group's combo handler - * comboSep: ';', - * - * // The maxURLLength for this server - * maxURLLength: 500, - * - * // the base path for non-combo paths - * base: 'http://yui.yahooapis.com/2.8.0r4/build/', - * - * // the path to the combo service - * comboBase: 'http://yui.yahooapis.com/combo?', - * - * // a fragment to prepend to the path attribute when - * // when building combo urls - * root: '2.8.0r4/build/', - * - * // the module definitions - * modules: { - * yui2_yde: { - * path: "yahoo-dom-event/yahoo-dom-event.js" - * }, - * yui2_anim: { - * path: "animation/animation.js", - * requires: ['yui2_yde'] - * } - * } - * } - * } - * - * @property groups - * @type object - */ - -/** - * The loader 'path' attribute to the loader itself. This is combined - * with the 'base' attribute to dynamically load the loader component - * when boostrapping with the get utility alone. - * - * @property loaderPath - * @type string - * @default loader/loader-min.js - */ - -/** - * Specifies whether or not YUI().use(...) will attempt to load CSS - * resources at all. Any truthy value will cause CSS dependencies - * to load when fetching script. The special value 'force' will - * cause CSS dependencies to be loaded even if no script is needed. - * - * @property fetchCSS - * @type boolean|string - * @default true - */ - -/** - * The default gallery version to build gallery module urls - * @property gallery - * @type string - * @since 3.1.0 - */ - -/** - * The default YUI 2 version to build yui2 module urls. This is for - * intrinsic YUI 2 support via the 2in3 project. Also see the '2in3' - * config for pulling different revisions of the wrapped YUI 2 - * modules. - * @since 3.1.0 - * @property yui2 - * @type string - * @default 2.9.0 - */ - -/** - * The 2in3 project is a deployment of the various versions of YUI 2 - * deployed as first-class YUI 3 modules. Eventually, the wrapper - * for the modules will change (but the underlying YUI 2 code will - * be the same), and you can select a particular version of - * the wrapper modules via this config. - * @since 3.1.0 - * @property 2in3 - * @type string - * @default 4 - */ - -/** - * Alternative console log function for use in environments without - * a supported native console. The function is executed in the - * YUI instance context. - * @since 3.1.0 - * @property logFn - * @type Function - */ - -/** - * A callback to execute when Y.error is called. It receives the - * error message and an javascript error object if Y.error was - * executed because a javascript error was caught. The function - * is executed in the YUI instance context. Returning `true` from this - * function will stop the Error from being thrown. - * - * @since 3.2.0 - * @property errorFn - * @type Function - */ - -/** - * A callback to execute when the loader fails to load one or - * more resource. This could be because of a script load - * failure. It can also fail if a javascript module fails - * to register itself, but only when the 'requireRegistration' - * is true. If this function is defined, the use() callback will - * only be called when the loader succeeds, otherwise it always - * executes unless there was a javascript error when attaching - * a module. - * - * @since 3.3.0 - * @property loadErrorFn - * @type Function - */ - -/** - * When set to true, the YUI loader will expect that all modules - * it is responsible for loading will be first-class YUI modules - * that register themselves with the YUI global. If this is - * set to true, loader will fail if the module registration fails - * to happen after the script is loaded. - * - * @since 3.3.0 - * @property requireRegistration - * @type boolean - * @default false - */ - -/** - * Cache serviced use() requests. - * @since 3.3.0 - * @property cacheUse - * @type boolean - * @default true - * @deprecated no longer used - */ - -/** - * Whether or not YUI should use native ES5 functionality when available for - * features like `Y.Array.each()`, `Y.Object()`, etc. When `false`, YUI will - * always use its own fallback implementations instead of relying on ES5 - * functionality, even when it's available. - * - * @property useNativeES5 - * @type Boolean - * @default true - * @since 3.5.0 - */ - -/** -Delay the `use` callback until a specific event has passed (`load`, `domready`, `contentready` or `available`) -@property delayUntil -@type String|Object -@since 3.6.0 -@example - -You can use `load` or `domready` strings by default: - - YUI({ - delayUntil: 'domready' - }, function(Y) { - //This will not fire until 'domeready' - }); - -Or you can delay until a node is available (with `available` or `contentready`): - - YUI({ - delayUntil: { - event: 'available', - args: '#foo' - } - }, function(Y) { - //This will not fire until '#foo' is - // available in the DOM - }); - - -*/ -_yuitest_coverline("build/yui-base/yui-base.js", 1950); -YUI.add('yui-base', function (Y, NAME) { - -/* - * YUI stub - * @module yui - * @submodule yui-base - */ -/** - * The YUI module contains the components required for building the YUI - * seed file. This includes the script loading mechanism, a simple queue, - * and the core utilities for the library. - * @module yui - * @submodule yui-base - */ - -/** - * Provides core language utilites and extensions used throughout YUI. - * - * @class Lang - * @static - */ - -_yuitest_coverfunc("build/yui-base/yui-base.js", "(anonymous 8)", 1950); -_yuitest_coverline("build/yui-base/yui-base.js", 1972); -var L = Y.Lang || (Y.Lang = {}), - -STRING_PROTO = String.prototype, -TOSTRING = Object.prototype.toString, - -TYPES = { - 'undefined' : 'undefined', - 'number' : 'number', - 'boolean' : 'boolean', - 'string' : 'string', - '[object Function]': 'function', - '[object RegExp]' : 'regexp', - '[object Array]' : 'array', - '[object Date]' : 'date', - '[object Error]' : 'error' -}, - -SUBREGEX = /\{\s*([^|}]+?)\s*(?:\|([^}]*))?\s*\}/g, -TRIMREGEX = /^\s+|\s+$/g, -NATIVE_FN_REGEX = /\{\s*\[(?:native code|function)\]\s*\}/i; - -// -- Protected Methods -------------------------------------------------------- - -/** -Returns `true` if the given function appears to be implemented in native code, -`false` otherwise. Will always return `false` -- even in ES5-capable browsers -- -if the `useNativeES5` YUI config option is set to `false`. - -This isn't guaranteed to be 100% accurate and won't work for anything other than -functions, but it can be useful for determining whether a function like -`Array.prototype.forEach` is native or a JS shim provided by another library. - -There's a great article by @kangax discussing certain flaws with this technique: - - -While his points are valid, it's still possible to benefit from this function -as long as it's used carefully and sparingly, and in such a way that false -negatives have minimal consequences. It's used internally to avoid using -potentially broken non-native ES5 shims that have been added to the page by -other libraries. - -@method _isNative -@param {Function} fn Function to test. -@return {Boolean} `true` if _fn_ appears to be native, `false` otherwise. -@static -@protected -@since 3.5.0 -**/ -_yuitest_coverline("build/yui-base/yui-base.js", 2020); -L._isNative = function (fn) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "_isNative", 2020); -_yuitest_coverline("build/yui-base/yui-base.js", 2021); -return !!(Y.config.useNativeES5 && fn && NATIVE_FN_REGEX.test(fn)); -}; - -// -- Public Methods ----------------------------------------------------------- - -/** - * Determines whether or not the provided item is an array. - * - * Returns `false` for array-like collections such as the function `arguments` - * collection or `HTMLElement` collections. Use `Y.Array.test()` if you want to - * test for an array-like collection. - * - * @method isArray - * @param o The object to test. - * @return {boolean} true if o is an array. - * @static - */ -_yuitest_coverline("build/yui-base/yui-base.js", 2038); -L.isArray = L._isNative(Array.isArray) ? Array.isArray : function (o) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "isArray", 2038); -_yuitest_coverline("build/yui-base/yui-base.js", 2039); -return L.type(o) === 'array'; -}; - -/** - * Determines whether or not the provided item is a boolean. - * @method isBoolean - * @static - * @param o The object to test. - * @return {boolean} true if o is a boolean. - */ -_yuitest_coverline("build/yui-base/yui-base.js", 2049); -L.isBoolean = function(o) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "isBoolean", 2049); -_yuitest_coverline("build/yui-base/yui-base.js", 2050); -return typeof o === 'boolean'; -}; - -/** - * Determines whether or not the supplied item is a date instance. - * @method isDate - * @static - * @param o The object to test. - * @return {boolean} true if o is a date. - */ -_yuitest_coverline("build/yui-base/yui-base.js", 2060); -L.isDate = function(o) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "isDate", 2060); -_yuitest_coverline("build/yui-base/yui-base.js", 2061); -return L.type(o) === 'date' && o.toString() !== 'Invalid Date' && !isNaN(o); -}; - -/** - *

          - * Determines whether or not the provided item is a function. - * Note: Internet Explorer thinks certain functions are objects: - *

          - * - *
          - * var obj = document.createElement("object");
          - * Y.Lang.isFunction(obj.getAttribute) // reports false in IE
          - *  
          - * var input = document.createElement("input"); // append to body
          - * Y.Lang.isFunction(input.focus) // reports false in IE
          - * 
          - * - *

          - * You will have to implement additional tests if these functions - * matter to you. - *

          - * - * @method isFunction - * @static - * @param o The object to test. - * @return {boolean} true if o is a function. - */ -_yuitest_coverline("build/yui-base/yui-base.js", 2088); -L.isFunction = function(o) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "isFunction", 2088); -_yuitest_coverline("build/yui-base/yui-base.js", 2089); -return L.type(o) === 'function'; -}; - -/** - * Determines whether or not the provided item is null. - * @method isNull - * @static - * @param o The object to test. - * @return {boolean} true if o is null. - */ -_yuitest_coverline("build/yui-base/yui-base.js", 2099); -L.isNull = function(o) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "isNull", 2099); -_yuitest_coverline("build/yui-base/yui-base.js", 2100); -return o === null; -}; - -/** - * Determines whether or not the provided item is a legal number. - * @method isNumber - * @static - * @param o The object to test. - * @return {boolean} true if o is a number. - */ -_yuitest_coverline("build/yui-base/yui-base.js", 2110); -L.isNumber = function(o) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "isNumber", 2110); -_yuitest_coverline("build/yui-base/yui-base.js", 2111); -return typeof o === 'number' && isFinite(o); -}; - -/** - * Determines whether or not the provided item is of type object - * or function. Note that arrays are also objects, so - * Y.Lang.isObject([]) === true. - * @method isObject - * @static - * @param o The object to test. - * @param failfn {boolean} fail if the input is a function. - * @return {boolean} true if o is an object. - * @see isPlainObject - */ -_yuitest_coverline("build/yui-base/yui-base.js", 2125); -L.isObject = function(o, failfn) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "isObject", 2125); -_yuitest_coverline("build/yui-base/yui-base.js", 2126); -var t = typeof o; - _yuitest_coverline("build/yui-base/yui-base.js", 2127); -return (o && (t === 'object' || - (!failfn && (t === 'function' || L.isFunction(o))))) || false; -}; - -/** - * Determines whether or not the provided item is a string. - * @method isString - * @static - * @param o The object to test. - * @return {boolean} true if o is a string. - */ -_yuitest_coverline("build/yui-base/yui-base.js", 2138); -L.isString = function(o) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "isString", 2138); -_yuitest_coverline("build/yui-base/yui-base.js", 2139); -return typeof o === 'string'; -}; - -/** - * Determines whether or not the provided item is undefined. - * @method isUndefined - * @static - * @param o The object to test. - * @return {boolean} true if o is undefined. - */ -_yuitest_coverline("build/yui-base/yui-base.js", 2149); -L.isUndefined = function(o) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "isUndefined", 2149); -_yuitest_coverline("build/yui-base/yui-base.js", 2150); -return typeof o === 'undefined'; -}; - -/** - * A convenience method for detecting a legitimate non-null value. - * Returns false for null/undefined/NaN, true for other values, - * including 0/false/'' - * @method isValue - * @static - * @param o The item to test. - * @return {boolean} true if it is not null/undefined/NaN || false. - */ -_yuitest_coverline("build/yui-base/yui-base.js", 2162); -L.isValue = function(o) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "isValue", 2162); -_yuitest_coverline("build/yui-base/yui-base.js", 2163); -var t = L.type(o); - - _yuitest_coverline("build/yui-base/yui-base.js", 2165); -switch (t) { - case 'number': - _yuitest_coverline("build/yui-base/yui-base.js", 2167); -return isFinite(o); - - case 'null': // fallthru - case 'undefined': - _yuitest_coverline("build/yui-base/yui-base.js", 2171); -return false; - - default: - _yuitest_coverline("build/yui-base/yui-base.js", 2174); -return !!t; - } -}; - -/** - * Returns the current time in milliseconds. - * - * @method now - * @return {Number} Current time in milliseconds. - * @static - * @since 3.3.0 - */ -_yuitest_coverline("build/yui-base/yui-base.js", 2186); -L.now = Date.now || function () { - _yuitest_coverfunc("build/yui-base/yui-base.js", "(anonymous 9)", 2186); -_yuitest_coverline("build/yui-base/yui-base.js", 2187); -return new Date().getTime(); -}; - -/** - * Lightweight version of Y.substitute. Uses the same template - * structure as Y.substitute, but doesn't support recursion, - * auto-object coersion, or formats. - * @method sub - * @param {string} s String to be modified. - * @param {object} o Object containing replacement values. - * @return {string} the substitute result. - * @static - * @since 3.2.0 - */ -_yuitest_coverline("build/yui-base/yui-base.js", 2201); -L.sub = function(s, o) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "sub", 2201); -_yuitest_coverline("build/yui-base/yui-base.js", 2202); -return s.replace ? s.replace(SUBREGEX, function (match, key) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "(anonymous 10)", 2202); -_yuitest_coverline("build/yui-base/yui-base.js", 2203); -return L.isUndefined(o[key]) ? match : o[key]; - }) : s; -}; - -/** - * Returns a string without any leading or trailing whitespace. If - * the input is not a string, the input will be returned untouched. - * @method trim - * @static - * @param s {string} the string to trim. - * @return {string} the trimmed string. - */ -_yuitest_coverline("build/yui-base/yui-base.js", 2215); -L.trim = STRING_PROTO.trim ? function(s) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "(anonymous 11)", 2215); -_yuitest_coverline("build/yui-base/yui-base.js", 2216); -return s && s.trim ? s.trim() : s; -} : function (s) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "}", 2217); -_yuitest_coverline("build/yui-base/yui-base.js", 2218); -try { - _yuitest_coverline("build/yui-base/yui-base.js", 2219); -return s.replace(TRIMREGEX, ''); - } catch (e) { - _yuitest_coverline("build/yui-base/yui-base.js", 2221); -return s; - } -}; - -/** - * Returns a string without any leading whitespace. - * @method trimLeft - * @static - * @param s {string} the string to trim. - * @return {string} the trimmed string. - */ -_yuitest_coverline("build/yui-base/yui-base.js", 2232); -L.trimLeft = STRING_PROTO.trimLeft ? function (s) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "(anonymous 12)", 2232); -_yuitest_coverline("build/yui-base/yui-base.js", 2233); -return s.trimLeft(); -} : function (s) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "}", 2234); -_yuitest_coverline("build/yui-base/yui-base.js", 2235); -return s.replace(/^\s+/, ''); -}; - -/** - * Returns a string without any trailing whitespace. - * @method trimRight - * @static - * @param s {string} the string to trim. - * @return {string} the trimmed string. - */ -_yuitest_coverline("build/yui-base/yui-base.js", 2245); -L.trimRight = STRING_PROTO.trimRight ? function (s) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "(anonymous 13)", 2245); -_yuitest_coverline("build/yui-base/yui-base.js", 2246); -return s.trimRight(); -} : function (s) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "}", 2247); -_yuitest_coverline("build/yui-base/yui-base.js", 2248); -return s.replace(/\s+$/, ''); -}; - -/** -Returns one of the following strings, representing the type of the item passed -in: - - * "array" - * "boolean" - * "date" - * "error" - * "function" - * "null" - * "number" - * "object" - * "regexp" - * "string" - * "undefined" - -Known issues: - - * `typeof HTMLElementCollection` returns function in Safari, but - `Y.Lang.type()` reports "object", which could be a good thing -- - but it actually caused the logic in Y.Lang.isObject to fail. - -@method type -@param o the item to test. -@return {string} the detected type. -@static -**/ -_yuitest_coverline("build/yui-base/yui-base.js", 2278); -L.type = function(o) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "type", 2278); -_yuitest_coverline("build/yui-base/yui-base.js", 2279); -return TYPES[typeof o] || TYPES[TOSTRING.call(o)] || (o ? 'object' : 'null'); -}; -/** -@module yui -@submodule yui-base -*/ - -_yuitest_coverline("build/yui-base/yui-base.js", 2286); -var Lang = Y.Lang, - Native = Array.prototype, - - hasOwn = Object.prototype.hasOwnProperty; - -/** -Provides utility methods for working with arrays. Additional array helpers can -be found in the `collection` and `array-extras` modules. - -`Y.Array(thing)` returns a native array created from _thing_. Depending on -_thing_'s type, one of the following will happen: - - * Arrays are returned unmodified unless a non-zero _startIndex_ is - specified. - * Array-like collections (see `Array.test()`) are converted to arrays. - * For everything else, a new array is created with _thing_ as the sole - item. - -Note: elements that are also collections, such as `` and ``, to be array-like. - -@method test -@param {Object} obj Object to test. -@return {Number} A number indicating the results of the test: - - * 0: Neither an array nor an array-like collection. - * 1: Real array. - * 2: Array-like collection. - -@static -**/ -_yuitest_coverline("build/yui-base/yui-base.js", 2550); -YArray.test = function (obj) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "test", 2550); -_yuitest_coverline("build/yui-base/yui-base.js", 2551); -var result = 0; - - _yuitest_coverline("build/yui-base/yui-base.js", 2553); -if (Lang.isArray(obj)) { - _yuitest_coverline("build/yui-base/yui-base.js", 2554); -result = 1; - } else {_yuitest_coverline("build/yui-base/yui-base.js", 2555); -if (Lang.isObject(obj)) { - _yuitest_coverline("build/yui-base/yui-base.js", 2556); -try { - // indexed, but no tagName (element) or scrollTo/document (window. From DOM.isWindow test which we can't use here), - // or functions without apply/call (Safari - // HTMLElementCollection bug). - _yuitest_coverline("build/yui-base/yui-base.js", 2560); -if ('length' in obj && !obj.tagName && !(obj.scrollTo && obj.document) && !obj.apply) { - _yuitest_coverline("build/yui-base/yui-base.js", 2561); -result = 2; - } - } catch (ex) {} - }} - - _yuitest_coverline("build/yui-base/yui-base.js", 2566); -return result; -}; -/** - * The YUI module contains the components required for building the YUI - * seed file. This includes the script loading mechanism, a simple queue, - * and the core utilities for the library. - * @module yui - * @submodule yui-base - */ - -/** - * A simple FIFO queue. Items are added to the Queue with add(1..n items) and - * removed using next(). - * - * @class Queue - * @constructor - * @param {MIXED} item* 0..n items to seed the queue. - */ -_yuitest_coverline("build/yui-base/yui-base.js", 2584); -function Queue() { - _yuitest_coverfunc("build/yui-base/yui-base.js", "Queue", 2584); -_yuitest_coverline("build/yui-base/yui-base.js", 2585); -this._init(); - _yuitest_coverline("build/yui-base/yui-base.js", 2586); -this.add.apply(this, arguments); -} - -_yuitest_coverline("build/yui-base/yui-base.js", 2589); -Queue.prototype = { - /** - * Initialize the queue - * - * @method _init - * @protected - */ - _init: function() { - /** - * The collection of enqueued items - * - * @property _q - * @type Array - * @protected - */ - _yuitest_coverfunc("build/yui-base/yui-base.js", "_init", 2596); -_yuitest_coverline("build/yui-base/yui-base.js", 2604); -this._q = []; - }, - - /** - * Get the next item in the queue. FIFO support - * - * @method next - * @return {MIXED} the next item in the queue. - */ - next: function() { - _yuitest_coverfunc("build/yui-base/yui-base.js", "next", 2613); -_yuitest_coverline("build/yui-base/yui-base.js", 2614); -return this._q.shift(); - }, - - /** - * Get the last in the queue. LIFO support. - * - * @method last - * @return {MIXED} the last item in the queue. - */ - last: function() { - _yuitest_coverfunc("build/yui-base/yui-base.js", "last", 2623); -_yuitest_coverline("build/yui-base/yui-base.js", 2624); -return this._q.pop(); - }, - - /** - * Add 0..n items to the end of the queue. - * - * @method add - * @param {MIXED} item* 0..n items. - * @return {object} this queue. - */ - add: function() { - _yuitest_coverfunc("build/yui-base/yui-base.js", "add", 2634); -_yuitest_coverline("build/yui-base/yui-base.js", 2635); -this._q.push.apply(this._q, arguments); - - _yuitest_coverline("build/yui-base/yui-base.js", 2637); -return this; - }, - - /** - * Returns the current number of queued items. - * - * @method size - * @return {Number} The size. - */ - size: function() { - _yuitest_coverfunc("build/yui-base/yui-base.js", "size", 2646); -_yuitest_coverline("build/yui-base/yui-base.js", 2647); -return this._q.length; - } -}; - -_yuitest_coverline("build/yui-base/yui-base.js", 2651); -Y.Queue = Queue; - -_yuitest_coverline("build/yui-base/yui-base.js", 2653); -YUI.Env._loaderQueue = YUI.Env._loaderQueue || new Queue(); - -/** -The YUI module contains the components required for building the YUI seed file. -This includes the script loading mechanism, a simple queue, and the core -utilities for the library. - -@module yui -@submodule yui-base -**/ - -_yuitest_coverline("build/yui-base/yui-base.js", 2664); -var CACHED_DELIMITER = '__', - - hasOwn = Object.prototype.hasOwnProperty, - isObject = Y.Lang.isObject; - -/** -Returns a wrapper for a function which caches the return value of that function, -keyed off of the combined string representation of the argument values provided -when the wrapper is called. - -Calling this function again with the same arguments will return the cached value -rather than executing the wrapped function. - -Note that since the cache is keyed off of the string representation of arguments -passed to the wrapper function, arguments that aren't strings and don't provide -a meaningful `toString()` method may result in unexpected caching behavior. For -example, the objects `{}` and `{foo: 'bar'}` would both be converted to the -string `[object Object]` when used as a cache key. - -@method cached -@param {Function} source The function to memoize. -@param {Object} [cache={}] Object in which to store cached values. You may seed - this object with pre-existing cached values if desired. -@param {any} [refetch] If supplied, this value is compared with the cached value - using a `==` comparison. If the values are equal, the wrapped function is - executed again even though a cached value exists. -@return {Function} Wrapped function. -@for YUI -**/ -_yuitest_coverline("build/yui-base/yui-base.js", 2693); -Y.cached = function (source, cache, refetch) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "cached", 2693); -_yuitest_coverline("build/yui-base/yui-base.js", 2694); -cache || (cache = {}); - - _yuitest_coverline("build/yui-base/yui-base.js", 2696); -return function (arg) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "(anonymous 17)", 2696); -_yuitest_coverline("build/yui-base/yui-base.js", 2697); -var key = arguments.length > 1 ? - Array.prototype.join.call(arguments, CACHED_DELIMITER) : - String(arg); - - _yuitest_coverline("build/yui-base/yui-base.js", 2701); -if (!(key in cache) || (refetch && cache[key] == refetch)) { - _yuitest_coverline("build/yui-base/yui-base.js", 2702); -cache[key] = source.apply(source, arguments); - } - - _yuitest_coverline("build/yui-base/yui-base.js", 2705); -return cache[key]; - }; -}; - -/** -Returns the `location` object from the window/frame in which this YUI instance -operates, or `undefined` when executing in a non-browser environment -(e.g. Node.js). - -It is _not_ recommended to hold references to the `window.location` object -outside of the scope of a function in which its properties are being accessed or -its methods are being called. This is because of a nasty bug/issue that exists -in both Safari and MobileSafari browsers: -[WebKit Bug 34679](https://bugs.webkit.org/show_bug.cgi?id=34679). - -@method getLocation -@return {location} The `location` object from the window/frame in which this YUI - instance operates. -@since 3.5.0 -**/ -_yuitest_coverline("build/yui-base/yui-base.js", 2725); -Y.getLocation = function () { - // It is safer to look this up every time because yui-base is attached to a - // YUI instance before a user's config is applied; i.e. `Y.config.win` does - // not point the correct window object when this file is loaded. - _yuitest_coverfunc("build/yui-base/yui-base.js", "getLocation", 2725); -_yuitest_coverline("build/yui-base/yui-base.js", 2729); -var win = Y.config.win; - - // It is not safe to hold a reference to the `location` object outside the - // scope in which it is being used. The WebKit engine used in Safari and - // MobileSafari will "disconnect" the `location` object from the `window` - // when a page is restored from back/forward history cache. - _yuitest_coverline("build/yui-base/yui-base.js", 2735); -return win && win.location; -}; - -/** -Returns a new object containing all of the properties of all the supplied -objects. The properties from later objects will overwrite those in earlier -objects. - -Passing in a single object will create a shallow copy of it. For a deep copy, -use `clone()`. - -@method merge -@param {Object} objects* One or more objects to merge. -@return {Object} A new merged object. -**/ -_yuitest_coverline("build/yui-base/yui-base.js", 2750); -Y.merge = function () { - _yuitest_coverfunc("build/yui-base/yui-base.js", "merge", 2750); -_yuitest_coverline("build/yui-base/yui-base.js", 2751); -var i = 0, - len = arguments.length, - result = {}, - key, - obj; - - _yuitest_coverline("build/yui-base/yui-base.js", 2757); -for (; i < len; ++i) { - _yuitest_coverline("build/yui-base/yui-base.js", 2758); -obj = arguments[i]; - - _yuitest_coverline("build/yui-base/yui-base.js", 2760); -for (key in obj) { - _yuitest_coverline("build/yui-base/yui-base.js", 2761); -if (hasOwn.call(obj, key)) { - _yuitest_coverline("build/yui-base/yui-base.js", 2762); -result[key] = obj[key]; - } - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 2767); -return result; -}; - -/** -Mixes _supplier_'s properties into _receiver_. - -Properties on _receiver_ or _receiver_'s prototype will not be overwritten or -shadowed unless the _overwrite_ parameter is `true`, and will not be merged -unless the _merge_ parameter is `true`. - -In the default mode (0), only properties the supplier owns are copied (prototype -properties are not copied). The following copying modes are available: - - * `0`: _Default_. Object to object. - * `1`: Prototype to prototype. - * `2`: Prototype to prototype and object to object. - * `3`: Prototype to object. - * `4`: Object to prototype. - -@method mix -@param {Function|Object} receiver The object or function to receive the mixed - properties. -@param {Function|Object} supplier The object or function supplying the - properties to be mixed. -@param {Boolean} [overwrite=false] If `true`, properties that already exist - on the receiver will be overwritten with properties from the supplier. -@param {String[]} [whitelist] An array of property names to copy. If - specified, only the whitelisted properties will be copied, and all others - will be ignored. -@param {Number} [mode=0] Mix mode to use. See above for available modes. -@param {Boolean} [merge=false] If `true`, objects and arrays that already - exist on the receiver will have the corresponding object/array from the - supplier merged into them, rather than being skipped or overwritten. When - both _overwrite_ and _merge_ are `true`, _merge_ takes precedence. -@return {Function|Object|YUI} The receiver, or the YUI instance if the - specified receiver is falsy. -**/ -_yuitest_coverline("build/yui-base/yui-base.js", 2804); -Y.mix = function(receiver, supplier, overwrite, whitelist, mode, merge) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "mix", 2804); -_yuitest_coverline("build/yui-base/yui-base.js", 2805); -var alwaysOverwrite, exists, from, i, key, len, to; - - // If no supplier is given, we return the receiver. If no receiver is given, - // we return Y. Returning Y doesn't make much sense to me, but it's - // grandfathered in for backcompat reasons. - _yuitest_coverline("build/yui-base/yui-base.js", 2810); -if (!receiver || !supplier) { - _yuitest_coverline("build/yui-base/yui-base.js", 2811); -return receiver || Y; - } - - _yuitest_coverline("build/yui-base/yui-base.js", 2814); -if (mode) { - // In mode 2 (prototype to prototype and object to object), we recurse - // once to do the proto to proto mix. The object to object mix will be - // handled later on. - _yuitest_coverline("build/yui-base/yui-base.js", 2818); -if (mode === 2) { - _yuitest_coverline("build/yui-base/yui-base.js", 2819); -Y.mix(receiver.prototype, supplier.prototype, overwrite, - whitelist, 0, merge); - } - - // Depending on which mode is specified, we may be copying from or to - // the prototypes of the supplier and receiver. - _yuitest_coverline("build/yui-base/yui-base.js", 2825); -from = mode === 1 || mode === 3 ? supplier.prototype : supplier; - _yuitest_coverline("build/yui-base/yui-base.js", 2826); -to = mode === 1 || mode === 4 ? receiver.prototype : receiver; - - // If either the supplier or receiver doesn't actually have a - // prototype property, then we could end up with an undefined `from` - // or `to`. If that happens, we abort and return the receiver. - _yuitest_coverline("build/yui-base/yui-base.js", 2831); -if (!from || !to) { - _yuitest_coverline("build/yui-base/yui-base.js", 2832); -return receiver; - } - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 2835); -from = supplier; - _yuitest_coverline("build/yui-base/yui-base.js", 2836); -to = receiver; - } - - // If `overwrite` is truthy and `merge` is falsy, then we can skip a - // property existence check on each iteration and save some time. - _yuitest_coverline("build/yui-base/yui-base.js", 2841); -alwaysOverwrite = overwrite && !merge; - - _yuitest_coverline("build/yui-base/yui-base.js", 2843); -if (whitelist) { - _yuitest_coverline("build/yui-base/yui-base.js", 2844); -for (i = 0, len = whitelist.length; i < len; ++i) { - _yuitest_coverline("build/yui-base/yui-base.js", 2845); -key = whitelist[i]; - - // We call `Object.prototype.hasOwnProperty` instead of calling - // `hasOwnProperty` on the object itself, since the object's - // `hasOwnProperty` method may have been overridden or removed. - // Also, some native objects don't implement a `hasOwnProperty` - // method. - _yuitest_coverline("build/yui-base/yui-base.js", 2852); -if (!hasOwn.call(from, key)) { - _yuitest_coverline("build/yui-base/yui-base.js", 2853); -continue; - } - - // The `key in to` check here is (sadly) intentional for backwards - // compatibility reasons. It prevents undesired shadowing of - // prototype members on `to`. - _yuitest_coverline("build/yui-base/yui-base.js", 2859); -exists = alwaysOverwrite ? false : key in to; - - _yuitest_coverline("build/yui-base/yui-base.js", 2861); -if (merge && exists && isObject(to[key], true) - && isObject(from[key], true)) { - // If we're in merge mode, and the key is present on both - // objects, and the value on both objects is either an object or - // an array (but not a function), then we recurse to merge the - // `from` value into the `to` value instead of overwriting it. - // - // Note: It's intentional that the whitelist isn't passed to the - // recursive call here. This is legacy behavior that lots of - // code still depends on. - _yuitest_coverline("build/yui-base/yui-base.js", 2871); -Y.mix(to[key], from[key], overwrite, null, 0, merge); - } else {_yuitest_coverline("build/yui-base/yui-base.js", 2872); -if (overwrite || !exists) { - // We're not in merge mode, so we'll only copy the `from` value - // to the `to` value if we're in overwrite mode or if the - // current key doesn't exist on the `to` object. - _yuitest_coverline("build/yui-base/yui-base.js", 2876); -to[key] = from[key]; - }} - } - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 2880); -for (key in from) { - // The code duplication here is for runtime performance reasons. - // Combining whitelist and non-whitelist operations into a single - // loop or breaking the shared logic out into a function both result - // in worse performance, and Y.mix is critical enough that the byte - // tradeoff is worth it. - _yuitest_coverline("build/yui-base/yui-base.js", 2886); -if (!hasOwn.call(from, key)) { - _yuitest_coverline("build/yui-base/yui-base.js", 2887); -continue; - } - - // The `key in to` check here is (sadly) intentional for backwards - // compatibility reasons. It prevents undesired shadowing of - // prototype members on `to`. - _yuitest_coverline("build/yui-base/yui-base.js", 2893); -exists = alwaysOverwrite ? false : key in to; - - _yuitest_coverline("build/yui-base/yui-base.js", 2895); -if (merge && exists && isObject(to[key], true) - && isObject(from[key], true)) { - _yuitest_coverline("build/yui-base/yui-base.js", 2897); -Y.mix(to[key], from[key], overwrite, null, 0, merge); - } else {_yuitest_coverline("build/yui-base/yui-base.js", 2898); -if (overwrite || !exists) { - _yuitest_coverline("build/yui-base/yui-base.js", 2899); -to[key] = from[key]; - }} - } - - // If this is an IE browser with the JScript enumeration bug, force - // enumeration of the buggy properties by making a recursive call with - // the buggy properties as the whitelist. - _yuitest_coverline("build/yui-base/yui-base.js", 2906); -if (Y.Object._hasEnumBug) { - _yuitest_coverline("build/yui-base/yui-base.js", 2907); -Y.mix(to, from, overwrite, Y.Object._forceEnum, mode, merge); - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 2911); -return receiver; -}; -/** - * The YUI module contains the components required for building the YUI - * seed file. This includes the script loading mechanism, a simple queue, - * and the core utilities for the library. - * @module yui - * @submodule yui-base - */ - -/** - * Adds utilities to the YUI instance for working with objects. - * - * @class Object - */ - -_yuitest_coverline("build/yui-base/yui-base.js", 2927); -var Lang = Y.Lang, - hasOwn = Object.prototype.hasOwnProperty, - - UNDEFINED, // <-- Note the comma. We're still declaring vars. - -/** - * Returns a new object that uses _obj_ as its prototype. This method wraps the - * native ES5 `Object.create()` method if available, but doesn't currently - * pass through `Object.create()`'s second argument (properties) in order to - * ensure compatibility with older browsers. - * - * @method () - * @param {Object} obj Prototype object. - * @return {Object} New object using _obj_ as its prototype. - * @static - */ -O = Y.Object = Lang._isNative(Object.create) ? function (obj) { - // We currently wrap the native Object.create instead of simply aliasing it - // to ensure consistency with our fallback shim, which currently doesn't - // support Object.create()'s second argument (properties). Once we have a - // safe fallback for the properties arg, we can stop wrapping - // Object.create(). - _yuitest_coverfunc("build/yui-base/yui-base.js", "(anonymous 18)", 2943); -_yuitest_coverline("build/yui-base/yui-base.js", 2949); -return Object.create(obj); -} : (function () { - // Reusable constructor function for the Object.create() shim. - _yuitest_coverfunc("build/yui-base/yui-base.js", "(anonymous 19)", 2950); -_yuitest_coverline("build/yui-base/yui-base.js", 2952); -function F() {} - - // The actual shim. - _yuitest_coverline("build/yui-base/yui-base.js", 2955); -return function (obj) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "(anonymous 20)", 2955); -_yuitest_coverline("build/yui-base/yui-base.js", 2956); -F.prototype = obj; - _yuitest_coverline("build/yui-base/yui-base.js", 2957); -return new F(); - }; -}()), - -/** - * Property names that IE doesn't enumerate in for..in loops, even when they - * should be enumerable. When `_hasEnumBug` is `true`, it's necessary to - * manually enumerate these properties. - * - * @property _forceEnum - * @type String[] - * @protected - * @static - */ -forceEnum = O._forceEnum = [ - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toString', - 'toLocaleString', - 'valueOf' -], - -/** - * `true` if this browser has the JScript enumeration bug that prevents - * enumeration of the properties named in the `_forceEnum` array, `false` - * otherwise. - * - * See: - * - - * - - * - * @property _hasEnumBug - * @type Boolean - * @protected - * @static - */ -hasEnumBug = O._hasEnumBug = !{valueOf: 0}.propertyIsEnumerable('valueOf'), - -/** - * `true` if this browser incorrectly considers the `prototype` property of - * functions to be enumerable. Currently known to affect Opera 11.50. - * - * @property _hasProtoEnumBug - * @type Boolean - * @protected - * @static - */ -hasProtoEnumBug = O._hasProtoEnumBug = (function () {}).propertyIsEnumerable('prototype'), - -/** - * Returns `true` if _key_ exists on _obj_, `false` if _key_ doesn't exist or - * exists only on _obj_'s prototype. This is essentially a safer version of - * `obj.hasOwnProperty()`. - * - * @method owns - * @param {Object} obj Object to test. - * @param {String} key Property name to look for. - * @return {Boolean} `true` if _key_ exists on _obj_, `false` otherwise. - * @static - */ -owns = O.owns = function (obj, key) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "owns", 3018); -_yuitest_coverline("build/yui-base/yui-base.js", 3019); -return !!obj && hasOwn.call(obj, key); -}; // <-- End of var declarations. - -/** - * Alias for `owns()`. - * - * @method hasKey - * @param {Object} obj Object to test. - * @param {String} key Property name to look for. - * @return {Boolean} `true` if _key_ exists on _obj_, `false` otherwise. - * @static - */ -_yuitest_coverline("build/yui-base/yui-base.js", 3031); -O.hasKey = owns; - -/** - * Returns an array containing the object's enumerable keys. Does not include - * prototype keys or non-enumerable keys. - * - * Note that keys are returned in enumeration order (that is, in the same order - * that they would be enumerated by a `for-in` loop), which may not be the same - * as the order in which they were defined. - * - * This method is an alias for the native ES5 `Object.keys()` method if - * available. - * - * @example - * - * Y.Object.keys({a: 'foo', b: 'bar', c: 'baz'}); - * // => ['a', 'b', 'c'] - * - * @method keys - * @param {Object} obj An object. - * @return {String[]} Array of keys. - * @static - */ -_yuitest_coverline("build/yui-base/yui-base.js", 3054); -O.keys = Lang._isNative(Object.keys) ? Object.keys : function (obj) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "keys", 3054); -_yuitest_coverline("build/yui-base/yui-base.js", 3055); -if (!Lang.isObject(obj)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3056); -throw new TypeError('Object.keys called on a non-object'); - } - - _yuitest_coverline("build/yui-base/yui-base.js", 3059); -var keys = [], - i, key, len; - - _yuitest_coverline("build/yui-base/yui-base.js", 3062); -if (hasProtoEnumBug && typeof obj === 'function') { - _yuitest_coverline("build/yui-base/yui-base.js", 3063); -for (key in obj) { - _yuitest_coverline("build/yui-base/yui-base.js", 3064); -if (owns(obj, key) && key !== 'prototype') { - _yuitest_coverline("build/yui-base/yui-base.js", 3065); -keys.push(key); - } - } - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 3069); -for (key in obj) { - _yuitest_coverline("build/yui-base/yui-base.js", 3070); -if (owns(obj, key)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3071); -keys.push(key); - } - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 3076); -if (hasEnumBug) { - _yuitest_coverline("build/yui-base/yui-base.js", 3077); -for (i = 0, len = forceEnum.length; i < len; ++i) { - _yuitest_coverline("build/yui-base/yui-base.js", 3078); -key = forceEnum[i]; - - _yuitest_coverline("build/yui-base/yui-base.js", 3080); -if (owns(obj, key)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3081); -keys.push(key); - } - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 3086); -return keys; -}; - -/** - * Returns an array containing the values of the object's enumerable keys. - * - * Note that values are returned in enumeration order (that is, in the same - * order that they would be enumerated by a `for-in` loop), which may not be the - * same as the order in which they were defined. - * - * @example - * - * Y.Object.values({a: 'foo', b: 'bar', c: 'baz'}); - * // => ['foo', 'bar', 'baz'] - * - * @method values - * @param {Object} obj An object. - * @return {Array} Array of values. - * @static - */ -_yuitest_coverline("build/yui-base/yui-base.js", 3106); -O.values = function (obj) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "values", 3106); -_yuitest_coverline("build/yui-base/yui-base.js", 3107); -var keys = O.keys(obj), - i = 0, - len = keys.length, - values = []; - - _yuitest_coverline("build/yui-base/yui-base.js", 3112); -for (; i < len; ++i) { - _yuitest_coverline("build/yui-base/yui-base.js", 3113); -values.push(obj[keys[i]]); - } - - _yuitest_coverline("build/yui-base/yui-base.js", 3116); -return values; -}; - -/** - * Returns the number of enumerable keys owned by an object. - * - * @method size - * @param {Object} obj An object. - * @return {Number} The object's size. - * @static - */ -_yuitest_coverline("build/yui-base/yui-base.js", 3127); -O.size = function (obj) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "size", 3127); -_yuitest_coverline("build/yui-base/yui-base.js", 3128); -try { - _yuitest_coverline("build/yui-base/yui-base.js", 3129); -return O.keys(obj).length; - } catch (ex) { - _yuitest_coverline("build/yui-base/yui-base.js", 3131); -return 0; // Legacy behavior for non-objects. - } -}; - -/** - * Returns `true` if the object owns an enumerable property with the specified - * value. - * - * @method hasValue - * @param {Object} obj An object. - * @param {any} value The value to search for. - * @return {Boolean} `true` if _obj_ contains _value_, `false` otherwise. - * @static - */ -_yuitest_coverline("build/yui-base/yui-base.js", 3145); -O.hasValue = function (obj, value) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "hasValue", 3145); -_yuitest_coverline("build/yui-base/yui-base.js", 3146); -return Y.Array.indexOf(O.values(obj), value) > -1; -}; - -/** - * Executes a function on each enumerable property in _obj_. The function - * receives the value, the key, and the object itself as parameters (in that - * order). - * - * By default, only properties owned by _obj_ are enumerated. To include - * prototype properties, set the _proto_ parameter to `true`. - * - * @method each - * @param {Object} obj Object to enumerate. - * @param {Function} fn Function to execute on each enumerable property. - * @param {mixed} fn.value Value of the current property. - * @param {String} fn.key Key of the current property. - * @param {Object} fn.obj Object being enumerated. - * @param {Object} [thisObj] `this` object to use when calling _fn_. - * @param {Boolean} [proto=false] Include prototype properties. - * @return {YUI} the YUI instance. - * @chainable - * @static - */ -_yuitest_coverline("build/yui-base/yui-base.js", 3169); -O.each = function (obj, fn, thisObj, proto) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "each", 3169); -_yuitest_coverline("build/yui-base/yui-base.js", 3170); -var key; - - _yuitest_coverline("build/yui-base/yui-base.js", 3172); -for (key in obj) { - _yuitest_coverline("build/yui-base/yui-base.js", 3173); -if (proto || owns(obj, key)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3174); -fn.call(thisObj || Y, obj[key], key, obj); - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 3178); -return Y; -}; - -/** - * Executes a function on each enumerable property in _obj_, but halts if the - * function returns a truthy value. The function receives the value, the key, - * and the object itself as paramters (in that order). - * - * By default, only properties owned by _obj_ are enumerated. To include - * prototype properties, set the _proto_ parameter to `true`. - * - * @method some - * @param {Object} obj Object to enumerate. - * @param {Function} fn Function to execute on each enumerable property. - * @param {mixed} fn.value Value of the current property. - * @param {String} fn.key Key of the current property. - * @param {Object} fn.obj Object being enumerated. - * @param {Object} [thisObj] `this` object to use when calling _fn_. - * @param {Boolean} [proto=false] Include prototype properties. - * @return {Boolean} `true` if any execution of _fn_ returns a truthy value, - * `false` otherwise. - * @static - */ -_yuitest_coverline("build/yui-base/yui-base.js", 3201); -O.some = function (obj, fn, thisObj, proto) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "some", 3201); -_yuitest_coverline("build/yui-base/yui-base.js", 3202); -var key; - - _yuitest_coverline("build/yui-base/yui-base.js", 3204); -for (key in obj) { - _yuitest_coverline("build/yui-base/yui-base.js", 3205); -if (proto || owns(obj, key)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3206); -if (fn.call(thisObj || Y, obj[key], key, obj)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3207); -return true; - } - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 3212); -return false; -}; - -/** - * Retrieves the sub value at the provided path, - * from the value object provided. - * - * @method getValue - * @static - * @param o The object from which to extract the property value. - * @param path {Array} A path array, specifying the object traversal path - * from which to obtain the sub value. - * @return {Any} The value stored in the path, undefined if not found, - * undefined if the source is not an object. Returns the source object - * if an empty path is provided. - */ -_yuitest_coverline("build/yui-base/yui-base.js", 3228); -O.getValue = function(o, path) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "getValue", 3228); -_yuitest_coverline("build/yui-base/yui-base.js", 3229); -if (!Lang.isObject(o)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3230); -return UNDEFINED; - } - - _yuitest_coverline("build/yui-base/yui-base.js", 3233); -var i, - p = Y.Array(path), - l = p.length; - - _yuitest_coverline("build/yui-base/yui-base.js", 3237); -for (i = 0; o !== UNDEFINED && i < l; i++) { - _yuitest_coverline("build/yui-base/yui-base.js", 3238); -o = o[p[i]]; - } - - _yuitest_coverline("build/yui-base/yui-base.js", 3241); -return o; -}; - -/** - * Sets the sub-attribute value at the provided path on the - * value object. Returns the modified value object, or - * undefined if the path is invalid. - * - * @method setValue - * @static - * @param o The object on which to set the sub value. - * @param path {Array} A path array, specifying the object traversal path - * at which to set the sub value. - * @param val {Any} The new value for the sub-attribute. - * @return {Object} The modified object, with the new sub value set, or - * undefined, if the path was invalid. - */ -_yuitest_coverline("build/yui-base/yui-base.js", 3258); -O.setValue = function(o, path, val) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "setValue", 3258); -_yuitest_coverline("build/yui-base/yui-base.js", 3259); -var i, - p = Y.Array(path), - leafIdx = p.length - 1, - ref = o; - - _yuitest_coverline("build/yui-base/yui-base.js", 3264); -if (leafIdx >= 0) { - _yuitest_coverline("build/yui-base/yui-base.js", 3265); -for (i = 0; ref !== UNDEFINED && i < leafIdx; i++) { - _yuitest_coverline("build/yui-base/yui-base.js", 3266); -ref = ref[p[i]]; - } - - _yuitest_coverline("build/yui-base/yui-base.js", 3269); -if (ref !== UNDEFINED) { - _yuitest_coverline("build/yui-base/yui-base.js", 3270); -ref[p[i]] = val; - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 3272); -return UNDEFINED; - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 3276); -return o; -}; - -/** - * Returns `true` if the object has no enumerable properties of its own. - * - * @method isEmpty - * @param {Object} obj An object. - * @return {Boolean} `true` if the object is empty. - * @static - * @since 3.2.0 - */ -_yuitest_coverline("build/yui-base/yui-base.js", 3288); -O.isEmpty = function (obj) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "isEmpty", 3288); -_yuitest_coverline("build/yui-base/yui-base.js", 3289); -return !O.keys(Object(obj)).length; -}; -/** - * The YUI module contains the components required for building the YUI seed - * file. This includes the script loading mechanism, a simple queue, and the - * core utilities for the library. - * @module yui - * @submodule yui-base - */ - -/** - * YUI user agent detection. - * Do not fork for a browser if it can be avoided. Use feature detection when - * you can. Use the user agent as a last resort. For all fields listed - * as @type float, UA stores a version number for the browser engine, - * 0 otherwise. This value may or may not map to the version number of - * the browser using the engine. The value is presented as a float so - * that it can easily be used for boolean evaluation as well as for - * looking for a particular range of versions. Because of this, - * some of the granularity of the version info may be lost. The fields that - * are @type string default to null. The API docs list the values that - * these fields can have. - * @class UA - * @static - */ - -/** -* Static method on `YUI.Env` for parsing a UA string. Called at instantiation -* to populate `Y.UA`. -* -* @static -* @method parseUA -* @param {String} [subUA=navigator.userAgent] UA string to parse -* @return {Object} The Y.UA object -*/ -_yuitest_coverline("build/yui-base/yui-base.js", 3324); -YUI.Env.parseUA = function(subUA) { - - _yuitest_coverfunc("build/yui-base/yui-base.js", "parseUA", 3324); -_yuitest_coverline("build/yui-base/yui-base.js", 3326); -var numberify = function(s) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "numberify", 3326); -_yuitest_coverline("build/yui-base/yui-base.js", 3327); -var c = 0; - _yuitest_coverline("build/yui-base/yui-base.js", 3328); -return parseFloat(s.replace(/\./g, function() { - _yuitest_coverfunc("build/yui-base/yui-base.js", "(anonymous 22)", 3328); -_yuitest_coverline("build/yui-base/yui-base.js", 3329); -return (c++ === 1) ? '' : '.'; - })); - }, - - win = Y.config.win, - - nav = win && win.navigator, - - o = { - - /** - * Internet Explorer version number or 0. Example: 6 - * @property ie - * @type float - * @static - */ - ie: 0, - - /** - * Opera version number or 0. Example: 9.2 - * @property opera - * @type float - * @static - */ - opera: 0, - - /** - * Gecko engine revision number. Will evaluate to 1 if Gecko - * is detected but the revision could not be found. Other browsers - * will be 0. Example: 1.8 - *
          -         * Firefox 1.0.0.4: 1.7.8   <-- Reports 1.7
          -         * Firefox 1.5.0.9: 1.8.0.9 <-- 1.8
          -         * Firefox 2.0.0.3: 1.8.1.3 <-- 1.81
          -         * Firefox 3.0   <-- 1.9
          -         * Firefox 3.5   <-- 1.91
          -         * 
          - * @property gecko - * @type float - * @static - */ - gecko: 0, - - /** - * AppleWebKit version. KHTML browsers that are not WebKit browsers - * will evaluate to 1, other browsers 0. Example: 418.9 - *
          -         * Safari 1.3.2 (312.6): 312.8.1 <-- Reports 312.8 -- currently the
          -         *                                   latest available for Mac OSX 10.3.
          -         * Safari 2.0.2:         416     <-- hasOwnProperty introduced
          -         * Safari 2.0.4:         418     <-- preventDefault fixed
          -         * Safari 2.0.4 (419.3): 418.9.1 <-- One version of Safari may run
          -         *                                   different versions of webkit
          -         * Safari 2.0.4 (419.3): 419     <-- Tiger installations that have been
          -         *                                   updated, but not updated
          -         *                                   to the latest patch.
          -         * Webkit 212 nightly:   522+    <-- Safari 3.0 precursor (with native
          -         * SVG and many major issues fixed).
          -         * Safari 3.0.4 (523.12) 523.12  <-- First Tiger release - automatic
          -         * update from 2.x via the 10.4.11 OS patch.
          -         * Webkit nightly 1/2008:525+    <-- Supports DOMContentLoaded event.
          -         *                                   yahoo.com user agent hack removed.
          -         * 
          - * http://en.wikipedia.org/wiki/Safari_version_history - * @property webkit - * @type float - * @static - */ - webkit: 0, - - /** - * Safari will be detected as webkit, but this property will also - * be populated with the Safari version number - * @property safari - * @type float - * @static - */ - safari: 0, - - /** - * Chrome will be detected as webkit, but this property will also - * be populated with the Chrome version number - * @property chrome - * @type float - * @static - */ - chrome: 0, - - /** - * The mobile property will be set to a string containing any relevant - * user agent information when a modern mobile browser is detected. - * Currently limited to Safari on the iPhone/iPod Touch, Nokia N-series - * devices with the WebKit-based browser, and Opera Mini. - * @property mobile - * @type string - * @default null - * @static - */ - mobile: null, - - /** - * Adobe AIR version number or 0. Only populated if webkit is detected. - * Example: 1.0 - * @property air - * @type float - */ - air: 0, - /** - * PhantomJS version number or 0. Only populated if webkit is detected. - * Example: 1.0 - * @property phantomjs - * @type float - */ - phantomjs: 0, - /** - * Detects Apple iPad's OS version - * @property ipad - * @type float - * @static - */ - ipad: 0, - /** - * Detects Apple iPhone's OS version - * @property iphone - * @type float - * @static - */ - iphone: 0, - /** - * Detects Apples iPod's OS version - * @property ipod - * @type float - * @static - */ - ipod: 0, - /** - * General truthy check for iPad, iPhone or iPod - * @property ios - * @type Boolean - * @default null - * @static - */ - ios: null, - /** - * Detects Googles Android OS version - * @property android - * @type float - * @static - */ - android: 0, - /** - * Detects Kindle Silk - * @property silk - * @type float - * @static - */ - silk: 0, - /** - * Detects Kindle Silk Acceleration - * @property accel - * @type Boolean - * @static - */ - accel: false, - /** - * Detects Palms WebOS version - * @property webos - * @type float - * @static - */ - webos: 0, - - /** - * Google Caja version number or 0. - * @property caja - * @type float - */ - caja: nav && nav.cajaVersion, - - /** - * Set to true if the page appears to be in SSL - * @property secure - * @type boolean - * @static - */ - secure: false, - - /** - * The operating system. Currently only detecting windows or macintosh - * @property os - * @type string - * @default null - * @static - */ - os: null, - - /** - * The Nodejs Version - * @property nodejs - * @type float - * @default 0 - * @static - */ - nodejs: 0, - /* - * Window8/IE10 Application host environment - * @property winjs - * @type Boolean - * @static - */ - winjs: !!((typeof Windows !== "undefined") && Windows.System), - /** - * Are touch/msPointer events available on this device - * @property touchEnabled - * @type Boolean - * @static - */ - touchEnabled: false - }, - - ua = subUA || nav && nav.userAgent, - - loc = win && win.location, - - href = loc && loc.href, - - m; - - /** - * The User Agent string that was parsed - * @property userAgent - * @type String - * @static - */ - _yuitest_coverline("build/yui-base/yui-base.js", 3563); -o.userAgent = ua; - - - _yuitest_coverline("build/yui-base/yui-base.js", 3566); -o.secure = href && (href.toLowerCase().indexOf('https') === 0); - - _yuitest_coverline("build/yui-base/yui-base.js", 3568); -if (ua) { - - _yuitest_coverline("build/yui-base/yui-base.js", 3570); -if ((/windows|win32/i).test(ua)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3571); -o.os = 'windows'; - } else {_yuitest_coverline("build/yui-base/yui-base.js", 3572); -if ((/macintosh|mac_powerpc/i).test(ua)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3573); -o.os = 'macintosh'; - } else {_yuitest_coverline("build/yui-base/yui-base.js", 3574); -if ((/android/i).test(ua)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3575); -o.os = 'android'; - } else {_yuitest_coverline("build/yui-base/yui-base.js", 3576); -if ((/symbos/i).test(ua)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3577); -o.os = 'symbos'; - } else {_yuitest_coverline("build/yui-base/yui-base.js", 3578); -if ((/linux/i).test(ua)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3579); -o.os = 'linux'; - } else {_yuitest_coverline("build/yui-base/yui-base.js", 3580); -if ((/rhino/i).test(ua)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3581); -o.os = 'rhino'; - }}}}}} - - // Modern KHTML browsers should qualify as Safari X-Grade - _yuitest_coverline("build/yui-base/yui-base.js", 3585); -if ((/KHTML/).test(ua)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3586); -o.webkit = 1; - } - _yuitest_coverline("build/yui-base/yui-base.js", 3588); -if ((/IEMobile|XBLWP7/).test(ua)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3589); -o.mobile = 'windows'; - } - _yuitest_coverline("build/yui-base/yui-base.js", 3591); -if ((/Fennec/).test(ua)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3592); -o.mobile = 'gecko'; - } - // Modern WebKit browsers are at least X-Grade - _yuitest_coverline("build/yui-base/yui-base.js", 3595); -m = ua.match(/AppleWebKit\/([^\s]*)/); - _yuitest_coverline("build/yui-base/yui-base.js", 3596); -if (m && m[1]) { - _yuitest_coverline("build/yui-base/yui-base.js", 3597); -o.webkit = numberify(m[1]); - _yuitest_coverline("build/yui-base/yui-base.js", 3598); -o.safari = o.webkit; - - _yuitest_coverline("build/yui-base/yui-base.js", 3600); -if (/PhantomJS/.test(ua)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3601); -m = ua.match(/PhantomJS\/([^\s]*)/); - _yuitest_coverline("build/yui-base/yui-base.js", 3602); -if (m && m[1]) { - _yuitest_coverline("build/yui-base/yui-base.js", 3603); -o.phantomjs = numberify(m[1]); - } - } - - // Mobile browser check - _yuitest_coverline("build/yui-base/yui-base.js", 3608); -if (/ Mobile\//.test(ua) || (/iPad|iPod|iPhone/).test(ua)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3609); -o.mobile = 'Apple'; // iPhone or iPod Touch - - _yuitest_coverline("build/yui-base/yui-base.js", 3611); -m = ua.match(/OS ([^\s]*)/); - _yuitest_coverline("build/yui-base/yui-base.js", 3612); -if (m && m[1]) { - _yuitest_coverline("build/yui-base/yui-base.js", 3613); -m = numberify(m[1].replace('_', '.')); - } - _yuitest_coverline("build/yui-base/yui-base.js", 3615); -o.ios = m; - _yuitest_coverline("build/yui-base/yui-base.js", 3616); -o.os = 'ios'; - _yuitest_coverline("build/yui-base/yui-base.js", 3617); -o.ipad = o.ipod = o.iphone = 0; - - _yuitest_coverline("build/yui-base/yui-base.js", 3619); -m = ua.match(/iPad|iPod|iPhone/); - _yuitest_coverline("build/yui-base/yui-base.js", 3620); -if (m && m[0]) { - _yuitest_coverline("build/yui-base/yui-base.js", 3621); -o[m[0].toLowerCase()] = o.ios; - } - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 3624); -m = ua.match(/NokiaN[^\/]*|webOS\/\d\.\d/); - _yuitest_coverline("build/yui-base/yui-base.js", 3625); -if (m) { - // Nokia N-series, webOS, ex: NokiaN95 - _yuitest_coverline("build/yui-base/yui-base.js", 3627); -o.mobile = m[0]; - } - _yuitest_coverline("build/yui-base/yui-base.js", 3629); -if (/webOS/.test(ua)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3630); -o.mobile = 'WebOS'; - _yuitest_coverline("build/yui-base/yui-base.js", 3631); -m = ua.match(/webOS\/([^\s]*);/); - _yuitest_coverline("build/yui-base/yui-base.js", 3632); -if (m && m[1]) { - _yuitest_coverline("build/yui-base/yui-base.js", 3633); -o.webos = numberify(m[1]); - } - } - _yuitest_coverline("build/yui-base/yui-base.js", 3636); -if (/ Android/.test(ua)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3637); -if (/Mobile/.test(ua)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3638); -o.mobile = 'Android'; - } - _yuitest_coverline("build/yui-base/yui-base.js", 3640); -m = ua.match(/Android ([^\s]*);/); - _yuitest_coverline("build/yui-base/yui-base.js", 3641); -if (m && m[1]) { - _yuitest_coverline("build/yui-base/yui-base.js", 3642); -o.android = numberify(m[1]); - } - - } - _yuitest_coverline("build/yui-base/yui-base.js", 3646); -if (/Silk/.test(ua)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3647); -m = ua.match(/Silk\/([^\s]*)\)/); - _yuitest_coverline("build/yui-base/yui-base.js", 3648); -if (m && m[1]) { - _yuitest_coverline("build/yui-base/yui-base.js", 3649); -o.silk = numberify(m[1]); - } - _yuitest_coverline("build/yui-base/yui-base.js", 3651); -if (!o.android) { - _yuitest_coverline("build/yui-base/yui-base.js", 3652); -o.android = 2.34; //Hack for desktop mode in Kindle - _yuitest_coverline("build/yui-base/yui-base.js", 3653); -o.os = 'Android'; - } - _yuitest_coverline("build/yui-base/yui-base.js", 3655); -if (/Accelerated=true/.test(ua)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3656); -o.accel = true; - } - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 3661); -m = ua.match(/(Chrome|CrMo|CriOS)\/([^\s]*)/); - _yuitest_coverline("build/yui-base/yui-base.js", 3662); -if (m && m[1] && m[2]) { - _yuitest_coverline("build/yui-base/yui-base.js", 3663); -o.chrome = numberify(m[2]); // Chrome - _yuitest_coverline("build/yui-base/yui-base.js", 3664); -o.safari = 0; //Reset safari back to 0 - _yuitest_coverline("build/yui-base/yui-base.js", 3665); -if (m[1] === 'CrMo') { - _yuitest_coverline("build/yui-base/yui-base.js", 3666); -o.mobile = 'chrome'; - } - } else { - _yuitest_coverline("build/yui-base/yui-base.js", 3669); -m = ua.match(/AdobeAIR\/([^\s]*)/); - _yuitest_coverline("build/yui-base/yui-base.js", 3670); -if (m) { - _yuitest_coverline("build/yui-base/yui-base.js", 3671); -o.air = m[0]; // Adobe AIR 1.0 or better - } - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 3676); -if (!o.webkit) { // not webkit -// @todo check Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1316; fi; U; ssr) - _yuitest_coverline("build/yui-base/yui-base.js", 3678); -if (/Opera/.test(ua)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3679); -m = ua.match(/Opera[\s\/]([^\s]*)/); - _yuitest_coverline("build/yui-base/yui-base.js", 3680); -if (m && m[1]) { - _yuitest_coverline("build/yui-base/yui-base.js", 3681); -o.opera = numberify(m[1]); - } - _yuitest_coverline("build/yui-base/yui-base.js", 3683); -m = ua.match(/Version\/([^\s]*)/); - _yuitest_coverline("build/yui-base/yui-base.js", 3684); -if (m && m[1]) { - _yuitest_coverline("build/yui-base/yui-base.js", 3685); -o.opera = numberify(m[1]); // opera 10+ - } - - _yuitest_coverline("build/yui-base/yui-base.js", 3688); -if (/Opera Mobi/.test(ua)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3689); -o.mobile = 'opera'; - _yuitest_coverline("build/yui-base/yui-base.js", 3690); -m = ua.replace('Opera Mobi', '').match(/Opera ([^\s]*)/); - _yuitest_coverline("build/yui-base/yui-base.js", 3691); -if (m && m[1]) { - _yuitest_coverline("build/yui-base/yui-base.js", 3692); -o.opera = numberify(m[1]); - } - } - _yuitest_coverline("build/yui-base/yui-base.js", 3695); -m = ua.match(/Opera Mini[^;]*/); - - _yuitest_coverline("build/yui-base/yui-base.js", 3697); -if (m) { - _yuitest_coverline("build/yui-base/yui-base.js", 3698); -o.mobile = m[0]; // ex: Opera Mini/2.0.4509/1316 - } - } else { // not opera or webkit - _yuitest_coverline("build/yui-base/yui-base.js", 3701); -m = ua.match(/MSIE\s([^;]*)/); - _yuitest_coverline("build/yui-base/yui-base.js", 3702); -if (m && m[1]) { - _yuitest_coverline("build/yui-base/yui-base.js", 3703); -o.ie = numberify(m[1]); - } else { // not opera, webkit, or ie - _yuitest_coverline("build/yui-base/yui-base.js", 3705); -m = ua.match(/Gecko\/([^\s]*)/); - _yuitest_coverline("build/yui-base/yui-base.js", 3706); -if (m) { - _yuitest_coverline("build/yui-base/yui-base.js", 3707); -o.gecko = 1; // Gecko detected, look for revision - _yuitest_coverline("build/yui-base/yui-base.js", 3708); -m = ua.match(/rv:([^\s\)]*)/); - _yuitest_coverline("build/yui-base/yui-base.js", 3709); -if (m && m[1]) { - _yuitest_coverline("build/yui-base/yui-base.js", 3710); -o.gecko = numberify(m[1]); - } - } - } - } - } - } - - //Check for known properties to tell if touch events are enabled on this device or if - //the number of MSPointer touchpoints on this device is greater than 0. - _yuitest_coverline("build/yui-base/yui-base.js", 3720); -if (win && nav && !(o.chrome && o.chrome < 6)) { - _yuitest_coverline("build/yui-base/yui-base.js", 3721); -o.touchEnabled = (("ontouchstart" in win) || (("msMaxTouchPoints" in nav) && (nav.msMaxTouchPoints > 0))); - } - - //It was a parsed UA, do not assign the global value. - _yuitest_coverline("build/yui-base/yui-base.js", 3725); -if (!subUA) { - - _yuitest_coverline("build/yui-base/yui-base.js", 3727); -if (typeof process === 'object') { - - _yuitest_coverline("build/yui-base/yui-base.js", 3729); -if (process.versions && process.versions.node) { - //NodeJS - _yuitest_coverline("build/yui-base/yui-base.js", 3731); -o.os = process.platform; - _yuitest_coverline("build/yui-base/yui-base.js", 3732); -o.nodejs = numberify(process.versions.node); - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 3736); -YUI.Env.UA = o; - - } - - _yuitest_coverline("build/yui-base/yui-base.js", 3740); -return o; -}; - - -_yuitest_coverline("build/yui-base/yui-base.js", 3744); -Y.UA = YUI.Env.UA || YUI.Env.parseUA(); - -/** -Performs a simple comparison between two version numbers, accounting for -standard versioning logic such as the fact that "535.8" is a lower version than -"535.24", even though a simple numerical comparison would indicate that it's -greater. Also accounts for cases such as "1.1" vs. "1.1.0", which are -considered equivalent. - -Returns -1 if version _a_ is lower than version _b_, 0 if they're equivalent, -1 if _a_ is higher than _b_. - -Versions may be numbers or strings containing numbers and dots. For example, -both `535` and `"535.8.10"` are acceptable. A version string containing -non-numeric characters, like `"535.8.beta"`, may produce unexpected results. - -@method compareVersions -@param {Number|String} a First version number to compare. -@param {Number|String} b Second version number to compare. -@return -1 if _a_ is lower than _b_, 0 if they're equivalent, 1 if _a_ is - higher than _b_. -**/ -_yuitest_coverline("build/yui-base/yui-base.js", 3766); -Y.UA.compareVersions = function (a, b) { - _yuitest_coverfunc("build/yui-base/yui-base.js", "compareVersions", 3766); -_yuitest_coverline("build/yui-base/yui-base.js", 3767); -var aPart, aParts, bPart, bParts, i, len; - - _yuitest_coverline("build/yui-base/yui-base.js", 3769); -if (a === b) { - _yuitest_coverline("build/yui-base/yui-base.js", 3770); -return 0; - } - - _yuitest_coverline("build/yui-base/yui-base.js", 3773); -aParts = (a + '').split('.'); - _yuitest_coverline("build/yui-base/yui-base.js", 3774); -bParts = (b + '').split('.'); - - _yuitest_coverline("build/yui-base/yui-base.js", 3776); -for (i = 0, len = Math.max(aParts.length, bParts.length); i < len; ++i) { - _yuitest_coverline("build/yui-base/yui-base.js", 3777); -aPart = parseInt(aParts[i], 10); - _yuitest_coverline("build/yui-base/yui-base.js", 3778); -bPart = parseInt(bParts[i], 10); - - _yuitest_coverline("build/yui-base/yui-base.js", 3780); -isNaN(aPart) && (aPart = 0); - _yuitest_coverline("build/yui-base/yui-base.js", 3781); -isNaN(bPart) && (bPart = 0); - - _yuitest_coverline("build/yui-base/yui-base.js", 3783); -if (aPart < bPart) { - _yuitest_coverline("build/yui-base/yui-base.js", 3784); -return -1; - } - - _yuitest_coverline("build/yui-base/yui-base.js", 3787); -if (aPart > bPart) { - _yuitest_coverline("build/yui-base/yui-base.js", 3788); -return 1; - } - } - - _yuitest_coverline("build/yui-base/yui-base.js", 3792); -return 0; -}; -_yuitest_coverline("build/yui-base/yui-base.js", 3794); -YUI.Env.aliases = { - "anim": ["anim-base","anim-color","anim-curve","anim-easing","anim-node-plugin","anim-scroll","anim-xy"], - "anim-shape-transform": ["anim-shape"], - "app": ["app-base","app-content","app-transitions","lazy-model-list","model","model-list","model-sync-rest","router","view","view-node-map"], - "attribute": ["attribute-base","attribute-complex"], - "autocomplete": ["autocomplete-base","autocomplete-sources","autocomplete-list","autocomplete-plugin"], - "base": ["base-base","base-pluginhost","base-build"], - "cache": ["cache-base","cache-offline","cache-plugin"], - "collection": ["array-extras","arraylist","arraylist-add","arraylist-filter","array-invoke"], - "controller": ["router"], - "dataschema": ["dataschema-base","dataschema-json","dataschema-xml","dataschema-array","dataschema-text"], - "datasource": ["datasource-local","datasource-io","datasource-get","datasource-function","datasource-cache","datasource-jsonschema","datasource-xmlschema","datasource-arrayschema","datasource-textschema","datasource-polling"], - "datatable": ["datatable-core","datatable-table","datatable-head","datatable-body","datatable-base","datatable-column-widths","datatable-message","datatable-mutable","datatable-sort","datatable-datasource"], - "datatable-deprecated": ["datatable-base-deprecated","datatable-datasource-deprecated","datatable-sort-deprecated","datatable-scroll-deprecated"], - "datatype": ["datatype-date","datatype-number","datatype-xml"], - "datatype-date": ["datatype-date-parse","datatype-date-format","datatype-date-math"], - "datatype-number": ["datatype-number-parse","datatype-number-format"], - "datatype-xml": ["datatype-xml-parse","datatype-xml-format"], - "dd": ["dd-ddm-base","dd-ddm","dd-ddm-drop","dd-drag","dd-proxy","dd-constrain","dd-drop","dd-scroll","dd-delegate"], - "dom": ["dom-base","dom-screen","dom-style","selector-native","selector"], - "editor": ["frame","editor-selection","exec-command","editor-base","editor-para","editor-br","editor-bidi","editor-tab","createlink-base"], - "event": ["event-base","event-delegate","event-synthetic","event-mousewheel","event-mouseenter","event-key","event-focus","event-resize","event-hover","event-outside","event-touch","event-move","event-flick","event-valuechange","event-tap"], - "event-custom": ["event-custom-base","event-custom-complex"], - "event-gestures": ["event-flick","event-move"], - "handlebars": ["handlebars-compiler"], - "highlight": ["highlight-base","highlight-accentfold"], - "history": ["history-base","history-hash","history-hash-ie","history-html5"], - "io": ["io-base","io-xdr","io-form","io-upload-iframe","io-queue"], - "json": ["json-parse","json-stringify"], - "loader": ["loader-base","loader-rollup","loader-yui3"], - "node": ["node-base","node-event-delegate","node-pluginhost","node-screen","node-style"], - "pluginhost": ["pluginhost-base","pluginhost-config"], - "querystring": ["querystring-parse","querystring-stringify"], - "recordset": ["recordset-base","recordset-sort","recordset-filter","recordset-indexer"], - "resize": ["resize-base","resize-proxy","resize-constrain"], - "slider": ["slider-base","slider-value-range","clickable-rail","range-slider"], - "text": ["text-accentfold","text-wordbreak"], - "widget": ["widget-base","widget-htmlparser","widget-skin","widget-uievents"] -}; - - -}, '3.7.3', {"use": ["get", "features", "intl-base", "yui-log", "yui-later"]}); diff --git a/lib/yuilib/3.7.3/build/yui-base/yui-base-min.js b/lib/yuilib/3.7.3/build/yui-base/yui-base-min.js deleted file mode 100644 index 683b45a7ead..00000000000 --- a/lib/yuilib/3.7.3/build/yui-base/yui-base-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -typeof YUI!="undefined"&&(YUI._YUI=YUI);var YUI=function(){var e=0,t=this,n=arguments,r=n.length,i=function(e,t){return e&&e.hasOwnProperty&&e instanceof t},s=typeof YUI_config!="undefined"&&YUI_config;i(t,YUI)?(t._init(),YUI.GlobalConfig&&t.applyConfig(YUI.GlobalConfig),s&&t.applyConfig(s),r||t._setup()):t=new YUI;if(r){for(;e-1&&(n="3.5.0"),e={applyConfig:function(e){e=e||u;var t,n,r=this.config,i=r.modules,s=r.groups,o=r.aliases,a=this.Env._loader;for(n in e)e.hasOwnProperty(n)&&(t=e[n],i&&n=="modules"?E(i,t):o&&n=="aliases"?E(o,t):s&&n=="groups"?E(s,t):n=="win"?(r[n]=t&&t.contentWindow||t,r.doc=r[n]?r[n].document:null):n!="_yuid"&&(r[n]=t));a&&a._config(e)},_config:function(e){this.applyConfig(e)},_init:function(){var e,t,r=this,s=YUI.Env,u=r.Env,a;r.version=n;if(!u){r.Env={core:["get","features","intl-base","yui-log","yui-later"],loaderExtras:["loader-rollup","loader-yui3"],mods:{},versions:{},base:i,cdn:i+n+"/build/",_idx:0,_used:{},_attached:{},_missed:[],_yidx:0,_uidx:0,_guidp:"y",_loaded:{},_BASE_RE:/(?:\?(?:[^&]*&)*([^&]*))?\b(simpleyui|yui(?:-\w+)?)\/\2(?:-(min|debug))?\.js/,parseBasePath:function(e,t){var n=e.match(t),r,i;return n&&(r=RegExp.leftContext||e.slice(0,e.indexOf(n[0])),i=n[3],n[1]&&(r+="?"+n[1]),r={filter:i,path:r}),r},getBase:s&&s.getBase||function(t){var n=h&&h.getElementsByTagName("script")||[],i=u.cdn,s,o,a,f;for(o=0,a=n.length;o',YUI.Env.cssStampEl=t.firstChild,h.body?h.body.appendChild(YUI.Env.cssStampEl):p.insertBefore(YUI.Env.cssStampEl,p.firstChild)),r.config.lang=r.config.lang||"en-US",r.config.base=YUI.config.base||r.Env.getBase(r.Env._BASE_RE);if(!e||!"mindebug".indexOf(e))e="min";e=e?"-"+e:e,r.config.loaderPath=YUI.config.loaderPath||"loader/loader"+e+".js"},_setup:function(e){var t,n=this,r=[],i=YUI.Env.mods,s=n.config.core||[].concat(YUI.Env.core);for(t=0;t-1){s=o.split(r);for(i=s[0]=="YAHOO"?1:0;ii&&i in t?t[i]:!0);return n},h.indexOf=f._isNative(l.indexOf)?function(e,t,n){return l.indexOf.call(e,t,n)}:function(e,t,n){var r=e.length;n=+n||0,n=(n>0||-1)*Math.floor(Math.abs(n)),n<0&&(n+=r,n<0&&(n=0));for(;n1?Array.prototype.join.call(arguments,d):String(r);if(!(i in t)||n&&t[i]==n)t[i]=e.apply(e,arguments);return t[i]}},e.getLocation=function(){var t=e.config.win;return t&&t.location},e.merge=function(){var e=0,t=arguments.length,n={},r,i;for(;e-1},g.each=function(t,n,r,i){var s;for(s in t)(i||E(t,s))&&n.call(r||e,t[s],s,t);return e},g.some=function(t,n,r,i){var s;for(s in t)if(i||E(t,s))if(n.call(r||e,t[s],s,t))return!0;return!1},g.getValue=function(t,n){if(!f.isObject(t))return m;var r,i=e.Array(n),s=i.length;for(r=0;t!==m&&r=0){for(i=0;u!==m&&i0),t||(typeof process=="object"&&process.versions&&process.versions.node&&(s.os=process.platform,s.nodejs=n(process.versions.node)),YUI.Env.UA=s),s},e.UA=YUI.Env.UA||YUI.Env.parseUA(),e.UA.compareVersions=function(e,t){var n,r,i,s,o,u;if(e===t)return 0;r=(e+"").split("."),s=(t+"").split(".");for(o=0,u=Math.max(r.length,s.length);oi)return 1}return 0},YUI.Env.aliases={anim:["anim-base","anim-color","anim-curve","anim-easing","anim-node-plugin","anim-scroll","anim-xy"],"anim-shape-transform":["anim-shape"],app:["app-base","app-content","app-transitions","lazy-model-list","model","model-list","model-sync-rest","router","view","view-node-map"],attribute:["attribute-base","attribute-complex"],autocomplete:["autocomplete-base","autocomplete-sources","autocomplete-list","autocomplete-plugin"],base:["base-base","base-pluginhost","base-build"],cache:["cache-base","cache-offline","cache-plugin"],collection:["array-extras","arraylist","arraylist-add","arraylist-filter","array-invoke"],controller:["router"],dataschema:["dataschema-base","dataschema-json","dataschema-xml","dataschema-array","dataschema-text"],datasource:["datasource-local","datasource-io","datasource-get","datasource-function","datasource-cache","datasource-jsonschema","datasource-xmlschema","datasource-arrayschema","datasource-textschema","datasource-polling"],datatable:["datatable-core","datatable-table","datatable-head","datatable-body","datatable-base","datatable-column-widths","datatable-message","datatable-mutable","datatable-sort","datatable-datasource"],"datatable-deprecated":["datatable-base-deprecated","datatable-datasource-deprecated","datatable-sort-deprecated","datatable-scroll-deprecated"],datatype:["datatype-date","datatype-number","datatype-xml"],"datatype-date":["datatype-date-parse","datatype-date-format","datatype-date-math"],"datatype-number":["datatype-number-parse","datatype-number-format"],"datatype-xml":["datatype-xml-parse","datatype-xml-format"],dd:["dd-ddm-base","dd-ddm","dd-ddm-drop","dd-drag","dd-proxy","dd-constrain","dd-drop","dd-scroll","dd-delegate"],dom:["dom-base","dom-screen","dom-style","selector-native","selector"],editor:["frame","editor-selection","exec-command","editor-base","editor-para","editor-br","editor-bidi","editor-tab","createlink-base"],event:["event-base","event-delegate","event-synthetic","event-mousewheel","event-mouseenter","event-key","event-focus","event-resize","event-hover","event-outside","event-touch","event-move","event-flick","event-valuechange","event-tap"],"event-custom":["event-custom-base","event-custom-complex"],"event-gestures":["event-flick","event-move"],handlebars:["handlebars-compiler"],highlight:["highlight-base","highlight-accentfold"],history:["history-base","history-hash","history-hash-ie","history-html5"],io:["io-base","io-xdr","io-form","io-upload-iframe","io-queue"],json:["json-parse","json-stringify"],loader:["loader-base","loader-rollup","loader-yui3"],node:["node-base","node-event-delegate","node-pluginhost","node-screen","node-style"],pluginhost:["pluginhost-base","pluginhost-config"],querystring:["querystring-parse","querystring-stringify"],recordset:["recordset-base","recordset-sort","recordset-filter","recordset-indexer"],resize:["resize-base","resize-proxy","resize-constrain"],slider:["slider-base","slider-value-range","clickable-rail","range-slider"],text:["text-accentfold","text-wordbreak"],widget:["widget-base","widget-htmlparser","widget-skin","widget-uievents"]}},"3.7.3",{use:["get","features","intl-base","yui-log","yui-later"]}),YUI.add("get",function(e,t){var n=e.Lang,r,i,s;e.Get=i={cssOptions:{attributes:{rel:"stylesheet"},doc:e.config.linkDoc||e.config.doc,pollInterval:50},jsOptions:{autopurge:!0,doc:e.config.scriptDoc||e.config.doc},options:{attributes:{charset:"utf-8"},purgethreshold:20},REGEX_CSS:/\.css(?:[?;].*)?$/i,REGEX_JS:/\.js(?:[?;].*)?$/i,_insertCache:{},_pending:null,_purgeNodes:[],_queue:[],abort:function(e){var t,n,r,i,s;if(!e.abort){n=e,s=this._pending,e=null;if(s&&s.transaction.id===n)e=s.transaction,this._pending=null;else for(t=0,i=this._queue.length;t=e&&this._purge(this._purgeNodes)},_getEnv:function(){var t=e.config.doc,n=e.UA;return this._env={async:t&&t.createElement("script").async===!0||n.ie>=10,cssFail:n.gecko>=9||n.compareVersions(n.webkit,535.24)>=0,cssLoad:(!n.gecko&&!n.webkit||n.gecko>=9||n.compareVersions(n.webkit,535.24)>=0)&&!(n.chrome&&n.chrome<=18),preservesScriptOrder:!!(n.gecko||n.opera||n.ie&&n.ie>=10)}},_getTransaction:function(t,r){var i=[],o,u,a,f;n.isArray(t)||(t=[t]),r=e.merge(this.options,r),r.attributes=e.merge(this.options.attributes,r.attributes);for(o=0,u=t.length;o-1&&n.splice(i,1))}}},i.script=i.js,i.Transaction=s=function(t,n){var r=this;r.id=s._lastId+=1,r.data=n.data,r.errors=[],r.nodes=[],r.options=n,r.requests=t,r._callbacks=[],r._queue=[],r._reqsWaiting=0,r.tId=r.id,r.win=n.win||e.config.win},s._lastId=0,s.prototype={_state:"new",abort:function(e){this._pending=null,this._pendingCSS=null,this._pollTimer=clearTimeout(this._pollTimer),this._queue=[],this._reqsWaiting=0,this.errors.push({error:e||"Aborted"}),this._finish()},execute:function(e){var t=this,n=t.requests,r=t._state,i,s,o,u;if(r==="done"){e&&e(t.errors.length?t.errors:null,t);return}e&&t._callbacks.push(e);if(r==="executing")return;t._state="executing",t._queue=o=[],t.options.timeout&&(t._timeout=setTimeout(function(){t.abort("Timeout")},t.options.timeout)),t._reqsWaiting=n.length;for(i=0,s=n.length;i=10?(o.onerror=function(){setTimeout(c,0)},o.onload=function(){setTimeout(h,0)}):(o.onerror=c,o.onload=h),!n.cssFail&&!s&&(f=setTimeout(c,t.timeout||3e3))),this.nodes.push(o),r.parentNode.insertBefore(o,r)},_next:function(){if(this._pending)return;this._queue.length?this._insert(this._queue.shift()):this._reqsWaiting||this._finish()},_poll:function(t){var n=this,r=n._pendingCSS,i=e.UA.webkit,s,o,u,a,f,l;if(t){r||(r=n._pendingCSS=[]),r.push(t);if(n._pollTimer)return}n._pollTimer=null;for(s=0;s=0)if(l[u].href===a){r.splice(s,1),s-=1,n._progress(null,f);break}}else try{o=!!f.node.sheet.cssRules,r.splice(s,1),s-=1,n._progress(null,f)}catch(c){}}r.length&&(n._pollTimer=setTimeout(function(){n._poll.call(n)},n.options.pollInterval))},_progress:function(e,t){var n=this.options;e&&(t.error=e,this.errors.push({error:e,request:t})),t.node._yuiget_finished=t.finished=!0,n.onProgress&&n.onProgress.call(n.context||this,this._getEventData(t)),t.autopurge&&(i._autoPurge(this.options.purgethreshold),i._purgeNodes.push(t.node)),this._pending===t&&(this._pending=null),this._reqsWaiting-=1,this._next()}}},"3.7.3",{requires:["yui-base"]}),YUI.add("features",function(e,t){var n={};e.mix(e.namespace("Features"),{tests:n,add:function(e,t,r){n[e]=n[e]||{},n[e][t]=r},all:function(t,r){var i=n[t],s=[];return i&&e.Object.each(i,function(n,i){s.push(i+":"+(e.Features.test(t,i,r)?1:0))}),s.length?s.join(";"):""},test:function(t,r,i){i=i||[];var s,o,u,a=n[t],f=a&&a[r];return!f||(s=f.result,e.Lang.isUndefined(s)&&(o=f.ua,o&&(s=e.UA[o]),u=f.test,u&&(!o||s)&&(s=u.apply(e,i)),f.result=s)),s}});var r=e.Features.add;r("load","0",{name:"app-transitions-native",test:function(e){var t=e.config.doc,n=t?t.documentElement:null;return n&&n.style?"MozTransition"in n.style||"WebkitTransition"in n.style||"transition"in n.style:!1},trigger:"app-transitions"}),r("load","1",{name:"autocomplete-list-keys",test:function(e){return!e.UA.ios&&!e.UA.android},trigger:"autocomplete-list"}),r("load","2",{name:"dd-gestures",trigger:"dd-drag",ua:"touchEnabled"}),r("load","3",{name:"dom-style-ie",test:function(e){var t=e.Features.test,n=e.Features.add,r=e.config.win,i=e.config.doc,s="documentElement",o=!1;return n("style","computedStyle",{test:function(){return r&&"getComputedStyle"in r}}),n("style","opacity",{test:function(){return i&&"opacity"in i[s].style}}),o=!t("style","opacity")&&!t("style","computedStyle"),o},trigger:"dom-style"}),r("load","4",{name:"editor-para-ie",trigger:"editor-para",ua:"ie",when:"instead"}),r("load","5",{name:"event-base-ie",test:function(e){var t=e.config.doc&&e.config.doc.implementation;return t&&!t.hasFeature("Events","2.0")},trigger:"node-base"}),r("load","6",{name:"graphics-canvas",test:function(e){var t=e.config.doc,n=e.config.defaultGraphicEngine&&e.config.defaultGraphicEngine=="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return(!i||n)&&r&&r.getContext&&r.getContext("2d")},trigger:"graphics"}),r("load","7",{name:"graphics-canvas-default",test:function(e){var t=e.config.doc,n=e.config.defaultGraphicEngine&&e.config.defaultGraphicEngine=="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return(!i||n)&&r&&r.getContext&&r.getContext("2d")},trigger:"graphics"}),r("load","8",{name:"graphics-svg",test:function(e){var t=e.config.doc,n=!e.config.defaultGraphicEngine||e.config.defaultGraphicEngine!="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return i&&(n||!r)},trigger:"graphics"}),r("load","9",{name:"graphics-svg-default",test:function(e){var t=e.config.doc,n=!e.config.defaultGraphicEngine||e.config.defaultGraphicEngine!="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return i&&(n||!r)},trigger:"graphics"}),r("load","10",{name:"graphics-vml",test:function(e){var t=e.config.doc,n=t&&t.createElement("canvas");return t&&!t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")&&(!n||!n.getContext||!n.getContext("2d"))},trigger:"graphics"}),r("load","11",{name:"graphics-vml-default",test:function(e){var t=e.config.doc,n=t&&t.createElement("canvas");return t&&!t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")&&(!n||!n.getContext||!n.getContext("2d"))},trigger:"graphics"}),r("load","12",{name:"history-hash-ie",test:function(e){var t=e.config.doc&&e.config.doc.documentMode;return e.UA.ie&&(!("onhashchange"in e.config.win)||!t||t<8)},trigger:"history-hash"}),r("load","13",{name:"io-nodejs",trigger:"io-base",ua:"nodejs"}),r("load","14",{name:"scrollview-base-ie",trigger:"scrollview-base",ua:"ie"}),r("load","15",{name:"selector-css2",test:function(e){var t=e.config.doc,n=t&&!("querySelectorAll"in t);return n},trigger:"selector"}),r("load","16",{name:"transition-timer",test:function(e){var t=e.config.doc,n=t?t.documentElement:null,r=!0;return n&&n.style&&(r=!("MozTransition"in n.style||"WebkitTransition"in n.style||"transition"in n.style)),r},trigger:"transition"}),r("load","17",{name:"widget-base-ie",trigger:"widget-base",ua:"ie"}),r("load","18",{name:"yql-nodejs",trigger:"yql",ua:"nodejs",when:"after"}),r("load","19",{name:"yql-winjs",trigger:"yql",ua:"winjs",when:"after"})},"3.7.3",{requires:["yui-base"]}),YUI.add("intl-base",function(e,t){var n=/[, ]/;e.mix(e.namespace("Intl"),{lookupBestLang:function(t,r){function a(e){var t;for(t=0;t0){o=a(s);if(o)return o;u=s.lastIndexOf("-");if(!(u>=0))break;s=s.substring(0,u),u>=2&&s.charAt(u-2)==="-"&&(s=s.substring(0,u-2))}}return""}})},"3.7.3",{requires:["yui-base"]}),YUI.add("yui-log",function(e,t){var n=e,r="yui:log",i="undefined",s={debug:1,info:1,warn:1,error:1};n.log=function(e,t,o,u){var a,f,l,c,h,p=n,d=p.config,v=p.fire?p:YUI.Env.globalEvents;return d.debug&&(o=o||"",typeof o!="undefined"&&(f=d.logExclude,l=d.logInclude,!l||o in l?l&&o in l?a=!l[o]:f&&o in f&&(a=f[o]):a=1),a||(d.useBrowserConsole&&(c=o?o+": "+e:e,p.Lang.isFunction(d.logFn)?d.logFn.call(p,e,t,o):typeof console!=i&&console.log?(h=t&&console[t]&&t in s?t:"log",console[h](c)):typeof opera!=i&&opera.postError(c)),v&&!u&&(v==p&&!v.getEvent(r)&&v.publish(r,{broadcast:2}),v.fire(r,{msg:e,cat:t,src:o})))),p},n.message=function(){return n.log.apply(n,arguments)}},"3.7.3",{requires:["yui-base"]}),YUI.add("yui-later",function(e,t){var n=[];e.later=function(t,r,i,s,o){t=t||0,s=e.Lang.isUndefined(s)?n:e.Array(s),r=r||e.config.win||e;var u=!1,a=r&&e.Lang.isString(i)?r[i]:i,f=function(){u||(a.apply?a.apply(r,s||n):a(s[0],s[1],s[2],s[3]))},l=o?setInterval(f,t):setTimeout(f,t);return{id:l,interval:o,cancel:function(){u=!0,this.interval?clearInterval(l):clearTimeout(l)}}},e.Lang.later=e.later},"3.7.3",{requires:["yui-base"]}),YUI.add("yui",function(e,t){},"3.7.3",{use:["get","features","intl-base","yui-log","yui-later"]}); diff --git a/lib/yuilib/3.7.3/build/yui-core/yui-core-coverage.js b/lib/yuilib/3.7.3/build/yui-core/yui-core-coverage.js deleted file mode 100644 index 360d3793bbd..00000000000 --- a/lib/yuilib/3.7.3/build/yui-core/yui-core-coverage.js +++ /dev/null @@ -1,4795 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -if (typeof _yuitest_coverage == "undefined"){ - _yuitest_coverage = {}; - _yuitest_coverline = function(src, line){ - var coverage = _yuitest_coverage[src]; - if (!coverage.lines[line]){ - coverage.calledLines++; - } - coverage.lines[line]++; - }; - _yuitest_coverfunc = function(src, name, line){ - var coverage = _yuitest_coverage[src], - funcId = name + ":" + line; - if (!coverage.functions[funcId]){ - coverage.calledFunctions++; - } - coverage.functions[funcId]++; - }; -} -_yuitest_coverage["build/yui-core/yui-core.js"] = { - lines: {}, - functions: {}, - coveredLines: 0, - calledLines: 0, - coveredFunctions: 0, - calledFunctions: 0, - path: "build/yui-core/yui-core.js", - code: [] -}; -_yuitest_coverage["build/yui-core/yui-core.js"].code=["/**"," * The YUI module contains the components required for building the YUI seed"," * file. This includes the script loading mechanism, a simple queue, and"," * the core utilities for the library."," * @module yui"," * @main yui"," * @submodule yui-base"," */","","if (typeof YUI != 'undefined') {"," YUI._YUI = YUI;","}","","/**","The YUI global namespace object. If YUI is already defined, the","existing YUI object will not be overwritten so that defined","namespaces are preserved. It is the constructor for the object","the end user interacts with. As indicated below, each instance","has full custom event support, but only if the event system","is available. This is a self-instantiable factory function. You","can invoke it directly like this:",""," YUI().use('*', function(Y) {"," // ready"," });","","But it also works like this:",""," var Y = YUI();","","Configuring the YUI object:",""," YUI({"," debug: true,"," combine: false"," }).use('node', function(Y) {"," //Node is ready to use"," });","","See the API docs for the Config class","for the complete list of supported configuration properties accepted","by the YUI constuctor.","","@class YUI","@constructor","@global","@uses EventTarget","@param [o]* {Object} 0..n optional configuration objects. these values","are store in Y.config. See Config for the list of supported","properties.","*/"," /*global YUI*/"," /*global YUI_config*/"," var YUI = function() {"," var i = 0,"," Y = this,"," args = arguments,"," l = args.length,"," instanceOf = function(o, type) {"," return (o && o.hasOwnProperty && (o instanceof type));"," },"," gconf = (typeof YUI_config !== 'undefined') && YUI_config;",""," if (!(instanceOf(Y, YUI))) {"," Y = new YUI();"," } else {"," // set up the core environment"," Y._init();",""," /**"," YUI.GlobalConfig is a master configuration that might span"," multiple contexts in a non-browser environment. It is applied"," first to all instances in all contexts."," @property GlobalConfig"," @type {Object}"," @global"," @static"," @example","",""," YUI.GlobalConfig = {"," filter: 'debug'"," };",""," YUI().use('node', function(Y) {"," //debug files used here"," });",""," YUI({"," filter: 'min'"," }).use('node', function(Y) {"," //min files used here"," });",""," */"," if (YUI.GlobalConfig) {"," Y.applyConfig(YUI.GlobalConfig);"," }",""," /**"," YUI_config is a page-level config. It is applied to all"," instances created on the page. This is applied after"," YUI.GlobalConfig, and before the instance level configuration"," objects."," @global"," @property YUI_config"," @type {Object}"," @example","",""," //Single global var to include before YUI seed file"," YUI_config = {"," filter: 'debug'"," };",""," YUI().use('node', function(Y) {"," //debug files used here"," });",""," YUI({"," filter: 'min'"," }).use('node', function(Y) {"," //min files used here"," });"," */"," if (gconf) {"," Y.applyConfig(gconf);"," }",""," // bind the specified additional modules for this instance"," if (!l) {"," Y._setup();"," }"," }",""," if (l) {"," // Each instance can accept one or more configuration objects."," // These are applied after YUI.GlobalConfig and YUI_Config,"," // overriding values set in those config files if there is a '"," // matching property."," for (; i < l; i++) {"," Y.applyConfig(args[i]);"," }",""," Y._setup();"," }",""," Y.instanceOf = instanceOf;",""," return Y;"," };","","(function() {",""," var proto, prop,"," VERSION = '3.7.3',"," PERIOD = '.',"," BASE = 'http://yui.yahooapis.com/',"," /*"," These CSS class names can't be generated by"," getClassName since it is not available at the"," time they are being used."," */"," DOC_LABEL = 'yui3-js-enabled',"," CSS_STAMP_EL = 'yui3-css-stamp',"," NOOP = function() {},"," SLICE = Array.prototype.slice,"," APPLY_TO_AUTH = { 'io.xdrReady': 1, // the functions applyTo"," 'io.xdrResponse': 1, // can call. this should"," 'SWF.eventHandler': 1 }, // be done at build time"," hasWin = (typeof window != 'undefined'),"," win = (hasWin) ? window : null,"," doc = (hasWin) ? win.document : null,"," docEl = doc && doc.documentElement,"," docClass = docEl && docEl.className,"," instances = {},"," time = new Date().getTime(),"," add = function(el, type, fn, capture) {"," if (el && el.addEventListener) {"," el.addEventListener(type, fn, capture);"," } else if (el && el.attachEvent) {"," el.attachEvent('on' + type, fn);"," }"," },"," remove = function(el, type, fn, capture) {"," if (el && el.removeEventListener) {"," // this can throw an uncaught exception in FF"," try {"," el.removeEventListener(type, fn, capture);"," } catch (ex) {}"," } else if (el && el.detachEvent) {"," el.detachEvent('on' + type, fn);"," }"," },"," handleLoad = function() {"," YUI.Env.windowLoaded = true;"," YUI.Env.DOMReady = true;"," if (hasWin) {"," remove(window, 'load', handleLoad);"," }"," },"," getLoader = function(Y, o) {"," var loader = Y.Env._loader,"," lCore = [ 'loader-base' ],"," G_ENV = YUI.Env,"," mods = G_ENV.mods;",""," if (loader) {"," //loader._config(Y.config);"," loader.ignoreRegistered = false;"," loader.onEnd = null;"," loader.data = null;"," loader.required = [];"," loader.loadType = null;"," } else {"," loader = new Y.Loader(Y.config);"," Y.Env._loader = loader;"," }"," if (mods && mods.loader) {"," lCore = [].concat(lCore, YUI.Env.loaderExtras);"," }"," YUI.Env.core = Y.Array.dedupe([].concat(YUI.Env.core, lCore));",""," return loader;"," },",""," clobber = function(r, s) {"," for (var i in s) {"," if (s.hasOwnProperty(i)) {"," r[i] = s[i];"," }"," }"," },",""," ALREADY_DONE = { success: true };","","// Stamp the documentElement (HTML) with a class of \"yui-loaded\" to","// enable styles that need to key off of JS being enabled.","if (docEl && docClass.indexOf(DOC_LABEL) == -1) {"," if (docClass) {"," docClass += ' ';"," }"," docClass += DOC_LABEL;"," docEl.className = docClass;","}","","if (VERSION.indexOf('@') > -1) {"," VERSION = '3.5.0'; // dev time hack for cdn test","}","","proto = {"," /**"," * Applies a new configuration object to the YUI instance config."," * This will merge new group/module definitions, and will also"," * update the loader cache if necessary. Updating Y.config directly"," * will not update the cache."," * @method applyConfig"," * @param {Object} o the configuration object."," * @since 3.2.0"," */"," applyConfig: function(o) {",""," o = o || NOOP;",""," var attr,"," name,"," // detail,"," config = this.config,"," mods = config.modules,"," groups = config.groups,"," aliases = config.aliases,"," loader = this.Env._loader;",""," for (name in o) {"," if (o.hasOwnProperty(name)) {"," attr = o[name];"," if (mods && name == 'modules') {"," clobber(mods, attr);"," } else if (aliases && name == 'aliases') {"," clobber(aliases, attr);"," } else if (groups && name == 'groups') {"," clobber(groups, attr);"," } else if (name == 'win') {"," config[name] = (attr && attr.contentWindow) || attr;"," config.doc = config[name] ? config[name].document : null;"," } else if (name == '_yuid') {"," // preserve the guid"," } else {"," config[name] = attr;"," }"," }"," }",""," if (loader) {"," loader._config(o);"," }",""," },"," /**"," * Old way to apply a config to the instance (calls `applyConfig` under the hood)"," * @private"," * @method _config"," * @param {Object} o The config to apply"," */"," _config: function(o) {"," this.applyConfig(o);"," },",""," /**"," * Initialize this YUI instance"," * @private"," * @method _init"," */"," _init: function() {"," var filter, el,"," Y = this,"," G_ENV = YUI.Env,"," Env = Y.Env,"," prop;",""," /**"," * The version number of the YUI instance."," * @property version"," * @type string"," */"," Y.version = VERSION;",""," if (!Env) {"," Y.Env = {"," core: ['intl-base'],"," loaderExtras: ['loader-rollup', 'loader-yui3'],"," mods: {}, // flat module map"," versions: {}, // version module map"," base: BASE,"," cdn: BASE + VERSION + '/build/',"," // bootstrapped: false,"," _idx: 0,"," _used: {},"," _attached: {},"," _missed: [],"," _yidx: 0,"," _uidx: 0,"," _guidp: 'y',"," _loaded: {},"," // serviced: {},"," // Regex in English:"," // I'll start at the \\b(simpleyui)."," // 1. Look in the test string for \"simpleyui\" or \"yui\" or"," // \"yui-base\" or \"yui-davglass\" or \"yui-foobar\" that comes after a word break. That is, it"," // can't match \"foyui\" or \"i_heart_simpleyui\". This can be anywhere in the string."," // 2. After #1 must come a forward slash followed by the string matched in #1, so"," // \"yui-base/yui-base\" or \"simpleyui/simpleyui\" or \"yui-pants/yui-pants\"."," // 3. The second occurence of the #1 token can optionally be followed by \"-debug\" or \"-min\","," // so \"yui/yui-min\", \"yui/yui-debug\", \"yui-base/yui-base-debug\". NOT \"yui/yui-tshirt\"."," // 4. This is followed by \".js\", so \"yui/yui.js\", \"simpleyui/simpleyui-min.js\""," // 0. Going back to the beginning, now. If all that stuff in 1-4 comes after a \"?\" in the string,"," // then capture the junk between the LAST \"&\" and the string in 1-4. So"," // \"blah?foo/yui/yui.js\" will capture \"foo/\" and \"blah?some/thing.js&3.3.0/build/yui-davglass/yui-davglass.js\""," // will capture \"3.3.0/build/\""," //"," // Regex Exploded:"," // (?:\\? Find a ?"," // (?:[^&]*&) followed by 0..n characters followed by an &"," // * in fact, find as many sets of characters followed by a & as you can"," // ([^&]*) capture the stuff after the last & in \\1"," // )? but it's ok if all this ?junk&more_junk stuff isn't even there"," // \\b(simpleyui| after a word break find either the string \"simpleyui\" or"," // yui(?:-\\w+)? the string \"yui\" optionally followed by a -, then more characters"," // ) and store the simpleyui or yui-* string in \\2"," // \\/\\2 then comes a / followed by the simpleyui or yui-* string in \\2"," // (?:-(min|debug))? optionally followed by \"-min\" or \"-debug\""," // .js and ending in \".js\""," _BASE_RE: /(?:\\?(?:[^&]*&)*([^&]*))?\\b(simpleyui|yui(?:-\\w+)?)\\/\\2(?:-(min|debug))?\\.js/,"," parseBasePath: function(src, pattern) {"," var match = src.match(pattern),"," path, filter;",""," if (match) {"," path = RegExp.leftContext || src.slice(0, src.indexOf(match[0]));",""," // this is to set up the path to the loader. The file"," // filter for loader should match the yui include."," filter = match[3];",""," // extract correct path for mixed combo urls"," // http://yuilibrary.com/projects/yui3/ticket/2528423"," if (match[1]) {"," path += '?' + match[1];"," }"," path = {"," filter: filter,"," path: path"," };"," }"," return path;"," },"," getBase: G_ENV && G_ENV.getBase ||"," function(pattern) {"," var nodes = (doc && doc.getElementsByTagName('script')) || [],"," path = Env.cdn, parsed,"," i, len, src;",""," for (i = 0, len = nodes.length; i < len; ++i) {"," src = nodes[i].src;"," if (src) {"," parsed = Y.Env.parseBasePath(src, pattern);"," if (parsed) {"," filter = parsed.filter;"," path = parsed.path;"," break;"," }"," }"," }",""," // use CDN default"," return path;"," }",""," };",""," Env = Y.Env;",""," Env._loaded[VERSION] = {};",""," if (G_ENV && Y !== YUI) {"," Env._yidx = ++G_ENV._yidx;"," Env._guidp = ('yui_' + VERSION + '_' +"," Env._yidx + '_' + time).replace(/\\./g, '_').replace(/-/g, '_');"," } else if (YUI._YUI) {",""," G_ENV = YUI._YUI.Env;"," Env._yidx += G_ENV._yidx;"," Env._uidx += G_ENV._uidx;",""," for (prop in G_ENV) {"," if (!(prop in Env)) {"," Env[prop] = G_ENV[prop];"," }"," }",""," delete YUI._YUI;"," }",""," Y.id = Y.stamp(Y);"," instances[Y.id] = Y;",""," }",""," Y.constructor = YUI;",""," // configuration defaults"," Y.config = Y.config || {"," bootstrap: true,"," cacheUse: true,"," debug: true,"," doc: doc,"," fetchCSS: true,"," throwFail: true,"," useBrowserConsole: true,"," useNativeES5: true,"," win: win"," };",""," //Register the CSS stamp element"," if (doc && !doc.getElementById(CSS_STAMP_EL)) {"," el = doc.createElement('div');"," el.innerHTML = '';"," YUI.Env.cssStampEl = el.firstChild;"," if (doc.body) {"," doc.body.appendChild(YUI.Env.cssStampEl);"," } else {"," docEl.insertBefore(YUI.Env.cssStampEl, docEl.firstChild);"," }"," }",""," Y.config.lang = Y.config.lang || 'en-US';",""," Y.config.base = YUI.config.base || Y.Env.getBase(Y.Env._BASE_RE);",""," if (!filter || (!('mindebug').indexOf(filter))) {"," filter = 'min';"," }"," filter = (filter) ? '-' + filter : filter;"," Y.config.loaderPath = YUI.config.loaderPath || 'loader/loader' + filter + '.js';",""," },",""," /**"," * Finishes the instance setup. Attaches whatever modules were defined"," * when the yui modules was registered."," * @method _setup"," * @private"," */"," _setup: function(o) {"," var i, Y = this,"," core = [],"," mods = YUI.Env.mods,"," extras = Y.config.core || [].concat(YUI.Env.core); //Clone it..",""," for (i = 0; i < extras.length; i++) {"," if (mods[extras[i]]) {"," core.push(extras[i]);"," }"," }",""," Y._attach(['yui-base']);"," Y._attach(core);",""," if (Y.Loader) {"," getLoader(Y);"," }",""," },",""," /**"," * Executes a method on a YUI instance with"," * the specified id if the specified method is whitelisted."," * @method applyTo"," * @param id {String} the YUI instance id."," * @param method {String} the name of the method to exectute."," * Ex: 'Object.keys'."," * @param args {Array} the arguments to apply to the method."," * @return {Object} the return value from the applied method or null."," */"," applyTo: function(id, method, args) {"," if (!(method in APPLY_TO_AUTH)) {"," this.log(method + ': applyTo not allowed', 'warn', 'yui');"," return null;"," }",""," var instance = instances[id], nest, m, i;"," if (instance) {"," nest = method.split('.');"," m = instance;"," for (i = 0; i < nest.length; i = i + 1) {"," m = m[nest[i]];"," if (!m) {"," this.log('applyTo not found: ' + method, 'warn', 'yui');"," }"," }"," return m && m.apply(instance, args);"," }",""," return null;"," },","","/**","Registers a module with the YUI global. The easiest way to create a","first-class YUI module is to use the YUI component ","build tool Shifter.","","The build system will produce the `YUI.add` wrapper for your module, along","with any configuration info required for the module.","","@method add","@param name {String} module name.","@param fn {Function} entry point into the module that is used to bind module to the YUI instance.","@param {YUI} fn.Y The YUI instance this module is executed in.","@param {String} fn.name The name of the module","@param version {String} version string.","@param details {Object} optional config data:","@param details.requires {Array} features that must be present before this module can be attached.","@param details.optional {Array} optional features that should be present if loadOptional"," is defined. Note: modules are not often loaded this way in YUI 3,"," but this field is still useful to inform the user that certain"," features in the component will require additional dependencies.","@param details.use {Array} features that are included within this module which need to"," be attached automatically when this module is attached. This"," supports the YUI 3 rollup system -- a module with submodules"," defined will need to have the submodules listed in the 'use'"," config. The YUI component build tool does this for you.","@return {YUI} the YUI instance.","@example",""," YUI.add('davglass', function(Y, name) {"," Y.davglass = function() {"," alert('Dav was here!');"," };"," }, '3.4.0', { requires: ['yui-base', 'harley-davidson', 'mt-dew'] });","","*/"," add: function(name, fn, version, details) {"," details = details || {};"," var env = YUI.Env,"," mod = {"," name: name,"," fn: fn,"," version: version,"," details: details"," },"," //Instance hash so we don't apply it to the same instance twice"," applied = {},"," loader, inst,"," i, versions = env.versions;",""," env.mods[name] = mod;"," versions[version] = versions[version] || {};"," versions[version][name] = mod;",""," for (i in instances) {"," if (instances.hasOwnProperty(i)) {"," inst = instances[i];"," if (!applied[inst.id]) {"," applied[inst.id] = true;"," loader = inst.Env._loader;"," if (loader) {"," if (!loader.moduleInfo[name] || loader.moduleInfo[name].temp) {"," loader.addModule(details, name);"," }"," }"," }"," }"," }",""," return this;"," },",""," /**"," * Executes the function associated with each required"," * module, binding the module to the YUI instance."," * @param {Array} r The array of modules to attach"," * @param {Boolean} [moot=false] Don't throw a warning if the module is not attached"," * @method _attach"," * @private"," */"," _attach: function(r, moot) {"," var i, name, mod, details, req, use, after,"," mods = YUI.Env.mods,"," aliases = YUI.Env.aliases,"," Y = this, j,"," cache = YUI.Env._renderedMods,"," loader = Y.Env._loader,"," done = Y.Env._attached,"," len = r.length, loader, def, go,"," c = [];",""," //Check for conditional modules (in a second+ instance) and add their requirements"," //TODO I hate this entire method, it needs to be fixed ASAP (3.5.0) ^davglass"," for (i = 0; i < len; i++) {"," name = r[i];"," mod = mods[name];"," c.push(name);"," if (loader && loader.conditions[name]) {"," for (j in loader.conditions[name]) {"," if (loader.conditions[name].hasOwnProperty(j)) {"," def = loader.conditions[name][j];"," go = def && ((def.ua && Y.UA[def.ua]) || (def.test && def.test(Y)));"," if (go) {"," c.push(def.name);"," }"," }"," }"," }"," }"," r = c;"," len = r.length;",""," for (i = 0; i < len; i++) {"," if (!done[r[i]]) {"," name = r[i];"," mod = mods[name];",""," if (aliases && aliases[name] && !mod) {"," Y._attach(aliases[name]);"," continue;"," }"," if (!mod) {"," if (loader && loader.moduleInfo[name]) {"," mod = loader.moduleInfo[name];"," moot = true;"," }","",""," //if (!loader || !loader.moduleInfo[name]) {"," //if ((!loader || !loader.moduleInfo[name]) && !moot) {"," if (!moot && name) {"," if ((name.indexOf('skin-') === -1) && (name.indexOf('css') === -1)) {"," Y.Env._missed.push(name);"," Y.Env._missed = Y.Array.dedupe(Y.Env._missed);"," Y.message('NOT loaded: ' + name, 'warn', 'yui');"," }"," }"," } else {"," done[name] = true;"," //Don't like this, but in case a mod was asked for once, then we fetch it"," //We need to remove it from the missed list ^davglass"," for (j = 0; j < Y.Env._missed.length; j++) {"," if (Y.Env._missed[j] === name) {"," Y.message('Found: ' + name + ' (was reported as missing earlier)', 'warn', 'yui');"," Y.Env._missed.splice(j, 1);"," }"," }"," /*"," If it's a temp module, we need to redo it's requirements if it's already loaded"," since it may have been loaded by another instance and it's dependencies might"," have been redefined inside the fetched file."," */"," if (loader && cache && cache[name] && cache[name].temp) {"," loader.getRequires(cache[name]);"," req = [];"," for (j in loader.moduleInfo[name].expanded_map) {"," if (loader.moduleInfo[name].expanded_map.hasOwnProperty(j)) {"," req.push(j);"," }"," }"," Y._attach(req);"," }"," "," details = mod.details;"," req = details.requires;"," use = details.use;"," after = details.after;"," //Force Intl load if there is a language (Loader logic) @todo fix this shit"," if (details.lang) {"," req = req || [];"," req.unshift('intl');"," }",""," if (req) {"," for (j = 0; j < req.length; j++) {"," if (!done[req[j]]) {"," if (!Y._attach(req)) {"," return false;"," }"," break;"," }"," }"," }",""," if (after) {"," for (j = 0; j < after.length; j++) {"," if (!done[after[j]]) {"," if (!Y._attach(after, true)) {"," return false;"," }"," break;"," }"," }"," }",""," if (mod.fn) {"," if (Y.config.throwFail) {"," mod.fn(Y, name);"," } else {"," try {"," mod.fn(Y, name);"," } catch (e) {"," Y.error('Attach error: ' + name, e, name);"," return false;"," }"," }"," }",""," if (use) {"," for (j = 0; j < use.length; j++) {"," if (!done[use[j]]) {"," if (!Y._attach(use)) {"," return false;"," }"," break;"," }"," }"," }","","",""," }"," }"," }",""," return true;"," },"," /**"," * Delays the `use` callback until another event has taken place. Like: window.onload, domready, contentready, available."," * @private"," * @method _delayCallback"," * @param {Callback} cb The original `use` callback"," * @param {String|Object} until Either an event (load, domready) or an Object containing event/args keys for contentready/available"," */"," _delayCallback: function(cb, until) {",""," var Y = this,"," mod = ['event-base'];",""," until = (Y.Lang.isObject(until) ? until : { event: until });",""," if (until.event === 'load') {"," mod.push('event-synthetic');"," }",""," return function() {"," var args = arguments;"," Y._use(mod, function() {"," Y.on(until.event, function() {"," args[1].delayUntil = until.event;"," cb.apply(Y, args);"," }, until.args);"," });"," };"," },",""," /**"," * Attaches one or more modules to the YUI instance. When this"," * is executed, the requirements are analyzed, and one of"," * several things can happen:"," *"," * * All requirements are available on the page -- The modules"," * are attached to the instance. If supplied, the use callback"," * is executed synchronously."," *"," * * Modules are missing, the Get utility is not available OR"," * the 'bootstrap' config is false -- A warning is issued about"," * the missing modules and all available modules are attached."," *"," * * Modules are missing, the Loader is not available but the Get"," * utility is and boostrap is not false -- The loader is bootstrapped"," * before doing the following...."," *"," * * Modules are missing and the Loader is available -- The loader"," * expands the dependency tree and fetches missing modules. When"," * the loader is finshed the callback supplied to use is executed"," * asynchronously."," *"," * @method use"," * @param modules* {String|Array} 1-n modules to bind (uses arguments array)."," * @param [callback] {Function} callback function executed when"," * the instance has the required functionality. If included, it"," * must be the last parameter."," * @param callback.Y {YUI} The `YUI` instance created for this sandbox"," * @param callback.status {Object} Object containing `success`, `msg` and `data` properties"," *"," * @example"," * // loads and attaches dd and its dependencies"," * YUI().use('dd', function(Y) {});"," *"," * // loads and attaches dd and node as well as all of their dependencies (since 3.4.0)"," * YUI().use(['dd', 'node'], function(Y) {});"," *"," * // attaches all modules that are available on the page"," * YUI().use('*', function(Y) {});"," *"," * // intrinsic YUI gallery support (since 3.1.0)"," * YUI().use('gallery-yql', function(Y) {});"," *"," * // intrinsic YUI 2in3 support (since 3.1.0)"," * YUI().use('yui2-datatable', function(Y) {});"," *"," * @return {YUI} the YUI instance."," */"," use: function() {"," var args = SLICE.call(arguments, 0),"," callback = args[args.length - 1],"," Y = this,"," i = 0,"," a = [],"," name,"," Env = Y.Env,"," provisioned = true;",""," // The last argument supplied to use can be a load complete callback"," if (Y.Lang.isFunction(callback)) {"," args.pop();"," if (Y.config.delayUntil) {"," callback = Y._delayCallback(callback, Y.config.delayUntil);"," }"," } else {"," callback = null;"," }"," if (Y.Lang.isArray(args[0])) {"," args = args[0];"," }",""," if (Y.config.cacheUse) {"," while ((name = args[i++])) {"," if (!Env._attached[name]) {"," provisioned = false;"," break;"," }"," }",""," if (provisioned) {"," if (args.length) {"," }"," Y._notify(callback, ALREADY_DONE, args);"," return Y;"," }"," }",""," if (Y._loading) {"," Y._useQueue = Y._useQueue || new Y.Queue();"," Y._useQueue.add([args, callback]);"," } else {"," Y._use(args, function(Y, response) {"," Y._notify(callback, response, args);"," });"," }",""," return Y;"," },"," /**"," * Notify handler from Loader for attachment/load errors"," * @method _notify"," * @param callback {Function} The callback to pass to the `Y.config.loadErrorFn`"," * @param response {Object} The response returned from Loader"," * @param args {Array} The aruments passed from Loader"," * @private"," */"," _notify: function(callback, response, args) {"," if (!response.success && this.config.loadErrorFn) {"," this.config.loadErrorFn.call(this, this, callback, response, args);"," } else if (callback) {"," if (this.Env._missed && this.Env._missed.length) {"," response.msg = 'Missing modules: ' + this.Env._missed.join();"," response.success = false;"," }"," if (this.config.throwFail) {"," callback(this, response);"," } else {"," try {"," callback(this, response);"," } catch (e) {"," this.error('use callback error', e, args);"," }"," }"," }"," },",""," /**"," * This private method is called from the `use` method queue. To ensure that only one set of loading"," * logic is performed at a time."," * @method _use"," * @private"," * @param args* {String} 1-n modules to bind (uses arguments array)."," * @param *callback {Function} callback function executed when"," * the instance has the required functionality. If included, it"," * must be the last parameter."," */"," _use: function(args, callback) {",""," if (!this.Array) {"," this._attach(['yui-base']);"," }",""," var len, loader, handleBoot, handleRLS,"," Y = this,"," G_ENV = YUI.Env,"," mods = G_ENV.mods,"," Env = Y.Env,"," used = Env._used,"," aliases = G_ENV.aliases,"," queue = G_ENV._loaderQueue,"," firstArg = args[0],"," YArray = Y.Array,"," config = Y.config,"," boot = config.bootstrap,"," missing = [],"," i,"," r = [],"," ret = true,"," fetchCSS = config.fetchCSS,"," process = function(names, skip) {",""," var i = 0, a = [], name, len, m, req, use;",""," if (!names.length) {"," return;"," }",""," if (aliases) {"," len = names.length;"," for (i = 0; i < len; i++) {"," if (aliases[names[i]] && !mods[names[i]]) {"," a = [].concat(a, aliases[names[i]]);"," } else {"," a.push(names[i]);"," }"," }"," names = a;"," }"," "," len = names.length;"," "," for (i = 0; i < len; i++) {"," name = names[i];"," if (!skip) {"," r.push(name);"," }",""," // only attach a module once"," if (used[name]) {"," continue;"," }"," "," m = mods[name];"," req = null;"," use = null;",""," if (m) {"," used[name] = true;"," req = m.details.requires;"," use = m.details.use;"," } else {"," // CSS files don't register themselves, see if it has"," // been loaded"," if (!G_ENV._loaded[VERSION][name]) {"," missing.push(name);"," } else {"," used[name] = true; // probably css"," }"," }",""," // make sure requirements are attached"," if (req && req.length) {"," process(req);"," }",""," // make sure we grab the submodule dependencies too"," if (use && use.length) {"," process(use, 1);"," }"," }",""," },",""," handleLoader = function(fromLoader) {"," var response = fromLoader || {"," success: true,"," msg: 'not dynamic'"," },"," redo, origMissing,"," ret = true,"," data = response.data;",""," Y._loading = false;",""," if (data) {"," origMissing = missing;"," missing = [];"," r = [];"," process(data);"," redo = missing.length;"," if (redo) {"," if ([].concat(missing).sort().join() =="," origMissing.sort().join()) {"," redo = false;"," }"," }"," }",""," if (redo && data) {"," Y._loading = true;"," Y._use(missing, function() {"," if (Y._attach(data)) {"," Y._notify(callback, response, data);"," }"," });"," } else {"," if (data) {"," ret = Y._attach(data);"," }"," if (ret) {"," Y._notify(callback, response, args);"," }"," }",""," if (Y._useQueue && Y._useQueue.size() && !Y._loading) {"," Y._use.apply(Y, Y._useQueue.next());"," }",""," };","",""," // YUI().use('*'); // bind everything available"," if (firstArg === '*') {"," args = [];"," for (i in mods) {"," if (mods.hasOwnProperty(i)) {"," args.push(i);"," }"," }"," ret = Y._attach(args);"," if (ret) {"," handleLoader();"," }"," return Y;"," }",""," if ((mods.loader || mods['loader-base']) && !Y.Loader) {"," Y._attach(['loader' + ((!mods.loader) ? '-base' : '')]);"," }","",""," // use loader to expand dependencies and sort the"," // requirements if it is available."," if (boot && Y.Loader && args.length) {"," loader = getLoader(Y);"," loader.require(args);"," loader.ignoreRegistered = true;"," loader._boot = true;"," loader.calculate(null, (fetchCSS) ? null : 'js');"," args = loader.sorted;"," loader._boot = false;"," }"," "," process(args);",""," len = missing.length;","",""," if (len) {"," missing = YArray.dedupe(missing);"," len = missing.length;"," }","",""," // dynamic load"," if (boot && len && Y.Loader) {"," Y._loading = true;"," loader = getLoader(Y);"," loader.onEnd = handleLoader;"," loader.context = Y;"," loader.data = args;"," loader.ignoreRegistered = false;"," loader.require(args);"," loader.insert(null, (fetchCSS) ? null : 'js');",""," } else if (boot && len && Y.Get && !Env.bootstrapped) {",""," Y._loading = true;",""," handleBoot = function() {"," Y._loading = false;"," queue.running = false;"," Env.bootstrapped = true;"," G_ENV._bootstrapping = false;"," if (Y._attach(['loader'])) {"," Y._use(args, callback);"," }"," };",""," if (G_ENV._bootstrapping) {"," queue.add(handleBoot);"," } else {"," G_ENV._bootstrapping = true;"," Y.Get.script(config.base + config.loaderPath, {"," onEnd: handleBoot"," });"," }",""," } else {"," ret = Y._attach(args);"," if (ret) {"," handleLoader();"," }"," }",""," return Y;"," },","",""," /**"," Adds a namespace object onto the YUI global if called statically.",""," // creates YUI.your.namespace.here as nested objects"," YUI.namespace(\"your.namespace.here\");",""," If called as a method on a YUI instance, it creates the"," namespace on the instance.",""," // creates Y.property.package"," Y.namespace(\"property.package\");",""," Dots in the input string cause `namespace` to create nested objects for"," each token. If any part of the requested namespace already exists, the"," current object will be left in place. This allows multiple calls to"," `namespace` to preserve existing namespaced properties.",""," If the first token in the namespace string is \"YAHOO\", the token is"," discarded.",""," Be careful with namespace tokens. Reserved words may work in some browsers"," and not others. For instance, the following will fail in some browsers"," because the supported version of JavaScript reserves the word \"long\":",""," Y.namespace(\"really.long.nested.namespace\");",""," Note: If you pass multiple arguments to create multiple namespaces, only"," the last one created is returned from this function.",""," @method namespace"," @param {String} namespace* namespaces to create."," @return {Object} A reference to the last namespace object created."," **/"," namespace: function() {"," var a = arguments, o, i = 0, j, d, arg;",""," for (; i < a.length; i++) {"," o = this; //Reset base object per argument or it will get reused from the last"," arg = a[i];"," if (arg.indexOf(PERIOD) > -1) { //Skip this if no \".\" is present"," d = arg.split(PERIOD);"," for (j = (d[0] == 'YAHOO') ? 1 : 0; j < d.length; j++) {"," o[d[j]] = o[d[j]] || {};"," o = o[d[j]];"," }"," } else {"," o[arg] = o[arg] || {};"," o = o[arg]; //Reset base object to the new object so it's returned"," }"," }"," return o;"," },",""," // this is replaced if the log module is included"," log: NOOP,"," message: NOOP,"," // this is replaced if the dump module is included"," dump: function (o) { return ''+o; },",""," /**"," * Report an error. The reporting mechanism is controlled by"," * the `throwFail` configuration attribute. If throwFail is"," * not specified, the message is written to the Logger, otherwise"," * a JS error is thrown. If an `errorFn` is specified in the config"," * it must return `true` to keep the error from being thrown."," * @method error"," * @param msg {String} the error message."," * @param e {Error|String} Optional JS error that was caught, or an error string."," * @param src Optional additional info (passed to `Y.config.errorFn` and `Y.message`)"," * and `throwFail` is specified, this error will be re-thrown."," * @return {YUI} this YUI instance."," */"," error: function(msg, e, src) {"," //TODO Add check for window.onerror here",""," var Y = this, ret;",""," if (Y.config.errorFn) {"," ret = Y.config.errorFn.apply(Y, arguments);"," }",""," if (!ret) {"," throw (e || new Error(msg));"," } else {"," Y.message(msg, 'error', ''+src); // don't scrub this one"," }",""," return Y;"," },",""," /**"," * Generate an id that is unique among all YUI instances"," * @method guid"," * @param pre {String} optional guid prefix."," * @return {String} the guid."," */"," guid: function(pre) {"," var id = this.Env._guidp + '_' + (++this.Env._uidx);"," return (pre) ? (pre + id) : id;"," },",""," /**"," * Returns a `guid` associated with an object. If the object"," * does not have one, a new one is created unless `readOnly`"," * is specified."," * @method stamp"," * @param o {Object} The object to stamp."," * @param readOnly {Boolean} if `true`, a valid guid will only"," * be returned if the object has one assigned to it."," * @return {String} The object's guid or null."," */"," stamp: function(o, readOnly) {"," var uid;"," if (!o) {"," return o;"," }",""," // IE generates its own unique ID for dom nodes"," // The uniqueID property of a document node returns a new ID"," if (o.uniqueID && o.nodeType && o.nodeType !== 9) {"," uid = o.uniqueID;"," } else {"," uid = (typeof o === 'string') ? o : o._yuid;"," }",""," if (!uid) {"," uid = this.guid();"," if (!readOnly) {"," try {"," o._yuid = uid;"," } catch (e) {"," uid = null;"," }"," }"," }"," return uid;"," },",""," /**"," * Destroys the YUI instance"," * @method destroy"," * @since 3.3.0"," */"," destroy: function() {"," var Y = this;"," if (Y.Event) {"," Y.Event._unload();"," }"," delete instances[Y.id];"," delete Y.Env;"," delete Y.config;"," }",""," /**"," * instanceof check for objects that works around"," * memory leak in IE when the item tested is"," * window/document"," * @method instanceOf"," * @param o {Object} The object to check."," * @param type {Object} The class to check against."," * @since 3.3.0"," */","};",""," YUI.prototype = proto;",""," // inheritance utilities are not available yet"," for (prop in proto) {"," if (proto.hasOwnProperty(prop)) {"," YUI[prop] = proto[prop];"," }"," }",""," /**","Static method on the Global YUI object to apply a config to all YUI instances.","It's main use case is \"mashups\" where several third party scripts are trying to write to","a global YUI config at the same time. This way they can all call `YUI.applyConfig({})` instead of","overwriting other scripts configs.","@static","@since 3.5.0","@method applyConfig","@param {Object} o the configuration object.","@example",""," YUI.applyConfig({"," modules: {"," davglass: {"," fullpath: './davglass.js'"," }"," }"," });",""," YUI.applyConfig({"," modules: {"," foo: {"," fullpath: './foo.js'"," }"," }"," });",""," YUI().use('davglass', function(Y) {"," //Module davglass will be available here.."," });",""," */"," YUI.applyConfig = function(o) {"," if (!o) {"," return;"," }"," //If there is a GlobalConfig, apply it first to set the defaults"," if (YUI.GlobalConfig) {"," this.prototype.applyConfig.call(this, YUI.GlobalConfig);"," }"," //Apply this config to it"," this.prototype.applyConfig.call(this, o);"," //Reset GlobalConfig to the combined config"," YUI.GlobalConfig = this.config;"," };",""," // set up the environment"," YUI._init();",""," if (hasWin) {"," // add a window load event at load time so we can capture"," // the case where it fires before dynamic loading is"," // complete."," add(window, 'load', handleLoad);"," } else {"," handleLoad();"," }",""," YUI.Env.add = add;"," YUI.Env.remove = remove;",""," /*global exports*/"," // Support the CommonJS method for exporting our single global"," if (typeof exports == 'object') {"," exports.YUI = YUI;"," }","","}());","","","/**"," * The config object contains all of the configuration options for"," * the `YUI` instance. This object is supplied by the implementer"," * when instantiating a `YUI` instance. Some properties have default"," * values if they are not supplied by the implementer. This should"," * not be updated directly because some values are cached. Use"," * `applyConfig()` to update the config object on a YUI instance that"," * has already been configured."," *"," * @class config"," * @static"," */","","/**"," * Allows the YUI seed file to fetch the loader component and library"," * metadata to dynamically load additional dependencies."," *"," * @property bootstrap"," * @type boolean"," * @default true"," */","","/**"," * Turns on writing Ylog messages to the browser console."," *"," * @property debug"," * @type boolean"," * @default true"," */","","/**"," * Log to the browser console if debug is on and the browser has a"," * supported console."," *"," * @property useBrowserConsole"," * @type boolean"," * @default true"," */","","/**"," * A hash of log sources that should be logged. If specified, only"," * log messages from these sources will be logged."," *"," * @property logInclude"," * @type object"," */","","/**"," * A hash of log sources that should be not be logged. If specified,"," * all sources are logged if not on this list."," *"," * @property logExclude"," * @type object"," */","","/**"," * Set to true if the yui seed file was dynamically loaded in"," * order to bootstrap components relying on the window load event"," * and the `domready` custom event."," *"," * @property injected"," * @type boolean"," * @default false"," */","","/**"," * If `throwFail` is set, `Y.error` will generate or re-throw a JS Error."," * Otherwise the failure is logged."," *"," * @property throwFail"," * @type boolean"," * @default true"," */","","/**"," * The window/frame that this instance should operate in."," *"," * @property win"," * @type Window"," * @default the window hosting YUI"," */","","/**"," * The document associated with the 'win' configuration."," *"," * @property doc"," * @type Document"," * @default the document hosting YUI"," */","","/**"," * A list of modules that defines the YUI core (overrides the default list)."," *"," * @property core"," * @type Array"," * @default [ get,features,intl-base,yui-log,yui-later,loader-base, loader-rollup, loader-yui3 ]"," */","","/**"," * A list of languages in order of preference. This list is matched against"," * the list of available languages in modules that the YUI instance uses to"," * determine the best possible localization of language sensitive modules."," * Languages are represented using BCP 47 language tags, such as \"en-GB\" for"," * English as used in the United Kingdom, or \"zh-Hans-CN\" for simplified"," * Chinese as used in China. The list can be provided as a comma-separated"," * list or as an array."," *"," * @property lang"," * @type string|string[]"," */","","/**"," * The default date format"," * @property dateFormat"," * @type string"," * @deprecated use configuration in `DataType.Date.format()` instead."," */","","/**"," * The default locale"," * @property locale"," * @type string"," * @deprecated use `config.lang` instead."," */","","/**"," * The default interval when polling in milliseconds."," * @property pollInterval"," * @type int"," * @default 20"," */","","/**"," * The number of dynamic nodes to insert by default before"," * automatically removing them. This applies to script nodes"," * because removing the node will not make the evaluated script"," * unavailable. Dynamic CSS is not auto purged, because removing"," * a linked style sheet will also remove the style definitions."," * @property purgethreshold"," * @type int"," * @default 20"," */","","/**"," * The default interval when polling in milliseconds."," * @property windowResizeDelay"," * @type int"," * @default 40"," */","","/**"," * Base directory for dynamic loading"," * @property base"," * @type string"," */","","/*"," * The secure base dir (not implemented)"," * For dynamic loading."," * @property secureBase"," * @type string"," */","","/**"," * The YUI combo service base dir. Ex: `http://yui.yahooapis.com/combo?`"," * For dynamic loading."," * @property comboBase"," * @type string"," */","","/**"," * The root path to prepend to module path for the combo service."," * Ex: 3.0.0b1/build/"," * For dynamic loading."," * @property root"," * @type string"," */","","/**"," * A filter to apply to result urls. This filter will modify the default"," * path for all modules. The default path for the YUI library is the"," * minified version of the files (e.g., event-min.js). The filter property"," * can be a predefined filter or a custom filter. The valid predefined"," * filters are:"," *
          "," *
          DEBUG
          "," *
          Selects the debug versions of the library (e.g., event-debug.js)."," * This option will automatically include the Logger widget
          "," *
          RAW
          "," *
          Selects the non-minified version of the library (e.g., event.js).
          "," *
          "," * You can also define a custom filter, which must be an object literal"," * containing a search expression and a replace string:"," *"," * myFilter: {"," * 'searchExp': \"-min\\\\.js\","," * 'replaceStr': \"-debug.js\""," * }"," *"," * For dynamic loading."," *"," * @property filter"," * @type string|object"," */","","/**"," * The `skin` config let's you configure application level skin"," * customizations. It contains the following attributes which"," * can be specified to override the defaults:"," *"," * // The default skin, which is automatically applied if not"," * // overriden by a component-specific skin definition."," * // Change this in to apply a different skin globally"," * defaultSkin: 'sam',"," *"," * // This is combined with the loader base property to get"," * // the default root directory for a skin."," * base: 'assets/skins/',"," *"," * // Any component-specific overrides can be specified here,"," * // making it possible to load different skins for different"," * // components. It is possible to load more than one skin"," * // for a given component as well."," * overrides: {"," * slider: ['capsule', 'round']"," * }"," *"," * For dynamic loading."," *"," * @property skin"," */","","/**"," * Hash of per-component filter specification. If specified for a given"," * component, this overrides the filter config."," *"," * For dynamic loading."," *"," * @property filters"," */","","/**"," * Use the YUI combo service to reduce the number of http connections"," * required to load your dependencies. Turning this off will"," * disable combo handling for YUI and all module groups configured"," * with a combo service."," *"," * For dynamic loading."," *"," * @property combine"," * @type boolean"," * @default true if 'base' is not supplied, false if it is."," */","","/**"," * A list of modules that should never be dynamically loaded"," *"," * @property ignore"," * @type string[]"," */","","/**"," * A list of modules that should always be loaded when required, even if already"," * present on the page."," *"," * @property force"," * @type string[]"," */","","/**"," * Node or id for a node that should be used as the insertion point for new"," * nodes. For dynamic loading."," *"," * @property insertBefore"," * @type string"," */","","/**"," * Object literal containing attributes to add to dynamically loaded script"," * nodes."," * @property jsAttributes"," * @type string"," */","","/**"," * Object literal containing attributes to add to dynamically loaded link"," * nodes."," * @property cssAttributes"," * @type string"," */","","/**"," * Number of milliseconds before a timeout occurs when dynamically"," * loading nodes. If not set, there is no timeout."," * @property timeout"," * @type int"," */","","/**"," * Callback for the 'CSSComplete' event. When dynamically loading YUI"," * components with CSS, this property fires when the CSS is finished"," * loading but script loading is still ongoing. This provides an"," * opportunity to enhance the presentation of a loading page a little"," * bit before the entire loading process is done."," *"," * @property onCSS"," * @type function"," */","","/**"," * A hash of module definitions to add to the list of YUI components."," * These components can then be dynamically loaded side by side with"," * YUI via the `use()` method. This is a hash, the key is the module"," * name, and the value is an object literal specifying the metdata"," * for the module. See `Loader.addModule` for the supported module"," * metadata fields. Also see groups, which provides a way to"," * configure the base and combo spec for a set of modules."," *"," * modules: {"," * mymod1: {"," * requires: ['node'],"," * fullpath: '/mymod1/mymod1.js'"," * },"," * mymod2: {"," * requires: ['mymod1'],"," * fullpath: '/mymod2/mymod2.js'"," * },"," * mymod3: '/js/mymod3.js',"," * mycssmod: '/css/mycssmod.css'"," * }"," *"," *"," * @property modules"," * @type object"," */","","/**"," * Aliases are dynamic groups of modules that can be used as"," * shortcuts."," *"," * YUI({"," * aliases: {"," * davglass: [ 'node', 'yql', 'dd' ],"," * mine: [ 'davglass', 'autocomplete']"," * }"," * }).use('mine', function(Y) {"," * //Node, YQL, DD & AutoComplete available here.."," * });"," *"," * @property aliases"," * @type object"," */","","/**"," * A hash of module group definitions. It for each group you"," * can specify a list of modules and the base path and"," * combo spec to use when dynamically loading the modules."," *"," * groups: {"," * yui2: {"," * // specify whether or not this group has a combo service"," * combine: true,"," *"," * // The comboSeperator to use with this group's combo handler"," * comboSep: ';',"," *"," * // The maxURLLength for this server"," * maxURLLength: 500,"," *"," * // the base path for non-combo paths"," * base: 'http://yui.yahooapis.com/2.8.0r4/build/',"," *"," * // the path to the combo service"," * comboBase: 'http://yui.yahooapis.com/combo?',"," *"," * // a fragment to prepend to the path attribute when"," * // when building combo urls"," * root: '2.8.0r4/build/',"," *"," * // the module definitions"," * modules: {"," * yui2_yde: {"," * path: \"yahoo-dom-event/yahoo-dom-event.js\""," * },"," * yui2_anim: {"," * path: \"animation/animation.js\","," * requires: ['yui2_yde']"," * }"," * }"," * }"," * }"," *"," * @property groups"," * @type object"," */","","/**"," * The loader 'path' attribute to the loader itself. This is combined"," * with the 'base' attribute to dynamically load the loader component"," * when boostrapping with the get utility alone."," *"," * @property loaderPath"," * @type string"," * @default loader/loader-min.js"," */","","/**"," * Specifies whether or not YUI().use(...) will attempt to load CSS"," * resources at all. Any truthy value will cause CSS dependencies"," * to load when fetching script. The special value 'force' will"," * cause CSS dependencies to be loaded even if no script is needed."," *"," * @property fetchCSS"," * @type boolean|string"," * @default true"," */","","/**"," * The default gallery version to build gallery module urls"," * @property gallery"," * @type string"," * @since 3.1.0"," */","","/**"," * The default YUI 2 version to build yui2 module urls. This is for"," * intrinsic YUI 2 support via the 2in3 project. Also see the '2in3'"," * config for pulling different revisions of the wrapped YUI 2"," * modules."," * @since 3.1.0"," * @property yui2"," * @type string"," * @default 2.9.0"," */","","/**"," * The 2in3 project is a deployment of the various versions of YUI 2"," * deployed as first-class YUI 3 modules. Eventually, the wrapper"," * for the modules will change (but the underlying YUI 2 code will"," * be the same), and you can select a particular version of"," * the wrapper modules via this config."," * @since 3.1.0"," * @property 2in3"," * @type string"," * @default 4"," */","","/**"," * Alternative console log function for use in environments without"," * a supported native console. The function is executed in the"," * YUI instance context."," * @since 3.1.0"," * @property logFn"," * @type Function"," */","","/**"," * A callback to execute when Y.error is called. It receives the"," * error message and an javascript error object if Y.error was"," * executed because a javascript error was caught. The function"," * is executed in the YUI instance context. Returning `true` from this"," * function will stop the Error from being thrown."," *"," * @since 3.2.0"," * @property errorFn"," * @type Function"," */","","/**"," * A callback to execute when the loader fails to load one or"," * more resource. This could be because of a script load"," * failure. It can also fail if a javascript module fails"," * to register itself, but only when the 'requireRegistration'"," * is true. If this function is defined, the use() callback will"," * only be called when the loader succeeds, otherwise it always"," * executes unless there was a javascript error when attaching"," * a module."," *"," * @since 3.3.0"," * @property loadErrorFn"," * @type Function"," */","","/**"," * When set to true, the YUI loader will expect that all modules"," * it is responsible for loading will be first-class YUI modules"," * that register themselves with the YUI global. If this is"," * set to true, loader will fail if the module registration fails"," * to happen after the script is loaded."," *"," * @since 3.3.0"," * @property requireRegistration"," * @type boolean"," * @default false"," */","","/**"," * Cache serviced use() requests."," * @since 3.3.0"," * @property cacheUse"," * @type boolean"," * @default true"," * @deprecated no longer used"," */","","/**"," * Whether or not YUI should use native ES5 functionality when available for"," * features like `Y.Array.each()`, `Y.Object()`, etc. When `false`, YUI will"," * always use its own fallback implementations instead of relying on ES5"," * functionality, even when it's available."," *"," * @property useNativeES5"," * @type Boolean"," * @default true"," * @since 3.5.0"," */","","/**","Delay the `use` callback until a specific event has passed (`load`, `domready`, `contentready` or `available`)","@property delayUntil","@type String|Object","@since 3.6.0","@example","","You can use `load` or `domready` strings by default:",""," YUI({"," delayUntil: 'domready'"," }, function(Y) {"," //This will not fire until 'domeready'"," });","","Or you can delay until a node is available (with `available` or `contentready`):",""," YUI({"," delayUntil: {"," event: 'available',"," args: '#foo'"," }"," }, function(Y) {"," //This will not fire until '#foo' is "," // available in the DOM"," });"," ","","*/","YUI.add('yui-base', function (Y, NAME) {","","/*"," * YUI stub"," * @module yui"," * @submodule yui-base"," */","/**"," * The YUI module contains the components required for building the YUI"," * seed file. This includes the script loading mechanism, a simple queue,"," * and the core utilities for the library."," * @module yui"," * @submodule yui-base"," */","","/**"," * Provides core language utilites and extensions used throughout YUI."," *"," * @class Lang"," * @static"," */","","var L = Y.Lang || (Y.Lang = {}),","","STRING_PROTO = String.prototype,","TOSTRING = Object.prototype.toString,","","TYPES = {"," 'undefined' : 'undefined',"," 'number' : 'number',"," 'boolean' : 'boolean',"," 'string' : 'string',"," '[object Function]': 'function',"," '[object RegExp]' : 'regexp',"," '[object Array]' : 'array',"," '[object Date]' : 'date',"," '[object Error]' : 'error'","},","","SUBREGEX = /\\{\\s*([^|}]+?)\\s*(?:\\|([^}]*))?\\s*\\}/g,","TRIMREGEX = /^\\s+|\\s+$/g,","NATIVE_FN_REGEX = /\\{\\s*\\[(?:native code|function)\\]\\s*\\}/i;","","// -- Protected Methods --------------------------------------------------------","","/**","Returns `true` if the given function appears to be implemented in native code,","`false` otherwise. Will always return `false` -- even in ES5-capable browsers --","if the `useNativeES5` YUI config option is set to `false`.","","This isn't guaranteed to be 100% accurate and won't work for anything other than","functions, but it can be useful for determining whether a function like","`Array.prototype.forEach` is native or a JS shim provided by another library.","","There's a great article by @kangax discussing certain flaws with this technique:","","","While his points are valid, it's still possible to benefit from this function","as long as it's used carefully and sparingly, and in such a way that false","negatives have minimal consequences. It's used internally to avoid using","potentially broken non-native ES5 shims that have been added to the page by","other libraries.","","@method _isNative","@param {Function} fn Function to test.","@return {Boolean} `true` if _fn_ appears to be native, `false` otherwise.","@static","@protected","@since 3.5.0","**/","L._isNative = function (fn) {"," return !!(Y.config.useNativeES5 && fn && NATIVE_FN_REGEX.test(fn));","};","","// -- Public Methods -----------------------------------------------------------","","/**"," * Determines whether or not the provided item is an array."," *"," * Returns `false` for array-like collections such as the function `arguments`"," * collection or `HTMLElement` collections. Use `Y.Array.test()` if you want to"," * test for an array-like collection."," *"," * @method isArray"," * @param o The object to test."," * @return {boolean} true if o is an array."," * @static"," */","L.isArray = L._isNative(Array.isArray) ? Array.isArray : function (o) {"," return L.type(o) === 'array';","};","","/**"," * Determines whether or not the provided item is a boolean."," * @method isBoolean"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a boolean."," */","L.isBoolean = function(o) {"," return typeof o === 'boolean';","};","","/**"," * Determines whether or not the supplied item is a date instance."," * @method isDate"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a date."," */","L.isDate = function(o) {"," return L.type(o) === 'date' && o.toString() !== 'Invalid Date' && !isNaN(o);","};","","/**"," *

          "," * Determines whether or not the provided item is a function."," * Note: Internet Explorer thinks certain functions are objects:"," *

          "," *"," *
          "," * var obj = document.createElement(\"object\");"," * Y.Lang.isFunction(obj.getAttribute) // reports false in IE"," *  "," * var input = document.createElement(\"input\"); // append to body"," * Y.Lang.isFunction(input.focus) // reports false in IE"," * 
          "," *"," *

          "," * You will have to implement additional tests if these functions"," * matter to you."," *

          "," *"," * @method isFunction"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a function."," */","L.isFunction = function(o) {"," return L.type(o) === 'function';","};","","/**"," * Determines whether or not the provided item is null."," * @method isNull"," * @static"," * @param o The object to test."," * @return {boolean} true if o is null."," */","L.isNull = function(o) {"," return o === null;","};","","/**"," * Determines whether or not the provided item is a legal number."," * @method isNumber"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a number."," */","L.isNumber = function(o) {"," return typeof o === 'number' && isFinite(o);","};","","/**"," * Determines whether or not the provided item is of type object"," * or function. Note that arrays are also objects, so"," * Y.Lang.isObject([]) === true."," * @method isObject"," * @static"," * @param o The object to test."," * @param failfn {boolean} fail if the input is a function."," * @return {boolean} true if o is an object."," * @see isPlainObject"," */","L.isObject = function(o, failfn) {"," var t = typeof o;"," return (o && (t === 'object' ||"," (!failfn && (t === 'function' || L.isFunction(o))))) || false;","};","","/**"," * Determines whether or not the provided item is a string."," * @method isString"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a string."," */","L.isString = function(o) {"," return typeof o === 'string';","};","","/**"," * Determines whether or not the provided item is undefined."," * @method isUndefined"," * @static"," * @param o The object to test."," * @return {boolean} true if o is undefined."," */","L.isUndefined = function(o) {"," return typeof o === 'undefined';","};","","/**"," * A convenience method for detecting a legitimate non-null value."," * Returns false for null/undefined/NaN, true for other values,"," * including 0/false/''"," * @method isValue"," * @static"," * @param o The item to test."," * @return {boolean} true if it is not null/undefined/NaN || false."," */","L.isValue = function(o) {"," var t = L.type(o);",""," switch (t) {"," case 'number':"," return isFinite(o);",""," case 'null': // fallthru"," case 'undefined':"," return false;",""," default:"," return !!t;"," }","};","","/**"," * Returns the current time in milliseconds."," *"," * @method now"," * @return {Number} Current time in milliseconds."," * @static"," * @since 3.3.0"," */","L.now = Date.now || function () {"," return new Date().getTime();","};","","/**"," * Lightweight version of Y.substitute. Uses the same template"," * structure as Y.substitute, but doesn't support recursion,"," * auto-object coersion, or formats."," * @method sub"," * @param {string} s String to be modified."," * @param {object} o Object containing replacement values."," * @return {string} the substitute result."," * @static"," * @since 3.2.0"," */","L.sub = function(s, o) {"," return s.replace ? s.replace(SUBREGEX, function (match, key) {"," return L.isUndefined(o[key]) ? match : o[key];"," }) : s;","};","","/**"," * Returns a string without any leading or trailing whitespace. If"," * the input is not a string, the input will be returned untouched."," * @method trim"," * @static"," * @param s {string} the string to trim."," * @return {string} the trimmed string."," */","L.trim = STRING_PROTO.trim ? function(s) {"," return s && s.trim ? s.trim() : s;","} : function (s) {"," try {"," return s.replace(TRIMREGEX, '');"," } catch (e) {"," return s;"," }","};","","/**"," * Returns a string without any leading whitespace."," * @method trimLeft"," * @static"," * @param s {string} the string to trim."," * @return {string} the trimmed string."," */","L.trimLeft = STRING_PROTO.trimLeft ? function (s) {"," return s.trimLeft();","} : function (s) {"," return s.replace(/^\\s+/, '');","};","","/**"," * Returns a string without any trailing whitespace."," * @method trimRight"," * @static"," * @param s {string} the string to trim."," * @return {string} the trimmed string."," */","L.trimRight = STRING_PROTO.trimRight ? function (s) {"," return s.trimRight();","} : function (s) {"," return s.replace(/\\s+$/, '');","};","","/**","Returns one of the following strings, representing the type of the item passed","in:",""," * \"array\""," * \"boolean\""," * \"date\""," * \"error\""," * \"function\""," * \"null\""," * \"number\""," * \"object\""," * \"regexp\""," * \"string\""," * \"undefined\"","","Known issues:",""," * `typeof HTMLElementCollection` returns function in Safari, but"," `Y.Lang.type()` reports \"object\", which could be a good thing --"," but it actually caused the logic in Y.Lang.isObject to fail.","","@method type","@param o the item to test.","@return {string} the detected type.","@static","**/","L.type = function(o) {"," return TYPES[typeof o] || TYPES[TOSTRING.call(o)] || (o ? 'object' : 'null');","};","/**","@module yui","@submodule yui-base","*/","","var Lang = Y.Lang,"," Native = Array.prototype,",""," hasOwn = Object.prototype.hasOwnProperty;","","/**","Provides utility methods for working with arrays. Additional array helpers can","be found in the `collection` and `array-extras` modules.","","`Y.Array(thing)` returns a native array created from _thing_. Depending on","_thing_'s type, one of the following will happen:",""," * Arrays are returned unmodified unless a non-zero _startIndex_ is"," specified."," * Array-like collections (see `Array.test()`) are converted to arrays."," * For everything else, a new array is created with _thing_ as the sole"," item.","","Note: elements that are also collections, such as `` and ``, to be array-like.","","@method test","@param {Object} obj Object to test.","@return {Number} A number indicating the results of the test:",""," * 0: Neither an array nor an array-like collection."," * 1: Real array."," * 2: Array-like collection.","","@static","**/","YArray.test = function (obj) {"," var result = 0;",""," if (Lang.isArray(obj)) {"," result = 1;"," } else if (Lang.isObject(obj)) {"," try {"," // indexed, but no tagName (element) or scrollTo/document (window. From DOM.isWindow test which we can't use here),"," // or functions without apply/call (Safari"," // HTMLElementCollection bug)."," if ('length' in obj && !obj.tagName && !(obj.scrollTo && obj.document) && !obj.apply) {"," result = 2;"," }"," } catch (ex) {}"," }",""," return result;","};","/**"," * The YUI module contains the components required for building the YUI"," * seed file. This includes the script loading mechanism, a simple queue,"," * and the core utilities for the library."," * @module yui"," * @submodule yui-base"," */","","/**"," * A simple FIFO queue. Items are added to the Queue with add(1..n items) and"," * removed using next()."," *"," * @class Queue"," * @constructor"," * @param {MIXED} item* 0..n items to seed the queue."," */","function Queue() {"," this._init();"," this.add.apply(this, arguments);","}","","Queue.prototype = {"," /**"," * Initialize the queue"," *"," * @method _init"," * @protected"," */"," _init: function() {"," /**"," * The collection of enqueued items"," *"," * @property _q"," * @type Array"," * @protected"," */"," this._q = [];"," },",""," /**"," * Get the next item in the queue. FIFO support"," *"," * @method next"," * @return {MIXED} the next item in the queue."," */"," next: function() {"," return this._q.shift();"," },",""," /**"," * Get the last in the queue. LIFO support."," *"," * @method last"," * @return {MIXED} the last item in the queue."," */"," last: function() {"," return this._q.pop();"," },",""," /**"," * Add 0..n items to the end of the queue."," *"," * @method add"," * @param {MIXED} item* 0..n items."," * @return {object} this queue."," */"," add: function() {"," this._q.push.apply(this._q, arguments);",""," return this;"," },",""," /**"," * Returns the current number of queued items."," *"," * @method size"," * @return {Number} The size."," */"," size: function() {"," return this._q.length;"," }","};","","Y.Queue = Queue;","","YUI.Env._loaderQueue = YUI.Env._loaderQueue || new Queue();","","/**","The YUI module contains the components required for building the YUI seed file.","This includes the script loading mechanism, a simple queue, and the core","utilities for the library.","","@module yui","@submodule yui-base","**/","","var CACHED_DELIMITER = '__',",""," hasOwn = Object.prototype.hasOwnProperty,"," isObject = Y.Lang.isObject;","","/**","Returns a wrapper for a function which caches the return value of that function,","keyed off of the combined string representation of the argument values provided","when the wrapper is called.","","Calling this function again with the same arguments will return the cached value","rather than executing the wrapped function.","","Note that since the cache is keyed off of the string representation of arguments","passed to the wrapper function, arguments that aren't strings and don't provide","a meaningful `toString()` method may result in unexpected caching behavior. For","example, the objects `{}` and `{foo: 'bar'}` would both be converted to the","string `[object Object]` when used as a cache key.","","@method cached","@param {Function} source The function to memoize.","@param {Object} [cache={}] Object in which to store cached values. You may seed"," this object with pre-existing cached values if desired.","@param {any} [refetch] If supplied, this value is compared with the cached value"," using a `==` comparison. If the values are equal, the wrapped function is"," executed again even though a cached value exists.","@return {Function} Wrapped function.","@for YUI","**/","Y.cached = function (source, cache, refetch) {"," cache || (cache = {});",""," return function (arg) {"," var key = arguments.length > 1 ?"," Array.prototype.join.call(arguments, CACHED_DELIMITER) :"," String(arg);",""," if (!(key in cache) || (refetch && cache[key] == refetch)) {"," cache[key] = source.apply(source, arguments);"," }",""," return cache[key];"," };","};","","/**","Returns the `location` object from the window/frame in which this YUI instance","operates, or `undefined` when executing in a non-browser environment","(e.g. Node.js).","","It is _not_ recommended to hold references to the `window.location` object","outside of the scope of a function in which its properties are being accessed or","its methods are being called. This is because of a nasty bug/issue that exists","in both Safari and MobileSafari browsers:","[WebKit Bug 34679](https://bugs.webkit.org/show_bug.cgi?id=34679).","","@method getLocation","@return {location} The `location` object from the window/frame in which this YUI"," instance operates.","@since 3.5.0","**/","Y.getLocation = function () {"," // It is safer to look this up every time because yui-base is attached to a"," // YUI instance before a user's config is applied; i.e. `Y.config.win` does"," // not point the correct window object when this file is loaded."," var win = Y.config.win;",""," // It is not safe to hold a reference to the `location` object outside the"," // scope in which it is being used. The WebKit engine used in Safari and"," // MobileSafari will \"disconnect\" the `location` object from the `window`"," // when a page is restored from back/forward history cache."," return win && win.location;","};","","/**","Returns a new object containing all of the properties of all the supplied","objects. The properties from later objects will overwrite those in earlier","objects.","","Passing in a single object will create a shallow copy of it. For a deep copy,","use `clone()`.","","@method merge","@param {Object} objects* One or more objects to merge.","@return {Object} A new merged object.","**/","Y.merge = function () {"," var i = 0,"," len = arguments.length,"," result = {},"," key,"," obj;",""," for (; i < len; ++i) {"," obj = arguments[i];",""," for (key in obj) {"," if (hasOwn.call(obj, key)) {"," result[key] = obj[key];"," }"," }"," }",""," return result;","};","","/**","Mixes _supplier_'s properties into _receiver_.","","Properties on _receiver_ or _receiver_'s prototype will not be overwritten or","shadowed unless the _overwrite_ parameter is `true`, and will not be merged","unless the _merge_ parameter is `true`.","","In the default mode (0), only properties the supplier owns are copied (prototype","properties are not copied). The following copying modes are available:",""," * `0`: _Default_. Object to object."," * `1`: Prototype to prototype."," * `2`: Prototype to prototype and object to object."," * `3`: Prototype to object."," * `4`: Object to prototype.","","@method mix","@param {Function|Object} receiver The object or function to receive the mixed"," properties.","@param {Function|Object} supplier The object or function supplying the"," properties to be mixed.","@param {Boolean} [overwrite=false] If `true`, properties that already exist"," on the receiver will be overwritten with properties from the supplier.","@param {String[]} [whitelist] An array of property names to copy. If"," specified, only the whitelisted properties will be copied, and all others"," will be ignored.","@param {Number} [mode=0] Mix mode to use. See above for available modes.","@param {Boolean} [merge=false] If `true`, objects and arrays that already"," exist on the receiver will have the corresponding object/array from the"," supplier merged into them, rather than being skipped or overwritten. When"," both _overwrite_ and _merge_ are `true`, _merge_ takes precedence.","@return {Function|Object|YUI} The receiver, or the YUI instance if the"," specified receiver is falsy.","**/","Y.mix = function(receiver, supplier, overwrite, whitelist, mode, merge) {"," var alwaysOverwrite, exists, from, i, key, len, to;",""," // If no supplier is given, we return the receiver. If no receiver is given,"," // we return Y. Returning Y doesn't make much sense to me, but it's"," // grandfathered in for backcompat reasons."," if (!receiver || !supplier) {"," return receiver || Y;"," }",""," if (mode) {"," // In mode 2 (prototype to prototype and object to object), we recurse"," // once to do the proto to proto mix. The object to object mix will be"," // handled later on."," if (mode === 2) {"," Y.mix(receiver.prototype, supplier.prototype, overwrite,"," whitelist, 0, merge);"," }",""," // Depending on which mode is specified, we may be copying from or to"," // the prototypes of the supplier and receiver."," from = mode === 1 || mode === 3 ? supplier.prototype : supplier;"," to = mode === 1 || mode === 4 ? receiver.prototype : receiver;",""," // If either the supplier or receiver doesn't actually have a"," // prototype property, then we could end up with an undefined `from`"," // or `to`. If that happens, we abort and return the receiver."," if (!from || !to) {"," return receiver;"," }"," } else {"," from = supplier;"," to = receiver;"," }",""," // If `overwrite` is truthy and `merge` is falsy, then we can skip a"," // property existence check on each iteration and save some time."," alwaysOverwrite = overwrite && !merge;",""," if (whitelist) {"," for (i = 0, len = whitelist.length; i < len; ++i) {"," key = whitelist[i];",""," // We call `Object.prototype.hasOwnProperty` instead of calling"," // `hasOwnProperty` on the object itself, since the object's"," // `hasOwnProperty` method may have been overridden or removed."," // Also, some native objects don't implement a `hasOwnProperty`"," // method."," if (!hasOwn.call(from, key)) {"," continue;"," }",""," // The `key in to` check here is (sadly) intentional for backwards"," // compatibility reasons. It prevents undesired shadowing of"," // prototype members on `to`."," exists = alwaysOverwrite ? false : key in to;",""," if (merge && exists && isObject(to[key], true)"," && isObject(from[key], true)) {"," // If we're in merge mode, and the key is present on both"," // objects, and the value on both objects is either an object or"," // an array (but not a function), then we recurse to merge the"," // `from` value into the `to` value instead of overwriting it."," //"," // Note: It's intentional that the whitelist isn't passed to the"," // recursive call here. This is legacy behavior that lots of"," // code still depends on."," Y.mix(to[key], from[key], overwrite, null, 0, merge);"," } else if (overwrite || !exists) {"," // We're not in merge mode, so we'll only copy the `from` value"," // to the `to` value if we're in overwrite mode or if the"," // current key doesn't exist on the `to` object."," to[key] = from[key];"," }"," }"," } else {"," for (key in from) {"," // The code duplication here is for runtime performance reasons."," // Combining whitelist and non-whitelist operations into a single"," // loop or breaking the shared logic out into a function both result"," // in worse performance, and Y.mix is critical enough that the byte"," // tradeoff is worth it."," if (!hasOwn.call(from, key)) {"," continue;"," }",""," // The `key in to` check here is (sadly) intentional for backwards"," // compatibility reasons. It prevents undesired shadowing of"," // prototype members on `to`."," exists = alwaysOverwrite ? false : key in to;",""," if (merge && exists && isObject(to[key], true)"," && isObject(from[key], true)) {"," Y.mix(to[key], from[key], overwrite, null, 0, merge);"," } else if (overwrite || !exists) {"," to[key] = from[key];"," }"," }",""," // If this is an IE browser with the JScript enumeration bug, force"," // enumeration of the buggy properties by making a recursive call with"," // the buggy properties as the whitelist."," if (Y.Object._hasEnumBug) {"," Y.mix(to, from, overwrite, Y.Object._forceEnum, mode, merge);"," }"," }",""," return receiver;","};","/**"," * The YUI module contains the components required for building the YUI"," * seed file. This includes the script loading mechanism, a simple queue,"," * and the core utilities for the library."," * @module yui"," * @submodule yui-base"," */","","/**"," * Adds utilities to the YUI instance for working with objects."," *"," * @class Object"," */","","var Lang = Y.Lang,"," hasOwn = Object.prototype.hasOwnProperty,",""," UNDEFINED, // <-- Note the comma. We're still declaring vars.","","/**"," * Returns a new object that uses _obj_ as its prototype. This method wraps the"," * native ES5 `Object.create()` method if available, but doesn't currently"," * pass through `Object.create()`'s second argument (properties) in order to"," * ensure compatibility with older browsers."," *"," * @method ()"," * @param {Object} obj Prototype object."," * @return {Object} New object using _obj_ as its prototype."," * @static"," */","O = Y.Object = Lang._isNative(Object.create) ? function (obj) {"," // We currently wrap the native Object.create instead of simply aliasing it"," // to ensure consistency with our fallback shim, which currently doesn't"," // support Object.create()'s second argument (properties). Once we have a"," // safe fallback for the properties arg, we can stop wrapping"," // Object.create()."," return Object.create(obj);","} : (function () {"," // Reusable constructor function for the Object.create() shim."," function F() {}",""," // The actual shim."," return function (obj) {"," F.prototype = obj;"," return new F();"," };","}()),","","/**"," * Property names that IE doesn't enumerate in for..in loops, even when they"," * should be enumerable. When `_hasEnumBug` is `true`, it's necessary to"," * manually enumerate these properties."," *"," * @property _forceEnum"," * @type String[]"," * @protected"," * @static"," */","forceEnum = O._forceEnum = ["," 'hasOwnProperty',"," 'isPrototypeOf',"," 'propertyIsEnumerable',"," 'toString',"," 'toLocaleString',"," 'valueOf'","],","","/**"," * `true` if this browser has the JScript enumeration bug that prevents"," * enumeration of the properties named in the `_forceEnum` array, `false`"," * otherwise."," *"," * See:"," * - "," * - "," *"," * @property _hasEnumBug"," * @type Boolean"," * @protected"," * @static"," */","hasEnumBug = O._hasEnumBug = !{valueOf: 0}.propertyIsEnumerable('valueOf'),","","/**"," * `true` if this browser incorrectly considers the `prototype` property of"," * functions to be enumerable. Currently known to affect Opera 11.50."," *"," * @property _hasProtoEnumBug"," * @type Boolean"," * @protected"," * @static"," */","hasProtoEnumBug = O._hasProtoEnumBug = (function () {}).propertyIsEnumerable('prototype'),","","/**"," * Returns `true` if _key_ exists on _obj_, `false` if _key_ doesn't exist or"," * exists only on _obj_'s prototype. This is essentially a safer version of"," * `obj.hasOwnProperty()`."," *"," * @method owns"," * @param {Object} obj Object to test."," * @param {String} key Property name to look for."," * @return {Boolean} `true` if _key_ exists on _obj_, `false` otherwise."," * @static"," */","owns = O.owns = function (obj, key) {"," return !!obj && hasOwn.call(obj, key);","}; // <-- End of var declarations.","","/**"," * Alias for `owns()`."," *"," * @method hasKey"," * @param {Object} obj Object to test."," * @param {String} key Property name to look for."," * @return {Boolean} `true` if _key_ exists on _obj_, `false` otherwise."," * @static"," */","O.hasKey = owns;","","/**"," * Returns an array containing the object's enumerable keys. Does not include"," * prototype keys or non-enumerable keys."," *"," * Note that keys are returned in enumeration order (that is, in the same order"," * that they would be enumerated by a `for-in` loop), which may not be the same"," * as the order in which they were defined."," *"," * This method is an alias for the native ES5 `Object.keys()` method if"," * available."," *"," * @example"," *"," * Y.Object.keys({a: 'foo', b: 'bar', c: 'baz'});"," * // => ['a', 'b', 'c']"," *"," * @method keys"," * @param {Object} obj An object."," * @return {String[]} Array of keys."," * @static"," */","O.keys = Lang._isNative(Object.keys) ? Object.keys : function (obj) {"," if (!Lang.isObject(obj)) {"," throw new TypeError('Object.keys called on a non-object');"," }",""," var keys = [],"," i, key, len;",""," if (hasProtoEnumBug && typeof obj === 'function') {"," for (key in obj) {"," if (owns(obj, key) && key !== 'prototype') {"," keys.push(key);"," }"," }"," } else {"," for (key in obj) {"," if (owns(obj, key)) {"," keys.push(key);"," }"," }"," }",""," if (hasEnumBug) {"," for (i = 0, len = forceEnum.length; i < len; ++i) {"," key = forceEnum[i];",""," if (owns(obj, key)) {"," keys.push(key);"," }"," }"," }",""," return keys;","};","","/**"," * Returns an array containing the values of the object's enumerable keys."," *"," * Note that values are returned in enumeration order (that is, in the same"," * order that they would be enumerated by a `for-in` loop), which may not be the"," * same as the order in which they were defined."," *"," * @example"," *"," * Y.Object.values({a: 'foo', b: 'bar', c: 'baz'});"," * // => ['foo', 'bar', 'baz']"," *"," * @method values"," * @param {Object} obj An object."," * @return {Array} Array of values."," * @static"," */","O.values = function (obj) {"," var keys = O.keys(obj),"," i = 0,"," len = keys.length,"," values = [];",""," for (; i < len; ++i) {"," values.push(obj[keys[i]]);"," }",""," return values;","};","","/**"," * Returns the number of enumerable keys owned by an object."," *"," * @method size"," * @param {Object} obj An object."," * @return {Number} The object's size."," * @static"," */","O.size = function (obj) {"," try {"," return O.keys(obj).length;"," } catch (ex) {"," return 0; // Legacy behavior for non-objects."," }","};","","/**"," * Returns `true` if the object owns an enumerable property with the specified"," * value."," *"," * @method hasValue"," * @param {Object} obj An object."," * @param {any} value The value to search for."," * @return {Boolean} `true` if _obj_ contains _value_, `false` otherwise."," * @static"," */","O.hasValue = function (obj, value) {"," return Y.Array.indexOf(O.values(obj), value) > -1;","};","","/**"," * Executes a function on each enumerable property in _obj_. The function"," * receives the value, the key, and the object itself as parameters (in that"," * order)."," *"," * By default, only properties owned by _obj_ are enumerated. To include"," * prototype properties, set the _proto_ parameter to `true`."," *"," * @method each"," * @param {Object} obj Object to enumerate."," * @param {Function} fn Function to execute on each enumerable property."," * @param {mixed} fn.value Value of the current property."," * @param {String} fn.key Key of the current property."," * @param {Object} fn.obj Object being enumerated."," * @param {Object} [thisObj] `this` object to use when calling _fn_."," * @param {Boolean} [proto=false] Include prototype properties."," * @return {YUI} the YUI instance."," * @chainable"," * @static"," */","O.each = function (obj, fn, thisObj, proto) {"," var key;",""," for (key in obj) {"," if (proto || owns(obj, key)) {"," fn.call(thisObj || Y, obj[key], key, obj);"," }"," }",""," return Y;","};","","/**"," * Executes a function on each enumerable property in _obj_, but halts if the"," * function returns a truthy value. The function receives the value, the key,"," * and the object itself as paramters (in that order)."," *"," * By default, only properties owned by _obj_ are enumerated. To include"," * prototype properties, set the _proto_ parameter to `true`."," *"," * @method some"," * @param {Object} obj Object to enumerate."," * @param {Function} fn Function to execute on each enumerable property."," * @param {mixed} fn.value Value of the current property."," * @param {String} fn.key Key of the current property."," * @param {Object} fn.obj Object being enumerated."," * @param {Object} [thisObj] `this` object to use when calling _fn_."," * @param {Boolean} [proto=false] Include prototype properties."," * @return {Boolean} `true` if any execution of _fn_ returns a truthy value,"," * `false` otherwise."," * @static"," */","O.some = function (obj, fn, thisObj, proto) {"," var key;",""," for (key in obj) {"," if (proto || owns(obj, key)) {"," if (fn.call(thisObj || Y, obj[key], key, obj)) {"," return true;"," }"," }"," }",""," return false;","};","","/**"," * Retrieves the sub value at the provided path,"," * from the value object provided."," *"," * @method getValue"," * @static"," * @param o The object from which to extract the property value."," * @param path {Array} A path array, specifying the object traversal path"," * from which to obtain the sub value."," * @return {Any} The value stored in the path, undefined if not found,"," * undefined if the source is not an object. Returns the source object"," * if an empty path is provided."," */","O.getValue = function(o, path) {"," if (!Lang.isObject(o)) {"," return UNDEFINED;"," }",""," var i,"," p = Y.Array(path),"," l = p.length;",""," for (i = 0; o !== UNDEFINED && i < l; i++) {"," o = o[p[i]];"," }",""," return o;","};","","/**"," * Sets the sub-attribute value at the provided path on the"," * value object. Returns the modified value object, or"," * undefined if the path is invalid."," *"," * @method setValue"," * @static"," * @param o The object on which to set the sub value."," * @param path {Array} A path array, specifying the object traversal path"," * at which to set the sub value."," * @param val {Any} The new value for the sub-attribute."," * @return {Object} The modified object, with the new sub value set, or"," * undefined, if the path was invalid."," */","O.setValue = function(o, path, val) {"," var i,"," p = Y.Array(path),"," leafIdx = p.length - 1,"," ref = o;",""," if (leafIdx >= 0) {"," for (i = 0; ref !== UNDEFINED && i < leafIdx; i++) {"," ref = ref[p[i]];"," }",""," if (ref !== UNDEFINED) {"," ref[p[i]] = val;"," } else {"," return UNDEFINED;"," }"," }",""," return o;","};","","/**"," * Returns `true` if the object has no enumerable properties of its own."," *"," * @method isEmpty"," * @param {Object} obj An object."," * @return {Boolean} `true` if the object is empty."," * @static"," * @since 3.2.0"," */","O.isEmpty = function (obj) {"," return !O.keys(Object(obj)).length;","};","/**"," * The YUI module contains the components required for building the YUI seed"," * file. This includes the script loading mechanism, a simple queue, and the"," * core utilities for the library."," * @module yui"," * @submodule yui-base"," */","","/**"," * YUI user agent detection."," * Do not fork for a browser if it can be avoided. Use feature detection when"," * you can. Use the user agent as a last resort. For all fields listed"," * as @type float, UA stores a version number for the browser engine,"," * 0 otherwise. This value may or may not map to the version number of"," * the browser using the engine. The value is presented as a float so"," * that it can easily be used for boolean evaluation as well as for"," * looking for a particular range of versions. Because of this,"," * some of the granularity of the version info may be lost. The fields that"," * are @type string default to null. The API docs list the values that"," * these fields can have."," * @class UA"," * @static"," */","","/**","* Static method on `YUI.Env` for parsing a UA string. Called at instantiation","* to populate `Y.UA`.","*","* @static","* @method parseUA","* @param {String} [subUA=navigator.userAgent] UA string to parse","* @return {Object} The Y.UA object","*/","YUI.Env.parseUA = function(subUA) {",""," var numberify = function(s) {"," var c = 0;"," return parseFloat(s.replace(/\\./g, function() {"," return (c++ === 1) ? '' : '.';"," }));"," },",""," win = Y.config.win,",""," nav = win && win.navigator,",""," o = {",""," /**"," * Internet Explorer version number or 0. Example: 6"," * @property ie"," * @type float"," * @static"," */"," ie: 0,",""," /**"," * Opera version number or 0. Example: 9.2"," * @property opera"," * @type float"," * @static"," */"," opera: 0,",""," /**"," * Gecko engine revision number. Will evaluate to 1 if Gecko"," * is detected but the revision could not be found. Other browsers"," * will be 0. Example: 1.8"," *
          ","         * Firefox 1.0.0.4: 1.7.8   <-- Reports 1.7","         * Firefox 1.5.0.9: 1.8.0.9 <-- 1.8","         * Firefox 2.0.0.3: 1.8.1.3 <-- 1.81","         * Firefox 3.0   <-- 1.9","         * Firefox 3.5   <-- 1.91","         * 
          "," * @property gecko"," * @type float"," * @static"," */"," gecko: 0,",""," /**"," * AppleWebKit version. KHTML browsers that are not WebKit browsers"," * will evaluate to 1, other browsers 0. Example: 418.9"," *
          ","         * Safari 1.3.2 (312.6): 312.8.1 <-- Reports 312.8 -- currently the","         *                                   latest available for Mac OSX 10.3.","         * Safari 2.0.2:         416     <-- hasOwnProperty introduced","         * Safari 2.0.4:         418     <-- preventDefault fixed","         * Safari 2.0.4 (419.3): 418.9.1 <-- One version of Safari may run","         *                                   different versions of webkit","         * Safari 2.0.4 (419.3): 419     <-- Tiger installations that have been","         *                                   updated, but not updated","         *                                   to the latest patch.","         * Webkit 212 nightly:   522+    <-- Safari 3.0 precursor (with native","         * SVG and many major issues fixed).","         * Safari 3.0.4 (523.12) 523.12  <-- First Tiger release - automatic","         * update from 2.x via the 10.4.11 OS patch.","         * Webkit nightly 1/2008:525+    <-- Supports DOMContentLoaded event.","         *                                   yahoo.com user agent hack removed.","         * 
          "," * http://en.wikipedia.org/wiki/Safari_version_history"," * @property webkit"," * @type float"," * @static"," */"," webkit: 0,",""," /**"," * Safari will be detected as webkit, but this property will also"," * be populated with the Safari version number"," * @property safari"," * @type float"," * @static"," */"," safari: 0,",""," /**"," * Chrome will be detected as webkit, but this property will also"," * be populated with the Chrome version number"," * @property chrome"," * @type float"," * @static"," */"," chrome: 0,",""," /**"," * The mobile property will be set to a string containing any relevant"," * user agent information when a modern mobile browser is detected."," * Currently limited to Safari on the iPhone/iPod Touch, Nokia N-series"," * devices with the WebKit-based browser, and Opera Mini."," * @property mobile"," * @type string"," * @default null"," * @static"," */"," mobile: null,",""," /**"," * Adobe AIR version number or 0. Only populated if webkit is detected."," * Example: 1.0"," * @property air"," * @type float"," */"," air: 0,"," /**"," * PhantomJS version number or 0. Only populated if webkit is detected."," * Example: 1.0"," * @property phantomjs"," * @type float"," */"," phantomjs: 0,"," /**"," * Detects Apple iPad's OS version"," * @property ipad"," * @type float"," * @static"," */"," ipad: 0,"," /**"," * Detects Apple iPhone's OS version"," * @property iphone"," * @type float"," * @static"," */"," iphone: 0,"," /**"," * Detects Apples iPod's OS version"," * @property ipod"," * @type float"," * @static"," */"," ipod: 0,"," /**"," * General truthy check for iPad, iPhone or iPod"," * @property ios"," * @type Boolean"," * @default null"," * @static"," */"," ios: null,"," /**"," * Detects Googles Android OS version"," * @property android"," * @type float"," * @static"," */"," android: 0,"," /**"," * Detects Kindle Silk"," * @property silk"," * @type float"," * @static"," */"," silk: 0,"," /**"," * Detects Kindle Silk Acceleration"," * @property accel"," * @type Boolean"," * @static"," */"," accel: false,"," /**"," * Detects Palms WebOS version"," * @property webos"," * @type float"," * @static"," */"," webos: 0,",""," /**"," * Google Caja version number or 0."," * @property caja"," * @type float"," */"," caja: nav && nav.cajaVersion,",""," /**"," * Set to true if the page appears to be in SSL"," * @property secure"," * @type boolean"," * @static"," */"," secure: false,",""," /**"," * The operating system. Currently only detecting windows or macintosh"," * @property os"," * @type string"," * @default null"," * @static"," */"," os: null,",""," /**"," * The Nodejs Version"," * @property nodejs"," * @type float"," * @default 0"," * @static"," */"," nodejs: 0,"," /*"," * Window8/IE10 Application host environment"," * @property winjs"," * @type Boolean"," * @static"," */"," winjs: !!((typeof Windows !== \"undefined\") && Windows.System),"," /**"," * Are touch/msPointer events available on this device"," * @property touchEnabled"," * @type Boolean"," * @static"," */"," touchEnabled: false"," },",""," ua = subUA || nav && nav.userAgent,",""," loc = win && win.location,",""," href = loc && loc.href,",""," m;",""," /**"," * The User Agent string that was parsed"," * @property userAgent"," * @type String"," * @static"," */"," o.userAgent = ua;","",""," o.secure = href && (href.toLowerCase().indexOf('https') === 0);",""," if (ua) {",""," if ((/windows|win32/i).test(ua)) {"," o.os = 'windows';"," } else if ((/macintosh|mac_powerpc/i).test(ua)) {"," o.os = 'macintosh';"," } else if ((/android/i).test(ua)) {"," o.os = 'android';"," } else if ((/symbos/i).test(ua)) {"," o.os = 'symbos';"," } else if ((/linux/i).test(ua)) {"," o.os = 'linux';"," } else if ((/rhino/i).test(ua)) {"," o.os = 'rhino';"," }",""," // Modern KHTML browsers should qualify as Safari X-Grade"," if ((/KHTML/).test(ua)) {"," o.webkit = 1;"," }"," if ((/IEMobile|XBLWP7/).test(ua)) {"," o.mobile = 'windows';"," }"," if ((/Fennec/).test(ua)) {"," o.mobile = 'gecko';"," }"," // Modern WebKit browsers are at least X-Grade"," m = ua.match(/AppleWebKit\\/([^\\s]*)/);"," if (m && m[1]) {"," o.webkit = numberify(m[1]);"," o.safari = o.webkit;",""," if (/PhantomJS/.test(ua)) {"," m = ua.match(/PhantomJS\\/([^\\s]*)/);"," if (m && m[1]) {"," o.phantomjs = numberify(m[1]);"," }"," }",""," // Mobile browser check"," if (/ Mobile\\//.test(ua) || (/iPad|iPod|iPhone/).test(ua)) {"," o.mobile = 'Apple'; // iPhone or iPod Touch",""," m = ua.match(/OS ([^\\s]*)/);"," if (m && m[1]) {"," m = numberify(m[1].replace('_', '.'));"," }"," o.ios = m;"," o.os = 'ios';"," o.ipad = o.ipod = o.iphone = 0;",""," m = ua.match(/iPad|iPod|iPhone/);"," if (m && m[0]) {"," o[m[0].toLowerCase()] = o.ios;"," }"," } else {"," m = ua.match(/NokiaN[^\\/]*|webOS\\/\\d\\.\\d/);"," if (m) {"," // Nokia N-series, webOS, ex: NokiaN95"," o.mobile = m[0];"," }"," if (/webOS/.test(ua)) {"," o.mobile = 'WebOS';"," m = ua.match(/webOS\\/([^\\s]*);/);"," if (m && m[1]) {"," o.webos = numberify(m[1]);"," }"," }"," if (/ Android/.test(ua)) {"," if (/Mobile/.test(ua)) {"," o.mobile = 'Android';"," }"," m = ua.match(/Android ([^\\s]*);/);"," if (m && m[1]) {"," o.android = numberify(m[1]);"," }",""," }"," if (/Silk/.test(ua)) {"," m = ua.match(/Silk\\/([^\\s]*)\\)/);"," if (m && m[1]) {"," o.silk = numberify(m[1]);"," }"," if (!o.android) {"," o.android = 2.34; //Hack for desktop mode in Kindle"," o.os = 'Android';"," }"," if (/Accelerated=true/.test(ua)) {"," o.accel = true;"," }"," }"," }",""," m = ua.match(/(Chrome|CrMo|CriOS)\\/([^\\s]*)/);"," if (m && m[1] && m[2]) {"," o.chrome = numberify(m[2]); // Chrome"," o.safari = 0; //Reset safari back to 0"," if (m[1] === 'CrMo') {"," o.mobile = 'chrome';"," }"," } else {"," m = ua.match(/AdobeAIR\\/([^\\s]*)/);"," if (m) {"," o.air = m[0]; // Adobe AIR 1.0 or better"," }"," }"," }",""," if (!o.webkit) { // not webkit","// @todo check Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1316; fi; U; ssr)"," if (/Opera/.test(ua)) {"," m = ua.match(/Opera[\\s\\/]([^\\s]*)/);"," if (m && m[1]) {"," o.opera = numberify(m[1]);"," }"," m = ua.match(/Version\\/([^\\s]*)/);"," if (m && m[1]) {"," o.opera = numberify(m[1]); // opera 10+"," }",""," if (/Opera Mobi/.test(ua)) {"," o.mobile = 'opera';"," m = ua.replace('Opera Mobi', '').match(/Opera ([^\\s]*)/);"," if (m && m[1]) {"," o.opera = numberify(m[1]);"," }"," }"," m = ua.match(/Opera Mini[^;]*/);",""," if (m) {"," o.mobile = m[0]; // ex: Opera Mini/2.0.4509/1316"," }"," } else { // not opera or webkit"," m = ua.match(/MSIE\\s([^;]*)/);"," if (m && m[1]) {"," o.ie = numberify(m[1]);"," } else { // not opera, webkit, or ie"," m = ua.match(/Gecko\\/([^\\s]*)/);"," if (m) {"," o.gecko = 1; // Gecko detected, look for revision"," m = ua.match(/rv:([^\\s\\)]*)/);"," if (m && m[1]) {"," o.gecko = numberify(m[1]);"," }"," }"," }"," }"," }"," }",""," //Check for known properties to tell if touch events are enabled on this device or if"," //the number of MSPointer touchpoints on this device is greater than 0."," if (win && nav && !(o.chrome && o.chrome < 6)) {"," o.touchEnabled = ((\"ontouchstart\" in win) || ((\"msMaxTouchPoints\" in nav) && (nav.msMaxTouchPoints > 0)));"," }",""," //It was a parsed UA, do not assign the global value."," if (!subUA) {",""," if (typeof process === 'object') {",""," if (process.versions && process.versions.node) {"," //NodeJS"," o.os = process.platform;"," o.nodejs = numberify(process.versions.node);"," }"," }",""," YUI.Env.UA = o;",""," }",""," return o;","};","","","Y.UA = YUI.Env.UA || YUI.Env.parseUA();","","/**","Performs a simple comparison between two version numbers, accounting for","standard versioning logic such as the fact that \"535.8\" is a lower version than","\"535.24\", even though a simple numerical comparison would indicate that it's","greater. Also accounts for cases such as \"1.1\" vs. \"1.1.0\", which are","considered equivalent.","","Returns -1 if version _a_ is lower than version _b_, 0 if they're equivalent,","1 if _a_ is higher than _b_.","","Versions may be numbers or strings containing numbers and dots. For example,","both `535` and `\"535.8.10\"` are acceptable. A version string containing","non-numeric characters, like `\"535.8.beta\"`, may produce unexpected results.","","@method compareVersions","@param {Number|String} a First version number to compare.","@param {Number|String} b Second version number to compare.","@return -1 if _a_ is lower than _b_, 0 if they're equivalent, 1 if _a_ is"," higher than _b_.","**/","Y.UA.compareVersions = function (a, b) {"," var aPart, aParts, bPart, bParts, i, len;",""," if (a === b) {"," return 0;"," }",""," aParts = (a + '').split('.');"," bParts = (b + '').split('.');",""," for (i = 0, len = Math.max(aParts.length, bParts.length); i < len; ++i) {"," aPart = parseInt(aParts[i], 10);"," bPart = parseInt(bParts[i], 10);",""," isNaN(aPart) && (aPart = 0);"," isNaN(bPart) && (bPart = 0);",""," if (aPart < bPart) {"," return -1;"," }",""," if (aPart > bPart) {"," return 1;"," }"," }",""," return 0;","};","YUI.Env.aliases = {"," \"anim\": [\"anim-base\",\"anim-color\",\"anim-curve\",\"anim-easing\",\"anim-node-plugin\",\"anim-scroll\",\"anim-xy\"],"," \"anim-shape-transform\": [\"anim-shape\"],"," \"app\": [\"app-base\",\"app-content\",\"app-transitions\",\"lazy-model-list\",\"model\",\"model-list\",\"model-sync-rest\",\"router\",\"view\",\"view-node-map\"],"," \"attribute\": [\"attribute-base\",\"attribute-complex\"],"," \"autocomplete\": [\"autocomplete-base\",\"autocomplete-sources\",\"autocomplete-list\",\"autocomplete-plugin\"],"," \"base\": [\"base-base\",\"base-pluginhost\",\"base-build\"],"," \"cache\": [\"cache-base\",\"cache-offline\",\"cache-plugin\"],"," \"collection\": [\"array-extras\",\"arraylist\",\"arraylist-add\",\"arraylist-filter\",\"array-invoke\"],"," \"controller\": [\"router\"],"," \"dataschema\": [\"dataschema-base\",\"dataschema-json\",\"dataschema-xml\",\"dataschema-array\",\"dataschema-text\"],"," \"datasource\": [\"datasource-local\",\"datasource-io\",\"datasource-get\",\"datasource-function\",\"datasource-cache\",\"datasource-jsonschema\",\"datasource-xmlschema\",\"datasource-arrayschema\",\"datasource-textschema\",\"datasource-polling\"],"," \"datatable\": [\"datatable-core\",\"datatable-table\",\"datatable-head\",\"datatable-body\",\"datatable-base\",\"datatable-column-widths\",\"datatable-message\",\"datatable-mutable\",\"datatable-sort\",\"datatable-datasource\"],"," \"datatable-deprecated\": [\"datatable-base-deprecated\",\"datatable-datasource-deprecated\",\"datatable-sort-deprecated\",\"datatable-scroll-deprecated\"],"," \"datatype\": [\"datatype-date\",\"datatype-number\",\"datatype-xml\"],"," \"datatype-date\": [\"datatype-date-parse\",\"datatype-date-format\",\"datatype-date-math\"],"," \"datatype-number\": [\"datatype-number-parse\",\"datatype-number-format\"],"," \"datatype-xml\": [\"datatype-xml-parse\",\"datatype-xml-format\"],"," \"dd\": [\"dd-ddm-base\",\"dd-ddm\",\"dd-ddm-drop\",\"dd-drag\",\"dd-proxy\",\"dd-constrain\",\"dd-drop\",\"dd-scroll\",\"dd-delegate\"],"," \"dom\": [\"dom-base\",\"dom-screen\",\"dom-style\",\"selector-native\",\"selector\"],"," \"editor\": [\"frame\",\"editor-selection\",\"exec-command\",\"editor-base\",\"editor-para\",\"editor-br\",\"editor-bidi\",\"editor-tab\",\"createlink-base\"],"," \"event\": [\"event-base\",\"event-delegate\",\"event-synthetic\",\"event-mousewheel\",\"event-mouseenter\",\"event-key\",\"event-focus\",\"event-resize\",\"event-hover\",\"event-outside\",\"event-touch\",\"event-move\",\"event-flick\",\"event-valuechange\",\"event-tap\"],"," \"event-custom\": [\"event-custom-base\",\"event-custom-complex\"],"," \"event-gestures\": [\"event-flick\",\"event-move\"],"," \"handlebars\": [\"handlebars-compiler\"],"," \"highlight\": [\"highlight-base\",\"highlight-accentfold\"],"," \"history\": [\"history-base\",\"history-hash\",\"history-hash-ie\",\"history-html5\"],"," \"io\": [\"io-base\",\"io-xdr\",\"io-form\",\"io-upload-iframe\",\"io-queue\"],"," \"json\": [\"json-parse\",\"json-stringify\"],"," \"loader\": [\"loader-base\",\"loader-rollup\",\"loader-yui3\"],"," \"node\": [\"node-base\",\"node-event-delegate\",\"node-pluginhost\",\"node-screen\",\"node-style\"],"," \"pluginhost\": [\"pluginhost-base\",\"pluginhost-config\"],"," \"querystring\": [\"querystring-parse\",\"querystring-stringify\"],"," \"recordset\": [\"recordset-base\",\"recordset-sort\",\"recordset-filter\",\"recordset-indexer\"],"," \"resize\": [\"resize-base\",\"resize-proxy\",\"resize-constrain\"],"," \"slider\": [\"slider-base\",\"slider-value-range\",\"clickable-rail\",\"range-slider\"],"," \"text\": [\"text-accentfold\",\"text-wordbreak\"],"," \"widget\": [\"widget-base\",\"widget-htmlparser\",\"widget-skin\",\"widget-uievents\"]","};","","","}, '3.7.3');"]; -/** - * The YUI module contains the components required for building the YUI seed - * file. This includes the script loading mechanism, a simple queue, and - * the core utilities for the library. - * @module yui - * @main yui - * @submodule yui-base - */ - -_yuitest_coverage["build/yui-core/yui-core.js"].lines = {"10":0,"11":0,"54":0,"55":0,"60":0,"64":0,"65":0,"68":0,"96":0,"97":0,"126":0,"127":0,"131":0,"132":0,"136":0,"141":0,"142":0,"145":0,"148":0,"150":0,"153":0,"155":0,"179":0,"180":0,"181":0,"182":0,"186":0,"188":0,"189":0,"191":0,"192":0,"196":0,"197":0,"198":0,"199":0,"203":0,"208":0,"210":0,"211":0,"212":0,"213":0,"214":0,"216":0,"217":0,"219":0,"220":0,"222":0,"224":0,"228":0,"229":0,"230":0,"239":0,"240":0,"241":0,"243":0,"244":0,"247":0,"248":0,"251":0,"263":0,"265":0,"274":0,"275":0,"276":0,"277":0,"278":0,"279":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"286":0,"289":0,"294":0,"295":0,"306":0,"315":0,"326":0,"328":0,"329":0,"375":0,"378":0,"379":0,"383":0,"387":0,"388":0,"390":0,"395":0,"399":0,"403":0,"404":0,"405":0,"406":0,"407":0,"408":0,"409":0,"410":0,"416":0,"421":0,"423":0,"425":0,"426":0,"427":0,"429":0,"431":0,"432":0,"433":0,"435":0,"436":0,"437":0,"441":0,"444":0,"445":0,"449":0,"452":0,"465":0,"466":0,"467":0,"468":0,"469":0,"470":0,"472":0,"476":0,"478":0,"480":0,"481":0,"483":0,"484":0,"495":0,"500":0,"501":0,"502":0,"506":0,"507":0,"509":0,"510":0,"526":0,"527":0,"528":0,"531":0,"532":0,"533":0,"534":0,"535":0,"536":0,"537":0,"538":0,"541":0,"544":0,"583":0,"584":0,"596":0,"597":0,"598":0,"600":0,"601":0,"602":0,"603":0,"604":0,"605":0,"606":0,"607":0,"608":0,"615":0,"627":0,"639":0,"640":0,"641":0,"642":0,"643":0,"644":0,"645":0,"646":0,"647":0,"648":0,"649":0,"655":0,"656":0,"658":0,"659":0,"660":0,"661":0,"663":0,"664":0,"665":0,"667":0,"668":0,"669":0,"670":0,"676":0,"677":0,"678":0,"679":0,"680":0,"684":0,"687":0,"688":0,"689":0,"690":0,"698":0,"699":0,"700":0,"701":0,"702":0,"703":0,"706":0,"709":0,"710":0,"711":0,"712":0,"714":0,"715":0,"716":0,"719":0,"720":0,"721":0,"722":0,"723":0,"725":0,"730":0,"731":0,"732":0,"733":0,"734":0,"736":0,"741":0,"742":0,"743":0,"745":0,"746":0,"748":0,"749":0,"754":0,"755":0,"756":0,"757":0,"758":0,"760":0,"771":0,"782":0,"785":0,"787":0,"788":0,"791":0,"792":0,"793":0,"794":0,"795":0,"796":0,"851":0,"861":0,"862":0,"863":0,"864":0,"867":0,"869":0,"870":0,"873":0,"874":0,"875":0,"876":0,"877":0,"881":0,"882":0,"884":0,"885":0,"889":0,"890":0,"891":0,"893":0,"894":0,"898":0,"909":0,"910":0,"911":0,"912":0,"913":0,"914":0,"916":0,"917":0,"919":0,"920":0,"922":0,"940":0,"941":0,"944":0,"963":0,"965":0,"966":0,"969":0,"970":0,"971":0,"972":0,"973":0,"975":0,"978":0,"981":0,"983":0,"984":0,"985":0,"986":0,"990":0,"991":0,"994":0,"995":0,"996":0,"998":0,"999":0,"1000":0,"1001":0,"1005":0,"1006":0,"1008":0,"1013":0,"1014":0,"1018":0,"1019":0,"1026":0,"1034":0,"1036":0,"1037":0,"1038":0,"1039":0,"1040":0,"1041":0,"1042":0,"1043":0,"1045":0,"1050":0,"1051":0,"1052":0,"1053":0,"1054":0,"1058":0,"1059":0,"1061":0,"1062":0,"1066":0,"1067":0,"1074":0,"1075":0,"1076":0,"1077":0,"1078":0,"1081":0,"1082":0,"1083":0,"1085":0,"1088":0,"1089":0,"1095":0,"1096":0,"1097":0,"1098":0,"1099":0,"1100":0,"1101":0,"1102":0,"1105":0,"1107":0,"1110":0,"1111":0,"1112":0,"1117":0,"1118":0,"1119":0,"1120":0,"1121":0,"1122":0,"1123":0,"1124":0,"1125":0,"1127":0,"1129":0,"1131":0,"1132":0,"1133":0,"1134":0,"1135":0,"1136":0,"1137":0,"1141":0,"1142":0,"1144":0,"1145":0,"1151":0,"1152":0,"1153":0,"1157":0,"1195":0,"1197":0,"1198":0,"1199":0,"1200":0,"1201":0,"1202":0,"1203":0,"1204":0,"1207":0,"1208":0,"1211":0,"1218":0,"1236":0,"1238":0,"1239":0,"1242":0,"1243":0,"1245":0,"1248":0,"1258":0,"1259":0,"1273":0,"1274":0,"1275":0,"1280":0,"1281":0,"1283":0,"1286":0,"1287":0,"1288":0,"1289":0,"1290":0,"1292":0,"1296":0,"1305":0,"1306":0,"1307":0,"1309":0,"1310":0,"1311":0,"1325":0,"1328":0,"1329":0,"1330":0,"1366":0,"1367":0,"1368":0,"1371":0,"1372":0,"1375":0,"1377":0,"1381":0,"1383":0,"1387":0,"1389":0,"1392":0,"1393":0,"1397":0,"1398":0,"1950":0,"1972":0,"2020":0,"2021":0,"2038":0,"2039":0,"2049":0,"2050":0,"2060":0,"2061":0,"2088":0,"2089":0,"2099":0,"2100":0,"2110":0,"2111":0,"2125":0,"2126":0,"2127":0,"2138":0,"2139":0,"2149":0,"2150":0,"2162":0,"2163":0,"2165":0,"2167":0,"2171":0,"2174":0,"2186":0,"2187":0,"2201":0,"2202":0,"2203":0,"2215":0,"2216":0,"2218":0,"2219":0,"2221":0,"2232":0,"2233":0,"2235":0,"2245":0,"2246":0,"2248":0,"2278":0,"2279":0,"2286":0,"2319":0,"2320":0,"2322":0,"2324":0,"2326":0,"2327":0,"2329":0,"2331":0,"2332":0,"2335":0,"2339":0,"2342":0,"2358":0,"2359":0,"2363":0,"2364":0,"2366":0,"2367":0,"2368":0,"2372":0,"2390":0,"2391":0,"2392":0,"2394":0,"2395":0,"2396":0,"2400":0,"2427":0,"2428":0,"2432":0,"2433":0,"2434":0,"2438":0,"2455":0,"2456":0,"2459":0,"2461":0,"2462":0,"2464":0,"2465":0,"2467":0,"2468":0,"2472":0,"2473":0,"2474":0,"2478":0,"2500":0,"2501":0,"2520":0,"2521":0,"2523":0,"2524":0,"2525":0,"2529":0,"2550":0,"2551":0,"2553":0,"2554":0,"2555":0,"2556":0,"2560":0,"2561":0,"2566":0,"2584":0,"2585":0,"2586":0,"2589":0,"2604":0,"2614":0,"2624":0,"2635":0,"2637":0,"2647":0,"2651":0,"2653":0,"2664":0,"2693":0,"2694":0,"2696":0,"2697":0,"2701":0,"2702":0,"2705":0,"2725":0,"2729":0,"2735":0,"2750":0,"2751":0,"2757":0,"2758":0,"2760":0,"2761":0,"2762":0,"2767":0,"2804":0,"2805":0,"2810":0,"2811":0,"2814":0,"2818":0,"2819":0,"2825":0,"2826":0,"2831":0,"2832":0,"2835":0,"2836":0,"2841":0,"2843":0,"2844":0,"2845":0,"2852":0,"2853":0,"2859":0,"2861":0,"2871":0,"2872":0,"2876":0,"2880":0,"2886":0,"2887":0,"2893":0,"2895":0,"2897":0,"2898":0,"2899":0,"2906":0,"2907":0,"2911":0,"2927":0,"2949":0,"2952":0,"2955":0,"2956":0,"2957":0,"3019":0,"3031":0,"3054":0,"3055":0,"3056":0,"3059":0,"3062":0,"3063":0,"3064":0,"3065":0,"3069":0,"3070":0,"3071":0,"3076":0,"3077":0,"3078":0,"3080":0,"3081":0,"3086":0,"3106":0,"3107":0,"3112":0,"3113":0,"3116":0,"3127":0,"3128":0,"3129":0,"3131":0,"3145":0,"3146":0,"3169":0,"3170":0,"3172":0,"3173":0,"3174":0,"3178":0,"3201":0,"3202":0,"3204":0,"3205":0,"3206":0,"3207":0,"3212":0,"3228":0,"3229":0,"3230":0,"3233":0,"3237":0,"3238":0,"3241":0,"3258":0,"3259":0,"3264":0,"3265":0,"3266":0,"3269":0,"3270":0,"3272":0,"3276":0,"3288":0,"3289":0,"3324":0,"3326":0,"3327":0,"3328":0,"3329":0,"3563":0,"3566":0,"3568":0,"3570":0,"3571":0,"3572":0,"3573":0,"3574":0,"3575":0,"3576":0,"3577":0,"3578":0,"3579":0,"3580":0,"3581":0,"3585":0,"3586":0,"3588":0,"3589":0,"3591":0,"3592":0,"3595":0,"3596":0,"3597":0,"3598":0,"3600":0,"3601":0,"3602":0,"3603":0,"3608":0,"3609":0,"3611":0,"3612":0,"3613":0,"3615":0,"3616":0,"3617":0,"3619":0,"3620":0,"3621":0,"3624":0,"3625":0,"3627":0,"3629":0,"3630":0,"3631":0,"3632":0,"3633":0,"3636":0,"3637":0,"3638":0,"3640":0,"3641":0,"3642":0,"3646":0,"3647":0,"3648":0,"3649":0,"3651":0,"3652":0,"3653":0,"3655":0,"3656":0,"3661":0,"3662":0,"3663":0,"3664":0,"3665":0,"3666":0,"3669":0,"3670":0,"3671":0,"3676":0,"3678":0,"3679":0,"3680":0,"3681":0,"3683":0,"3684":0,"3685":0,"3688":0,"3689":0,"3690":0,"3691":0,"3692":0,"3695":0,"3697":0,"3698":0,"3701":0,"3702":0,"3703":0,"3705":0,"3706":0,"3707":0,"3708":0,"3709":0,"3710":0,"3720":0,"3721":0,"3725":0,"3727":0,"3729":0,"3731":0,"3732":0,"3736":0,"3740":0,"3744":0,"3766":0,"3767":0,"3769":0,"3770":0,"3773":0,"3774":0,"3776":0,"3777":0,"3778":0,"3780":0,"3781":0,"3783":0,"3784":0,"3787":0,"3788":0,"3792":0,"3794":0}; -_yuitest_coverage["build/yui-core/yui-core.js"].functions = {"instanceOf:59":0,"YUI:54":0,"add:178":0,"remove:185":0,"handleLoad:195":0,"getLoader:202":0,"clobber:227":0,"applyConfig:261":0,"_config:305":0,"parseBasePath:374":0,"(anonymous 2):398":0,"_init:314":0,"_setup:494":0,"applyTo:525":0,"add:582":0,"_attach:626":0,"(anonymous 5):794":0,"(anonymous 4):793":0,"(anonymous 3):791":0,"_delayCallback:780":0,"(anonymous 6):893":0,"use:850":0,"_notify:908":0,"process:961":0,"(anonymous 7):1052":0,"handleLoader:1025":0,"handleBoot:1131":0,"_use:938":0,"namespace:1194":0,"dump:1218":0,"error:1233":0,"guid:1257":0,"stamp:1272":0,"destroy:1304":0,"applyConfig:1366":0,"(anonymous 1):153":0,"_isNative:2020":0,"isArray:2038":0,"isBoolean:2049":0,"isDate:2060":0,"isFunction:2088":0,"isNull:2099":0,"isNumber:2110":0,"isObject:2125":0,"isString:2138":0,"isUndefined:2149":0,"isValue:2162":0,"(anonymous 9):2186":0,"(anonymous 10):2202":0,"sub:2201":0,"(anonymous 11):2215":0,"}:2217":0,"(anonymous 12):2232":0,"}:2234":0,"(anonymous 13):2245":0,"}:2247":0,"type:2278":0,"YArray:2319":0,"dedupe:2358":0,"(anonymous 14):2390":0,"}:2393":0,"hash:2427":0,"(anonymous 15):2455":0,"}:2457":0,"numericSort:2500":0,"(anonymous 16):2520":0,"}:2522":0,"test:2550":0,"Queue:2584":0,"_init:2596":0,"next:2613":0,"last:2623":0,"add:2634":0,"size:2646":0,"(anonymous 17):2696":0,"cached:2693":0,"getLocation:2725":0,"merge:2750":0,"mix:2804":0,"(anonymous 18):2943":0,"F:2952":0,"(anonymous 20):2955":0,"(anonymous 19):2950":0,"owns:3018":0,"keys:3054":0,"values:3106":0,"size:3127":0,"hasValue:3145":0,"each:3169":0,"some:3201":0,"getValue:3228":0,"setValue:3258":0,"isEmpty:3288":0,"(anonymous 22):3328":0,"numberify:3326":0,"parseUA:3324":0,"compareVersions:3766":0,"(anonymous 8):1950":0}; -_yuitest_coverage["build/yui-core/yui-core.js"].coveredLines = 824; -_yuitest_coverage["build/yui-core/yui-core.js"].coveredFunctions = 98; -_yuitest_coverline("build/yui-core/yui-core.js", 10); -if (typeof YUI != 'undefined') { - _yuitest_coverline("build/yui-core/yui-core.js", 11); -YUI._YUI = YUI; -} - -/** -The YUI global namespace object. If YUI is already defined, the -existing YUI object will not be overwritten so that defined -namespaces are preserved. It is the constructor for the object -the end user interacts with. As indicated below, each instance -has full custom event support, but only if the event system -is available. This is a self-instantiable factory function. You -can invoke it directly like this: - - YUI().use('*', function(Y) { - // ready - }); - -But it also works like this: - - var Y = YUI(); - -Configuring the YUI object: - - YUI({ - debug: true, - combine: false - }).use('node', function(Y) { - //Node is ready to use - }); - -See the API docs for the Config class -for the complete list of supported configuration properties accepted -by the YUI constuctor. - -@class YUI -@constructor -@global -@uses EventTarget -@param [o]* {Object} 0..n optional configuration objects. these values -are store in Y.config. See Config for the list of supported -properties. -*/ - /*global YUI*/ - /*global YUI_config*/ - _yuitest_coverline("build/yui-core/yui-core.js", 54); -var YUI = function() { - _yuitest_coverfunc("build/yui-core/yui-core.js", "YUI", 54); -_yuitest_coverline("build/yui-core/yui-core.js", 55); -var i = 0, - Y = this, - args = arguments, - l = args.length, - instanceOf = function(o, type) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "instanceOf", 59); -_yuitest_coverline("build/yui-core/yui-core.js", 60); -return (o && o.hasOwnProperty && (o instanceof type)); - }, - gconf = (typeof YUI_config !== 'undefined') && YUI_config; - - _yuitest_coverline("build/yui-core/yui-core.js", 64); -if (!(instanceOf(Y, YUI))) { - _yuitest_coverline("build/yui-core/yui-core.js", 65); -Y = new YUI(); - } else { - // set up the core environment - _yuitest_coverline("build/yui-core/yui-core.js", 68); -Y._init(); - - /** - YUI.GlobalConfig is a master configuration that might span - multiple contexts in a non-browser environment. It is applied - first to all instances in all contexts. - @property GlobalConfig - @type {Object} - @global - @static - @example - - - YUI.GlobalConfig = { - filter: 'debug' - }; - - YUI().use('node', function(Y) { - //debug files used here - }); - - YUI({ - filter: 'min' - }).use('node', function(Y) { - //min files used here - }); - - */ - _yuitest_coverline("build/yui-core/yui-core.js", 96); -if (YUI.GlobalConfig) { - _yuitest_coverline("build/yui-core/yui-core.js", 97); -Y.applyConfig(YUI.GlobalConfig); - } - - /** - YUI_config is a page-level config. It is applied to all - instances created on the page. This is applied after - YUI.GlobalConfig, and before the instance level configuration - objects. - @global - @property YUI_config - @type {Object} - @example - - - //Single global var to include before YUI seed file - YUI_config = { - filter: 'debug' - }; - - YUI().use('node', function(Y) { - //debug files used here - }); - - YUI({ - filter: 'min' - }).use('node', function(Y) { - //min files used here - }); - */ - _yuitest_coverline("build/yui-core/yui-core.js", 126); -if (gconf) { - _yuitest_coverline("build/yui-core/yui-core.js", 127); -Y.applyConfig(gconf); - } - - // bind the specified additional modules for this instance - _yuitest_coverline("build/yui-core/yui-core.js", 131); -if (!l) { - _yuitest_coverline("build/yui-core/yui-core.js", 132); -Y._setup(); - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 136); -if (l) { - // Each instance can accept one or more configuration objects. - // These are applied after YUI.GlobalConfig and YUI_Config, - // overriding values set in those config files if there is a ' - // matching property. - _yuitest_coverline("build/yui-core/yui-core.js", 141); -for (; i < l; i++) { - _yuitest_coverline("build/yui-core/yui-core.js", 142); -Y.applyConfig(args[i]); - } - - _yuitest_coverline("build/yui-core/yui-core.js", 145); -Y._setup(); - } - - _yuitest_coverline("build/yui-core/yui-core.js", 148); -Y.instanceOf = instanceOf; - - _yuitest_coverline("build/yui-core/yui-core.js", 150); -return Y; - }; - -_yuitest_coverline("build/yui-core/yui-core.js", 153); -(function() { - - _yuitest_coverfunc("build/yui-core/yui-core.js", "(anonymous 1)", 153); -_yuitest_coverline("build/yui-core/yui-core.js", 155); -var proto, prop, - VERSION = '3.7.3', - PERIOD = '.', - BASE = 'http://yui.yahooapis.com/', - /* - These CSS class names can't be generated by - getClassName since it is not available at the - time they are being used. - */ - DOC_LABEL = 'yui3-js-enabled', - CSS_STAMP_EL = 'yui3-css-stamp', - NOOP = function() {}, - SLICE = Array.prototype.slice, - APPLY_TO_AUTH = { 'io.xdrReady': 1, // the functions applyTo - 'io.xdrResponse': 1, // can call. this should - 'SWF.eventHandler': 1 }, // be done at build time - hasWin = (typeof window != 'undefined'), - win = (hasWin) ? window : null, - doc = (hasWin) ? win.document : null, - docEl = doc && doc.documentElement, - docClass = docEl && docEl.className, - instances = {}, - time = new Date().getTime(), - add = function(el, type, fn, capture) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "add", 178); -_yuitest_coverline("build/yui-core/yui-core.js", 179); -if (el && el.addEventListener) { - _yuitest_coverline("build/yui-core/yui-core.js", 180); -el.addEventListener(type, fn, capture); - } else {_yuitest_coverline("build/yui-core/yui-core.js", 181); -if (el && el.attachEvent) { - _yuitest_coverline("build/yui-core/yui-core.js", 182); -el.attachEvent('on' + type, fn); - }} - }, - remove = function(el, type, fn, capture) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "remove", 185); -_yuitest_coverline("build/yui-core/yui-core.js", 186); -if (el && el.removeEventListener) { - // this can throw an uncaught exception in FF - _yuitest_coverline("build/yui-core/yui-core.js", 188); -try { - _yuitest_coverline("build/yui-core/yui-core.js", 189); -el.removeEventListener(type, fn, capture); - } catch (ex) {} - } else {_yuitest_coverline("build/yui-core/yui-core.js", 191); -if (el && el.detachEvent) { - _yuitest_coverline("build/yui-core/yui-core.js", 192); -el.detachEvent('on' + type, fn); - }} - }, - handleLoad = function() { - _yuitest_coverfunc("build/yui-core/yui-core.js", "handleLoad", 195); -_yuitest_coverline("build/yui-core/yui-core.js", 196); -YUI.Env.windowLoaded = true; - _yuitest_coverline("build/yui-core/yui-core.js", 197); -YUI.Env.DOMReady = true; - _yuitest_coverline("build/yui-core/yui-core.js", 198); -if (hasWin) { - _yuitest_coverline("build/yui-core/yui-core.js", 199); -remove(window, 'load', handleLoad); - } - }, - getLoader = function(Y, o) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "getLoader", 202); -_yuitest_coverline("build/yui-core/yui-core.js", 203); -var loader = Y.Env._loader, - lCore = [ 'loader-base' ], - G_ENV = YUI.Env, - mods = G_ENV.mods; - - _yuitest_coverline("build/yui-core/yui-core.js", 208); -if (loader) { - //loader._config(Y.config); - _yuitest_coverline("build/yui-core/yui-core.js", 210); -loader.ignoreRegistered = false; - _yuitest_coverline("build/yui-core/yui-core.js", 211); -loader.onEnd = null; - _yuitest_coverline("build/yui-core/yui-core.js", 212); -loader.data = null; - _yuitest_coverline("build/yui-core/yui-core.js", 213); -loader.required = []; - _yuitest_coverline("build/yui-core/yui-core.js", 214); -loader.loadType = null; - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 216); -loader = new Y.Loader(Y.config); - _yuitest_coverline("build/yui-core/yui-core.js", 217); -Y.Env._loader = loader; - } - _yuitest_coverline("build/yui-core/yui-core.js", 219); -if (mods && mods.loader) { - _yuitest_coverline("build/yui-core/yui-core.js", 220); -lCore = [].concat(lCore, YUI.Env.loaderExtras); - } - _yuitest_coverline("build/yui-core/yui-core.js", 222); -YUI.Env.core = Y.Array.dedupe([].concat(YUI.Env.core, lCore)); - - _yuitest_coverline("build/yui-core/yui-core.js", 224); -return loader; - }, - - clobber = function(r, s) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "clobber", 227); -_yuitest_coverline("build/yui-core/yui-core.js", 228); -for (var i in s) { - _yuitest_coverline("build/yui-core/yui-core.js", 229); -if (s.hasOwnProperty(i)) { - _yuitest_coverline("build/yui-core/yui-core.js", 230); -r[i] = s[i]; - } - } - }, - - ALREADY_DONE = { success: true }; - -// Stamp the documentElement (HTML) with a class of "yui-loaded" to -// enable styles that need to key off of JS being enabled. -_yuitest_coverline("build/yui-core/yui-core.js", 239); -if (docEl && docClass.indexOf(DOC_LABEL) == -1) { - _yuitest_coverline("build/yui-core/yui-core.js", 240); -if (docClass) { - _yuitest_coverline("build/yui-core/yui-core.js", 241); -docClass += ' '; - } - _yuitest_coverline("build/yui-core/yui-core.js", 243); -docClass += DOC_LABEL; - _yuitest_coverline("build/yui-core/yui-core.js", 244); -docEl.className = docClass; -} - -_yuitest_coverline("build/yui-core/yui-core.js", 247); -if (VERSION.indexOf('@') > -1) { - _yuitest_coverline("build/yui-core/yui-core.js", 248); -VERSION = '3.5.0'; // dev time hack for cdn test -} - -_yuitest_coverline("build/yui-core/yui-core.js", 251); -proto = { - /** - * Applies a new configuration object to the YUI instance config. - * This will merge new group/module definitions, and will also - * update the loader cache if necessary. Updating Y.config directly - * will not update the cache. - * @method applyConfig - * @param {Object} o the configuration object. - * @since 3.2.0 - */ - applyConfig: function(o) { - - _yuitest_coverfunc("build/yui-core/yui-core.js", "applyConfig", 261); -_yuitest_coverline("build/yui-core/yui-core.js", 263); -o = o || NOOP; - - _yuitest_coverline("build/yui-core/yui-core.js", 265); -var attr, - name, - // detail, - config = this.config, - mods = config.modules, - groups = config.groups, - aliases = config.aliases, - loader = this.Env._loader; - - _yuitest_coverline("build/yui-core/yui-core.js", 274); -for (name in o) { - _yuitest_coverline("build/yui-core/yui-core.js", 275); -if (o.hasOwnProperty(name)) { - _yuitest_coverline("build/yui-core/yui-core.js", 276); -attr = o[name]; - _yuitest_coverline("build/yui-core/yui-core.js", 277); -if (mods && name == 'modules') { - _yuitest_coverline("build/yui-core/yui-core.js", 278); -clobber(mods, attr); - } else {_yuitest_coverline("build/yui-core/yui-core.js", 279); -if (aliases && name == 'aliases') { - _yuitest_coverline("build/yui-core/yui-core.js", 280); -clobber(aliases, attr); - } else {_yuitest_coverline("build/yui-core/yui-core.js", 281); -if (groups && name == 'groups') { - _yuitest_coverline("build/yui-core/yui-core.js", 282); -clobber(groups, attr); - } else {_yuitest_coverline("build/yui-core/yui-core.js", 283); -if (name == 'win') { - _yuitest_coverline("build/yui-core/yui-core.js", 284); -config[name] = (attr && attr.contentWindow) || attr; - _yuitest_coverline("build/yui-core/yui-core.js", 285); -config.doc = config[name] ? config[name].document : null; - } else {_yuitest_coverline("build/yui-core/yui-core.js", 286); -if (name == '_yuid') { - // preserve the guid - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 289); -config[name] = attr; - }}}}} - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 294); -if (loader) { - _yuitest_coverline("build/yui-core/yui-core.js", 295); -loader._config(o); - } - - }, - /** - * Old way to apply a config to the instance (calls `applyConfig` under the hood) - * @private - * @method _config - * @param {Object} o The config to apply - */ - _config: function(o) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "_config", 305); -_yuitest_coverline("build/yui-core/yui-core.js", 306); -this.applyConfig(o); - }, - - /** - * Initialize this YUI instance - * @private - * @method _init - */ - _init: function() { - _yuitest_coverfunc("build/yui-core/yui-core.js", "_init", 314); -_yuitest_coverline("build/yui-core/yui-core.js", 315); -var filter, el, - Y = this, - G_ENV = YUI.Env, - Env = Y.Env, - prop; - - /** - * The version number of the YUI instance. - * @property version - * @type string - */ - _yuitest_coverline("build/yui-core/yui-core.js", 326); -Y.version = VERSION; - - _yuitest_coverline("build/yui-core/yui-core.js", 328); -if (!Env) { - _yuitest_coverline("build/yui-core/yui-core.js", 329); -Y.Env = { - core: ['intl-base'], - loaderExtras: ['loader-rollup', 'loader-yui3'], - mods: {}, // flat module map - versions: {}, // version module map - base: BASE, - cdn: BASE + VERSION + '/build/', - // bootstrapped: false, - _idx: 0, - _used: {}, - _attached: {}, - _missed: [], - _yidx: 0, - _uidx: 0, - _guidp: 'y', - _loaded: {}, - // serviced: {}, - // Regex in English: - // I'll start at the \b(simpleyui). - // 1. Look in the test string for "simpleyui" or "yui" or - // "yui-base" or "yui-davglass" or "yui-foobar" that comes after a word break. That is, it - // can't match "foyui" or "i_heart_simpleyui". This can be anywhere in the string. - // 2. After #1 must come a forward slash followed by the string matched in #1, so - // "yui-base/yui-base" or "simpleyui/simpleyui" or "yui-pants/yui-pants". - // 3. The second occurence of the #1 token can optionally be followed by "-debug" or "-min", - // so "yui/yui-min", "yui/yui-debug", "yui-base/yui-base-debug". NOT "yui/yui-tshirt". - // 4. This is followed by ".js", so "yui/yui.js", "simpleyui/simpleyui-min.js" - // 0. Going back to the beginning, now. If all that stuff in 1-4 comes after a "?" in the string, - // then capture the junk between the LAST "&" and the string in 1-4. So - // "blah?foo/yui/yui.js" will capture "foo/" and "blah?some/thing.js&3.3.0/build/yui-davglass/yui-davglass.js" - // will capture "3.3.0/build/" - // - // Regex Exploded: - // (?:\? Find a ? - // (?:[^&]*&) followed by 0..n characters followed by an & - // * in fact, find as many sets of characters followed by a & as you can - // ([^&]*) capture the stuff after the last & in \1 - // )? but it's ok if all this ?junk&more_junk stuff isn't even there - // \b(simpleyui| after a word break find either the string "simpleyui" or - // yui(?:-\w+)? the string "yui" optionally followed by a -, then more characters - // ) and store the simpleyui or yui-* string in \2 - // \/\2 then comes a / followed by the simpleyui or yui-* string in \2 - // (?:-(min|debug))? optionally followed by "-min" or "-debug" - // .js and ending in ".js" - _BASE_RE: /(?:\?(?:[^&]*&)*([^&]*))?\b(simpleyui|yui(?:-\w+)?)\/\2(?:-(min|debug))?\.js/, - parseBasePath: function(src, pattern) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "parseBasePath", 374); -_yuitest_coverline("build/yui-core/yui-core.js", 375); -var match = src.match(pattern), - path, filter; - - _yuitest_coverline("build/yui-core/yui-core.js", 378); -if (match) { - _yuitest_coverline("build/yui-core/yui-core.js", 379); -path = RegExp.leftContext || src.slice(0, src.indexOf(match[0])); - - // this is to set up the path to the loader. The file - // filter for loader should match the yui include. - _yuitest_coverline("build/yui-core/yui-core.js", 383); -filter = match[3]; - - // extract correct path for mixed combo urls - // http://yuilibrary.com/projects/yui3/ticket/2528423 - _yuitest_coverline("build/yui-core/yui-core.js", 387); -if (match[1]) { - _yuitest_coverline("build/yui-core/yui-core.js", 388); -path += '?' + match[1]; - } - _yuitest_coverline("build/yui-core/yui-core.js", 390); -path = { - filter: filter, - path: path - }; - } - _yuitest_coverline("build/yui-core/yui-core.js", 395); -return path; - }, - getBase: G_ENV && G_ENV.getBase || - function(pattern) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "(anonymous 2)", 398); -_yuitest_coverline("build/yui-core/yui-core.js", 399); -var nodes = (doc && doc.getElementsByTagName('script')) || [], - path = Env.cdn, parsed, - i, len, src; - - _yuitest_coverline("build/yui-core/yui-core.js", 403); -for (i = 0, len = nodes.length; i < len; ++i) { - _yuitest_coverline("build/yui-core/yui-core.js", 404); -src = nodes[i].src; - _yuitest_coverline("build/yui-core/yui-core.js", 405); -if (src) { - _yuitest_coverline("build/yui-core/yui-core.js", 406); -parsed = Y.Env.parseBasePath(src, pattern); - _yuitest_coverline("build/yui-core/yui-core.js", 407); -if (parsed) { - _yuitest_coverline("build/yui-core/yui-core.js", 408); -filter = parsed.filter; - _yuitest_coverline("build/yui-core/yui-core.js", 409); -path = parsed.path; - _yuitest_coverline("build/yui-core/yui-core.js", 410); -break; - } - } - } - - // use CDN default - _yuitest_coverline("build/yui-core/yui-core.js", 416); -return path; - } - - }; - - _yuitest_coverline("build/yui-core/yui-core.js", 421); -Env = Y.Env; - - _yuitest_coverline("build/yui-core/yui-core.js", 423); -Env._loaded[VERSION] = {}; - - _yuitest_coverline("build/yui-core/yui-core.js", 425); -if (G_ENV && Y !== YUI) { - _yuitest_coverline("build/yui-core/yui-core.js", 426); -Env._yidx = ++G_ENV._yidx; - _yuitest_coverline("build/yui-core/yui-core.js", 427); -Env._guidp = ('yui_' + VERSION + '_' + - Env._yidx + '_' + time).replace(/\./g, '_').replace(/-/g, '_'); - } else {_yuitest_coverline("build/yui-core/yui-core.js", 429); -if (YUI._YUI) { - - _yuitest_coverline("build/yui-core/yui-core.js", 431); -G_ENV = YUI._YUI.Env; - _yuitest_coverline("build/yui-core/yui-core.js", 432); -Env._yidx += G_ENV._yidx; - _yuitest_coverline("build/yui-core/yui-core.js", 433); -Env._uidx += G_ENV._uidx; - - _yuitest_coverline("build/yui-core/yui-core.js", 435); -for (prop in G_ENV) { - _yuitest_coverline("build/yui-core/yui-core.js", 436); -if (!(prop in Env)) { - _yuitest_coverline("build/yui-core/yui-core.js", 437); -Env[prop] = G_ENV[prop]; - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 441); -delete YUI._YUI; - }} - - _yuitest_coverline("build/yui-core/yui-core.js", 444); -Y.id = Y.stamp(Y); - _yuitest_coverline("build/yui-core/yui-core.js", 445); -instances[Y.id] = Y; - - } - - _yuitest_coverline("build/yui-core/yui-core.js", 449); -Y.constructor = YUI; - - // configuration defaults - _yuitest_coverline("build/yui-core/yui-core.js", 452); -Y.config = Y.config || { - bootstrap: true, - cacheUse: true, - debug: true, - doc: doc, - fetchCSS: true, - throwFail: true, - useBrowserConsole: true, - useNativeES5: true, - win: win - }; - - //Register the CSS stamp element - _yuitest_coverline("build/yui-core/yui-core.js", 465); -if (doc && !doc.getElementById(CSS_STAMP_EL)) { - _yuitest_coverline("build/yui-core/yui-core.js", 466); -el = doc.createElement('div'); - _yuitest_coverline("build/yui-core/yui-core.js", 467); -el.innerHTML = '
          '; - _yuitest_coverline("build/yui-core/yui-core.js", 468); -YUI.Env.cssStampEl = el.firstChild; - _yuitest_coverline("build/yui-core/yui-core.js", 469); -if (doc.body) { - _yuitest_coverline("build/yui-core/yui-core.js", 470); -doc.body.appendChild(YUI.Env.cssStampEl); - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 472); -docEl.insertBefore(YUI.Env.cssStampEl, docEl.firstChild); - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 476); -Y.config.lang = Y.config.lang || 'en-US'; - - _yuitest_coverline("build/yui-core/yui-core.js", 478); -Y.config.base = YUI.config.base || Y.Env.getBase(Y.Env._BASE_RE); - - _yuitest_coverline("build/yui-core/yui-core.js", 480); -if (!filter || (!('mindebug').indexOf(filter))) { - _yuitest_coverline("build/yui-core/yui-core.js", 481); -filter = 'min'; - } - _yuitest_coverline("build/yui-core/yui-core.js", 483); -filter = (filter) ? '-' + filter : filter; - _yuitest_coverline("build/yui-core/yui-core.js", 484); -Y.config.loaderPath = YUI.config.loaderPath || 'loader/loader' + filter + '.js'; - - }, - - /** - * Finishes the instance setup. Attaches whatever modules were defined - * when the yui modules was registered. - * @method _setup - * @private - */ - _setup: function(o) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "_setup", 494); -_yuitest_coverline("build/yui-core/yui-core.js", 495); -var i, Y = this, - core = [], - mods = YUI.Env.mods, - extras = Y.config.core || [].concat(YUI.Env.core); //Clone it.. - - _yuitest_coverline("build/yui-core/yui-core.js", 500); -for (i = 0; i < extras.length; i++) { - _yuitest_coverline("build/yui-core/yui-core.js", 501); -if (mods[extras[i]]) { - _yuitest_coverline("build/yui-core/yui-core.js", 502); -core.push(extras[i]); - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 506); -Y._attach(['yui-base']); - _yuitest_coverline("build/yui-core/yui-core.js", 507); -Y._attach(core); - - _yuitest_coverline("build/yui-core/yui-core.js", 509); -if (Y.Loader) { - _yuitest_coverline("build/yui-core/yui-core.js", 510); -getLoader(Y); - } - - }, - - /** - * Executes a method on a YUI instance with - * the specified id if the specified method is whitelisted. - * @method applyTo - * @param id {String} the YUI instance id. - * @param method {String} the name of the method to exectute. - * Ex: 'Object.keys'. - * @param args {Array} the arguments to apply to the method. - * @return {Object} the return value from the applied method or null. - */ - applyTo: function(id, method, args) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "applyTo", 525); -_yuitest_coverline("build/yui-core/yui-core.js", 526); -if (!(method in APPLY_TO_AUTH)) { - _yuitest_coverline("build/yui-core/yui-core.js", 527); -this.log(method + ': applyTo not allowed', 'warn', 'yui'); - _yuitest_coverline("build/yui-core/yui-core.js", 528); -return null; - } - - _yuitest_coverline("build/yui-core/yui-core.js", 531); -var instance = instances[id], nest, m, i; - _yuitest_coverline("build/yui-core/yui-core.js", 532); -if (instance) { - _yuitest_coverline("build/yui-core/yui-core.js", 533); -nest = method.split('.'); - _yuitest_coverline("build/yui-core/yui-core.js", 534); -m = instance; - _yuitest_coverline("build/yui-core/yui-core.js", 535); -for (i = 0; i < nest.length; i = i + 1) { - _yuitest_coverline("build/yui-core/yui-core.js", 536); -m = m[nest[i]]; - _yuitest_coverline("build/yui-core/yui-core.js", 537); -if (!m) { - _yuitest_coverline("build/yui-core/yui-core.js", 538); -this.log('applyTo not found: ' + method, 'warn', 'yui'); - } - } - _yuitest_coverline("build/yui-core/yui-core.js", 541); -return m && m.apply(instance, args); - } - - _yuitest_coverline("build/yui-core/yui-core.js", 544); -return null; - }, - -/** -Registers a module with the YUI global. The easiest way to create a -first-class YUI module is to use the YUI component -build tool Shifter. - -The build system will produce the `YUI.add` wrapper for your module, along -with any configuration info required for the module. - -@method add -@param name {String} module name. -@param fn {Function} entry point into the module that is used to bind module to the YUI instance. -@param {YUI} fn.Y The YUI instance this module is executed in. -@param {String} fn.name The name of the module -@param version {String} version string. -@param details {Object} optional config data: -@param details.requires {Array} features that must be present before this module can be attached. -@param details.optional {Array} optional features that should be present if loadOptional - is defined. Note: modules are not often loaded this way in YUI 3, - but this field is still useful to inform the user that certain - features in the component will require additional dependencies. -@param details.use {Array} features that are included within this module which need to - be attached automatically when this module is attached. This - supports the YUI 3 rollup system -- a module with submodules - defined will need to have the submodules listed in the 'use' - config. The YUI component build tool does this for you. -@return {YUI} the YUI instance. -@example - - YUI.add('davglass', function(Y, name) { - Y.davglass = function() { - alert('Dav was here!'); - }; - }, '3.4.0', { requires: ['yui-base', 'harley-davidson', 'mt-dew'] }); - -*/ - add: function(name, fn, version, details) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "add", 582); -_yuitest_coverline("build/yui-core/yui-core.js", 583); -details = details || {}; - _yuitest_coverline("build/yui-core/yui-core.js", 584); -var env = YUI.Env, - mod = { - name: name, - fn: fn, - version: version, - details: details - }, - //Instance hash so we don't apply it to the same instance twice - applied = {}, - loader, inst, - i, versions = env.versions; - - _yuitest_coverline("build/yui-core/yui-core.js", 596); -env.mods[name] = mod; - _yuitest_coverline("build/yui-core/yui-core.js", 597); -versions[version] = versions[version] || {}; - _yuitest_coverline("build/yui-core/yui-core.js", 598); -versions[version][name] = mod; - - _yuitest_coverline("build/yui-core/yui-core.js", 600); -for (i in instances) { - _yuitest_coverline("build/yui-core/yui-core.js", 601); -if (instances.hasOwnProperty(i)) { - _yuitest_coverline("build/yui-core/yui-core.js", 602); -inst = instances[i]; - _yuitest_coverline("build/yui-core/yui-core.js", 603); -if (!applied[inst.id]) { - _yuitest_coverline("build/yui-core/yui-core.js", 604); -applied[inst.id] = true; - _yuitest_coverline("build/yui-core/yui-core.js", 605); -loader = inst.Env._loader; - _yuitest_coverline("build/yui-core/yui-core.js", 606); -if (loader) { - _yuitest_coverline("build/yui-core/yui-core.js", 607); -if (!loader.moduleInfo[name] || loader.moduleInfo[name].temp) { - _yuitest_coverline("build/yui-core/yui-core.js", 608); -loader.addModule(details, name); - } - } - } - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 615); -return this; - }, - - /** - * Executes the function associated with each required - * module, binding the module to the YUI instance. - * @param {Array} r The array of modules to attach - * @param {Boolean} [moot=false] Don't throw a warning if the module is not attached - * @method _attach - * @private - */ - _attach: function(r, moot) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "_attach", 626); -_yuitest_coverline("build/yui-core/yui-core.js", 627); -var i, name, mod, details, req, use, after, - mods = YUI.Env.mods, - aliases = YUI.Env.aliases, - Y = this, j, - cache = YUI.Env._renderedMods, - loader = Y.Env._loader, - done = Y.Env._attached, - len = r.length, loader, def, go, - c = []; - - //Check for conditional modules (in a second+ instance) and add their requirements - //TODO I hate this entire method, it needs to be fixed ASAP (3.5.0) ^davglass - _yuitest_coverline("build/yui-core/yui-core.js", 639); -for (i = 0; i < len; i++) { - _yuitest_coverline("build/yui-core/yui-core.js", 640); -name = r[i]; - _yuitest_coverline("build/yui-core/yui-core.js", 641); -mod = mods[name]; - _yuitest_coverline("build/yui-core/yui-core.js", 642); -c.push(name); - _yuitest_coverline("build/yui-core/yui-core.js", 643); -if (loader && loader.conditions[name]) { - _yuitest_coverline("build/yui-core/yui-core.js", 644); -for (j in loader.conditions[name]) { - _yuitest_coverline("build/yui-core/yui-core.js", 645); -if (loader.conditions[name].hasOwnProperty(j)) { - _yuitest_coverline("build/yui-core/yui-core.js", 646); -def = loader.conditions[name][j]; - _yuitest_coverline("build/yui-core/yui-core.js", 647); -go = def && ((def.ua && Y.UA[def.ua]) || (def.test && def.test(Y))); - _yuitest_coverline("build/yui-core/yui-core.js", 648); -if (go) { - _yuitest_coverline("build/yui-core/yui-core.js", 649); -c.push(def.name); - } - } - } - } - } - _yuitest_coverline("build/yui-core/yui-core.js", 655); -r = c; - _yuitest_coverline("build/yui-core/yui-core.js", 656); -len = r.length; - - _yuitest_coverline("build/yui-core/yui-core.js", 658); -for (i = 0; i < len; i++) { - _yuitest_coverline("build/yui-core/yui-core.js", 659); -if (!done[r[i]]) { - _yuitest_coverline("build/yui-core/yui-core.js", 660); -name = r[i]; - _yuitest_coverline("build/yui-core/yui-core.js", 661); -mod = mods[name]; - - _yuitest_coverline("build/yui-core/yui-core.js", 663); -if (aliases && aliases[name] && !mod) { - _yuitest_coverline("build/yui-core/yui-core.js", 664); -Y._attach(aliases[name]); - _yuitest_coverline("build/yui-core/yui-core.js", 665); -continue; - } - _yuitest_coverline("build/yui-core/yui-core.js", 667); -if (!mod) { - _yuitest_coverline("build/yui-core/yui-core.js", 668); -if (loader && loader.moduleInfo[name]) { - _yuitest_coverline("build/yui-core/yui-core.js", 669); -mod = loader.moduleInfo[name]; - _yuitest_coverline("build/yui-core/yui-core.js", 670); -moot = true; - } - - - //if (!loader || !loader.moduleInfo[name]) { - //if ((!loader || !loader.moduleInfo[name]) && !moot) { - _yuitest_coverline("build/yui-core/yui-core.js", 676); -if (!moot && name) { - _yuitest_coverline("build/yui-core/yui-core.js", 677); -if ((name.indexOf('skin-') === -1) && (name.indexOf('css') === -1)) { - _yuitest_coverline("build/yui-core/yui-core.js", 678); -Y.Env._missed.push(name); - _yuitest_coverline("build/yui-core/yui-core.js", 679); -Y.Env._missed = Y.Array.dedupe(Y.Env._missed); - _yuitest_coverline("build/yui-core/yui-core.js", 680); -Y.message('NOT loaded: ' + name, 'warn', 'yui'); - } - } - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 684); -done[name] = true; - //Don't like this, but in case a mod was asked for once, then we fetch it - //We need to remove it from the missed list ^davglass - _yuitest_coverline("build/yui-core/yui-core.js", 687); -for (j = 0; j < Y.Env._missed.length; j++) { - _yuitest_coverline("build/yui-core/yui-core.js", 688); -if (Y.Env._missed[j] === name) { - _yuitest_coverline("build/yui-core/yui-core.js", 689); -Y.message('Found: ' + name + ' (was reported as missing earlier)', 'warn', 'yui'); - _yuitest_coverline("build/yui-core/yui-core.js", 690); -Y.Env._missed.splice(j, 1); - } - } - /* - If it's a temp module, we need to redo it's requirements if it's already loaded - since it may have been loaded by another instance and it's dependencies might - have been redefined inside the fetched file. - */ - _yuitest_coverline("build/yui-core/yui-core.js", 698); -if (loader && cache && cache[name] && cache[name].temp) { - _yuitest_coverline("build/yui-core/yui-core.js", 699); -loader.getRequires(cache[name]); - _yuitest_coverline("build/yui-core/yui-core.js", 700); -req = []; - _yuitest_coverline("build/yui-core/yui-core.js", 701); -for (j in loader.moduleInfo[name].expanded_map) { - _yuitest_coverline("build/yui-core/yui-core.js", 702); -if (loader.moduleInfo[name].expanded_map.hasOwnProperty(j)) { - _yuitest_coverline("build/yui-core/yui-core.js", 703); -req.push(j); - } - } - _yuitest_coverline("build/yui-core/yui-core.js", 706); -Y._attach(req); - } - - _yuitest_coverline("build/yui-core/yui-core.js", 709); -details = mod.details; - _yuitest_coverline("build/yui-core/yui-core.js", 710); -req = details.requires; - _yuitest_coverline("build/yui-core/yui-core.js", 711); -use = details.use; - _yuitest_coverline("build/yui-core/yui-core.js", 712); -after = details.after; - //Force Intl load if there is a language (Loader logic) @todo fix this shit - _yuitest_coverline("build/yui-core/yui-core.js", 714); -if (details.lang) { - _yuitest_coverline("build/yui-core/yui-core.js", 715); -req = req || []; - _yuitest_coverline("build/yui-core/yui-core.js", 716); -req.unshift('intl'); - } - - _yuitest_coverline("build/yui-core/yui-core.js", 719); -if (req) { - _yuitest_coverline("build/yui-core/yui-core.js", 720); -for (j = 0; j < req.length; j++) { - _yuitest_coverline("build/yui-core/yui-core.js", 721); -if (!done[req[j]]) { - _yuitest_coverline("build/yui-core/yui-core.js", 722); -if (!Y._attach(req)) { - _yuitest_coverline("build/yui-core/yui-core.js", 723); -return false; - } - _yuitest_coverline("build/yui-core/yui-core.js", 725); -break; - } - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 730); -if (after) { - _yuitest_coverline("build/yui-core/yui-core.js", 731); -for (j = 0; j < after.length; j++) { - _yuitest_coverline("build/yui-core/yui-core.js", 732); -if (!done[after[j]]) { - _yuitest_coverline("build/yui-core/yui-core.js", 733); -if (!Y._attach(after, true)) { - _yuitest_coverline("build/yui-core/yui-core.js", 734); -return false; - } - _yuitest_coverline("build/yui-core/yui-core.js", 736); -break; - } - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 741); -if (mod.fn) { - _yuitest_coverline("build/yui-core/yui-core.js", 742); -if (Y.config.throwFail) { - _yuitest_coverline("build/yui-core/yui-core.js", 743); -mod.fn(Y, name); - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 745); -try { - _yuitest_coverline("build/yui-core/yui-core.js", 746); -mod.fn(Y, name); - } catch (e) { - _yuitest_coverline("build/yui-core/yui-core.js", 748); -Y.error('Attach error: ' + name, e, name); - _yuitest_coverline("build/yui-core/yui-core.js", 749); -return false; - } - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 754); -if (use) { - _yuitest_coverline("build/yui-core/yui-core.js", 755); -for (j = 0; j < use.length; j++) { - _yuitest_coverline("build/yui-core/yui-core.js", 756); -if (!done[use[j]]) { - _yuitest_coverline("build/yui-core/yui-core.js", 757); -if (!Y._attach(use)) { - _yuitest_coverline("build/yui-core/yui-core.js", 758); -return false; - } - _yuitest_coverline("build/yui-core/yui-core.js", 760); -break; - } - } - } - - - - } - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 771); -return true; - }, - /** - * Delays the `use` callback until another event has taken place. Like: window.onload, domready, contentready, available. - * @private - * @method _delayCallback - * @param {Callback} cb The original `use` callback - * @param {String|Object} until Either an event (load, domready) or an Object containing event/args keys for contentready/available - */ - _delayCallback: function(cb, until) { - - _yuitest_coverfunc("build/yui-core/yui-core.js", "_delayCallback", 780); -_yuitest_coverline("build/yui-core/yui-core.js", 782); -var Y = this, - mod = ['event-base']; - - _yuitest_coverline("build/yui-core/yui-core.js", 785); -until = (Y.Lang.isObject(until) ? until : { event: until }); - - _yuitest_coverline("build/yui-core/yui-core.js", 787); -if (until.event === 'load') { - _yuitest_coverline("build/yui-core/yui-core.js", 788); -mod.push('event-synthetic'); - } - - _yuitest_coverline("build/yui-core/yui-core.js", 791); -return function() { - _yuitest_coverfunc("build/yui-core/yui-core.js", "(anonymous 3)", 791); -_yuitest_coverline("build/yui-core/yui-core.js", 792); -var args = arguments; - _yuitest_coverline("build/yui-core/yui-core.js", 793); -Y._use(mod, function() { - _yuitest_coverfunc("build/yui-core/yui-core.js", "(anonymous 4)", 793); -_yuitest_coverline("build/yui-core/yui-core.js", 794); -Y.on(until.event, function() { - _yuitest_coverfunc("build/yui-core/yui-core.js", "(anonymous 5)", 794); -_yuitest_coverline("build/yui-core/yui-core.js", 795); -args[1].delayUntil = until.event; - _yuitest_coverline("build/yui-core/yui-core.js", 796); -cb.apply(Y, args); - }, until.args); - }); - }; - }, - - /** - * Attaches one or more modules to the YUI instance. When this - * is executed, the requirements are analyzed, and one of - * several things can happen: - * - * * All requirements are available on the page -- The modules - * are attached to the instance. If supplied, the use callback - * is executed synchronously. - * - * * Modules are missing, the Get utility is not available OR - * the 'bootstrap' config is false -- A warning is issued about - * the missing modules and all available modules are attached. - * - * * Modules are missing, the Loader is not available but the Get - * utility is and boostrap is not false -- The loader is bootstrapped - * before doing the following.... - * - * * Modules are missing and the Loader is available -- The loader - * expands the dependency tree and fetches missing modules. When - * the loader is finshed the callback supplied to use is executed - * asynchronously. - * - * @method use - * @param modules* {String|Array} 1-n modules to bind (uses arguments array). - * @param [callback] {Function} callback function executed when - * the instance has the required functionality. If included, it - * must be the last parameter. - * @param callback.Y {YUI} The `YUI` instance created for this sandbox - * @param callback.status {Object} Object containing `success`, `msg` and `data` properties - * - * @example - * // loads and attaches dd and its dependencies - * YUI().use('dd', function(Y) {}); - * - * // loads and attaches dd and node as well as all of their dependencies (since 3.4.0) - * YUI().use(['dd', 'node'], function(Y) {}); - * - * // attaches all modules that are available on the page - * YUI().use('*', function(Y) {}); - * - * // intrinsic YUI gallery support (since 3.1.0) - * YUI().use('gallery-yql', function(Y) {}); - * - * // intrinsic YUI 2in3 support (since 3.1.0) - * YUI().use('yui2-datatable', function(Y) {}); - * - * @return {YUI} the YUI instance. - */ - use: function() { - _yuitest_coverfunc("build/yui-core/yui-core.js", "use", 850); -_yuitest_coverline("build/yui-core/yui-core.js", 851); -var args = SLICE.call(arguments, 0), - callback = args[args.length - 1], - Y = this, - i = 0, - a = [], - name, - Env = Y.Env, - provisioned = true; - - // The last argument supplied to use can be a load complete callback - _yuitest_coverline("build/yui-core/yui-core.js", 861); -if (Y.Lang.isFunction(callback)) { - _yuitest_coverline("build/yui-core/yui-core.js", 862); -args.pop(); - _yuitest_coverline("build/yui-core/yui-core.js", 863); -if (Y.config.delayUntil) { - _yuitest_coverline("build/yui-core/yui-core.js", 864); -callback = Y._delayCallback(callback, Y.config.delayUntil); - } - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 867); -callback = null; - } - _yuitest_coverline("build/yui-core/yui-core.js", 869); -if (Y.Lang.isArray(args[0])) { - _yuitest_coverline("build/yui-core/yui-core.js", 870); -args = args[0]; - } - - _yuitest_coverline("build/yui-core/yui-core.js", 873); -if (Y.config.cacheUse) { - _yuitest_coverline("build/yui-core/yui-core.js", 874); -while ((name = args[i++])) { - _yuitest_coverline("build/yui-core/yui-core.js", 875); -if (!Env._attached[name]) { - _yuitest_coverline("build/yui-core/yui-core.js", 876); -provisioned = false; - _yuitest_coverline("build/yui-core/yui-core.js", 877); -break; - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 881); -if (provisioned) { - _yuitest_coverline("build/yui-core/yui-core.js", 882); -if (args.length) { - } - _yuitest_coverline("build/yui-core/yui-core.js", 884); -Y._notify(callback, ALREADY_DONE, args); - _yuitest_coverline("build/yui-core/yui-core.js", 885); -return Y; - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 889); -if (Y._loading) { - _yuitest_coverline("build/yui-core/yui-core.js", 890); -Y._useQueue = Y._useQueue || new Y.Queue(); - _yuitest_coverline("build/yui-core/yui-core.js", 891); -Y._useQueue.add([args, callback]); - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 893); -Y._use(args, function(Y, response) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "(anonymous 6)", 893); -_yuitest_coverline("build/yui-core/yui-core.js", 894); -Y._notify(callback, response, args); - }); - } - - _yuitest_coverline("build/yui-core/yui-core.js", 898); -return Y; - }, - /** - * Notify handler from Loader for attachment/load errors - * @method _notify - * @param callback {Function} The callback to pass to the `Y.config.loadErrorFn` - * @param response {Object} The response returned from Loader - * @param args {Array} The aruments passed from Loader - * @private - */ - _notify: function(callback, response, args) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "_notify", 908); -_yuitest_coverline("build/yui-core/yui-core.js", 909); -if (!response.success && this.config.loadErrorFn) { - _yuitest_coverline("build/yui-core/yui-core.js", 910); -this.config.loadErrorFn.call(this, this, callback, response, args); - } else {_yuitest_coverline("build/yui-core/yui-core.js", 911); -if (callback) { - _yuitest_coverline("build/yui-core/yui-core.js", 912); -if (this.Env._missed && this.Env._missed.length) { - _yuitest_coverline("build/yui-core/yui-core.js", 913); -response.msg = 'Missing modules: ' + this.Env._missed.join(); - _yuitest_coverline("build/yui-core/yui-core.js", 914); -response.success = false; - } - _yuitest_coverline("build/yui-core/yui-core.js", 916); -if (this.config.throwFail) { - _yuitest_coverline("build/yui-core/yui-core.js", 917); -callback(this, response); - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 919); -try { - _yuitest_coverline("build/yui-core/yui-core.js", 920); -callback(this, response); - } catch (e) { - _yuitest_coverline("build/yui-core/yui-core.js", 922); -this.error('use callback error', e, args); - } - } - }} - }, - - /** - * This private method is called from the `use` method queue. To ensure that only one set of loading - * logic is performed at a time. - * @method _use - * @private - * @param args* {String} 1-n modules to bind (uses arguments array). - * @param *callback {Function} callback function executed when - * the instance has the required functionality. If included, it - * must be the last parameter. - */ - _use: function(args, callback) { - - _yuitest_coverfunc("build/yui-core/yui-core.js", "_use", 938); -_yuitest_coverline("build/yui-core/yui-core.js", 940); -if (!this.Array) { - _yuitest_coverline("build/yui-core/yui-core.js", 941); -this._attach(['yui-base']); - } - - _yuitest_coverline("build/yui-core/yui-core.js", 944); -var len, loader, handleBoot, handleRLS, - Y = this, - G_ENV = YUI.Env, - mods = G_ENV.mods, - Env = Y.Env, - used = Env._used, - aliases = G_ENV.aliases, - queue = G_ENV._loaderQueue, - firstArg = args[0], - YArray = Y.Array, - config = Y.config, - boot = config.bootstrap, - missing = [], - i, - r = [], - ret = true, - fetchCSS = config.fetchCSS, - process = function(names, skip) { - - _yuitest_coverfunc("build/yui-core/yui-core.js", "process", 961); -_yuitest_coverline("build/yui-core/yui-core.js", 963); -var i = 0, a = [], name, len, m, req, use; - - _yuitest_coverline("build/yui-core/yui-core.js", 965); -if (!names.length) { - _yuitest_coverline("build/yui-core/yui-core.js", 966); -return; - } - - _yuitest_coverline("build/yui-core/yui-core.js", 969); -if (aliases) { - _yuitest_coverline("build/yui-core/yui-core.js", 970); -len = names.length; - _yuitest_coverline("build/yui-core/yui-core.js", 971); -for (i = 0; i < len; i++) { - _yuitest_coverline("build/yui-core/yui-core.js", 972); -if (aliases[names[i]] && !mods[names[i]]) { - _yuitest_coverline("build/yui-core/yui-core.js", 973); -a = [].concat(a, aliases[names[i]]); - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 975); -a.push(names[i]); - } - } - _yuitest_coverline("build/yui-core/yui-core.js", 978); -names = a; - } - - _yuitest_coverline("build/yui-core/yui-core.js", 981); -len = names.length; - - _yuitest_coverline("build/yui-core/yui-core.js", 983); -for (i = 0; i < len; i++) { - _yuitest_coverline("build/yui-core/yui-core.js", 984); -name = names[i]; - _yuitest_coverline("build/yui-core/yui-core.js", 985); -if (!skip) { - _yuitest_coverline("build/yui-core/yui-core.js", 986); -r.push(name); - } - - // only attach a module once - _yuitest_coverline("build/yui-core/yui-core.js", 990); -if (used[name]) { - _yuitest_coverline("build/yui-core/yui-core.js", 991); -continue; - } - - _yuitest_coverline("build/yui-core/yui-core.js", 994); -m = mods[name]; - _yuitest_coverline("build/yui-core/yui-core.js", 995); -req = null; - _yuitest_coverline("build/yui-core/yui-core.js", 996); -use = null; - - _yuitest_coverline("build/yui-core/yui-core.js", 998); -if (m) { - _yuitest_coverline("build/yui-core/yui-core.js", 999); -used[name] = true; - _yuitest_coverline("build/yui-core/yui-core.js", 1000); -req = m.details.requires; - _yuitest_coverline("build/yui-core/yui-core.js", 1001); -use = m.details.use; - } else { - // CSS files don't register themselves, see if it has - // been loaded - _yuitest_coverline("build/yui-core/yui-core.js", 1005); -if (!G_ENV._loaded[VERSION][name]) { - _yuitest_coverline("build/yui-core/yui-core.js", 1006); -missing.push(name); - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 1008); -used[name] = true; // probably css - } - } - - // make sure requirements are attached - _yuitest_coverline("build/yui-core/yui-core.js", 1013); -if (req && req.length) { - _yuitest_coverline("build/yui-core/yui-core.js", 1014); -process(req); - } - - // make sure we grab the submodule dependencies too - _yuitest_coverline("build/yui-core/yui-core.js", 1018); -if (use && use.length) { - _yuitest_coverline("build/yui-core/yui-core.js", 1019); -process(use, 1); - } - } - - }, - - handleLoader = function(fromLoader) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "handleLoader", 1025); -_yuitest_coverline("build/yui-core/yui-core.js", 1026); -var response = fromLoader || { - success: true, - msg: 'not dynamic' - }, - redo, origMissing, - ret = true, - data = response.data; - - _yuitest_coverline("build/yui-core/yui-core.js", 1034); -Y._loading = false; - - _yuitest_coverline("build/yui-core/yui-core.js", 1036); -if (data) { - _yuitest_coverline("build/yui-core/yui-core.js", 1037); -origMissing = missing; - _yuitest_coverline("build/yui-core/yui-core.js", 1038); -missing = []; - _yuitest_coverline("build/yui-core/yui-core.js", 1039); -r = []; - _yuitest_coverline("build/yui-core/yui-core.js", 1040); -process(data); - _yuitest_coverline("build/yui-core/yui-core.js", 1041); -redo = missing.length; - _yuitest_coverline("build/yui-core/yui-core.js", 1042); -if (redo) { - _yuitest_coverline("build/yui-core/yui-core.js", 1043); -if ([].concat(missing).sort().join() == - origMissing.sort().join()) { - _yuitest_coverline("build/yui-core/yui-core.js", 1045); -redo = false; - } - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 1050); -if (redo && data) { - _yuitest_coverline("build/yui-core/yui-core.js", 1051); -Y._loading = true; - _yuitest_coverline("build/yui-core/yui-core.js", 1052); -Y._use(missing, function() { - _yuitest_coverfunc("build/yui-core/yui-core.js", "(anonymous 7)", 1052); -_yuitest_coverline("build/yui-core/yui-core.js", 1053); -if (Y._attach(data)) { - _yuitest_coverline("build/yui-core/yui-core.js", 1054); -Y._notify(callback, response, data); - } - }); - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 1058); -if (data) { - _yuitest_coverline("build/yui-core/yui-core.js", 1059); -ret = Y._attach(data); - } - _yuitest_coverline("build/yui-core/yui-core.js", 1061); -if (ret) { - _yuitest_coverline("build/yui-core/yui-core.js", 1062); -Y._notify(callback, response, args); - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 1066); -if (Y._useQueue && Y._useQueue.size() && !Y._loading) { - _yuitest_coverline("build/yui-core/yui-core.js", 1067); -Y._use.apply(Y, Y._useQueue.next()); - } - - }; - - - // YUI().use('*'); // bind everything available - _yuitest_coverline("build/yui-core/yui-core.js", 1074); -if (firstArg === '*') { - _yuitest_coverline("build/yui-core/yui-core.js", 1075); -args = []; - _yuitest_coverline("build/yui-core/yui-core.js", 1076); -for (i in mods) { - _yuitest_coverline("build/yui-core/yui-core.js", 1077); -if (mods.hasOwnProperty(i)) { - _yuitest_coverline("build/yui-core/yui-core.js", 1078); -args.push(i); - } - } - _yuitest_coverline("build/yui-core/yui-core.js", 1081); -ret = Y._attach(args); - _yuitest_coverline("build/yui-core/yui-core.js", 1082); -if (ret) { - _yuitest_coverline("build/yui-core/yui-core.js", 1083); -handleLoader(); - } - _yuitest_coverline("build/yui-core/yui-core.js", 1085); -return Y; - } - - _yuitest_coverline("build/yui-core/yui-core.js", 1088); -if ((mods.loader || mods['loader-base']) && !Y.Loader) { - _yuitest_coverline("build/yui-core/yui-core.js", 1089); -Y._attach(['loader' + ((!mods.loader) ? '-base' : '')]); - } - - - // use loader to expand dependencies and sort the - // requirements if it is available. - _yuitest_coverline("build/yui-core/yui-core.js", 1095); -if (boot && Y.Loader && args.length) { - _yuitest_coverline("build/yui-core/yui-core.js", 1096); -loader = getLoader(Y); - _yuitest_coverline("build/yui-core/yui-core.js", 1097); -loader.require(args); - _yuitest_coverline("build/yui-core/yui-core.js", 1098); -loader.ignoreRegistered = true; - _yuitest_coverline("build/yui-core/yui-core.js", 1099); -loader._boot = true; - _yuitest_coverline("build/yui-core/yui-core.js", 1100); -loader.calculate(null, (fetchCSS) ? null : 'js'); - _yuitest_coverline("build/yui-core/yui-core.js", 1101); -args = loader.sorted; - _yuitest_coverline("build/yui-core/yui-core.js", 1102); -loader._boot = false; - } - - _yuitest_coverline("build/yui-core/yui-core.js", 1105); -process(args); - - _yuitest_coverline("build/yui-core/yui-core.js", 1107); -len = missing.length; - - - _yuitest_coverline("build/yui-core/yui-core.js", 1110); -if (len) { - _yuitest_coverline("build/yui-core/yui-core.js", 1111); -missing = YArray.dedupe(missing); - _yuitest_coverline("build/yui-core/yui-core.js", 1112); -len = missing.length; - } - - - // dynamic load - _yuitest_coverline("build/yui-core/yui-core.js", 1117); -if (boot && len && Y.Loader) { - _yuitest_coverline("build/yui-core/yui-core.js", 1118); -Y._loading = true; - _yuitest_coverline("build/yui-core/yui-core.js", 1119); -loader = getLoader(Y); - _yuitest_coverline("build/yui-core/yui-core.js", 1120); -loader.onEnd = handleLoader; - _yuitest_coverline("build/yui-core/yui-core.js", 1121); -loader.context = Y; - _yuitest_coverline("build/yui-core/yui-core.js", 1122); -loader.data = args; - _yuitest_coverline("build/yui-core/yui-core.js", 1123); -loader.ignoreRegistered = false; - _yuitest_coverline("build/yui-core/yui-core.js", 1124); -loader.require(args); - _yuitest_coverline("build/yui-core/yui-core.js", 1125); -loader.insert(null, (fetchCSS) ? null : 'js'); - - } else {_yuitest_coverline("build/yui-core/yui-core.js", 1127); -if (boot && len && Y.Get && !Env.bootstrapped) { - - _yuitest_coverline("build/yui-core/yui-core.js", 1129); -Y._loading = true; - - _yuitest_coverline("build/yui-core/yui-core.js", 1131); -handleBoot = function() { - _yuitest_coverfunc("build/yui-core/yui-core.js", "handleBoot", 1131); -_yuitest_coverline("build/yui-core/yui-core.js", 1132); -Y._loading = false; - _yuitest_coverline("build/yui-core/yui-core.js", 1133); -queue.running = false; - _yuitest_coverline("build/yui-core/yui-core.js", 1134); -Env.bootstrapped = true; - _yuitest_coverline("build/yui-core/yui-core.js", 1135); -G_ENV._bootstrapping = false; - _yuitest_coverline("build/yui-core/yui-core.js", 1136); -if (Y._attach(['loader'])) { - _yuitest_coverline("build/yui-core/yui-core.js", 1137); -Y._use(args, callback); - } - }; - - _yuitest_coverline("build/yui-core/yui-core.js", 1141); -if (G_ENV._bootstrapping) { - _yuitest_coverline("build/yui-core/yui-core.js", 1142); -queue.add(handleBoot); - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 1144); -G_ENV._bootstrapping = true; - _yuitest_coverline("build/yui-core/yui-core.js", 1145); -Y.Get.script(config.base + config.loaderPath, { - onEnd: handleBoot - }); - } - - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 1151); -ret = Y._attach(args); - _yuitest_coverline("build/yui-core/yui-core.js", 1152); -if (ret) { - _yuitest_coverline("build/yui-core/yui-core.js", 1153); -handleLoader(); - } - }} - - _yuitest_coverline("build/yui-core/yui-core.js", 1157); -return Y; - }, - - - /** - Adds a namespace object onto the YUI global if called statically. - - // creates YUI.your.namespace.here as nested objects - YUI.namespace("your.namespace.here"); - - If called as a method on a YUI instance, it creates the - namespace on the instance. - - // creates Y.property.package - Y.namespace("property.package"); - - Dots in the input string cause `namespace` to create nested objects for - each token. If any part of the requested namespace already exists, the - current object will be left in place. This allows multiple calls to - `namespace` to preserve existing namespaced properties. - - If the first token in the namespace string is "YAHOO", the token is - discarded. - - Be careful with namespace tokens. Reserved words may work in some browsers - and not others. For instance, the following will fail in some browsers - because the supported version of JavaScript reserves the word "long": - - Y.namespace("really.long.nested.namespace"); - - Note: If you pass multiple arguments to create multiple namespaces, only - the last one created is returned from this function. - - @method namespace - @param {String} namespace* namespaces to create. - @return {Object} A reference to the last namespace object created. - **/ - namespace: function() { - _yuitest_coverfunc("build/yui-core/yui-core.js", "namespace", 1194); -_yuitest_coverline("build/yui-core/yui-core.js", 1195); -var a = arguments, o, i = 0, j, d, arg; - - _yuitest_coverline("build/yui-core/yui-core.js", 1197); -for (; i < a.length; i++) { - _yuitest_coverline("build/yui-core/yui-core.js", 1198); -o = this; //Reset base object per argument or it will get reused from the last - _yuitest_coverline("build/yui-core/yui-core.js", 1199); -arg = a[i]; - _yuitest_coverline("build/yui-core/yui-core.js", 1200); -if (arg.indexOf(PERIOD) > -1) { //Skip this if no "." is present - _yuitest_coverline("build/yui-core/yui-core.js", 1201); -d = arg.split(PERIOD); - _yuitest_coverline("build/yui-core/yui-core.js", 1202); -for (j = (d[0] == 'YAHOO') ? 1 : 0; j < d.length; j++) { - _yuitest_coverline("build/yui-core/yui-core.js", 1203); -o[d[j]] = o[d[j]] || {}; - _yuitest_coverline("build/yui-core/yui-core.js", 1204); -o = o[d[j]]; - } - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 1207); -o[arg] = o[arg] || {}; - _yuitest_coverline("build/yui-core/yui-core.js", 1208); -o = o[arg]; //Reset base object to the new object so it's returned - } - } - _yuitest_coverline("build/yui-core/yui-core.js", 1211); -return o; - }, - - // this is replaced if the log module is included - log: NOOP, - message: NOOP, - // this is replaced if the dump module is included - dump: function (o) { _yuitest_coverfunc("build/yui-core/yui-core.js", "dump", 1218); -_yuitest_coverline("build/yui-core/yui-core.js", 1218); -return ''+o; }, - - /** - * Report an error. The reporting mechanism is controlled by - * the `throwFail` configuration attribute. If throwFail is - * not specified, the message is written to the Logger, otherwise - * a JS error is thrown. If an `errorFn` is specified in the config - * it must return `true` to keep the error from being thrown. - * @method error - * @param msg {String} the error message. - * @param e {Error|String} Optional JS error that was caught, or an error string. - * @param src Optional additional info (passed to `Y.config.errorFn` and `Y.message`) - * and `throwFail` is specified, this error will be re-thrown. - * @return {YUI} this YUI instance. - */ - error: function(msg, e, src) { - //TODO Add check for window.onerror here - - _yuitest_coverfunc("build/yui-core/yui-core.js", "error", 1233); -_yuitest_coverline("build/yui-core/yui-core.js", 1236); -var Y = this, ret; - - _yuitest_coverline("build/yui-core/yui-core.js", 1238); -if (Y.config.errorFn) { - _yuitest_coverline("build/yui-core/yui-core.js", 1239); -ret = Y.config.errorFn.apply(Y, arguments); - } - - _yuitest_coverline("build/yui-core/yui-core.js", 1242); -if (!ret) { - _yuitest_coverline("build/yui-core/yui-core.js", 1243); -throw (e || new Error(msg)); - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 1245); -Y.message(msg, 'error', ''+src); // don't scrub this one - } - - _yuitest_coverline("build/yui-core/yui-core.js", 1248); -return Y; - }, - - /** - * Generate an id that is unique among all YUI instances - * @method guid - * @param pre {String} optional guid prefix. - * @return {String} the guid. - */ - guid: function(pre) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "guid", 1257); -_yuitest_coverline("build/yui-core/yui-core.js", 1258); -var id = this.Env._guidp + '_' + (++this.Env._uidx); - _yuitest_coverline("build/yui-core/yui-core.js", 1259); -return (pre) ? (pre + id) : id; - }, - - /** - * Returns a `guid` associated with an object. If the object - * does not have one, a new one is created unless `readOnly` - * is specified. - * @method stamp - * @param o {Object} The object to stamp. - * @param readOnly {Boolean} if `true`, a valid guid will only - * be returned if the object has one assigned to it. - * @return {String} The object's guid or null. - */ - stamp: function(o, readOnly) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "stamp", 1272); -_yuitest_coverline("build/yui-core/yui-core.js", 1273); -var uid; - _yuitest_coverline("build/yui-core/yui-core.js", 1274); -if (!o) { - _yuitest_coverline("build/yui-core/yui-core.js", 1275); -return o; - } - - // IE generates its own unique ID for dom nodes - // The uniqueID property of a document node returns a new ID - _yuitest_coverline("build/yui-core/yui-core.js", 1280); -if (o.uniqueID && o.nodeType && o.nodeType !== 9) { - _yuitest_coverline("build/yui-core/yui-core.js", 1281); -uid = o.uniqueID; - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 1283); -uid = (typeof o === 'string') ? o : o._yuid; - } - - _yuitest_coverline("build/yui-core/yui-core.js", 1286); -if (!uid) { - _yuitest_coverline("build/yui-core/yui-core.js", 1287); -uid = this.guid(); - _yuitest_coverline("build/yui-core/yui-core.js", 1288); -if (!readOnly) { - _yuitest_coverline("build/yui-core/yui-core.js", 1289); -try { - _yuitest_coverline("build/yui-core/yui-core.js", 1290); -o._yuid = uid; - } catch (e) { - _yuitest_coverline("build/yui-core/yui-core.js", 1292); -uid = null; - } - } - } - _yuitest_coverline("build/yui-core/yui-core.js", 1296); -return uid; - }, - - /** - * Destroys the YUI instance - * @method destroy - * @since 3.3.0 - */ - destroy: function() { - _yuitest_coverfunc("build/yui-core/yui-core.js", "destroy", 1304); -_yuitest_coverline("build/yui-core/yui-core.js", 1305); -var Y = this; - _yuitest_coverline("build/yui-core/yui-core.js", 1306); -if (Y.Event) { - _yuitest_coverline("build/yui-core/yui-core.js", 1307); -Y.Event._unload(); - } - _yuitest_coverline("build/yui-core/yui-core.js", 1309); -delete instances[Y.id]; - _yuitest_coverline("build/yui-core/yui-core.js", 1310); -delete Y.Env; - _yuitest_coverline("build/yui-core/yui-core.js", 1311); -delete Y.config; - } - - /** - * instanceof check for objects that works around - * memory leak in IE when the item tested is - * window/document - * @method instanceOf - * @param o {Object} The object to check. - * @param type {Object} The class to check against. - * @since 3.3.0 - */ -}; - - _yuitest_coverline("build/yui-core/yui-core.js", 1325); -YUI.prototype = proto; - - // inheritance utilities are not available yet - _yuitest_coverline("build/yui-core/yui-core.js", 1328); -for (prop in proto) { - _yuitest_coverline("build/yui-core/yui-core.js", 1329); -if (proto.hasOwnProperty(prop)) { - _yuitest_coverline("build/yui-core/yui-core.js", 1330); -YUI[prop] = proto[prop]; - } - } - - /** -Static method on the Global YUI object to apply a config to all YUI instances. -It's main use case is "mashups" where several third party scripts are trying to write to -a global YUI config at the same time. This way they can all call `YUI.applyConfig({})` instead of -overwriting other scripts configs. -@static -@since 3.5.0 -@method applyConfig -@param {Object} o the configuration object. -@example - - YUI.applyConfig({ - modules: { - davglass: { - fullpath: './davglass.js' - } - } - }); - - YUI.applyConfig({ - modules: { - foo: { - fullpath: './foo.js' - } - } - }); - - YUI().use('davglass', function(Y) { - //Module davglass will be available here.. - }); - - */ - _yuitest_coverline("build/yui-core/yui-core.js", 1366); -YUI.applyConfig = function(o) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "applyConfig", 1366); -_yuitest_coverline("build/yui-core/yui-core.js", 1367); -if (!o) { - _yuitest_coverline("build/yui-core/yui-core.js", 1368); -return; - } - //If there is a GlobalConfig, apply it first to set the defaults - _yuitest_coverline("build/yui-core/yui-core.js", 1371); -if (YUI.GlobalConfig) { - _yuitest_coverline("build/yui-core/yui-core.js", 1372); -this.prototype.applyConfig.call(this, YUI.GlobalConfig); - } - //Apply this config to it - _yuitest_coverline("build/yui-core/yui-core.js", 1375); -this.prototype.applyConfig.call(this, o); - //Reset GlobalConfig to the combined config - _yuitest_coverline("build/yui-core/yui-core.js", 1377); -YUI.GlobalConfig = this.config; - }; - - // set up the environment - _yuitest_coverline("build/yui-core/yui-core.js", 1381); -YUI._init(); - - _yuitest_coverline("build/yui-core/yui-core.js", 1383); -if (hasWin) { - // add a window load event at load time so we can capture - // the case where it fires before dynamic loading is - // complete. - _yuitest_coverline("build/yui-core/yui-core.js", 1387); -add(window, 'load', handleLoad); - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 1389); -handleLoad(); - } - - _yuitest_coverline("build/yui-core/yui-core.js", 1392); -YUI.Env.add = add; - _yuitest_coverline("build/yui-core/yui-core.js", 1393); -YUI.Env.remove = remove; - - /*global exports*/ - // Support the CommonJS method for exporting our single global - _yuitest_coverline("build/yui-core/yui-core.js", 1397); -if (typeof exports == 'object') { - _yuitest_coverline("build/yui-core/yui-core.js", 1398); -exports.YUI = YUI; - } - -}()); - - -/** - * The config object contains all of the configuration options for - * the `YUI` instance. This object is supplied by the implementer - * when instantiating a `YUI` instance. Some properties have default - * values if they are not supplied by the implementer. This should - * not be updated directly because some values are cached. Use - * `applyConfig()` to update the config object on a YUI instance that - * has already been configured. - * - * @class config - * @static - */ - -/** - * Allows the YUI seed file to fetch the loader component and library - * metadata to dynamically load additional dependencies. - * - * @property bootstrap - * @type boolean - * @default true - */ - -/** - * Turns on writing Ylog messages to the browser console. - * - * @property debug - * @type boolean - * @default true - */ - -/** - * Log to the browser console if debug is on and the browser has a - * supported console. - * - * @property useBrowserConsole - * @type boolean - * @default true - */ - -/** - * A hash of log sources that should be logged. If specified, only - * log messages from these sources will be logged. - * - * @property logInclude - * @type object - */ - -/** - * A hash of log sources that should be not be logged. If specified, - * all sources are logged if not on this list. - * - * @property logExclude - * @type object - */ - -/** - * Set to true if the yui seed file was dynamically loaded in - * order to bootstrap components relying on the window load event - * and the `domready` custom event. - * - * @property injected - * @type boolean - * @default false - */ - -/** - * If `throwFail` is set, `Y.error` will generate or re-throw a JS Error. - * Otherwise the failure is logged. - * - * @property throwFail - * @type boolean - * @default true - */ - -/** - * The window/frame that this instance should operate in. - * - * @property win - * @type Window - * @default the window hosting YUI - */ - -/** - * The document associated with the 'win' configuration. - * - * @property doc - * @type Document - * @default the document hosting YUI - */ - -/** - * A list of modules that defines the YUI core (overrides the default list). - * - * @property core - * @type Array - * @default [ get,features,intl-base,yui-log,yui-later,loader-base, loader-rollup, loader-yui3 ] - */ - -/** - * A list of languages in order of preference. This list is matched against - * the list of available languages in modules that the YUI instance uses to - * determine the best possible localization of language sensitive modules. - * Languages are represented using BCP 47 language tags, such as "en-GB" for - * English as used in the United Kingdom, or "zh-Hans-CN" for simplified - * Chinese as used in China. The list can be provided as a comma-separated - * list or as an array. - * - * @property lang - * @type string|string[] - */ - -/** - * The default date format - * @property dateFormat - * @type string - * @deprecated use configuration in `DataType.Date.format()` instead. - */ - -/** - * The default locale - * @property locale - * @type string - * @deprecated use `config.lang` instead. - */ - -/** - * The default interval when polling in milliseconds. - * @property pollInterval - * @type int - * @default 20 - */ - -/** - * The number of dynamic nodes to insert by default before - * automatically removing them. This applies to script nodes - * because removing the node will not make the evaluated script - * unavailable. Dynamic CSS is not auto purged, because removing - * a linked style sheet will also remove the style definitions. - * @property purgethreshold - * @type int - * @default 20 - */ - -/** - * The default interval when polling in milliseconds. - * @property windowResizeDelay - * @type int - * @default 40 - */ - -/** - * Base directory for dynamic loading - * @property base - * @type string - */ - -/* - * The secure base dir (not implemented) - * For dynamic loading. - * @property secureBase - * @type string - */ - -/** - * The YUI combo service base dir. Ex: `http://yui.yahooapis.com/combo?` - * For dynamic loading. - * @property comboBase - * @type string - */ - -/** - * The root path to prepend to module path for the combo service. - * Ex: 3.0.0b1/build/ - * For dynamic loading. - * @property root - * @type string - */ - -/** - * A filter to apply to result urls. This filter will modify the default - * path for all modules. The default path for the YUI library is the - * minified version of the files (e.g., event-min.js). The filter property - * can be a predefined filter or a custom filter. The valid predefined - * filters are: - *
          - *
          DEBUG
          - *
          Selects the debug versions of the library (e.g., event-debug.js). - * This option will automatically include the Logger widget
          - *
          RAW
          - *
          Selects the non-minified version of the library (e.g., event.js).
          - *
          - * You can also define a custom filter, which must be an object literal - * containing a search expression and a replace string: - * - * myFilter: { - * 'searchExp': "-min\\.js", - * 'replaceStr': "-debug.js" - * } - * - * For dynamic loading. - * - * @property filter - * @type string|object - */ - -/** - * The `skin` config let's you configure application level skin - * customizations. It contains the following attributes which - * can be specified to override the defaults: - * - * // The default skin, which is automatically applied if not - * // overriden by a component-specific skin definition. - * // Change this in to apply a different skin globally - * defaultSkin: 'sam', - * - * // This is combined with the loader base property to get - * // the default root directory for a skin. - * base: 'assets/skins/', - * - * // Any component-specific overrides can be specified here, - * // making it possible to load different skins for different - * // components. It is possible to load more than one skin - * // for a given component as well. - * overrides: { - * slider: ['capsule', 'round'] - * } - * - * For dynamic loading. - * - * @property skin - */ - -/** - * Hash of per-component filter specification. If specified for a given - * component, this overrides the filter config. - * - * For dynamic loading. - * - * @property filters - */ - -/** - * Use the YUI combo service to reduce the number of http connections - * required to load your dependencies. Turning this off will - * disable combo handling for YUI and all module groups configured - * with a combo service. - * - * For dynamic loading. - * - * @property combine - * @type boolean - * @default true if 'base' is not supplied, false if it is. - */ - -/** - * A list of modules that should never be dynamically loaded - * - * @property ignore - * @type string[] - */ - -/** - * A list of modules that should always be loaded when required, even if already - * present on the page. - * - * @property force - * @type string[] - */ - -/** - * Node or id for a node that should be used as the insertion point for new - * nodes. For dynamic loading. - * - * @property insertBefore - * @type string - */ - -/** - * Object literal containing attributes to add to dynamically loaded script - * nodes. - * @property jsAttributes - * @type string - */ - -/** - * Object literal containing attributes to add to dynamically loaded link - * nodes. - * @property cssAttributes - * @type string - */ - -/** - * Number of milliseconds before a timeout occurs when dynamically - * loading nodes. If not set, there is no timeout. - * @property timeout - * @type int - */ - -/** - * Callback for the 'CSSComplete' event. When dynamically loading YUI - * components with CSS, this property fires when the CSS is finished - * loading but script loading is still ongoing. This provides an - * opportunity to enhance the presentation of a loading page a little - * bit before the entire loading process is done. - * - * @property onCSS - * @type function - */ - -/** - * A hash of module definitions to add to the list of YUI components. - * These components can then be dynamically loaded side by side with - * YUI via the `use()` method. This is a hash, the key is the module - * name, and the value is an object literal specifying the metdata - * for the module. See `Loader.addModule` for the supported module - * metadata fields. Also see groups, which provides a way to - * configure the base and combo spec for a set of modules. - * - * modules: { - * mymod1: { - * requires: ['node'], - * fullpath: '/mymod1/mymod1.js' - * }, - * mymod2: { - * requires: ['mymod1'], - * fullpath: '/mymod2/mymod2.js' - * }, - * mymod3: '/js/mymod3.js', - * mycssmod: '/css/mycssmod.css' - * } - * - * - * @property modules - * @type object - */ - -/** - * Aliases are dynamic groups of modules that can be used as - * shortcuts. - * - * YUI({ - * aliases: { - * davglass: [ 'node', 'yql', 'dd' ], - * mine: [ 'davglass', 'autocomplete'] - * } - * }).use('mine', function(Y) { - * //Node, YQL, DD & AutoComplete available here.. - * }); - * - * @property aliases - * @type object - */ - -/** - * A hash of module group definitions. It for each group you - * can specify a list of modules and the base path and - * combo spec to use when dynamically loading the modules. - * - * groups: { - * yui2: { - * // specify whether or not this group has a combo service - * combine: true, - * - * // The comboSeperator to use with this group's combo handler - * comboSep: ';', - * - * // The maxURLLength for this server - * maxURLLength: 500, - * - * // the base path for non-combo paths - * base: 'http://yui.yahooapis.com/2.8.0r4/build/', - * - * // the path to the combo service - * comboBase: 'http://yui.yahooapis.com/combo?', - * - * // a fragment to prepend to the path attribute when - * // when building combo urls - * root: '2.8.0r4/build/', - * - * // the module definitions - * modules: { - * yui2_yde: { - * path: "yahoo-dom-event/yahoo-dom-event.js" - * }, - * yui2_anim: { - * path: "animation/animation.js", - * requires: ['yui2_yde'] - * } - * } - * } - * } - * - * @property groups - * @type object - */ - -/** - * The loader 'path' attribute to the loader itself. This is combined - * with the 'base' attribute to dynamically load the loader component - * when boostrapping with the get utility alone. - * - * @property loaderPath - * @type string - * @default loader/loader-min.js - */ - -/** - * Specifies whether or not YUI().use(...) will attempt to load CSS - * resources at all. Any truthy value will cause CSS dependencies - * to load when fetching script. The special value 'force' will - * cause CSS dependencies to be loaded even if no script is needed. - * - * @property fetchCSS - * @type boolean|string - * @default true - */ - -/** - * The default gallery version to build gallery module urls - * @property gallery - * @type string - * @since 3.1.0 - */ - -/** - * The default YUI 2 version to build yui2 module urls. This is for - * intrinsic YUI 2 support via the 2in3 project. Also see the '2in3' - * config for pulling different revisions of the wrapped YUI 2 - * modules. - * @since 3.1.0 - * @property yui2 - * @type string - * @default 2.9.0 - */ - -/** - * The 2in3 project is a deployment of the various versions of YUI 2 - * deployed as first-class YUI 3 modules. Eventually, the wrapper - * for the modules will change (but the underlying YUI 2 code will - * be the same), and you can select a particular version of - * the wrapper modules via this config. - * @since 3.1.0 - * @property 2in3 - * @type string - * @default 4 - */ - -/** - * Alternative console log function for use in environments without - * a supported native console. The function is executed in the - * YUI instance context. - * @since 3.1.0 - * @property logFn - * @type Function - */ - -/** - * A callback to execute when Y.error is called. It receives the - * error message and an javascript error object if Y.error was - * executed because a javascript error was caught. The function - * is executed in the YUI instance context. Returning `true` from this - * function will stop the Error from being thrown. - * - * @since 3.2.0 - * @property errorFn - * @type Function - */ - -/** - * A callback to execute when the loader fails to load one or - * more resource. This could be because of a script load - * failure. It can also fail if a javascript module fails - * to register itself, but only when the 'requireRegistration' - * is true. If this function is defined, the use() callback will - * only be called when the loader succeeds, otherwise it always - * executes unless there was a javascript error when attaching - * a module. - * - * @since 3.3.0 - * @property loadErrorFn - * @type Function - */ - -/** - * When set to true, the YUI loader will expect that all modules - * it is responsible for loading will be first-class YUI modules - * that register themselves with the YUI global. If this is - * set to true, loader will fail if the module registration fails - * to happen after the script is loaded. - * - * @since 3.3.0 - * @property requireRegistration - * @type boolean - * @default false - */ - -/** - * Cache serviced use() requests. - * @since 3.3.0 - * @property cacheUse - * @type boolean - * @default true - * @deprecated no longer used - */ - -/** - * Whether or not YUI should use native ES5 functionality when available for - * features like `Y.Array.each()`, `Y.Object()`, etc. When `false`, YUI will - * always use its own fallback implementations instead of relying on ES5 - * functionality, even when it's available. - * - * @property useNativeES5 - * @type Boolean - * @default true - * @since 3.5.0 - */ - -/** -Delay the `use` callback until a specific event has passed (`load`, `domready`, `contentready` or `available`) -@property delayUntil -@type String|Object -@since 3.6.0 -@example - -You can use `load` or `domready` strings by default: - - YUI({ - delayUntil: 'domready' - }, function(Y) { - //This will not fire until 'domeready' - }); - -Or you can delay until a node is available (with `available` or `contentready`): - - YUI({ - delayUntil: { - event: 'available', - args: '#foo' - } - }, function(Y) { - //This will not fire until '#foo' is - // available in the DOM - }); - - -*/ -_yuitest_coverline("build/yui-core/yui-core.js", 1950); -YUI.add('yui-base', function (Y, NAME) { - -/* - * YUI stub - * @module yui - * @submodule yui-base - */ -/** - * The YUI module contains the components required for building the YUI - * seed file. This includes the script loading mechanism, a simple queue, - * and the core utilities for the library. - * @module yui - * @submodule yui-base - */ - -/** - * Provides core language utilites and extensions used throughout YUI. - * - * @class Lang - * @static - */ - -_yuitest_coverfunc("build/yui-core/yui-core.js", "(anonymous 8)", 1950); -_yuitest_coverline("build/yui-core/yui-core.js", 1972); -var L = Y.Lang || (Y.Lang = {}), - -STRING_PROTO = String.prototype, -TOSTRING = Object.prototype.toString, - -TYPES = { - 'undefined' : 'undefined', - 'number' : 'number', - 'boolean' : 'boolean', - 'string' : 'string', - '[object Function]': 'function', - '[object RegExp]' : 'regexp', - '[object Array]' : 'array', - '[object Date]' : 'date', - '[object Error]' : 'error' -}, - -SUBREGEX = /\{\s*([^|}]+?)\s*(?:\|([^}]*))?\s*\}/g, -TRIMREGEX = /^\s+|\s+$/g, -NATIVE_FN_REGEX = /\{\s*\[(?:native code|function)\]\s*\}/i; - -// -- Protected Methods -------------------------------------------------------- - -/** -Returns `true` if the given function appears to be implemented in native code, -`false` otherwise. Will always return `false` -- even in ES5-capable browsers -- -if the `useNativeES5` YUI config option is set to `false`. - -This isn't guaranteed to be 100% accurate and won't work for anything other than -functions, but it can be useful for determining whether a function like -`Array.prototype.forEach` is native or a JS shim provided by another library. - -There's a great article by @kangax discussing certain flaws with this technique: - - -While his points are valid, it's still possible to benefit from this function -as long as it's used carefully and sparingly, and in such a way that false -negatives have minimal consequences. It's used internally to avoid using -potentially broken non-native ES5 shims that have been added to the page by -other libraries. - -@method _isNative -@param {Function} fn Function to test. -@return {Boolean} `true` if _fn_ appears to be native, `false` otherwise. -@static -@protected -@since 3.5.0 -**/ -_yuitest_coverline("build/yui-core/yui-core.js", 2020); -L._isNative = function (fn) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "_isNative", 2020); -_yuitest_coverline("build/yui-core/yui-core.js", 2021); -return !!(Y.config.useNativeES5 && fn && NATIVE_FN_REGEX.test(fn)); -}; - -// -- Public Methods ----------------------------------------------------------- - -/** - * Determines whether or not the provided item is an array. - * - * Returns `false` for array-like collections such as the function `arguments` - * collection or `HTMLElement` collections. Use `Y.Array.test()` if you want to - * test for an array-like collection. - * - * @method isArray - * @param o The object to test. - * @return {boolean} true if o is an array. - * @static - */ -_yuitest_coverline("build/yui-core/yui-core.js", 2038); -L.isArray = L._isNative(Array.isArray) ? Array.isArray : function (o) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "isArray", 2038); -_yuitest_coverline("build/yui-core/yui-core.js", 2039); -return L.type(o) === 'array'; -}; - -/** - * Determines whether or not the provided item is a boolean. - * @method isBoolean - * @static - * @param o The object to test. - * @return {boolean} true if o is a boolean. - */ -_yuitest_coverline("build/yui-core/yui-core.js", 2049); -L.isBoolean = function(o) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "isBoolean", 2049); -_yuitest_coverline("build/yui-core/yui-core.js", 2050); -return typeof o === 'boolean'; -}; - -/** - * Determines whether or not the supplied item is a date instance. - * @method isDate - * @static - * @param o The object to test. - * @return {boolean} true if o is a date. - */ -_yuitest_coverline("build/yui-core/yui-core.js", 2060); -L.isDate = function(o) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "isDate", 2060); -_yuitest_coverline("build/yui-core/yui-core.js", 2061); -return L.type(o) === 'date' && o.toString() !== 'Invalid Date' && !isNaN(o); -}; - -/** - *

          - * Determines whether or not the provided item is a function. - * Note: Internet Explorer thinks certain functions are objects: - *

          - * - *
          - * var obj = document.createElement("object");
          - * Y.Lang.isFunction(obj.getAttribute) // reports false in IE
          - *  
          - * var input = document.createElement("input"); // append to body
          - * Y.Lang.isFunction(input.focus) // reports false in IE
          - * 
          - * - *

          - * You will have to implement additional tests if these functions - * matter to you. - *

          - * - * @method isFunction - * @static - * @param o The object to test. - * @return {boolean} true if o is a function. - */ -_yuitest_coverline("build/yui-core/yui-core.js", 2088); -L.isFunction = function(o) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "isFunction", 2088); -_yuitest_coverline("build/yui-core/yui-core.js", 2089); -return L.type(o) === 'function'; -}; - -/** - * Determines whether or not the provided item is null. - * @method isNull - * @static - * @param o The object to test. - * @return {boolean} true if o is null. - */ -_yuitest_coverline("build/yui-core/yui-core.js", 2099); -L.isNull = function(o) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "isNull", 2099); -_yuitest_coverline("build/yui-core/yui-core.js", 2100); -return o === null; -}; - -/** - * Determines whether or not the provided item is a legal number. - * @method isNumber - * @static - * @param o The object to test. - * @return {boolean} true if o is a number. - */ -_yuitest_coverline("build/yui-core/yui-core.js", 2110); -L.isNumber = function(o) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "isNumber", 2110); -_yuitest_coverline("build/yui-core/yui-core.js", 2111); -return typeof o === 'number' && isFinite(o); -}; - -/** - * Determines whether or not the provided item is of type object - * or function. Note that arrays are also objects, so - * Y.Lang.isObject([]) === true. - * @method isObject - * @static - * @param o The object to test. - * @param failfn {boolean} fail if the input is a function. - * @return {boolean} true if o is an object. - * @see isPlainObject - */ -_yuitest_coverline("build/yui-core/yui-core.js", 2125); -L.isObject = function(o, failfn) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "isObject", 2125); -_yuitest_coverline("build/yui-core/yui-core.js", 2126); -var t = typeof o; - _yuitest_coverline("build/yui-core/yui-core.js", 2127); -return (o && (t === 'object' || - (!failfn && (t === 'function' || L.isFunction(o))))) || false; -}; - -/** - * Determines whether or not the provided item is a string. - * @method isString - * @static - * @param o The object to test. - * @return {boolean} true if o is a string. - */ -_yuitest_coverline("build/yui-core/yui-core.js", 2138); -L.isString = function(o) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "isString", 2138); -_yuitest_coverline("build/yui-core/yui-core.js", 2139); -return typeof o === 'string'; -}; - -/** - * Determines whether or not the provided item is undefined. - * @method isUndefined - * @static - * @param o The object to test. - * @return {boolean} true if o is undefined. - */ -_yuitest_coverline("build/yui-core/yui-core.js", 2149); -L.isUndefined = function(o) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "isUndefined", 2149); -_yuitest_coverline("build/yui-core/yui-core.js", 2150); -return typeof o === 'undefined'; -}; - -/** - * A convenience method for detecting a legitimate non-null value. - * Returns false for null/undefined/NaN, true for other values, - * including 0/false/'' - * @method isValue - * @static - * @param o The item to test. - * @return {boolean} true if it is not null/undefined/NaN || false. - */ -_yuitest_coverline("build/yui-core/yui-core.js", 2162); -L.isValue = function(o) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "isValue", 2162); -_yuitest_coverline("build/yui-core/yui-core.js", 2163); -var t = L.type(o); - - _yuitest_coverline("build/yui-core/yui-core.js", 2165); -switch (t) { - case 'number': - _yuitest_coverline("build/yui-core/yui-core.js", 2167); -return isFinite(o); - - case 'null': // fallthru - case 'undefined': - _yuitest_coverline("build/yui-core/yui-core.js", 2171); -return false; - - default: - _yuitest_coverline("build/yui-core/yui-core.js", 2174); -return !!t; - } -}; - -/** - * Returns the current time in milliseconds. - * - * @method now - * @return {Number} Current time in milliseconds. - * @static - * @since 3.3.0 - */ -_yuitest_coverline("build/yui-core/yui-core.js", 2186); -L.now = Date.now || function () { - _yuitest_coverfunc("build/yui-core/yui-core.js", "(anonymous 9)", 2186); -_yuitest_coverline("build/yui-core/yui-core.js", 2187); -return new Date().getTime(); -}; - -/** - * Lightweight version of Y.substitute. Uses the same template - * structure as Y.substitute, but doesn't support recursion, - * auto-object coersion, or formats. - * @method sub - * @param {string} s String to be modified. - * @param {object} o Object containing replacement values. - * @return {string} the substitute result. - * @static - * @since 3.2.0 - */ -_yuitest_coverline("build/yui-core/yui-core.js", 2201); -L.sub = function(s, o) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "sub", 2201); -_yuitest_coverline("build/yui-core/yui-core.js", 2202); -return s.replace ? s.replace(SUBREGEX, function (match, key) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "(anonymous 10)", 2202); -_yuitest_coverline("build/yui-core/yui-core.js", 2203); -return L.isUndefined(o[key]) ? match : o[key]; - }) : s; -}; - -/** - * Returns a string without any leading or trailing whitespace. If - * the input is not a string, the input will be returned untouched. - * @method trim - * @static - * @param s {string} the string to trim. - * @return {string} the trimmed string. - */ -_yuitest_coverline("build/yui-core/yui-core.js", 2215); -L.trim = STRING_PROTO.trim ? function(s) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "(anonymous 11)", 2215); -_yuitest_coverline("build/yui-core/yui-core.js", 2216); -return s && s.trim ? s.trim() : s; -} : function (s) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "}", 2217); -_yuitest_coverline("build/yui-core/yui-core.js", 2218); -try { - _yuitest_coverline("build/yui-core/yui-core.js", 2219); -return s.replace(TRIMREGEX, ''); - } catch (e) { - _yuitest_coverline("build/yui-core/yui-core.js", 2221); -return s; - } -}; - -/** - * Returns a string without any leading whitespace. - * @method trimLeft - * @static - * @param s {string} the string to trim. - * @return {string} the trimmed string. - */ -_yuitest_coverline("build/yui-core/yui-core.js", 2232); -L.trimLeft = STRING_PROTO.trimLeft ? function (s) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "(anonymous 12)", 2232); -_yuitest_coverline("build/yui-core/yui-core.js", 2233); -return s.trimLeft(); -} : function (s) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "}", 2234); -_yuitest_coverline("build/yui-core/yui-core.js", 2235); -return s.replace(/^\s+/, ''); -}; - -/** - * Returns a string without any trailing whitespace. - * @method trimRight - * @static - * @param s {string} the string to trim. - * @return {string} the trimmed string. - */ -_yuitest_coverline("build/yui-core/yui-core.js", 2245); -L.trimRight = STRING_PROTO.trimRight ? function (s) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "(anonymous 13)", 2245); -_yuitest_coverline("build/yui-core/yui-core.js", 2246); -return s.trimRight(); -} : function (s) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "}", 2247); -_yuitest_coverline("build/yui-core/yui-core.js", 2248); -return s.replace(/\s+$/, ''); -}; - -/** -Returns one of the following strings, representing the type of the item passed -in: - - * "array" - * "boolean" - * "date" - * "error" - * "function" - * "null" - * "number" - * "object" - * "regexp" - * "string" - * "undefined" - -Known issues: - - * `typeof HTMLElementCollection` returns function in Safari, but - `Y.Lang.type()` reports "object", which could be a good thing -- - but it actually caused the logic in Y.Lang.isObject to fail. - -@method type -@param o the item to test. -@return {string} the detected type. -@static -**/ -_yuitest_coverline("build/yui-core/yui-core.js", 2278); -L.type = function(o) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "type", 2278); -_yuitest_coverline("build/yui-core/yui-core.js", 2279); -return TYPES[typeof o] || TYPES[TOSTRING.call(o)] || (o ? 'object' : 'null'); -}; -/** -@module yui -@submodule yui-base -*/ - -_yuitest_coverline("build/yui-core/yui-core.js", 2286); -var Lang = Y.Lang, - Native = Array.prototype, - - hasOwn = Object.prototype.hasOwnProperty; - -/** -Provides utility methods for working with arrays. Additional array helpers can -be found in the `collection` and `array-extras` modules. - -`Y.Array(thing)` returns a native array created from _thing_. Depending on -_thing_'s type, one of the following will happen: - - * Arrays are returned unmodified unless a non-zero _startIndex_ is - specified. - * Array-like collections (see `Array.test()`) are converted to arrays. - * For everything else, a new array is created with _thing_ as the sole - item. - -Note: elements that are also collections, such as `` and ``, to be array-like. - -@method test -@param {Object} obj Object to test. -@return {Number} A number indicating the results of the test: - - * 0: Neither an array nor an array-like collection. - * 1: Real array. - * 2: Array-like collection. - -@static -**/ -_yuitest_coverline("build/yui-core/yui-core.js", 2550); -YArray.test = function (obj) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "test", 2550); -_yuitest_coverline("build/yui-core/yui-core.js", 2551); -var result = 0; - - _yuitest_coverline("build/yui-core/yui-core.js", 2553); -if (Lang.isArray(obj)) { - _yuitest_coverline("build/yui-core/yui-core.js", 2554); -result = 1; - } else {_yuitest_coverline("build/yui-core/yui-core.js", 2555); -if (Lang.isObject(obj)) { - _yuitest_coverline("build/yui-core/yui-core.js", 2556); -try { - // indexed, but no tagName (element) or scrollTo/document (window. From DOM.isWindow test which we can't use here), - // or functions without apply/call (Safari - // HTMLElementCollection bug). - _yuitest_coverline("build/yui-core/yui-core.js", 2560); -if ('length' in obj && !obj.tagName && !(obj.scrollTo && obj.document) && !obj.apply) { - _yuitest_coverline("build/yui-core/yui-core.js", 2561); -result = 2; - } - } catch (ex) {} - }} - - _yuitest_coverline("build/yui-core/yui-core.js", 2566); -return result; -}; -/** - * The YUI module contains the components required for building the YUI - * seed file. This includes the script loading mechanism, a simple queue, - * and the core utilities for the library. - * @module yui - * @submodule yui-base - */ - -/** - * A simple FIFO queue. Items are added to the Queue with add(1..n items) and - * removed using next(). - * - * @class Queue - * @constructor - * @param {MIXED} item* 0..n items to seed the queue. - */ -_yuitest_coverline("build/yui-core/yui-core.js", 2584); -function Queue() { - _yuitest_coverfunc("build/yui-core/yui-core.js", "Queue", 2584); -_yuitest_coverline("build/yui-core/yui-core.js", 2585); -this._init(); - _yuitest_coverline("build/yui-core/yui-core.js", 2586); -this.add.apply(this, arguments); -} - -_yuitest_coverline("build/yui-core/yui-core.js", 2589); -Queue.prototype = { - /** - * Initialize the queue - * - * @method _init - * @protected - */ - _init: function() { - /** - * The collection of enqueued items - * - * @property _q - * @type Array - * @protected - */ - _yuitest_coverfunc("build/yui-core/yui-core.js", "_init", 2596); -_yuitest_coverline("build/yui-core/yui-core.js", 2604); -this._q = []; - }, - - /** - * Get the next item in the queue. FIFO support - * - * @method next - * @return {MIXED} the next item in the queue. - */ - next: function() { - _yuitest_coverfunc("build/yui-core/yui-core.js", "next", 2613); -_yuitest_coverline("build/yui-core/yui-core.js", 2614); -return this._q.shift(); - }, - - /** - * Get the last in the queue. LIFO support. - * - * @method last - * @return {MIXED} the last item in the queue. - */ - last: function() { - _yuitest_coverfunc("build/yui-core/yui-core.js", "last", 2623); -_yuitest_coverline("build/yui-core/yui-core.js", 2624); -return this._q.pop(); - }, - - /** - * Add 0..n items to the end of the queue. - * - * @method add - * @param {MIXED} item* 0..n items. - * @return {object} this queue. - */ - add: function() { - _yuitest_coverfunc("build/yui-core/yui-core.js", "add", 2634); -_yuitest_coverline("build/yui-core/yui-core.js", 2635); -this._q.push.apply(this._q, arguments); - - _yuitest_coverline("build/yui-core/yui-core.js", 2637); -return this; - }, - - /** - * Returns the current number of queued items. - * - * @method size - * @return {Number} The size. - */ - size: function() { - _yuitest_coverfunc("build/yui-core/yui-core.js", "size", 2646); -_yuitest_coverline("build/yui-core/yui-core.js", 2647); -return this._q.length; - } -}; - -_yuitest_coverline("build/yui-core/yui-core.js", 2651); -Y.Queue = Queue; - -_yuitest_coverline("build/yui-core/yui-core.js", 2653); -YUI.Env._loaderQueue = YUI.Env._loaderQueue || new Queue(); - -/** -The YUI module contains the components required for building the YUI seed file. -This includes the script loading mechanism, a simple queue, and the core -utilities for the library. - -@module yui -@submodule yui-base -**/ - -_yuitest_coverline("build/yui-core/yui-core.js", 2664); -var CACHED_DELIMITER = '__', - - hasOwn = Object.prototype.hasOwnProperty, - isObject = Y.Lang.isObject; - -/** -Returns a wrapper for a function which caches the return value of that function, -keyed off of the combined string representation of the argument values provided -when the wrapper is called. - -Calling this function again with the same arguments will return the cached value -rather than executing the wrapped function. - -Note that since the cache is keyed off of the string representation of arguments -passed to the wrapper function, arguments that aren't strings and don't provide -a meaningful `toString()` method may result in unexpected caching behavior. For -example, the objects `{}` and `{foo: 'bar'}` would both be converted to the -string `[object Object]` when used as a cache key. - -@method cached -@param {Function} source The function to memoize. -@param {Object} [cache={}] Object in which to store cached values. You may seed - this object with pre-existing cached values if desired. -@param {any} [refetch] If supplied, this value is compared with the cached value - using a `==` comparison. If the values are equal, the wrapped function is - executed again even though a cached value exists. -@return {Function} Wrapped function. -@for YUI -**/ -_yuitest_coverline("build/yui-core/yui-core.js", 2693); -Y.cached = function (source, cache, refetch) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "cached", 2693); -_yuitest_coverline("build/yui-core/yui-core.js", 2694); -cache || (cache = {}); - - _yuitest_coverline("build/yui-core/yui-core.js", 2696); -return function (arg) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "(anonymous 17)", 2696); -_yuitest_coverline("build/yui-core/yui-core.js", 2697); -var key = arguments.length > 1 ? - Array.prototype.join.call(arguments, CACHED_DELIMITER) : - String(arg); - - _yuitest_coverline("build/yui-core/yui-core.js", 2701); -if (!(key in cache) || (refetch && cache[key] == refetch)) { - _yuitest_coverline("build/yui-core/yui-core.js", 2702); -cache[key] = source.apply(source, arguments); - } - - _yuitest_coverline("build/yui-core/yui-core.js", 2705); -return cache[key]; - }; -}; - -/** -Returns the `location` object from the window/frame in which this YUI instance -operates, or `undefined` when executing in a non-browser environment -(e.g. Node.js). - -It is _not_ recommended to hold references to the `window.location` object -outside of the scope of a function in which its properties are being accessed or -its methods are being called. This is because of a nasty bug/issue that exists -in both Safari and MobileSafari browsers: -[WebKit Bug 34679](https://bugs.webkit.org/show_bug.cgi?id=34679). - -@method getLocation -@return {location} The `location` object from the window/frame in which this YUI - instance operates. -@since 3.5.0 -**/ -_yuitest_coverline("build/yui-core/yui-core.js", 2725); -Y.getLocation = function () { - // It is safer to look this up every time because yui-base is attached to a - // YUI instance before a user's config is applied; i.e. `Y.config.win` does - // not point the correct window object when this file is loaded. - _yuitest_coverfunc("build/yui-core/yui-core.js", "getLocation", 2725); -_yuitest_coverline("build/yui-core/yui-core.js", 2729); -var win = Y.config.win; - - // It is not safe to hold a reference to the `location` object outside the - // scope in which it is being used. The WebKit engine used in Safari and - // MobileSafari will "disconnect" the `location` object from the `window` - // when a page is restored from back/forward history cache. - _yuitest_coverline("build/yui-core/yui-core.js", 2735); -return win && win.location; -}; - -/** -Returns a new object containing all of the properties of all the supplied -objects. The properties from later objects will overwrite those in earlier -objects. - -Passing in a single object will create a shallow copy of it. For a deep copy, -use `clone()`. - -@method merge -@param {Object} objects* One or more objects to merge. -@return {Object} A new merged object. -**/ -_yuitest_coverline("build/yui-core/yui-core.js", 2750); -Y.merge = function () { - _yuitest_coverfunc("build/yui-core/yui-core.js", "merge", 2750); -_yuitest_coverline("build/yui-core/yui-core.js", 2751); -var i = 0, - len = arguments.length, - result = {}, - key, - obj; - - _yuitest_coverline("build/yui-core/yui-core.js", 2757); -for (; i < len; ++i) { - _yuitest_coverline("build/yui-core/yui-core.js", 2758); -obj = arguments[i]; - - _yuitest_coverline("build/yui-core/yui-core.js", 2760); -for (key in obj) { - _yuitest_coverline("build/yui-core/yui-core.js", 2761); -if (hasOwn.call(obj, key)) { - _yuitest_coverline("build/yui-core/yui-core.js", 2762); -result[key] = obj[key]; - } - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 2767); -return result; -}; - -/** -Mixes _supplier_'s properties into _receiver_. - -Properties on _receiver_ or _receiver_'s prototype will not be overwritten or -shadowed unless the _overwrite_ parameter is `true`, and will not be merged -unless the _merge_ parameter is `true`. - -In the default mode (0), only properties the supplier owns are copied (prototype -properties are not copied). The following copying modes are available: - - * `0`: _Default_. Object to object. - * `1`: Prototype to prototype. - * `2`: Prototype to prototype and object to object. - * `3`: Prototype to object. - * `4`: Object to prototype. - -@method mix -@param {Function|Object} receiver The object or function to receive the mixed - properties. -@param {Function|Object} supplier The object or function supplying the - properties to be mixed. -@param {Boolean} [overwrite=false] If `true`, properties that already exist - on the receiver will be overwritten with properties from the supplier. -@param {String[]} [whitelist] An array of property names to copy. If - specified, only the whitelisted properties will be copied, and all others - will be ignored. -@param {Number} [mode=0] Mix mode to use. See above for available modes. -@param {Boolean} [merge=false] If `true`, objects and arrays that already - exist on the receiver will have the corresponding object/array from the - supplier merged into them, rather than being skipped or overwritten. When - both _overwrite_ and _merge_ are `true`, _merge_ takes precedence. -@return {Function|Object|YUI} The receiver, or the YUI instance if the - specified receiver is falsy. -**/ -_yuitest_coverline("build/yui-core/yui-core.js", 2804); -Y.mix = function(receiver, supplier, overwrite, whitelist, mode, merge) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "mix", 2804); -_yuitest_coverline("build/yui-core/yui-core.js", 2805); -var alwaysOverwrite, exists, from, i, key, len, to; - - // If no supplier is given, we return the receiver. If no receiver is given, - // we return Y. Returning Y doesn't make much sense to me, but it's - // grandfathered in for backcompat reasons. - _yuitest_coverline("build/yui-core/yui-core.js", 2810); -if (!receiver || !supplier) { - _yuitest_coverline("build/yui-core/yui-core.js", 2811); -return receiver || Y; - } - - _yuitest_coverline("build/yui-core/yui-core.js", 2814); -if (mode) { - // In mode 2 (prototype to prototype and object to object), we recurse - // once to do the proto to proto mix. The object to object mix will be - // handled later on. - _yuitest_coverline("build/yui-core/yui-core.js", 2818); -if (mode === 2) { - _yuitest_coverline("build/yui-core/yui-core.js", 2819); -Y.mix(receiver.prototype, supplier.prototype, overwrite, - whitelist, 0, merge); - } - - // Depending on which mode is specified, we may be copying from or to - // the prototypes of the supplier and receiver. - _yuitest_coverline("build/yui-core/yui-core.js", 2825); -from = mode === 1 || mode === 3 ? supplier.prototype : supplier; - _yuitest_coverline("build/yui-core/yui-core.js", 2826); -to = mode === 1 || mode === 4 ? receiver.prototype : receiver; - - // If either the supplier or receiver doesn't actually have a - // prototype property, then we could end up with an undefined `from` - // or `to`. If that happens, we abort and return the receiver. - _yuitest_coverline("build/yui-core/yui-core.js", 2831); -if (!from || !to) { - _yuitest_coverline("build/yui-core/yui-core.js", 2832); -return receiver; - } - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 2835); -from = supplier; - _yuitest_coverline("build/yui-core/yui-core.js", 2836); -to = receiver; - } - - // If `overwrite` is truthy and `merge` is falsy, then we can skip a - // property existence check on each iteration and save some time. - _yuitest_coverline("build/yui-core/yui-core.js", 2841); -alwaysOverwrite = overwrite && !merge; - - _yuitest_coverline("build/yui-core/yui-core.js", 2843); -if (whitelist) { - _yuitest_coverline("build/yui-core/yui-core.js", 2844); -for (i = 0, len = whitelist.length; i < len; ++i) { - _yuitest_coverline("build/yui-core/yui-core.js", 2845); -key = whitelist[i]; - - // We call `Object.prototype.hasOwnProperty` instead of calling - // `hasOwnProperty` on the object itself, since the object's - // `hasOwnProperty` method may have been overridden or removed. - // Also, some native objects don't implement a `hasOwnProperty` - // method. - _yuitest_coverline("build/yui-core/yui-core.js", 2852); -if (!hasOwn.call(from, key)) { - _yuitest_coverline("build/yui-core/yui-core.js", 2853); -continue; - } - - // The `key in to` check here is (sadly) intentional for backwards - // compatibility reasons. It prevents undesired shadowing of - // prototype members on `to`. - _yuitest_coverline("build/yui-core/yui-core.js", 2859); -exists = alwaysOverwrite ? false : key in to; - - _yuitest_coverline("build/yui-core/yui-core.js", 2861); -if (merge && exists && isObject(to[key], true) - && isObject(from[key], true)) { - // If we're in merge mode, and the key is present on both - // objects, and the value on both objects is either an object or - // an array (but not a function), then we recurse to merge the - // `from` value into the `to` value instead of overwriting it. - // - // Note: It's intentional that the whitelist isn't passed to the - // recursive call here. This is legacy behavior that lots of - // code still depends on. - _yuitest_coverline("build/yui-core/yui-core.js", 2871); -Y.mix(to[key], from[key], overwrite, null, 0, merge); - } else {_yuitest_coverline("build/yui-core/yui-core.js", 2872); -if (overwrite || !exists) { - // We're not in merge mode, so we'll only copy the `from` value - // to the `to` value if we're in overwrite mode or if the - // current key doesn't exist on the `to` object. - _yuitest_coverline("build/yui-core/yui-core.js", 2876); -to[key] = from[key]; - }} - } - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 2880); -for (key in from) { - // The code duplication here is for runtime performance reasons. - // Combining whitelist and non-whitelist operations into a single - // loop or breaking the shared logic out into a function both result - // in worse performance, and Y.mix is critical enough that the byte - // tradeoff is worth it. - _yuitest_coverline("build/yui-core/yui-core.js", 2886); -if (!hasOwn.call(from, key)) { - _yuitest_coverline("build/yui-core/yui-core.js", 2887); -continue; - } - - // The `key in to` check here is (sadly) intentional for backwards - // compatibility reasons. It prevents undesired shadowing of - // prototype members on `to`. - _yuitest_coverline("build/yui-core/yui-core.js", 2893); -exists = alwaysOverwrite ? false : key in to; - - _yuitest_coverline("build/yui-core/yui-core.js", 2895); -if (merge && exists && isObject(to[key], true) - && isObject(from[key], true)) { - _yuitest_coverline("build/yui-core/yui-core.js", 2897); -Y.mix(to[key], from[key], overwrite, null, 0, merge); - } else {_yuitest_coverline("build/yui-core/yui-core.js", 2898); -if (overwrite || !exists) { - _yuitest_coverline("build/yui-core/yui-core.js", 2899); -to[key] = from[key]; - }} - } - - // If this is an IE browser with the JScript enumeration bug, force - // enumeration of the buggy properties by making a recursive call with - // the buggy properties as the whitelist. - _yuitest_coverline("build/yui-core/yui-core.js", 2906); -if (Y.Object._hasEnumBug) { - _yuitest_coverline("build/yui-core/yui-core.js", 2907); -Y.mix(to, from, overwrite, Y.Object._forceEnum, mode, merge); - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 2911); -return receiver; -}; -/** - * The YUI module contains the components required for building the YUI - * seed file. This includes the script loading mechanism, a simple queue, - * and the core utilities for the library. - * @module yui - * @submodule yui-base - */ - -/** - * Adds utilities to the YUI instance for working with objects. - * - * @class Object - */ - -_yuitest_coverline("build/yui-core/yui-core.js", 2927); -var Lang = Y.Lang, - hasOwn = Object.prototype.hasOwnProperty, - - UNDEFINED, // <-- Note the comma. We're still declaring vars. - -/** - * Returns a new object that uses _obj_ as its prototype. This method wraps the - * native ES5 `Object.create()` method if available, but doesn't currently - * pass through `Object.create()`'s second argument (properties) in order to - * ensure compatibility with older browsers. - * - * @method () - * @param {Object} obj Prototype object. - * @return {Object} New object using _obj_ as its prototype. - * @static - */ -O = Y.Object = Lang._isNative(Object.create) ? function (obj) { - // We currently wrap the native Object.create instead of simply aliasing it - // to ensure consistency with our fallback shim, which currently doesn't - // support Object.create()'s second argument (properties). Once we have a - // safe fallback for the properties arg, we can stop wrapping - // Object.create(). - _yuitest_coverfunc("build/yui-core/yui-core.js", "(anonymous 18)", 2943); -_yuitest_coverline("build/yui-core/yui-core.js", 2949); -return Object.create(obj); -} : (function () { - // Reusable constructor function for the Object.create() shim. - _yuitest_coverfunc("build/yui-core/yui-core.js", "(anonymous 19)", 2950); -_yuitest_coverline("build/yui-core/yui-core.js", 2952); -function F() {} - - // The actual shim. - _yuitest_coverline("build/yui-core/yui-core.js", 2955); -return function (obj) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "(anonymous 20)", 2955); -_yuitest_coverline("build/yui-core/yui-core.js", 2956); -F.prototype = obj; - _yuitest_coverline("build/yui-core/yui-core.js", 2957); -return new F(); - }; -}()), - -/** - * Property names that IE doesn't enumerate in for..in loops, even when they - * should be enumerable. When `_hasEnumBug` is `true`, it's necessary to - * manually enumerate these properties. - * - * @property _forceEnum - * @type String[] - * @protected - * @static - */ -forceEnum = O._forceEnum = [ - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toString', - 'toLocaleString', - 'valueOf' -], - -/** - * `true` if this browser has the JScript enumeration bug that prevents - * enumeration of the properties named in the `_forceEnum` array, `false` - * otherwise. - * - * See: - * - - * - - * - * @property _hasEnumBug - * @type Boolean - * @protected - * @static - */ -hasEnumBug = O._hasEnumBug = !{valueOf: 0}.propertyIsEnumerable('valueOf'), - -/** - * `true` if this browser incorrectly considers the `prototype` property of - * functions to be enumerable. Currently known to affect Opera 11.50. - * - * @property _hasProtoEnumBug - * @type Boolean - * @protected - * @static - */ -hasProtoEnumBug = O._hasProtoEnumBug = (function () {}).propertyIsEnumerable('prototype'), - -/** - * Returns `true` if _key_ exists on _obj_, `false` if _key_ doesn't exist or - * exists only on _obj_'s prototype. This is essentially a safer version of - * `obj.hasOwnProperty()`. - * - * @method owns - * @param {Object} obj Object to test. - * @param {String} key Property name to look for. - * @return {Boolean} `true` if _key_ exists on _obj_, `false` otherwise. - * @static - */ -owns = O.owns = function (obj, key) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "owns", 3018); -_yuitest_coverline("build/yui-core/yui-core.js", 3019); -return !!obj && hasOwn.call(obj, key); -}; // <-- End of var declarations. - -/** - * Alias for `owns()`. - * - * @method hasKey - * @param {Object} obj Object to test. - * @param {String} key Property name to look for. - * @return {Boolean} `true` if _key_ exists on _obj_, `false` otherwise. - * @static - */ -_yuitest_coverline("build/yui-core/yui-core.js", 3031); -O.hasKey = owns; - -/** - * Returns an array containing the object's enumerable keys. Does not include - * prototype keys or non-enumerable keys. - * - * Note that keys are returned in enumeration order (that is, in the same order - * that they would be enumerated by a `for-in` loop), which may not be the same - * as the order in which they were defined. - * - * This method is an alias for the native ES5 `Object.keys()` method if - * available. - * - * @example - * - * Y.Object.keys({a: 'foo', b: 'bar', c: 'baz'}); - * // => ['a', 'b', 'c'] - * - * @method keys - * @param {Object} obj An object. - * @return {String[]} Array of keys. - * @static - */ -_yuitest_coverline("build/yui-core/yui-core.js", 3054); -O.keys = Lang._isNative(Object.keys) ? Object.keys : function (obj) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "keys", 3054); -_yuitest_coverline("build/yui-core/yui-core.js", 3055); -if (!Lang.isObject(obj)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3056); -throw new TypeError('Object.keys called on a non-object'); - } - - _yuitest_coverline("build/yui-core/yui-core.js", 3059); -var keys = [], - i, key, len; - - _yuitest_coverline("build/yui-core/yui-core.js", 3062); -if (hasProtoEnumBug && typeof obj === 'function') { - _yuitest_coverline("build/yui-core/yui-core.js", 3063); -for (key in obj) { - _yuitest_coverline("build/yui-core/yui-core.js", 3064); -if (owns(obj, key) && key !== 'prototype') { - _yuitest_coverline("build/yui-core/yui-core.js", 3065); -keys.push(key); - } - } - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 3069); -for (key in obj) { - _yuitest_coverline("build/yui-core/yui-core.js", 3070); -if (owns(obj, key)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3071); -keys.push(key); - } - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 3076); -if (hasEnumBug) { - _yuitest_coverline("build/yui-core/yui-core.js", 3077); -for (i = 0, len = forceEnum.length; i < len; ++i) { - _yuitest_coverline("build/yui-core/yui-core.js", 3078); -key = forceEnum[i]; - - _yuitest_coverline("build/yui-core/yui-core.js", 3080); -if (owns(obj, key)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3081); -keys.push(key); - } - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 3086); -return keys; -}; - -/** - * Returns an array containing the values of the object's enumerable keys. - * - * Note that values are returned in enumeration order (that is, in the same - * order that they would be enumerated by a `for-in` loop), which may not be the - * same as the order in which they were defined. - * - * @example - * - * Y.Object.values({a: 'foo', b: 'bar', c: 'baz'}); - * // => ['foo', 'bar', 'baz'] - * - * @method values - * @param {Object} obj An object. - * @return {Array} Array of values. - * @static - */ -_yuitest_coverline("build/yui-core/yui-core.js", 3106); -O.values = function (obj) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "values", 3106); -_yuitest_coverline("build/yui-core/yui-core.js", 3107); -var keys = O.keys(obj), - i = 0, - len = keys.length, - values = []; - - _yuitest_coverline("build/yui-core/yui-core.js", 3112); -for (; i < len; ++i) { - _yuitest_coverline("build/yui-core/yui-core.js", 3113); -values.push(obj[keys[i]]); - } - - _yuitest_coverline("build/yui-core/yui-core.js", 3116); -return values; -}; - -/** - * Returns the number of enumerable keys owned by an object. - * - * @method size - * @param {Object} obj An object. - * @return {Number} The object's size. - * @static - */ -_yuitest_coverline("build/yui-core/yui-core.js", 3127); -O.size = function (obj) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "size", 3127); -_yuitest_coverline("build/yui-core/yui-core.js", 3128); -try { - _yuitest_coverline("build/yui-core/yui-core.js", 3129); -return O.keys(obj).length; - } catch (ex) { - _yuitest_coverline("build/yui-core/yui-core.js", 3131); -return 0; // Legacy behavior for non-objects. - } -}; - -/** - * Returns `true` if the object owns an enumerable property with the specified - * value. - * - * @method hasValue - * @param {Object} obj An object. - * @param {any} value The value to search for. - * @return {Boolean} `true` if _obj_ contains _value_, `false` otherwise. - * @static - */ -_yuitest_coverline("build/yui-core/yui-core.js", 3145); -O.hasValue = function (obj, value) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "hasValue", 3145); -_yuitest_coverline("build/yui-core/yui-core.js", 3146); -return Y.Array.indexOf(O.values(obj), value) > -1; -}; - -/** - * Executes a function on each enumerable property in _obj_. The function - * receives the value, the key, and the object itself as parameters (in that - * order). - * - * By default, only properties owned by _obj_ are enumerated. To include - * prototype properties, set the _proto_ parameter to `true`. - * - * @method each - * @param {Object} obj Object to enumerate. - * @param {Function} fn Function to execute on each enumerable property. - * @param {mixed} fn.value Value of the current property. - * @param {String} fn.key Key of the current property. - * @param {Object} fn.obj Object being enumerated. - * @param {Object} [thisObj] `this` object to use when calling _fn_. - * @param {Boolean} [proto=false] Include prototype properties. - * @return {YUI} the YUI instance. - * @chainable - * @static - */ -_yuitest_coverline("build/yui-core/yui-core.js", 3169); -O.each = function (obj, fn, thisObj, proto) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "each", 3169); -_yuitest_coverline("build/yui-core/yui-core.js", 3170); -var key; - - _yuitest_coverline("build/yui-core/yui-core.js", 3172); -for (key in obj) { - _yuitest_coverline("build/yui-core/yui-core.js", 3173); -if (proto || owns(obj, key)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3174); -fn.call(thisObj || Y, obj[key], key, obj); - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 3178); -return Y; -}; - -/** - * Executes a function on each enumerable property in _obj_, but halts if the - * function returns a truthy value. The function receives the value, the key, - * and the object itself as paramters (in that order). - * - * By default, only properties owned by _obj_ are enumerated. To include - * prototype properties, set the _proto_ parameter to `true`. - * - * @method some - * @param {Object} obj Object to enumerate. - * @param {Function} fn Function to execute on each enumerable property. - * @param {mixed} fn.value Value of the current property. - * @param {String} fn.key Key of the current property. - * @param {Object} fn.obj Object being enumerated. - * @param {Object} [thisObj] `this` object to use when calling _fn_. - * @param {Boolean} [proto=false] Include prototype properties. - * @return {Boolean} `true` if any execution of _fn_ returns a truthy value, - * `false` otherwise. - * @static - */ -_yuitest_coverline("build/yui-core/yui-core.js", 3201); -O.some = function (obj, fn, thisObj, proto) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "some", 3201); -_yuitest_coverline("build/yui-core/yui-core.js", 3202); -var key; - - _yuitest_coverline("build/yui-core/yui-core.js", 3204); -for (key in obj) { - _yuitest_coverline("build/yui-core/yui-core.js", 3205); -if (proto || owns(obj, key)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3206); -if (fn.call(thisObj || Y, obj[key], key, obj)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3207); -return true; - } - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 3212); -return false; -}; - -/** - * Retrieves the sub value at the provided path, - * from the value object provided. - * - * @method getValue - * @static - * @param o The object from which to extract the property value. - * @param path {Array} A path array, specifying the object traversal path - * from which to obtain the sub value. - * @return {Any} The value stored in the path, undefined if not found, - * undefined if the source is not an object. Returns the source object - * if an empty path is provided. - */ -_yuitest_coverline("build/yui-core/yui-core.js", 3228); -O.getValue = function(o, path) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "getValue", 3228); -_yuitest_coverline("build/yui-core/yui-core.js", 3229); -if (!Lang.isObject(o)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3230); -return UNDEFINED; - } - - _yuitest_coverline("build/yui-core/yui-core.js", 3233); -var i, - p = Y.Array(path), - l = p.length; - - _yuitest_coverline("build/yui-core/yui-core.js", 3237); -for (i = 0; o !== UNDEFINED && i < l; i++) { - _yuitest_coverline("build/yui-core/yui-core.js", 3238); -o = o[p[i]]; - } - - _yuitest_coverline("build/yui-core/yui-core.js", 3241); -return o; -}; - -/** - * Sets the sub-attribute value at the provided path on the - * value object. Returns the modified value object, or - * undefined if the path is invalid. - * - * @method setValue - * @static - * @param o The object on which to set the sub value. - * @param path {Array} A path array, specifying the object traversal path - * at which to set the sub value. - * @param val {Any} The new value for the sub-attribute. - * @return {Object} The modified object, with the new sub value set, or - * undefined, if the path was invalid. - */ -_yuitest_coverline("build/yui-core/yui-core.js", 3258); -O.setValue = function(o, path, val) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "setValue", 3258); -_yuitest_coverline("build/yui-core/yui-core.js", 3259); -var i, - p = Y.Array(path), - leafIdx = p.length - 1, - ref = o; - - _yuitest_coverline("build/yui-core/yui-core.js", 3264); -if (leafIdx >= 0) { - _yuitest_coverline("build/yui-core/yui-core.js", 3265); -for (i = 0; ref !== UNDEFINED && i < leafIdx; i++) { - _yuitest_coverline("build/yui-core/yui-core.js", 3266); -ref = ref[p[i]]; - } - - _yuitest_coverline("build/yui-core/yui-core.js", 3269); -if (ref !== UNDEFINED) { - _yuitest_coverline("build/yui-core/yui-core.js", 3270); -ref[p[i]] = val; - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 3272); -return UNDEFINED; - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 3276); -return o; -}; - -/** - * Returns `true` if the object has no enumerable properties of its own. - * - * @method isEmpty - * @param {Object} obj An object. - * @return {Boolean} `true` if the object is empty. - * @static - * @since 3.2.0 - */ -_yuitest_coverline("build/yui-core/yui-core.js", 3288); -O.isEmpty = function (obj) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "isEmpty", 3288); -_yuitest_coverline("build/yui-core/yui-core.js", 3289); -return !O.keys(Object(obj)).length; -}; -/** - * The YUI module contains the components required for building the YUI seed - * file. This includes the script loading mechanism, a simple queue, and the - * core utilities for the library. - * @module yui - * @submodule yui-base - */ - -/** - * YUI user agent detection. - * Do not fork for a browser if it can be avoided. Use feature detection when - * you can. Use the user agent as a last resort. For all fields listed - * as @type float, UA stores a version number for the browser engine, - * 0 otherwise. This value may or may not map to the version number of - * the browser using the engine. The value is presented as a float so - * that it can easily be used for boolean evaluation as well as for - * looking for a particular range of versions. Because of this, - * some of the granularity of the version info may be lost. The fields that - * are @type string default to null. The API docs list the values that - * these fields can have. - * @class UA - * @static - */ - -/** -* Static method on `YUI.Env` for parsing a UA string. Called at instantiation -* to populate `Y.UA`. -* -* @static -* @method parseUA -* @param {String} [subUA=navigator.userAgent] UA string to parse -* @return {Object} The Y.UA object -*/ -_yuitest_coverline("build/yui-core/yui-core.js", 3324); -YUI.Env.parseUA = function(subUA) { - - _yuitest_coverfunc("build/yui-core/yui-core.js", "parseUA", 3324); -_yuitest_coverline("build/yui-core/yui-core.js", 3326); -var numberify = function(s) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "numberify", 3326); -_yuitest_coverline("build/yui-core/yui-core.js", 3327); -var c = 0; - _yuitest_coverline("build/yui-core/yui-core.js", 3328); -return parseFloat(s.replace(/\./g, function() { - _yuitest_coverfunc("build/yui-core/yui-core.js", "(anonymous 22)", 3328); -_yuitest_coverline("build/yui-core/yui-core.js", 3329); -return (c++ === 1) ? '' : '.'; - })); - }, - - win = Y.config.win, - - nav = win && win.navigator, - - o = { - - /** - * Internet Explorer version number or 0. Example: 6 - * @property ie - * @type float - * @static - */ - ie: 0, - - /** - * Opera version number or 0. Example: 9.2 - * @property opera - * @type float - * @static - */ - opera: 0, - - /** - * Gecko engine revision number. Will evaluate to 1 if Gecko - * is detected but the revision could not be found. Other browsers - * will be 0. Example: 1.8 - *
          -         * Firefox 1.0.0.4: 1.7.8   <-- Reports 1.7
          -         * Firefox 1.5.0.9: 1.8.0.9 <-- 1.8
          -         * Firefox 2.0.0.3: 1.8.1.3 <-- 1.81
          -         * Firefox 3.0   <-- 1.9
          -         * Firefox 3.5   <-- 1.91
          -         * 
          - * @property gecko - * @type float - * @static - */ - gecko: 0, - - /** - * AppleWebKit version. KHTML browsers that are not WebKit browsers - * will evaluate to 1, other browsers 0. Example: 418.9 - *
          -         * Safari 1.3.2 (312.6): 312.8.1 <-- Reports 312.8 -- currently the
          -         *                                   latest available for Mac OSX 10.3.
          -         * Safari 2.0.2:         416     <-- hasOwnProperty introduced
          -         * Safari 2.0.4:         418     <-- preventDefault fixed
          -         * Safari 2.0.4 (419.3): 418.9.1 <-- One version of Safari may run
          -         *                                   different versions of webkit
          -         * Safari 2.0.4 (419.3): 419     <-- Tiger installations that have been
          -         *                                   updated, but not updated
          -         *                                   to the latest patch.
          -         * Webkit 212 nightly:   522+    <-- Safari 3.0 precursor (with native
          -         * SVG and many major issues fixed).
          -         * Safari 3.0.4 (523.12) 523.12  <-- First Tiger release - automatic
          -         * update from 2.x via the 10.4.11 OS patch.
          -         * Webkit nightly 1/2008:525+    <-- Supports DOMContentLoaded event.
          -         *                                   yahoo.com user agent hack removed.
          -         * 
          - * http://en.wikipedia.org/wiki/Safari_version_history - * @property webkit - * @type float - * @static - */ - webkit: 0, - - /** - * Safari will be detected as webkit, but this property will also - * be populated with the Safari version number - * @property safari - * @type float - * @static - */ - safari: 0, - - /** - * Chrome will be detected as webkit, but this property will also - * be populated with the Chrome version number - * @property chrome - * @type float - * @static - */ - chrome: 0, - - /** - * The mobile property will be set to a string containing any relevant - * user agent information when a modern mobile browser is detected. - * Currently limited to Safari on the iPhone/iPod Touch, Nokia N-series - * devices with the WebKit-based browser, and Opera Mini. - * @property mobile - * @type string - * @default null - * @static - */ - mobile: null, - - /** - * Adobe AIR version number or 0. Only populated if webkit is detected. - * Example: 1.0 - * @property air - * @type float - */ - air: 0, - /** - * PhantomJS version number or 0. Only populated if webkit is detected. - * Example: 1.0 - * @property phantomjs - * @type float - */ - phantomjs: 0, - /** - * Detects Apple iPad's OS version - * @property ipad - * @type float - * @static - */ - ipad: 0, - /** - * Detects Apple iPhone's OS version - * @property iphone - * @type float - * @static - */ - iphone: 0, - /** - * Detects Apples iPod's OS version - * @property ipod - * @type float - * @static - */ - ipod: 0, - /** - * General truthy check for iPad, iPhone or iPod - * @property ios - * @type Boolean - * @default null - * @static - */ - ios: null, - /** - * Detects Googles Android OS version - * @property android - * @type float - * @static - */ - android: 0, - /** - * Detects Kindle Silk - * @property silk - * @type float - * @static - */ - silk: 0, - /** - * Detects Kindle Silk Acceleration - * @property accel - * @type Boolean - * @static - */ - accel: false, - /** - * Detects Palms WebOS version - * @property webos - * @type float - * @static - */ - webos: 0, - - /** - * Google Caja version number or 0. - * @property caja - * @type float - */ - caja: nav && nav.cajaVersion, - - /** - * Set to true if the page appears to be in SSL - * @property secure - * @type boolean - * @static - */ - secure: false, - - /** - * The operating system. Currently only detecting windows or macintosh - * @property os - * @type string - * @default null - * @static - */ - os: null, - - /** - * The Nodejs Version - * @property nodejs - * @type float - * @default 0 - * @static - */ - nodejs: 0, - /* - * Window8/IE10 Application host environment - * @property winjs - * @type Boolean - * @static - */ - winjs: !!((typeof Windows !== "undefined") && Windows.System), - /** - * Are touch/msPointer events available on this device - * @property touchEnabled - * @type Boolean - * @static - */ - touchEnabled: false - }, - - ua = subUA || nav && nav.userAgent, - - loc = win && win.location, - - href = loc && loc.href, - - m; - - /** - * The User Agent string that was parsed - * @property userAgent - * @type String - * @static - */ - _yuitest_coverline("build/yui-core/yui-core.js", 3563); -o.userAgent = ua; - - - _yuitest_coverline("build/yui-core/yui-core.js", 3566); -o.secure = href && (href.toLowerCase().indexOf('https') === 0); - - _yuitest_coverline("build/yui-core/yui-core.js", 3568); -if (ua) { - - _yuitest_coverline("build/yui-core/yui-core.js", 3570); -if ((/windows|win32/i).test(ua)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3571); -o.os = 'windows'; - } else {_yuitest_coverline("build/yui-core/yui-core.js", 3572); -if ((/macintosh|mac_powerpc/i).test(ua)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3573); -o.os = 'macintosh'; - } else {_yuitest_coverline("build/yui-core/yui-core.js", 3574); -if ((/android/i).test(ua)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3575); -o.os = 'android'; - } else {_yuitest_coverline("build/yui-core/yui-core.js", 3576); -if ((/symbos/i).test(ua)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3577); -o.os = 'symbos'; - } else {_yuitest_coverline("build/yui-core/yui-core.js", 3578); -if ((/linux/i).test(ua)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3579); -o.os = 'linux'; - } else {_yuitest_coverline("build/yui-core/yui-core.js", 3580); -if ((/rhino/i).test(ua)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3581); -o.os = 'rhino'; - }}}}}} - - // Modern KHTML browsers should qualify as Safari X-Grade - _yuitest_coverline("build/yui-core/yui-core.js", 3585); -if ((/KHTML/).test(ua)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3586); -o.webkit = 1; - } - _yuitest_coverline("build/yui-core/yui-core.js", 3588); -if ((/IEMobile|XBLWP7/).test(ua)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3589); -o.mobile = 'windows'; - } - _yuitest_coverline("build/yui-core/yui-core.js", 3591); -if ((/Fennec/).test(ua)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3592); -o.mobile = 'gecko'; - } - // Modern WebKit browsers are at least X-Grade - _yuitest_coverline("build/yui-core/yui-core.js", 3595); -m = ua.match(/AppleWebKit\/([^\s]*)/); - _yuitest_coverline("build/yui-core/yui-core.js", 3596); -if (m && m[1]) { - _yuitest_coverline("build/yui-core/yui-core.js", 3597); -o.webkit = numberify(m[1]); - _yuitest_coverline("build/yui-core/yui-core.js", 3598); -o.safari = o.webkit; - - _yuitest_coverline("build/yui-core/yui-core.js", 3600); -if (/PhantomJS/.test(ua)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3601); -m = ua.match(/PhantomJS\/([^\s]*)/); - _yuitest_coverline("build/yui-core/yui-core.js", 3602); -if (m && m[1]) { - _yuitest_coverline("build/yui-core/yui-core.js", 3603); -o.phantomjs = numberify(m[1]); - } - } - - // Mobile browser check - _yuitest_coverline("build/yui-core/yui-core.js", 3608); -if (/ Mobile\//.test(ua) || (/iPad|iPod|iPhone/).test(ua)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3609); -o.mobile = 'Apple'; // iPhone or iPod Touch - - _yuitest_coverline("build/yui-core/yui-core.js", 3611); -m = ua.match(/OS ([^\s]*)/); - _yuitest_coverline("build/yui-core/yui-core.js", 3612); -if (m && m[1]) { - _yuitest_coverline("build/yui-core/yui-core.js", 3613); -m = numberify(m[1].replace('_', '.')); - } - _yuitest_coverline("build/yui-core/yui-core.js", 3615); -o.ios = m; - _yuitest_coverline("build/yui-core/yui-core.js", 3616); -o.os = 'ios'; - _yuitest_coverline("build/yui-core/yui-core.js", 3617); -o.ipad = o.ipod = o.iphone = 0; - - _yuitest_coverline("build/yui-core/yui-core.js", 3619); -m = ua.match(/iPad|iPod|iPhone/); - _yuitest_coverline("build/yui-core/yui-core.js", 3620); -if (m && m[0]) { - _yuitest_coverline("build/yui-core/yui-core.js", 3621); -o[m[0].toLowerCase()] = o.ios; - } - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 3624); -m = ua.match(/NokiaN[^\/]*|webOS\/\d\.\d/); - _yuitest_coverline("build/yui-core/yui-core.js", 3625); -if (m) { - // Nokia N-series, webOS, ex: NokiaN95 - _yuitest_coverline("build/yui-core/yui-core.js", 3627); -o.mobile = m[0]; - } - _yuitest_coverline("build/yui-core/yui-core.js", 3629); -if (/webOS/.test(ua)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3630); -o.mobile = 'WebOS'; - _yuitest_coverline("build/yui-core/yui-core.js", 3631); -m = ua.match(/webOS\/([^\s]*);/); - _yuitest_coverline("build/yui-core/yui-core.js", 3632); -if (m && m[1]) { - _yuitest_coverline("build/yui-core/yui-core.js", 3633); -o.webos = numberify(m[1]); - } - } - _yuitest_coverline("build/yui-core/yui-core.js", 3636); -if (/ Android/.test(ua)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3637); -if (/Mobile/.test(ua)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3638); -o.mobile = 'Android'; - } - _yuitest_coverline("build/yui-core/yui-core.js", 3640); -m = ua.match(/Android ([^\s]*);/); - _yuitest_coverline("build/yui-core/yui-core.js", 3641); -if (m && m[1]) { - _yuitest_coverline("build/yui-core/yui-core.js", 3642); -o.android = numberify(m[1]); - } - - } - _yuitest_coverline("build/yui-core/yui-core.js", 3646); -if (/Silk/.test(ua)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3647); -m = ua.match(/Silk\/([^\s]*)\)/); - _yuitest_coverline("build/yui-core/yui-core.js", 3648); -if (m && m[1]) { - _yuitest_coverline("build/yui-core/yui-core.js", 3649); -o.silk = numberify(m[1]); - } - _yuitest_coverline("build/yui-core/yui-core.js", 3651); -if (!o.android) { - _yuitest_coverline("build/yui-core/yui-core.js", 3652); -o.android = 2.34; //Hack for desktop mode in Kindle - _yuitest_coverline("build/yui-core/yui-core.js", 3653); -o.os = 'Android'; - } - _yuitest_coverline("build/yui-core/yui-core.js", 3655); -if (/Accelerated=true/.test(ua)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3656); -o.accel = true; - } - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 3661); -m = ua.match(/(Chrome|CrMo|CriOS)\/([^\s]*)/); - _yuitest_coverline("build/yui-core/yui-core.js", 3662); -if (m && m[1] && m[2]) { - _yuitest_coverline("build/yui-core/yui-core.js", 3663); -o.chrome = numberify(m[2]); // Chrome - _yuitest_coverline("build/yui-core/yui-core.js", 3664); -o.safari = 0; //Reset safari back to 0 - _yuitest_coverline("build/yui-core/yui-core.js", 3665); -if (m[1] === 'CrMo') { - _yuitest_coverline("build/yui-core/yui-core.js", 3666); -o.mobile = 'chrome'; - } - } else { - _yuitest_coverline("build/yui-core/yui-core.js", 3669); -m = ua.match(/AdobeAIR\/([^\s]*)/); - _yuitest_coverline("build/yui-core/yui-core.js", 3670); -if (m) { - _yuitest_coverline("build/yui-core/yui-core.js", 3671); -o.air = m[0]; // Adobe AIR 1.0 or better - } - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 3676); -if (!o.webkit) { // not webkit -// @todo check Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1316; fi; U; ssr) - _yuitest_coverline("build/yui-core/yui-core.js", 3678); -if (/Opera/.test(ua)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3679); -m = ua.match(/Opera[\s\/]([^\s]*)/); - _yuitest_coverline("build/yui-core/yui-core.js", 3680); -if (m && m[1]) { - _yuitest_coverline("build/yui-core/yui-core.js", 3681); -o.opera = numberify(m[1]); - } - _yuitest_coverline("build/yui-core/yui-core.js", 3683); -m = ua.match(/Version\/([^\s]*)/); - _yuitest_coverline("build/yui-core/yui-core.js", 3684); -if (m && m[1]) { - _yuitest_coverline("build/yui-core/yui-core.js", 3685); -o.opera = numberify(m[1]); // opera 10+ - } - - _yuitest_coverline("build/yui-core/yui-core.js", 3688); -if (/Opera Mobi/.test(ua)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3689); -o.mobile = 'opera'; - _yuitest_coverline("build/yui-core/yui-core.js", 3690); -m = ua.replace('Opera Mobi', '').match(/Opera ([^\s]*)/); - _yuitest_coverline("build/yui-core/yui-core.js", 3691); -if (m && m[1]) { - _yuitest_coverline("build/yui-core/yui-core.js", 3692); -o.opera = numberify(m[1]); - } - } - _yuitest_coverline("build/yui-core/yui-core.js", 3695); -m = ua.match(/Opera Mini[^;]*/); - - _yuitest_coverline("build/yui-core/yui-core.js", 3697); -if (m) { - _yuitest_coverline("build/yui-core/yui-core.js", 3698); -o.mobile = m[0]; // ex: Opera Mini/2.0.4509/1316 - } - } else { // not opera or webkit - _yuitest_coverline("build/yui-core/yui-core.js", 3701); -m = ua.match(/MSIE\s([^;]*)/); - _yuitest_coverline("build/yui-core/yui-core.js", 3702); -if (m && m[1]) { - _yuitest_coverline("build/yui-core/yui-core.js", 3703); -o.ie = numberify(m[1]); - } else { // not opera, webkit, or ie - _yuitest_coverline("build/yui-core/yui-core.js", 3705); -m = ua.match(/Gecko\/([^\s]*)/); - _yuitest_coverline("build/yui-core/yui-core.js", 3706); -if (m) { - _yuitest_coverline("build/yui-core/yui-core.js", 3707); -o.gecko = 1; // Gecko detected, look for revision - _yuitest_coverline("build/yui-core/yui-core.js", 3708); -m = ua.match(/rv:([^\s\)]*)/); - _yuitest_coverline("build/yui-core/yui-core.js", 3709); -if (m && m[1]) { - _yuitest_coverline("build/yui-core/yui-core.js", 3710); -o.gecko = numberify(m[1]); - } - } - } - } - } - } - - //Check for known properties to tell if touch events are enabled on this device or if - //the number of MSPointer touchpoints on this device is greater than 0. - _yuitest_coverline("build/yui-core/yui-core.js", 3720); -if (win && nav && !(o.chrome && o.chrome < 6)) { - _yuitest_coverline("build/yui-core/yui-core.js", 3721); -o.touchEnabled = (("ontouchstart" in win) || (("msMaxTouchPoints" in nav) && (nav.msMaxTouchPoints > 0))); - } - - //It was a parsed UA, do not assign the global value. - _yuitest_coverline("build/yui-core/yui-core.js", 3725); -if (!subUA) { - - _yuitest_coverline("build/yui-core/yui-core.js", 3727); -if (typeof process === 'object') { - - _yuitest_coverline("build/yui-core/yui-core.js", 3729); -if (process.versions && process.versions.node) { - //NodeJS - _yuitest_coverline("build/yui-core/yui-core.js", 3731); -o.os = process.platform; - _yuitest_coverline("build/yui-core/yui-core.js", 3732); -o.nodejs = numberify(process.versions.node); - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 3736); -YUI.Env.UA = o; - - } - - _yuitest_coverline("build/yui-core/yui-core.js", 3740); -return o; -}; - - -_yuitest_coverline("build/yui-core/yui-core.js", 3744); -Y.UA = YUI.Env.UA || YUI.Env.parseUA(); - -/** -Performs a simple comparison between two version numbers, accounting for -standard versioning logic such as the fact that "535.8" is a lower version than -"535.24", even though a simple numerical comparison would indicate that it's -greater. Also accounts for cases such as "1.1" vs. "1.1.0", which are -considered equivalent. - -Returns -1 if version _a_ is lower than version _b_, 0 if they're equivalent, -1 if _a_ is higher than _b_. - -Versions may be numbers or strings containing numbers and dots. For example, -both `535` and `"535.8.10"` are acceptable. A version string containing -non-numeric characters, like `"535.8.beta"`, may produce unexpected results. - -@method compareVersions -@param {Number|String} a First version number to compare. -@param {Number|String} b Second version number to compare. -@return -1 if _a_ is lower than _b_, 0 if they're equivalent, 1 if _a_ is - higher than _b_. -**/ -_yuitest_coverline("build/yui-core/yui-core.js", 3766); -Y.UA.compareVersions = function (a, b) { - _yuitest_coverfunc("build/yui-core/yui-core.js", "compareVersions", 3766); -_yuitest_coverline("build/yui-core/yui-core.js", 3767); -var aPart, aParts, bPart, bParts, i, len; - - _yuitest_coverline("build/yui-core/yui-core.js", 3769); -if (a === b) { - _yuitest_coverline("build/yui-core/yui-core.js", 3770); -return 0; - } - - _yuitest_coverline("build/yui-core/yui-core.js", 3773); -aParts = (a + '').split('.'); - _yuitest_coverline("build/yui-core/yui-core.js", 3774); -bParts = (b + '').split('.'); - - _yuitest_coverline("build/yui-core/yui-core.js", 3776); -for (i = 0, len = Math.max(aParts.length, bParts.length); i < len; ++i) { - _yuitest_coverline("build/yui-core/yui-core.js", 3777); -aPart = parseInt(aParts[i], 10); - _yuitest_coverline("build/yui-core/yui-core.js", 3778); -bPart = parseInt(bParts[i], 10); - - _yuitest_coverline("build/yui-core/yui-core.js", 3780); -isNaN(aPart) && (aPart = 0); - _yuitest_coverline("build/yui-core/yui-core.js", 3781); -isNaN(bPart) && (bPart = 0); - - _yuitest_coverline("build/yui-core/yui-core.js", 3783); -if (aPart < bPart) { - _yuitest_coverline("build/yui-core/yui-core.js", 3784); -return -1; - } - - _yuitest_coverline("build/yui-core/yui-core.js", 3787); -if (aPart > bPart) { - _yuitest_coverline("build/yui-core/yui-core.js", 3788); -return 1; - } - } - - _yuitest_coverline("build/yui-core/yui-core.js", 3792); -return 0; -}; -_yuitest_coverline("build/yui-core/yui-core.js", 3794); -YUI.Env.aliases = { - "anim": ["anim-base","anim-color","anim-curve","anim-easing","anim-node-plugin","anim-scroll","anim-xy"], - "anim-shape-transform": ["anim-shape"], - "app": ["app-base","app-content","app-transitions","lazy-model-list","model","model-list","model-sync-rest","router","view","view-node-map"], - "attribute": ["attribute-base","attribute-complex"], - "autocomplete": ["autocomplete-base","autocomplete-sources","autocomplete-list","autocomplete-plugin"], - "base": ["base-base","base-pluginhost","base-build"], - "cache": ["cache-base","cache-offline","cache-plugin"], - "collection": ["array-extras","arraylist","arraylist-add","arraylist-filter","array-invoke"], - "controller": ["router"], - "dataschema": ["dataschema-base","dataschema-json","dataschema-xml","dataschema-array","dataschema-text"], - "datasource": ["datasource-local","datasource-io","datasource-get","datasource-function","datasource-cache","datasource-jsonschema","datasource-xmlschema","datasource-arrayschema","datasource-textschema","datasource-polling"], - "datatable": ["datatable-core","datatable-table","datatable-head","datatable-body","datatable-base","datatable-column-widths","datatable-message","datatable-mutable","datatable-sort","datatable-datasource"], - "datatable-deprecated": ["datatable-base-deprecated","datatable-datasource-deprecated","datatable-sort-deprecated","datatable-scroll-deprecated"], - "datatype": ["datatype-date","datatype-number","datatype-xml"], - "datatype-date": ["datatype-date-parse","datatype-date-format","datatype-date-math"], - "datatype-number": ["datatype-number-parse","datatype-number-format"], - "datatype-xml": ["datatype-xml-parse","datatype-xml-format"], - "dd": ["dd-ddm-base","dd-ddm","dd-ddm-drop","dd-drag","dd-proxy","dd-constrain","dd-drop","dd-scroll","dd-delegate"], - "dom": ["dom-base","dom-screen","dom-style","selector-native","selector"], - "editor": ["frame","editor-selection","exec-command","editor-base","editor-para","editor-br","editor-bidi","editor-tab","createlink-base"], - "event": ["event-base","event-delegate","event-synthetic","event-mousewheel","event-mouseenter","event-key","event-focus","event-resize","event-hover","event-outside","event-touch","event-move","event-flick","event-valuechange","event-tap"], - "event-custom": ["event-custom-base","event-custom-complex"], - "event-gestures": ["event-flick","event-move"], - "handlebars": ["handlebars-compiler"], - "highlight": ["highlight-base","highlight-accentfold"], - "history": ["history-base","history-hash","history-hash-ie","history-html5"], - "io": ["io-base","io-xdr","io-form","io-upload-iframe","io-queue"], - "json": ["json-parse","json-stringify"], - "loader": ["loader-base","loader-rollup","loader-yui3"], - "node": ["node-base","node-event-delegate","node-pluginhost","node-screen","node-style"], - "pluginhost": ["pluginhost-base","pluginhost-config"], - "querystring": ["querystring-parse","querystring-stringify"], - "recordset": ["recordset-base","recordset-sort","recordset-filter","recordset-indexer"], - "resize": ["resize-base","resize-proxy","resize-constrain"], - "slider": ["slider-base","slider-value-range","clickable-rail","range-slider"], - "text": ["text-accentfold","text-wordbreak"], - "widget": ["widget-base","widget-htmlparser","widget-skin","widget-uievents"] -}; - - -}, '3.7.3'); diff --git a/lib/yuilib/3.7.3/build/yui-core/yui-core-min.js b/lib/yuilib/3.7.3/build/yui-core/yui-core-min.js deleted file mode 100644 index fbd430f16b0..00000000000 --- a/lib/yuilib/3.7.3/build/yui-core/yui-core-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -typeof YUI!="undefined"&&(YUI._YUI=YUI);var YUI=function(){var e=0,t=this,n=arguments,r=n.length,i=function(e,t){return e&&e.hasOwnProperty&&e instanceof t},s=typeof YUI_config!="undefined"&&YUI_config;i(t,YUI)?(t._init(),YUI.GlobalConfig&&t.applyConfig(YUI.GlobalConfig),s&&t.applyConfig(s),r||t._setup()):t=new YUI;if(r){for(;e-1&&(n="3.5.0"),e={applyConfig:function(e){e=e||u;var t,n,r=this.config,i=r.modules,s=r.groups,o=r.aliases,a=this.Env._loader;for(n in e)e.hasOwnProperty(n)&&(t=e[n],i&&n=="modules"?E(i,t):o&&n=="aliases"?E(o,t):s&&n=="groups"?E(s,t):n=="win"?(r[n]=t&&t.contentWindow||t,r.doc=r[n]?r[n].document:null):n!="_yuid"&&(r[n]=t));a&&a._config(e)},_config:function(e){this.applyConfig(e)},_init:function(){var e,t,r=this,s=YUI.Env,u=r.Env,a;r.version=n;if(!u){r.Env={core:["intl-base"],loaderExtras:["loader-rollup","loader-yui3"],mods:{},versions:{},base:i,cdn:i+n+"/build/",_idx:0,_used:{},_attached:{},_missed:[],_yidx:0,_uidx:0,_guidp:"y",_loaded:{},_BASE_RE:/(?:\?(?:[^&]*&)*([^&]*))?\b(simpleyui|yui(?:-\w+)?)\/\2(?:-(min|debug))?\.js/,parseBasePath:function(e,t){var n=e.match(t),r,i;return n&&(r=RegExp.leftContext||e.slice(0,e.indexOf(n[0])),i=n[3],n[1]&&(r+="?"+n[1]),r={filter:i,path:r}),r},getBase:s&&s.getBase||function(t){var n=h&&h.getElementsByTagName("script")||[],i=u.cdn,s,o,a,f;for(o=0,a=n.length;o',YUI.Env.cssStampEl=t.firstChild,h.body?h.body.appendChild(YUI.Env.cssStampEl):p.insertBefore(YUI.Env.cssStampEl,p.firstChild)),r.config.lang=r.config.lang||"en-US",r.config.base=YUI.config.base||r.Env.getBase(r.Env._BASE_RE);if(!e||!"mindebug".indexOf(e))e="min";e=e?"-"+e:e,r.config.loaderPath=YUI.config.loaderPath||"loader/loader"+e+".js"},_setup:function(e){var t,n=this,r=[],i=YUI.Env.mods,s=n.config.core||[].concat(YUI.Env.core);for(t=0;t-1){s=o.split(r);for(i=s[0]=="YAHOO"?1:0;ii&&i in t?t[i]:!0);return n},h.indexOf=f._isNative(l.indexOf)?function(e,t,n){return l.indexOf.call(e,t,n)}:function(e,t,n){var r=e.length;n=+n||0,n=(n>0||-1)*Math.floor(Math.abs(n)),n<0&&(n+=r,n<0&&(n=0));for(;n1?Array.prototype.join.call(arguments,d):String(r);if(!(i in t)||n&&t[i]==n)t[i]=e.apply(e,arguments);return t[i]}},e.getLocation=function(){var t=e.config.win;return t&&t.location},e.merge=function(){var e=0,t=arguments.length,n={},r,i;for(;e-1},g.each=function(t,n,r,i){var s;for(s in t)(i||E(t,s))&&n.call(r||e,t[s],s,t);return e},g.some=function(t,n,r,i){var s;for(s in t)if(i||E(t,s))if(n.call(r||e,t[s],s,t))return!0;return!1},g.getValue=function(t,n){if(!f.isObject(t))return m;var r,i=e.Array(n),s=i.length;for(r=0;t!==m&&r=0){for(i=0;u!==m&&i0),t||(typeof process=="object"&&process.versions&&process.versions.node&&(s.os=process.platform,s.nodejs=n(process.versions.node)),YUI.Env.UA=s),s},e.UA=YUI.Env.UA||YUI.Env.parseUA(),e.UA.compareVersions=function(e,t){var n,r,i,s,o,u;if(e===t)return 0;r=(e+"").split("."),s=(t+"").split(".");for(o=0,u=Math.max(r.length,s.length);oi)return 1}return 0},YUI.Env.aliases={anim:["anim-base","anim-color","anim-curve","anim-easing","anim-node-plugin","anim-scroll","anim-xy"],"anim-shape-transform":["anim-shape"],app:["app-base","app-content","app-transitions","lazy-model-list","model","model-list","model-sync-rest","router","view","view-node-map"],attribute:["attribute-base","attribute-complex"],autocomplete:["autocomplete-base","autocomplete-sources","autocomplete-list","autocomplete-plugin"],base:["base-base","base-pluginhost","base-build"],cache:["cache-base","cache-offline","cache-plugin"],collection:["array-extras","arraylist","arraylist-add","arraylist-filter","array-invoke"],controller:["router"],dataschema:["dataschema-base","dataschema-json","dataschema-xml","dataschema-array","dataschema-text"],datasource:["datasource-local","datasource-io","datasource-get","datasource-function","datasource-cache","datasource-jsonschema","datasource-xmlschema","datasource-arrayschema","datasource-textschema","datasource-polling"],datatable:["datatable-core","datatable-table","datatable-head","datatable-body","datatable-base","datatable-column-widths","datatable-message","datatable-mutable","datatable-sort","datatable-datasource"],"datatable-deprecated":["datatable-base-deprecated","datatable-datasource-deprecated","datatable-sort-deprecated","datatable-scroll-deprecated"],datatype:["datatype-date","datatype-number","datatype-xml"],"datatype-date":["datatype-date-parse","datatype-date-format","datatype-date-math"],"datatype-number":["datatype-number-parse","datatype-number-format"],"datatype-xml":["datatype-xml-parse","datatype-xml-format"],dd:["dd-ddm-base","dd-ddm","dd-ddm-drop","dd-drag","dd-proxy","dd-constrain","dd-drop","dd-scroll","dd-delegate"],dom:["dom-base","dom-screen","dom-style","selector-native","selector"],editor:["frame","editor-selection","exec-command","editor-base","editor-para","editor-br","editor-bidi","editor-tab","createlink-base"],event:["event-base","event-delegate","event-synthetic","event-mousewheel","event-mouseenter","event-key","event-focus","event-resize","event-hover","event-outside","event-touch","event-move","event-flick","event-valuechange","event-tap"],"event-custom":["event-custom-base","event-custom-complex"],"event-gestures":["event-flick","event-move"],handlebars:["handlebars-compiler"],highlight:["highlight-base","highlight-accentfold"],history:["history-base","history-hash","history-hash-ie","history-html5"],io:["io-base","io-xdr","io-form","io-upload-iframe","io-queue"],json:["json-parse","json-stringify"],loader:["loader-base","loader-rollup","loader-yui3"],node:["node-base","node-event-delegate","node-pluginhost","node-screen","node-style"],pluginhost:["pluginhost-base","pluginhost-config"],querystring:["querystring-parse","querystring-stringify"],recordset:["recordset-base","recordset-sort","recordset-filter","recordset-indexer"],resize:["resize-base","resize-proxy","resize-constrain"],slider:["slider-base","slider-value-range","clickable-rail","range-slider"],text:["text-accentfold","text-wordbreak"],widget:["widget-base","widget-htmlparser","widget-skin","widget-uievents"]}},"3.7.3"); diff --git a/lib/yuilib/3.7.3/build/yui-nodejs/yui-nodejs-coverage.js b/lib/yuilib/3.7.3/build/yui-nodejs/yui-nodejs-coverage.js deleted file mode 100644 index 30df76f2cc1..00000000000 --- a/lib/yuilib/3.7.3/build/yui-nodejs/yui-nodejs-coverage.js +++ /dev/null @@ -1,4795 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -if (typeof _yuitest_coverage == "undefined"){ - _yuitest_coverage = {}; - _yuitest_coverline = function(src, line){ - var coverage = _yuitest_coverage[src]; - if (!coverage.lines[line]){ - coverage.calledLines++; - } - coverage.lines[line]++; - }; - _yuitest_coverfunc = function(src, name, line){ - var coverage = _yuitest_coverage[src], - funcId = name + ":" + line; - if (!coverage.functions[funcId]){ - coverage.calledFunctions++; - } - coverage.functions[funcId]++; - }; -} -_yuitest_coverage["build/yui-nodejs/yui-nodejs.js"] = { - lines: {}, - functions: {}, - coveredLines: 0, - calledLines: 0, - coveredFunctions: 0, - calledFunctions: 0, - path: "build/yui-nodejs/yui-nodejs.js", - code: [] -}; -_yuitest_coverage["build/yui-nodejs/yui-nodejs.js"].code=["/**"," * The YUI module contains the components required for building the YUI seed"," * file. This includes the script loading mechanism, a simple queue, and"," * the core utilities for the library."," * @module yui"," * @main yui"," * @submodule yui-base"," */","","if (typeof YUI != 'undefined') {"," YUI._YUI = YUI;","}","","/**","The YUI global namespace object. If YUI is already defined, the","existing YUI object will not be overwritten so that defined","namespaces are preserved. It is the constructor for the object","the end user interacts with. As indicated below, each instance","has full custom event support, but only if the event system","is available. This is a self-instantiable factory function. You","can invoke it directly like this:",""," YUI().use('*', function(Y) {"," // ready"," });","","But it also works like this:",""," var Y = YUI();","","Configuring the YUI object:",""," YUI({"," debug: true,"," combine: false"," }).use('node', function(Y) {"," //Node is ready to use"," });","","See the API docs for the Config class","for the complete list of supported configuration properties accepted","by the YUI constuctor.","","@class YUI","@constructor","@global","@uses EventTarget","@param [o]* {Object} 0..n optional configuration objects. these values","are store in Y.config. See Config for the list of supported","properties.","*/"," /*global YUI*/"," /*global YUI_config*/"," var YUI = function() {"," var i = 0,"," Y = this,"," args = arguments,"," l = args.length,"," instanceOf = function(o, type) {"," return (o && o.hasOwnProperty && (o instanceof type));"," },"," gconf = (typeof YUI_config !== 'undefined') && YUI_config;",""," if (!(instanceOf(Y, YUI))) {"," Y = new YUI();"," } else {"," // set up the core environment"," Y._init();",""," /**"," YUI.GlobalConfig is a master configuration that might span"," multiple contexts in a non-browser environment. It is applied"," first to all instances in all contexts."," @property GlobalConfig"," @type {Object}"," @global"," @static"," @example","",""," YUI.GlobalConfig = {"," filter: 'debug'"," };",""," YUI().use('node', function(Y) {"," //debug files used here"," });",""," YUI({"," filter: 'min'"," }).use('node', function(Y) {"," //min files used here"," });",""," */"," if (YUI.GlobalConfig) {"," Y.applyConfig(YUI.GlobalConfig);"," }",""," /**"," YUI_config is a page-level config. It is applied to all"," instances created on the page. This is applied after"," YUI.GlobalConfig, and before the instance level configuration"," objects."," @global"," @property YUI_config"," @type {Object}"," @example","",""," //Single global var to include before YUI seed file"," YUI_config = {"," filter: 'debug'"," };",""," YUI().use('node', function(Y) {"," //debug files used here"," });",""," YUI({"," filter: 'min'"," }).use('node', function(Y) {"," //min files used here"," });"," */"," if (gconf) {"," Y.applyConfig(gconf);"," }",""," // bind the specified additional modules for this instance"," if (!l) {"," Y._setup();"," }"," }",""," if (l) {"," // Each instance can accept one or more configuration objects."," // These are applied after YUI.GlobalConfig and YUI_Config,"," // overriding values set in those config files if there is a '"," // matching property."," for (; i < l; i++) {"," Y.applyConfig(args[i]);"," }",""," Y._setup();"," }",""," Y.instanceOf = instanceOf;",""," return Y;"," };","","(function() {",""," var proto, prop,"," VERSION = '3.7.3',"," PERIOD = '.',"," BASE = 'http://yui.yahooapis.com/',"," /*"," These CSS class names can't be generated by"," getClassName since it is not available at the"," time they are being used."," */"," DOC_LABEL = 'yui3-js-enabled',"," CSS_STAMP_EL = 'yui3-css-stamp',"," NOOP = function() {},"," SLICE = Array.prototype.slice,"," APPLY_TO_AUTH = { 'io.xdrReady': 1, // the functions applyTo"," 'io.xdrResponse': 1, // can call. this should"," 'SWF.eventHandler': 1 }, // be done at build time"," hasWin = (typeof window != 'undefined'),"," win = (hasWin) ? window : null,"," doc = (hasWin) ? win.document : null,"," docEl = doc && doc.documentElement,"," docClass = docEl && docEl.className,"," instances = {},"," time = new Date().getTime(),"," add = function(el, type, fn, capture) {"," if (el && el.addEventListener) {"," el.addEventListener(type, fn, capture);"," } else if (el && el.attachEvent) {"," el.attachEvent('on' + type, fn);"," }"," },"," remove = function(el, type, fn, capture) {"," if (el && el.removeEventListener) {"," // this can throw an uncaught exception in FF"," try {"," el.removeEventListener(type, fn, capture);"," } catch (ex) {}"," } else if (el && el.detachEvent) {"," el.detachEvent('on' + type, fn);"," }"," },"," handleLoad = function() {"," YUI.Env.windowLoaded = true;"," YUI.Env.DOMReady = true;"," if (hasWin) {"," remove(window, 'load', handleLoad);"," }"," },"," getLoader = function(Y, o) {"," var loader = Y.Env._loader,"," lCore = [ 'loader-base' ],"," G_ENV = YUI.Env,"," mods = G_ENV.mods;",""," if (loader) {"," //loader._config(Y.config);"," loader.ignoreRegistered = false;"," loader.onEnd = null;"," loader.data = null;"," loader.required = [];"," loader.loadType = null;"," } else {"," loader = new Y.Loader(Y.config);"," Y.Env._loader = loader;"," }"," if (mods && mods.loader) {"," lCore = [].concat(lCore, YUI.Env.loaderExtras);"," }"," YUI.Env.core = Y.Array.dedupe([].concat(YUI.Env.core, lCore));",""," return loader;"," },",""," clobber = function(r, s) {"," for (var i in s) {"," if (s.hasOwnProperty(i)) {"," r[i] = s[i];"," }"," }"," },",""," ALREADY_DONE = { success: true };","","// Stamp the documentElement (HTML) with a class of \"yui-loaded\" to","// enable styles that need to key off of JS being enabled.","if (docEl && docClass.indexOf(DOC_LABEL) == -1) {"," if (docClass) {"," docClass += ' ';"," }"," docClass += DOC_LABEL;"," docEl.className = docClass;","}","","if (VERSION.indexOf('@') > -1) {"," VERSION = '3.5.0'; // dev time hack for cdn test","}","","proto = {"," /**"," * Applies a new configuration object to the YUI instance config."," * This will merge new group/module definitions, and will also"," * update the loader cache if necessary. Updating Y.config directly"," * will not update the cache."," * @method applyConfig"," * @param {Object} o the configuration object."," * @since 3.2.0"," */"," applyConfig: function(o) {",""," o = o || NOOP;",""," var attr,"," name,"," // detail,"," config = this.config,"," mods = config.modules,"," groups = config.groups,"," aliases = config.aliases,"," loader = this.Env._loader;",""," for (name in o) {"," if (o.hasOwnProperty(name)) {"," attr = o[name];"," if (mods && name == 'modules') {"," clobber(mods, attr);"," } else if (aliases && name == 'aliases') {"," clobber(aliases, attr);"," } else if (groups && name == 'groups') {"," clobber(groups, attr);"," } else if (name == 'win') {"," config[name] = (attr && attr.contentWindow) || attr;"," config.doc = config[name] ? config[name].document : null;"," } else if (name == '_yuid') {"," // preserve the guid"," } else {"," config[name] = attr;"," }"," }"," }",""," if (loader) {"," loader._config(o);"," }",""," },"," /**"," * Old way to apply a config to the instance (calls `applyConfig` under the hood)"," * @private"," * @method _config"," * @param {Object} o The config to apply"," */"," _config: function(o) {"," this.applyConfig(o);"," },",""," /**"," * Initialize this YUI instance"," * @private"," * @method _init"," */"," _init: function() {"," var filter, el,"," Y = this,"," G_ENV = YUI.Env,"," Env = Y.Env,"," prop;",""," /**"," * The version number of the YUI instance."," * @property version"," * @type string"," */"," Y.version = VERSION;",""," if (!Env) {"," Y.Env = {"," core: ['get', 'features', 'intl-base', 'yui-log', 'yui-log-nodejs', 'yui-later', 'loader-base', 'loader-rollup', 'loader-yui3'],"," loaderExtras: ['loader-rollup', 'loader-yui3'],"," mods: {}, // flat module map"," versions: {}, // version module map"," base: BASE,"," cdn: BASE + VERSION + '/build/',"," // bootstrapped: false,"," _idx: 0,"," _used: {},"," _attached: {},"," _missed: [],"," _yidx: 0,"," _uidx: 0,"," _guidp: 'y',"," _loaded: {},"," // serviced: {},"," // Regex in English:"," // I'll start at the \\b(simpleyui)."," // 1. Look in the test string for \"simpleyui\" or \"yui\" or"," // \"yui-base\" or \"yui-davglass\" or \"yui-foobar\" that comes after a word break. That is, it"," // can't match \"foyui\" or \"i_heart_simpleyui\". This can be anywhere in the string."," // 2. After #1 must come a forward slash followed by the string matched in #1, so"," // \"yui-base/yui-base\" or \"simpleyui/simpleyui\" or \"yui-pants/yui-pants\"."," // 3. The second occurence of the #1 token can optionally be followed by \"-debug\" or \"-min\","," // so \"yui/yui-min\", \"yui/yui-debug\", \"yui-base/yui-base-debug\". NOT \"yui/yui-tshirt\"."," // 4. This is followed by \".js\", so \"yui/yui.js\", \"simpleyui/simpleyui-min.js\""," // 0. Going back to the beginning, now. If all that stuff in 1-4 comes after a \"?\" in the string,"," // then capture the junk between the LAST \"&\" and the string in 1-4. So"," // \"blah?foo/yui/yui.js\" will capture \"foo/\" and \"blah?some/thing.js&3.3.0/build/yui-davglass/yui-davglass.js\""," // will capture \"3.3.0/build/\""," //"," // Regex Exploded:"," // (?:\\? Find a ?"," // (?:[^&]*&) followed by 0..n characters followed by an &"," // * in fact, find as many sets of characters followed by a & as you can"," // ([^&]*) capture the stuff after the last & in \\1"," // )? but it's ok if all this ?junk&more_junk stuff isn't even there"," // \\b(simpleyui| after a word break find either the string \"simpleyui\" or"," // yui(?:-\\w+)? the string \"yui\" optionally followed by a -, then more characters"," // ) and store the simpleyui or yui-* string in \\2"," // \\/\\2 then comes a / followed by the simpleyui or yui-* string in \\2"," // (?:-(min|debug))? optionally followed by \"-min\" or \"-debug\""," // .js and ending in \".js\""," _BASE_RE: /(?:\\?(?:[^&]*&)*([^&]*))?\\b(simpleyui|yui(?:-\\w+)?)\\/\\2(?:-(min|debug))?\\.js/,"," parseBasePath: function(src, pattern) {"," var match = src.match(pattern),"," path, filter;",""," if (match) {"," path = RegExp.leftContext || src.slice(0, src.indexOf(match[0]));",""," // this is to set up the path to the loader. The file"," // filter for loader should match the yui include."," filter = match[3];",""," // extract correct path for mixed combo urls"," // http://yuilibrary.com/projects/yui3/ticket/2528423"," if (match[1]) {"," path += '?' + match[1];"," }"," path = {"," filter: filter,"," path: path"," };"," }"," return path;"," },"," getBase: G_ENV && G_ENV.getBase ||"," function(pattern) {"," var nodes = (doc && doc.getElementsByTagName('script')) || [],"," path = Env.cdn, parsed,"," i, len, src;",""," for (i = 0, len = nodes.length; i < len; ++i) {"," src = nodes[i].src;"," if (src) {"," parsed = Y.Env.parseBasePath(src, pattern);"," if (parsed) {"," filter = parsed.filter;"," path = parsed.path;"," break;"," }"," }"," }",""," // use CDN default"," return path;"," }",""," };",""," Env = Y.Env;",""," Env._loaded[VERSION] = {};",""," if (G_ENV && Y !== YUI) {"," Env._yidx = ++G_ENV._yidx;"," Env._guidp = ('yui_' + VERSION + '_' +"," Env._yidx + '_' + time).replace(/\\./g, '_').replace(/-/g, '_');"," } else if (YUI._YUI) {",""," G_ENV = YUI._YUI.Env;"," Env._yidx += G_ENV._yidx;"," Env._uidx += G_ENV._uidx;",""," for (prop in G_ENV) {"," if (!(prop in Env)) {"," Env[prop] = G_ENV[prop];"," }"," }",""," delete YUI._YUI;"," }",""," Y.id = Y.stamp(Y);"," instances[Y.id] = Y;",""," }",""," Y.constructor = YUI;",""," // configuration defaults"," Y.config = Y.config || {"," bootstrap: true,"," cacheUse: true,"," debug: true,"," doc: doc,"," fetchCSS: true,"," throwFail: true,"," useBrowserConsole: true,"," useNativeES5: true,"," win: win"," };",""," //Register the CSS stamp element"," if (doc && !doc.getElementById(CSS_STAMP_EL)) {"," el = doc.createElement('div');"," el.innerHTML = '';"," YUI.Env.cssStampEl = el.firstChild;"," if (doc.body) {"," doc.body.appendChild(YUI.Env.cssStampEl);"," } else {"," docEl.insertBefore(YUI.Env.cssStampEl, docEl.firstChild);"," }"," }",""," Y.config.lang = Y.config.lang || 'en-US';",""," Y.config.base = YUI.config.base || Y.Env.getBase(Y.Env._BASE_RE);",""," if (!filter || (!('mindebug').indexOf(filter))) {"," filter = 'min';"," }"," filter = (filter) ? '-' + filter : filter;"," Y.config.loaderPath = YUI.config.loaderPath || 'loader/loader' + filter + '.js';",""," },",""," /**"," * Finishes the instance setup. Attaches whatever modules were defined"," * when the yui modules was registered."," * @method _setup"," * @private"," */"," _setup: function(o) {"," var i, Y = this,"," core = [],"," mods = YUI.Env.mods,"," extras = Y.config.core || [].concat(YUI.Env.core); //Clone it..",""," for (i = 0; i < extras.length; i++) {"," if (mods[extras[i]]) {"," core.push(extras[i]);"," }"," }",""," Y._attach(['yui-base']);"," Y._attach(core);",""," if (Y.Loader) {"," getLoader(Y);"," }",""," },",""," /**"," * Executes a method on a YUI instance with"," * the specified id if the specified method is whitelisted."," * @method applyTo"," * @param id {String} the YUI instance id."," * @param method {String} the name of the method to exectute."," * Ex: 'Object.keys'."," * @param args {Array} the arguments to apply to the method."," * @return {Object} the return value from the applied method or null."," */"," applyTo: function(id, method, args) {"," if (!(method in APPLY_TO_AUTH)) {"," this.log(method + ': applyTo not allowed', 'warn', 'yui');"," return null;"," }",""," var instance = instances[id], nest, m, i;"," if (instance) {"," nest = method.split('.');"," m = instance;"," for (i = 0; i < nest.length; i = i + 1) {"," m = m[nest[i]];"," if (!m) {"," this.log('applyTo not found: ' + method, 'warn', 'yui');"," }"," }"," return m && m.apply(instance, args);"," }",""," return null;"," },","","/**","Registers a module with the YUI global. The easiest way to create a","first-class YUI module is to use the YUI component ","build tool Shifter.","","The build system will produce the `YUI.add` wrapper for your module, along","with any configuration info required for the module.","","@method add","@param name {String} module name.","@param fn {Function} entry point into the module that is used to bind module to the YUI instance.","@param {YUI} fn.Y The YUI instance this module is executed in.","@param {String} fn.name The name of the module","@param version {String} version string.","@param details {Object} optional config data:","@param details.requires {Array} features that must be present before this module can be attached.","@param details.optional {Array} optional features that should be present if loadOptional"," is defined. Note: modules are not often loaded this way in YUI 3,"," but this field is still useful to inform the user that certain"," features in the component will require additional dependencies.","@param details.use {Array} features that are included within this module which need to"," be attached automatically when this module is attached. This"," supports the YUI 3 rollup system -- a module with submodules"," defined will need to have the submodules listed in the 'use'"," config. The YUI component build tool does this for you.","@return {YUI} the YUI instance.","@example",""," YUI.add('davglass', function(Y, name) {"," Y.davglass = function() {"," alert('Dav was here!');"," };"," }, '3.4.0', { requires: ['yui-base', 'harley-davidson', 'mt-dew'] });","","*/"," add: function(name, fn, version, details) {"," details = details || {};"," var env = YUI.Env,"," mod = {"," name: name,"," fn: fn,"," version: version,"," details: details"," },"," //Instance hash so we don't apply it to the same instance twice"," applied = {},"," loader, inst,"," i, versions = env.versions;",""," env.mods[name] = mod;"," versions[version] = versions[version] || {};"," versions[version][name] = mod;",""," for (i in instances) {"," if (instances.hasOwnProperty(i)) {"," inst = instances[i];"," if (!applied[inst.id]) {"," applied[inst.id] = true;"," loader = inst.Env._loader;"," if (loader) {"," if (!loader.moduleInfo[name] || loader.moduleInfo[name].temp) {"," loader.addModule(details, name);"," }"," }"," }"," }"," }",""," return this;"," },",""," /**"," * Executes the function associated with each required"," * module, binding the module to the YUI instance."," * @param {Array} r The array of modules to attach"," * @param {Boolean} [moot=false] Don't throw a warning if the module is not attached"," * @method _attach"," * @private"," */"," _attach: function(r, moot) {"," var i, name, mod, details, req, use, after,"," mods = YUI.Env.mods,"," aliases = YUI.Env.aliases,"," Y = this, j,"," cache = YUI.Env._renderedMods,"," loader = Y.Env._loader,"," done = Y.Env._attached,"," len = r.length, loader, def, go,"," c = [];",""," //Check for conditional modules (in a second+ instance) and add their requirements"," //TODO I hate this entire method, it needs to be fixed ASAP (3.5.0) ^davglass"," for (i = 0; i < len; i++) {"," name = r[i];"," mod = mods[name];"," c.push(name);"," if (loader && loader.conditions[name]) {"," for (j in loader.conditions[name]) {"," if (loader.conditions[name].hasOwnProperty(j)) {"," def = loader.conditions[name][j];"," go = def && ((def.ua && Y.UA[def.ua]) || (def.test && def.test(Y)));"," if (go) {"," c.push(def.name);"," }"," }"," }"," }"," }"," r = c;"," len = r.length;",""," for (i = 0; i < len; i++) {"," if (!done[r[i]]) {"," name = r[i];"," mod = mods[name];",""," if (aliases && aliases[name] && !mod) {"," Y._attach(aliases[name]);"," continue;"," }"," if (!mod) {"," if (loader && loader.moduleInfo[name]) {"," mod = loader.moduleInfo[name];"," moot = true;"," }","",""," //if (!loader || !loader.moduleInfo[name]) {"," //if ((!loader || !loader.moduleInfo[name]) && !moot) {"," if (!moot && name) {"," if ((name.indexOf('skin-') === -1) && (name.indexOf('css') === -1)) {"," Y.Env._missed.push(name);"," Y.Env._missed = Y.Array.dedupe(Y.Env._missed);"," Y.message('NOT loaded: ' + name, 'warn', 'yui');"," }"," }"," } else {"," done[name] = true;"," //Don't like this, but in case a mod was asked for once, then we fetch it"," //We need to remove it from the missed list ^davglass"," for (j = 0; j < Y.Env._missed.length; j++) {"," if (Y.Env._missed[j] === name) {"," Y.message('Found: ' + name + ' (was reported as missing earlier)', 'warn', 'yui');"," Y.Env._missed.splice(j, 1);"," }"," }"," /*"," If it's a temp module, we need to redo it's requirements if it's already loaded"," since it may have been loaded by another instance and it's dependencies might"," have been redefined inside the fetched file."," */"," if (loader && cache && cache[name] && cache[name].temp) {"," loader.getRequires(cache[name]);"," req = [];"," for (j in loader.moduleInfo[name].expanded_map) {"," if (loader.moduleInfo[name].expanded_map.hasOwnProperty(j)) {"," req.push(j);"," }"," }"," Y._attach(req);"," }"," "," details = mod.details;"," req = details.requires;"," use = details.use;"," after = details.after;"," //Force Intl load if there is a language (Loader logic) @todo fix this shit"," if (details.lang) {"," req = req || [];"," req.unshift('intl');"," }",""," if (req) {"," for (j = 0; j < req.length; j++) {"," if (!done[req[j]]) {"," if (!Y._attach(req)) {"," return false;"," }"," break;"," }"," }"," }",""," if (after) {"," for (j = 0; j < after.length; j++) {"," if (!done[after[j]]) {"," if (!Y._attach(after, true)) {"," return false;"," }"," break;"," }"," }"," }",""," if (mod.fn) {"," if (Y.config.throwFail) {"," mod.fn(Y, name);"," } else {"," try {"," mod.fn(Y, name);"," } catch (e) {"," Y.error('Attach error: ' + name, e, name);"," return false;"," }"," }"," }",""," if (use) {"," for (j = 0; j < use.length; j++) {"," if (!done[use[j]]) {"," if (!Y._attach(use)) {"," return false;"," }"," break;"," }"," }"," }","","",""," }"," }"," }",""," return true;"," },"," /**"," * Delays the `use` callback until another event has taken place. Like: window.onload, domready, contentready, available."," * @private"," * @method _delayCallback"," * @param {Callback} cb The original `use` callback"," * @param {String|Object} until Either an event (load, domready) or an Object containing event/args keys for contentready/available"," */"," _delayCallback: function(cb, until) {",""," var Y = this,"," mod = ['event-base'];",""," until = (Y.Lang.isObject(until) ? until : { event: until });",""," if (until.event === 'load') {"," mod.push('event-synthetic');"," }",""," return function() {"," var args = arguments;"," Y._use(mod, function() {"," Y.on(until.event, function() {"," args[1].delayUntil = until.event;"," cb.apply(Y, args);"," }, until.args);"," });"," };"," },",""," /**"," * Attaches one or more modules to the YUI instance. When this"," * is executed, the requirements are analyzed, and one of"," * several things can happen:"," *"," * * All requirements are available on the page -- The modules"," * are attached to the instance. If supplied, the use callback"," * is executed synchronously."," *"," * * Modules are missing, the Get utility is not available OR"," * the 'bootstrap' config is false -- A warning is issued about"," * the missing modules and all available modules are attached."," *"," * * Modules are missing, the Loader is not available but the Get"," * utility is and boostrap is not false -- The loader is bootstrapped"," * before doing the following...."," *"," * * Modules are missing and the Loader is available -- The loader"," * expands the dependency tree and fetches missing modules. When"," * the loader is finshed the callback supplied to use is executed"," * asynchronously."," *"," * @method use"," * @param modules* {String|Array} 1-n modules to bind (uses arguments array)."," * @param [callback] {Function} callback function executed when"," * the instance has the required functionality. If included, it"," * must be the last parameter."," * @param callback.Y {YUI} The `YUI` instance created for this sandbox"," * @param callback.status {Object} Object containing `success`, `msg` and `data` properties"," *"," * @example"," * // loads and attaches dd and its dependencies"," * YUI().use('dd', function(Y) {});"," *"," * // loads and attaches dd and node as well as all of their dependencies (since 3.4.0)"," * YUI().use(['dd', 'node'], function(Y) {});"," *"," * // attaches all modules that are available on the page"," * YUI().use('*', function(Y) {});"," *"," * // intrinsic YUI gallery support (since 3.1.0)"," * YUI().use('gallery-yql', function(Y) {});"," *"," * // intrinsic YUI 2in3 support (since 3.1.0)"," * YUI().use('yui2-datatable', function(Y) {});"," *"," * @return {YUI} the YUI instance."," */"," use: function() {"," var args = SLICE.call(arguments, 0),"," callback = args[args.length - 1],"," Y = this,"," i = 0,"," a = [],"," name,"," Env = Y.Env,"," provisioned = true;",""," // The last argument supplied to use can be a load complete callback"," if (Y.Lang.isFunction(callback)) {"," args.pop();"," if (Y.config.delayUntil) {"," callback = Y._delayCallback(callback, Y.config.delayUntil);"," }"," } else {"," callback = null;"," }"," if (Y.Lang.isArray(args[0])) {"," args = args[0];"," }",""," if (Y.config.cacheUse) {"," while ((name = args[i++])) {"," if (!Env._attached[name]) {"," provisioned = false;"," break;"," }"," }",""," if (provisioned) {"," if (args.length) {"," }"," Y._notify(callback, ALREADY_DONE, args);"," return Y;"," }"," }",""," if (Y._loading) {"," Y._useQueue = Y._useQueue || new Y.Queue();"," Y._useQueue.add([args, callback]);"," } else {"," Y._use(args, function(Y, response) {"," Y._notify(callback, response, args);"," });"," }",""," return Y;"," },"," /**"," * Notify handler from Loader for attachment/load errors"," * @method _notify"," * @param callback {Function} The callback to pass to the `Y.config.loadErrorFn`"," * @param response {Object} The response returned from Loader"," * @param args {Array} The aruments passed from Loader"," * @private"," */"," _notify: function(callback, response, args) {"," if (!response.success && this.config.loadErrorFn) {"," this.config.loadErrorFn.call(this, this, callback, response, args);"," } else if (callback) {"," if (this.Env._missed && this.Env._missed.length) {"," response.msg = 'Missing modules: ' + this.Env._missed.join();"," response.success = false;"," }"," if (this.config.throwFail) {"," callback(this, response);"," } else {"," try {"," callback(this, response);"," } catch (e) {"," this.error('use callback error', e, args);"," }"," }"," }"," },",""," /**"," * This private method is called from the `use` method queue. To ensure that only one set of loading"," * logic is performed at a time."," * @method _use"," * @private"," * @param args* {String} 1-n modules to bind (uses arguments array)."," * @param *callback {Function} callback function executed when"," * the instance has the required functionality. If included, it"," * must be the last parameter."," */"," _use: function(args, callback) {",""," if (!this.Array) {"," this._attach(['yui-base']);"," }",""," var len, loader, handleBoot, handleRLS,"," Y = this,"," G_ENV = YUI.Env,"," mods = G_ENV.mods,"," Env = Y.Env,"," used = Env._used,"," aliases = G_ENV.aliases,"," queue = G_ENV._loaderQueue,"," firstArg = args[0],"," YArray = Y.Array,"," config = Y.config,"," boot = config.bootstrap,"," missing = [],"," i,"," r = [],"," ret = true,"," fetchCSS = config.fetchCSS,"," process = function(names, skip) {",""," var i = 0, a = [], name, len, m, req, use;",""," if (!names.length) {"," return;"," }",""," if (aliases) {"," len = names.length;"," for (i = 0; i < len; i++) {"," if (aliases[names[i]] && !mods[names[i]]) {"," a = [].concat(a, aliases[names[i]]);"," } else {"," a.push(names[i]);"," }"," }"," names = a;"," }"," "," len = names.length;"," "," for (i = 0; i < len; i++) {"," name = names[i];"," if (!skip) {"," r.push(name);"," }",""," // only attach a module once"," if (used[name]) {"," continue;"," }"," "," m = mods[name];"," req = null;"," use = null;",""," if (m) {"," used[name] = true;"," req = m.details.requires;"," use = m.details.use;"," } else {"," // CSS files don't register themselves, see if it has"," // been loaded"," if (!G_ENV._loaded[VERSION][name]) {"," missing.push(name);"," } else {"," used[name] = true; // probably css"," }"," }",""," // make sure requirements are attached"," if (req && req.length) {"," process(req);"," }",""," // make sure we grab the submodule dependencies too"," if (use && use.length) {"," process(use, 1);"," }"," }",""," },",""," handleLoader = function(fromLoader) {"," var response = fromLoader || {"," success: true,"," msg: 'not dynamic'"," },"," redo, origMissing,"," ret = true,"," data = response.data;",""," Y._loading = false;",""," if (data) {"," origMissing = missing;"," missing = [];"," r = [];"," process(data);"," redo = missing.length;"," if (redo) {"," if ([].concat(missing).sort().join() =="," origMissing.sort().join()) {"," redo = false;"," }"," }"," }",""," if (redo && data) {"," Y._loading = true;"," Y._use(missing, function() {"," if (Y._attach(data)) {"," Y._notify(callback, response, data);"," }"," });"," } else {"," if (data) {"," ret = Y._attach(data);"," }"," if (ret) {"," Y._notify(callback, response, args);"," }"," }",""," if (Y._useQueue && Y._useQueue.size() && !Y._loading) {"," Y._use.apply(Y, Y._useQueue.next());"," }",""," };","",""," // YUI().use('*'); // bind everything available"," if (firstArg === '*') {"," args = [];"," for (i in mods) {"," if (mods.hasOwnProperty(i)) {"," args.push(i);"," }"," }"," ret = Y._attach(args);"," if (ret) {"," handleLoader();"," }"," return Y;"," }",""," if ((mods.loader || mods['loader-base']) && !Y.Loader) {"," Y._attach(['loader' + ((!mods.loader) ? '-base' : '')]);"," }","",""," // use loader to expand dependencies and sort the"," // requirements if it is available."," if (boot && Y.Loader && args.length) {"," loader = getLoader(Y);"," loader.require(args);"," loader.ignoreRegistered = true;"," loader._boot = true;"," loader.calculate(null, (fetchCSS) ? null : 'js');"," args = loader.sorted;"," loader._boot = false;"," }"," "," process(args);",""," len = missing.length;","",""," if (len) {"," missing = YArray.dedupe(missing);"," len = missing.length;"," }","",""," // dynamic load"," if (boot && len && Y.Loader) {"," Y._loading = true;"," loader = getLoader(Y);"," loader.onEnd = handleLoader;"," loader.context = Y;"," loader.data = args;"," loader.ignoreRegistered = false;"," loader.require(args);"," loader.insert(null, (fetchCSS) ? null : 'js');",""," } else if (boot && len && Y.Get && !Env.bootstrapped) {",""," Y._loading = true;",""," handleBoot = function() {"," Y._loading = false;"," queue.running = false;"," Env.bootstrapped = true;"," G_ENV._bootstrapping = false;"," if (Y._attach(['loader'])) {"," Y._use(args, callback);"," }"," };",""," if (G_ENV._bootstrapping) {"," queue.add(handleBoot);"," } else {"," G_ENV._bootstrapping = true;"," Y.Get.script(config.base + config.loaderPath, {"," onEnd: handleBoot"," });"," }",""," } else {"," ret = Y._attach(args);"," if (ret) {"," handleLoader();"," }"," }",""," return Y;"," },","",""," /**"," Adds a namespace object onto the YUI global if called statically.",""," // creates YUI.your.namespace.here as nested objects"," YUI.namespace(\"your.namespace.here\");",""," If called as a method on a YUI instance, it creates the"," namespace on the instance.",""," // creates Y.property.package"," Y.namespace(\"property.package\");",""," Dots in the input string cause `namespace` to create nested objects for"," each token. If any part of the requested namespace already exists, the"," current object will be left in place. This allows multiple calls to"," `namespace` to preserve existing namespaced properties.",""," If the first token in the namespace string is \"YAHOO\", the token is"," discarded.",""," Be careful with namespace tokens. Reserved words may work in some browsers"," and not others. For instance, the following will fail in some browsers"," because the supported version of JavaScript reserves the word \"long\":",""," Y.namespace(\"really.long.nested.namespace\");",""," Note: If you pass multiple arguments to create multiple namespaces, only"," the last one created is returned from this function.",""," @method namespace"," @param {String} namespace* namespaces to create."," @return {Object} A reference to the last namespace object created."," **/"," namespace: function() {"," var a = arguments, o, i = 0, j, d, arg;",""," for (; i < a.length; i++) {"," o = this; //Reset base object per argument or it will get reused from the last"," arg = a[i];"," if (arg.indexOf(PERIOD) > -1) { //Skip this if no \".\" is present"," d = arg.split(PERIOD);"," for (j = (d[0] == 'YAHOO') ? 1 : 0; j < d.length; j++) {"," o[d[j]] = o[d[j]] || {};"," o = o[d[j]];"," }"," } else {"," o[arg] = o[arg] || {};"," o = o[arg]; //Reset base object to the new object so it's returned"," }"," }"," return o;"," },",""," // this is replaced if the log module is included"," log: NOOP,"," message: NOOP,"," // this is replaced if the dump module is included"," dump: function (o) { return ''+o; },",""," /**"," * Report an error. The reporting mechanism is controlled by"," * the `throwFail` configuration attribute. If throwFail is"," * not specified, the message is written to the Logger, otherwise"," * a JS error is thrown. If an `errorFn` is specified in the config"," * it must return `true` to keep the error from being thrown."," * @method error"," * @param msg {String} the error message."," * @param e {Error|String} Optional JS error that was caught, or an error string."," * @param src Optional additional info (passed to `Y.config.errorFn` and `Y.message`)"," * and `throwFail` is specified, this error will be re-thrown."," * @return {YUI} this YUI instance."," */"," error: function(msg, e, src) {"," //TODO Add check for window.onerror here",""," var Y = this, ret;",""," if (Y.config.errorFn) {"," ret = Y.config.errorFn.apply(Y, arguments);"," }",""," if (!ret) {"," throw (e || new Error(msg));"," } else {"," Y.message(msg, 'error', ''+src); // don't scrub this one"," }",""," return Y;"," },",""," /**"," * Generate an id that is unique among all YUI instances"," * @method guid"," * @param pre {String} optional guid prefix."," * @return {String} the guid."," */"," guid: function(pre) {"," var id = this.Env._guidp + '_' + (++this.Env._uidx);"," return (pre) ? (pre + id) : id;"," },",""," /**"," * Returns a `guid` associated with an object. If the object"," * does not have one, a new one is created unless `readOnly`"," * is specified."," * @method stamp"," * @param o {Object} The object to stamp."," * @param readOnly {Boolean} if `true`, a valid guid will only"," * be returned if the object has one assigned to it."," * @return {String} The object's guid or null."," */"," stamp: function(o, readOnly) {"," var uid;"," if (!o) {"," return o;"," }",""," // IE generates its own unique ID for dom nodes"," // The uniqueID property of a document node returns a new ID"," if (o.uniqueID && o.nodeType && o.nodeType !== 9) {"," uid = o.uniqueID;"," } else {"," uid = (typeof o === 'string') ? o : o._yuid;"," }",""," if (!uid) {"," uid = this.guid();"," if (!readOnly) {"," try {"," o._yuid = uid;"," } catch (e) {"," uid = null;"," }"," }"," }"," return uid;"," },",""," /**"," * Destroys the YUI instance"," * @method destroy"," * @since 3.3.0"," */"," destroy: function() {"," var Y = this;"," if (Y.Event) {"," Y.Event._unload();"," }"," delete instances[Y.id];"," delete Y.Env;"," delete Y.config;"," }",""," /**"," * instanceof check for objects that works around"," * memory leak in IE when the item tested is"," * window/document"," * @method instanceOf"," * @param o {Object} The object to check."," * @param type {Object} The class to check against."," * @since 3.3.0"," */","};",""," YUI.prototype = proto;",""," // inheritance utilities are not available yet"," for (prop in proto) {"," if (proto.hasOwnProperty(prop)) {"," YUI[prop] = proto[prop];"," }"," }",""," /**","Static method on the Global YUI object to apply a config to all YUI instances.","It's main use case is \"mashups\" where several third party scripts are trying to write to","a global YUI config at the same time. This way they can all call `YUI.applyConfig({})` instead of","overwriting other scripts configs.","@static","@since 3.5.0","@method applyConfig","@param {Object} o the configuration object.","@example",""," YUI.applyConfig({"," modules: {"," davglass: {"," fullpath: './davglass.js'"," }"," }"," });",""," YUI.applyConfig({"," modules: {"," foo: {"," fullpath: './foo.js'"," }"," }"," });",""," YUI().use('davglass', function(Y) {"," //Module davglass will be available here.."," });",""," */"," YUI.applyConfig = function(o) {"," if (!o) {"," return;"," }"," //If there is a GlobalConfig, apply it first to set the defaults"," if (YUI.GlobalConfig) {"," this.prototype.applyConfig.call(this, YUI.GlobalConfig);"," }"," //Apply this config to it"," this.prototype.applyConfig.call(this, o);"," //Reset GlobalConfig to the combined config"," YUI.GlobalConfig = this.config;"," };",""," // set up the environment"," YUI._init();",""," if (hasWin) {"," // add a window load event at load time so we can capture"," // the case where it fires before dynamic loading is"," // complete."," add(window, 'load', handleLoad);"," } else {"," handleLoad();"," }",""," YUI.Env.add = add;"," YUI.Env.remove = remove;",""," /*global exports*/"," // Support the CommonJS method for exporting our single global"," if (typeof exports == 'object') {"," exports.YUI = YUI;"," }","","}());","","","/**"," * The config object contains all of the configuration options for"," * the `YUI` instance. This object is supplied by the implementer"," * when instantiating a `YUI` instance. Some properties have default"," * values if they are not supplied by the implementer. This should"," * not be updated directly because some values are cached. Use"," * `applyConfig()` to update the config object on a YUI instance that"," * has already been configured."," *"," * @class config"," * @static"," */","","/**"," * Allows the YUI seed file to fetch the loader component and library"," * metadata to dynamically load additional dependencies."," *"," * @property bootstrap"," * @type boolean"," * @default true"," */","","/**"," * Turns on writing Ylog messages to the browser console."," *"," * @property debug"," * @type boolean"," * @default true"," */","","/**"," * Log to the browser console if debug is on and the browser has a"," * supported console."," *"," * @property useBrowserConsole"," * @type boolean"," * @default true"," */","","/**"," * A hash of log sources that should be logged. If specified, only"," * log messages from these sources will be logged."," *"," * @property logInclude"," * @type object"," */","","/**"," * A hash of log sources that should be not be logged. If specified,"," * all sources are logged if not on this list."," *"," * @property logExclude"," * @type object"," */","","/**"," * Set to true if the yui seed file was dynamically loaded in"," * order to bootstrap components relying on the window load event"," * and the `domready` custom event."," *"," * @property injected"," * @type boolean"," * @default false"," */","","/**"," * If `throwFail` is set, `Y.error` will generate or re-throw a JS Error."," * Otherwise the failure is logged."," *"," * @property throwFail"," * @type boolean"," * @default true"," */","","/**"," * The window/frame that this instance should operate in."," *"," * @property win"," * @type Window"," * @default the window hosting YUI"," */","","/**"," * The document associated with the 'win' configuration."," *"," * @property doc"," * @type Document"," * @default the document hosting YUI"," */","","/**"," * A list of modules that defines the YUI core (overrides the default list)."," *"," * @property core"," * @type Array"," * @default [ get,features,intl-base,yui-log,yui-later,loader-base, loader-rollup, loader-yui3 ]"," */","","/**"," * A list of languages in order of preference. This list is matched against"," * the list of available languages in modules that the YUI instance uses to"," * determine the best possible localization of language sensitive modules."," * Languages are represented using BCP 47 language tags, such as \"en-GB\" for"," * English as used in the United Kingdom, or \"zh-Hans-CN\" for simplified"," * Chinese as used in China. The list can be provided as a comma-separated"," * list or as an array."," *"," * @property lang"," * @type string|string[]"," */","","/**"," * The default date format"," * @property dateFormat"," * @type string"," * @deprecated use configuration in `DataType.Date.format()` instead."," */","","/**"," * The default locale"," * @property locale"," * @type string"," * @deprecated use `config.lang` instead."," */","","/**"," * The default interval when polling in milliseconds."," * @property pollInterval"," * @type int"," * @default 20"," */","","/**"," * The number of dynamic nodes to insert by default before"," * automatically removing them. This applies to script nodes"," * because removing the node will not make the evaluated script"," * unavailable. Dynamic CSS is not auto purged, because removing"," * a linked style sheet will also remove the style definitions."," * @property purgethreshold"," * @type int"," * @default 20"," */","","/**"," * The default interval when polling in milliseconds."," * @property windowResizeDelay"," * @type int"," * @default 40"," */","","/**"," * Base directory for dynamic loading"," * @property base"," * @type string"," */","","/*"," * The secure base dir (not implemented)"," * For dynamic loading."," * @property secureBase"," * @type string"," */","","/**"," * The YUI combo service base dir. Ex: `http://yui.yahooapis.com/combo?`"," * For dynamic loading."," * @property comboBase"," * @type string"," */","","/**"," * The root path to prepend to module path for the combo service."," * Ex: 3.0.0b1/build/"," * For dynamic loading."," * @property root"," * @type string"," */","","/**"," * A filter to apply to result urls. This filter will modify the default"," * path for all modules. The default path for the YUI library is the"," * minified version of the files (e.g., event-min.js). The filter property"," * can be a predefined filter or a custom filter. The valid predefined"," * filters are:"," *
          "," *
          DEBUG
          "," *
          Selects the debug versions of the library (e.g., event-debug.js)."," * This option will automatically include the Logger widget
          "," *
          RAW
          "," *
          Selects the non-minified version of the library (e.g., event.js).
          "," *
          "," * You can also define a custom filter, which must be an object literal"," * containing a search expression and a replace string:"," *"," * myFilter: {"," * 'searchExp': \"-min\\\\.js\","," * 'replaceStr': \"-debug.js\""," * }"," *"," * For dynamic loading."," *"," * @property filter"," * @type string|object"," */","","/**"," * The `skin` config let's you configure application level skin"," * customizations. It contains the following attributes which"," * can be specified to override the defaults:"," *"," * // The default skin, which is automatically applied if not"," * // overriden by a component-specific skin definition."," * // Change this in to apply a different skin globally"," * defaultSkin: 'sam',"," *"," * // This is combined with the loader base property to get"," * // the default root directory for a skin."," * base: 'assets/skins/',"," *"," * // Any component-specific overrides can be specified here,"," * // making it possible to load different skins for different"," * // components. It is possible to load more than one skin"," * // for a given component as well."," * overrides: {"," * slider: ['capsule', 'round']"," * }"," *"," * For dynamic loading."," *"," * @property skin"," */","","/**"," * Hash of per-component filter specification. If specified for a given"," * component, this overrides the filter config."," *"," * For dynamic loading."," *"," * @property filters"," */","","/**"," * Use the YUI combo service to reduce the number of http connections"," * required to load your dependencies. Turning this off will"," * disable combo handling for YUI and all module groups configured"," * with a combo service."," *"," * For dynamic loading."," *"," * @property combine"," * @type boolean"," * @default true if 'base' is not supplied, false if it is."," */","","/**"," * A list of modules that should never be dynamically loaded"," *"," * @property ignore"," * @type string[]"," */","","/**"," * A list of modules that should always be loaded when required, even if already"," * present on the page."," *"," * @property force"," * @type string[]"," */","","/**"," * Node or id for a node that should be used as the insertion point for new"," * nodes. For dynamic loading."," *"," * @property insertBefore"," * @type string"," */","","/**"," * Object literal containing attributes to add to dynamically loaded script"," * nodes."," * @property jsAttributes"," * @type string"," */","","/**"," * Object literal containing attributes to add to dynamically loaded link"," * nodes."," * @property cssAttributes"," * @type string"," */","","/**"," * Number of milliseconds before a timeout occurs when dynamically"," * loading nodes. If not set, there is no timeout."," * @property timeout"," * @type int"," */","","/**"," * Callback for the 'CSSComplete' event. When dynamically loading YUI"," * components with CSS, this property fires when the CSS is finished"," * loading but script loading is still ongoing. This provides an"," * opportunity to enhance the presentation of a loading page a little"," * bit before the entire loading process is done."," *"," * @property onCSS"," * @type function"," */","","/**"," * A hash of module definitions to add to the list of YUI components."," * These components can then be dynamically loaded side by side with"," * YUI via the `use()` method. This is a hash, the key is the module"," * name, and the value is an object literal specifying the metdata"," * for the module. See `Loader.addModule` for the supported module"," * metadata fields. Also see groups, which provides a way to"," * configure the base and combo spec for a set of modules."," *"," * modules: {"," * mymod1: {"," * requires: ['node'],"," * fullpath: '/mymod1/mymod1.js'"," * },"," * mymod2: {"," * requires: ['mymod1'],"," * fullpath: '/mymod2/mymod2.js'"," * },"," * mymod3: '/js/mymod3.js',"," * mycssmod: '/css/mycssmod.css'"," * }"," *"," *"," * @property modules"," * @type object"," */","","/**"," * Aliases are dynamic groups of modules that can be used as"," * shortcuts."," *"," * YUI({"," * aliases: {"," * davglass: [ 'node', 'yql', 'dd' ],"," * mine: [ 'davglass', 'autocomplete']"," * }"," * }).use('mine', function(Y) {"," * //Node, YQL, DD & AutoComplete available here.."," * });"," *"," * @property aliases"," * @type object"," */","","/**"," * A hash of module group definitions. It for each group you"," * can specify a list of modules and the base path and"," * combo spec to use when dynamically loading the modules."," *"," * groups: {"," * yui2: {"," * // specify whether or not this group has a combo service"," * combine: true,"," *"," * // The comboSeperator to use with this group's combo handler"," * comboSep: ';',"," *"," * // The maxURLLength for this server"," * maxURLLength: 500,"," *"," * // the base path for non-combo paths"," * base: 'http://yui.yahooapis.com/2.8.0r4/build/',"," *"," * // the path to the combo service"," * comboBase: 'http://yui.yahooapis.com/combo?',"," *"," * // a fragment to prepend to the path attribute when"," * // when building combo urls"," * root: '2.8.0r4/build/',"," *"," * // the module definitions"," * modules: {"," * yui2_yde: {"," * path: \"yahoo-dom-event/yahoo-dom-event.js\""," * },"," * yui2_anim: {"," * path: \"animation/animation.js\","," * requires: ['yui2_yde']"," * }"," * }"," * }"," * }"," *"," * @property groups"," * @type object"," */","","/**"," * The loader 'path' attribute to the loader itself. This is combined"," * with the 'base' attribute to dynamically load the loader component"," * when boostrapping with the get utility alone."," *"," * @property loaderPath"," * @type string"," * @default loader/loader-min.js"," */","","/**"," * Specifies whether or not YUI().use(...) will attempt to load CSS"," * resources at all. Any truthy value will cause CSS dependencies"," * to load when fetching script. The special value 'force' will"," * cause CSS dependencies to be loaded even if no script is needed."," *"," * @property fetchCSS"," * @type boolean|string"," * @default true"," */","","/**"," * The default gallery version to build gallery module urls"," * @property gallery"," * @type string"," * @since 3.1.0"," */","","/**"," * The default YUI 2 version to build yui2 module urls. This is for"," * intrinsic YUI 2 support via the 2in3 project. Also see the '2in3'"," * config for pulling different revisions of the wrapped YUI 2"," * modules."," * @since 3.1.0"," * @property yui2"," * @type string"," * @default 2.9.0"," */","","/**"," * The 2in3 project is a deployment of the various versions of YUI 2"," * deployed as first-class YUI 3 modules. Eventually, the wrapper"," * for the modules will change (but the underlying YUI 2 code will"," * be the same), and you can select a particular version of"," * the wrapper modules via this config."," * @since 3.1.0"," * @property 2in3"," * @type string"," * @default 4"," */","","/**"," * Alternative console log function for use in environments without"," * a supported native console. The function is executed in the"," * YUI instance context."," * @since 3.1.0"," * @property logFn"," * @type Function"," */","","/**"," * A callback to execute when Y.error is called. It receives the"," * error message and an javascript error object if Y.error was"," * executed because a javascript error was caught. The function"," * is executed in the YUI instance context. Returning `true` from this"," * function will stop the Error from being thrown."," *"," * @since 3.2.0"," * @property errorFn"," * @type Function"," */","","/**"," * A callback to execute when the loader fails to load one or"," * more resource. This could be because of a script load"," * failure. It can also fail if a javascript module fails"," * to register itself, but only when the 'requireRegistration'"," * is true. If this function is defined, the use() callback will"," * only be called when the loader succeeds, otherwise it always"," * executes unless there was a javascript error when attaching"," * a module."," *"," * @since 3.3.0"," * @property loadErrorFn"," * @type Function"," */","","/**"," * When set to true, the YUI loader will expect that all modules"," * it is responsible for loading will be first-class YUI modules"," * that register themselves with the YUI global. If this is"," * set to true, loader will fail if the module registration fails"," * to happen after the script is loaded."," *"," * @since 3.3.0"," * @property requireRegistration"," * @type boolean"," * @default false"," */","","/**"," * Cache serviced use() requests."," * @since 3.3.0"," * @property cacheUse"," * @type boolean"," * @default true"," * @deprecated no longer used"," */","","/**"," * Whether or not YUI should use native ES5 functionality when available for"," * features like `Y.Array.each()`, `Y.Object()`, etc. When `false`, YUI will"," * always use its own fallback implementations instead of relying on ES5"," * functionality, even when it's available."," *"," * @property useNativeES5"," * @type Boolean"," * @default true"," * @since 3.5.0"," */","","/**","Delay the `use` callback until a specific event has passed (`load`, `domready`, `contentready` or `available`)","@property delayUntil","@type String|Object","@since 3.6.0","@example","","You can use `load` or `domready` strings by default:",""," YUI({"," delayUntil: 'domready'"," }, function(Y) {"," //This will not fire until 'domeready'"," });","","Or you can delay until a node is available (with `available` or `contentready`):",""," YUI({"," delayUntil: {"," event: 'available',"," args: '#foo'"," }"," }, function(Y) {"," //This will not fire until '#foo' is "," // available in the DOM"," });"," ","","*/","YUI.add('yui-base', function (Y, NAME) {","","/*"," * YUI stub"," * @module yui"," * @submodule yui-base"," */","/**"," * The YUI module contains the components required for building the YUI"," * seed file. This includes the script loading mechanism, a simple queue,"," * and the core utilities for the library."," * @module yui"," * @submodule yui-base"," */","","/**"," * Provides core language utilites and extensions used throughout YUI."," *"," * @class Lang"," * @static"," */","","var L = Y.Lang || (Y.Lang = {}),","","STRING_PROTO = String.prototype,","TOSTRING = Object.prototype.toString,","","TYPES = {"," 'undefined' : 'undefined',"," 'number' : 'number',"," 'boolean' : 'boolean',"," 'string' : 'string',"," '[object Function]': 'function',"," '[object RegExp]' : 'regexp',"," '[object Array]' : 'array',"," '[object Date]' : 'date',"," '[object Error]' : 'error'","},","","SUBREGEX = /\\{\\s*([^|}]+?)\\s*(?:\\|([^}]*))?\\s*\\}/g,","TRIMREGEX = /^\\s+|\\s+$/g,","NATIVE_FN_REGEX = /\\{\\s*\\[(?:native code|function)\\]\\s*\\}/i;","","// -- Protected Methods --------------------------------------------------------","","/**","Returns `true` if the given function appears to be implemented in native code,","`false` otherwise. Will always return `false` -- even in ES5-capable browsers --","if the `useNativeES5` YUI config option is set to `false`.","","This isn't guaranteed to be 100% accurate and won't work for anything other than","functions, but it can be useful for determining whether a function like","`Array.prototype.forEach` is native or a JS shim provided by another library.","","There's a great article by @kangax discussing certain flaws with this technique:","","","While his points are valid, it's still possible to benefit from this function","as long as it's used carefully and sparingly, and in such a way that false","negatives have minimal consequences. It's used internally to avoid using","potentially broken non-native ES5 shims that have been added to the page by","other libraries.","","@method _isNative","@param {Function} fn Function to test.","@return {Boolean} `true` if _fn_ appears to be native, `false` otherwise.","@static","@protected","@since 3.5.0","**/","L._isNative = function (fn) {"," return !!(Y.config.useNativeES5 && fn && NATIVE_FN_REGEX.test(fn));","};","","// -- Public Methods -----------------------------------------------------------","","/**"," * Determines whether or not the provided item is an array."," *"," * Returns `false` for array-like collections such as the function `arguments`"," * collection or `HTMLElement` collections. Use `Y.Array.test()` if you want to"," * test for an array-like collection."," *"," * @method isArray"," * @param o The object to test."," * @return {boolean} true if o is an array."," * @static"," */","L.isArray = L._isNative(Array.isArray) ? Array.isArray : function (o) {"," return L.type(o) === 'array';","};","","/**"," * Determines whether or not the provided item is a boolean."," * @method isBoolean"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a boolean."," */","L.isBoolean = function(o) {"," return typeof o === 'boolean';","};","","/**"," * Determines whether or not the supplied item is a date instance."," * @method isDate"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a date."," */","L.isDate = function(o) {"," return L.type(o) === 'date' && o.toString() !== 'Invalid Date' && !isNaN(o);","};","","/**"," *

          "," * Determines whether or not the provided item is a function."," * Note: Internet Explorer thinks certain functions are objects:"," *

          "," *"," *
          "," * var obj = document.createElement(\"object\");"," * Y.Lang.isFunction(obj.getAttribute) // reports false in IE"," *  "," * var input = document.createElement(\"input\"); // append to body"," * Y.Lang.isFunction(input.focus) // reports false in IE"," * 
          "," *"," *

          "," * You will have to implement additional tests if these functions"," * matter to you."," *

          "," *"," * @method isFunction"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a function."," */","L.isFunction = function(o) {"," return L.type(o) === 'function';","};","","/**"," * Determines whether or not the provided item is null."," * @method isNull"," * @static"," * @param o The object to test."," * @return {boolean} true if o is null."," */","L.isNull = function(o) {"," return o === null;","};","","/**"," * Determines whether or not the provided item is a legal number."," * @method isNumber"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a number."," */","L.isNumber = function(o) {"," return typeof o === 'number' && isFinite(o);","};","","/**"," * Determines whether or not the provided item is of type object"," * or function. Note that arrays are also objects, so"," * Y.Lang.isObject([]) === true."," * @method isObject"," * @static"," * @param o The object to test."," * @param failfn {boolean} fail if the input is a function."," * @return {boolean} true if o is an object."," * @see isPlainObject"," */","L.isObject = function(o, failfn) {"," var t = typeof o;"," return (o && (t === 'object' ||"," (!failfn && (t === 'function' || L.isFunction(o))))) || false;","};","","/**"," * Determines whether or not the provided item is a string."," * @method isString"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a string."," */","L.isString = function(o) {"," return typeof o === 'string';","};","","/**"," * Determines whether or not the provided item is undefined."," * @method isUndefined"," * @static"," * @param o The object to test."," * @return {boolean} true if o is undefined."," */","L.isUndefined = function(o) {"," return typeof o === 'undefined';","};","","/**"," * A convenience method for detecting a legitimate non-null value."," * Returns false for null/undefined/NaN, true for other values,"," * including 0/false/''"," * @method isValue"," * @static"," * @param o The item to test."," * @return {boolean} true if it is not null/undefined/NaN || false."," */","L.isValue = function(o) {"," var t = L.type(o);",""," switch (t) {"," case 'number':"," return isFinite(o);",""," case 'null': // fallthru"," case 'undefined':"," return false;",""," default:"," return !!t;"," }","};","","/**"," * Returns the current time in milliseconds."," *"," * @method now"," * @return {Number} Current time in milliseconds."," * @static"," * @since 3.3.0"," */","L.now = Date.now || function () {"," return new Date().getTime();","};","","/**"," * Lightweight version of Y.substitute. Uses the same template"," * structure as Y.substitute, but doesn't support recursion,"," * auto-object coersion, or formats."," * @method sub"," * @param {string} s String to be modified."," * @param {object} o Object containing replacement values."," * @return {string} the substitute result."," * @static"," * @since 3.2.0"," */","L.sub = function(s, o) {"," return s.replace ? s.replace(SUBREGEX, function (match, key) {"," return L.isUndefined(o[key]) ? match : o[key];"," }) : s;","};","","/**"," * Returns a string without any leading or trailing whitespace. If"," * the input is not a string, the input will be returned untouched."," * @method trim"," * @static"," * @param s {string} the string to trim."," * @return {string} the trimmed string."," */","L.trim = STRING_PROTO.trim ? function(s) {"," return s && s.trim ? s.trim() : s;","} : function (s) {"," try {"," return s.replace(TRIMREGEX, '');"," } catch (e) {"," return s;"," }","};","","/**"," * Returns a string without any leading whitespace."," * @method trimLeft"," * @static"," * @param s {string} the string to trim."," * @return {string} the trimmed string."," */","L.trimLeft = STRING_PROTO.trimLeft ? function (s) {"," return s.trimLeft();","} : function (s) {"," return s.replace(/^\\s+/, '');","};","","/**"," * Returns a string without any trailing whitespace."," * @method trimRight"," * @static"," * @param s {string} the string to trim."," * @return {string} the trimmed string."," */","L.trimRight = STRING_PROTO.trimRight ? function (s) {"," return s.trimRight();","} : function (s) {"," return s.replace(/\\s+$/, '');","};","","/**","Returns one of the following strings, representing the type of the item passed","in:",""," * \"array\""," * \"boolean\""," * \"date\""," * \"error\""," * \"function\""," * \"null\""," * \"number\""," * \"object\""," * \"regexp\""," * \"string\""," * \"undefined\"","","Known issues:",""," * `typeof HTMLElementCollection` returns function in Safari, but"," `Y.Lang.type()` reports \"object\", which could be a good thing --"," but it actually caused the logic in Y.Lang.isObject to fail.","","@method type","@param o the item to test.","@return {string} the detected type.","@static","**/","L.type = function(o) {"," return TYPES[typeof o] || TYPES[TOSTRING.call(o)] || (o ? 'object' : 'null');","};","/**","@module yui","@submodule yui-base","*/","","var Lang = Y.Lang,"," Native = Array.prototype,",""," hasOwn = Object.prototype.hasOwnProperty;","","/**","Provides utility methods for working with arrays. Additional array helpers can","be found in the `collection` and `array-extras` modules.","","`Y.Array(thing)` returns a native array created from _thing_. Depending on","_thing_'s type, one of the following will happen:",""," * Arrays are returned unmodified unless a non-zero _startIndex_ is"," specified."," * Array-like collections (see `Array.test()`) are converted to arrays."," * For everything else, a new array is created with _thing_ as the sole"," item.","","Note: elements that are also collections, such as `` and ``, to be array-like.","","@method test","@param {Object} obj Object to test.","@return {Number} A number indicating the results of the test:",""," * 0: Neither an array nor an array-like collection."," * 1: Real array."," * 2: Array-like collection.","","@static","**/","YArray.test = function (obj) {"," var result = 0;",""," if (Lang.isArray(obj)) {"," result = 1;"," } else if (Lang.isObject(obj)) {"," try {"," // indexed, but no tagName (element) or scrollTo/document (window. From DOM.isWindow test which we can't use here),"," // or functions without apply/call (Safari"," // HTMLElementCollection bug)."," if ('length' in obj && !obj.tagName && !(obj.scrollTo && obj.document) && !obj.apply) {"," result = 2;"," }"," } catch (ex) {}"," }",""," return result;","};","/**"," * The YUI module contains the components required for building the YUI"," * seed file. This includes the script loading mechanism, a simple queue,"," * and the core utilities for the library."," * @module yui"," * @submodule yui-base"," */","","/**"," * A simple FIFO queue. Items are added to the Queue with add(1..n items) and"," * removed using next()."," *"," * @class Queue"," * @constructor"," * @param {MIXED} item* 0..n items to seed the queue."," */","function Queue() {"," this._init();"," this.add.apply(this, arguments);","}","","Queue.prototype = {"," /**"," * Initialize the queue"," *"," * @method _init"," * @protected"," */"," _init: function() {"," /**"," * The collection of enqueued items"," *"," * @property _q"," * @type Array"," * @protected"," */"," this._q = [];"," },",""," /**"," * Get the next item in the queue. FIFO support"," *"," * @method next"," * @return {MIXED} the next item in the queue."," */"," next: function() {"," return this._q.shift();"," },",""," /**"," * Get the last in the queue. LIFO support."," *"," * @method last"," * @return {MIXED} the last item in the queue."," */"," last: function() {"," return this._q.pop();"," },",""," /**"," * Add 0..n items to the end of the queue."," *"," * @method add"," * @param {MIXED} item* 0..n items."," * @return {object} this queue."," */"," add: function() {"," this._q.push.apply(this._q, arguments);",""," return this;"," },",""," /**"," * Returns the current number of queued items."," *"," * @method size"," * @return {Number} The size."," */"," size: function() {"," return this._q.length;"," }","};","","Y.Queue = Queue;","","YUI.Env._loaderQueue = YUI.Env._loaderQueue || new Queue();","","/**","The YUI module contains the components required for building the YUI seed file.","This includes the script loading mechanism, a simple queue, and the core","utilities for the library.","","@module yui","@submodule yui-base","**/","","var CACHED_DELIMITER = '__',",""," hasOwn = Object.prototype.hasOwnProperty,"," isObject = Y.Lang.isObject;","","/**","Returns a wrapper for a function which caches the return value of that function,","keyed off of the combined string representation of the argument values provided","when the wrapper is called.","","Calling this function again with the same arguments will return the cached value","rather than executing the wrapped function.","","Note that since the cache is keyed off of the string representation of arguments","passed to the wrapper function, arguments that aren't strings and don't provide","a meaningful `toString()` method may result in unexpected caching behavior. For","example, the objects `{}` and `{foo: 'bar'}` would both be converted to the","string `[object Object]` when used as a cache key.","","@method cached","@param {Function} source The function to memoize.","@param {Object} [cache={}] Object in which to store cached values. You may seed"," this object with pre-existing cached values if desired.","@param {any} [refetch] If supplied, this value is compared with the cached value"," using a `==` comparison. If the values are equal, the wrapped function is"," executed again even though a cached value exists.","@return {Function} Wrapped function.","@for YUI","**/","Y.cached = function (source, cache, refetch) {"," cache || (cache = {});",""," return function (arg) {"," var key = arguments.length > 1 ?"," Array.prototype.join.call(arguments, CACHED_DELIMITER) :"," String(arg);",""," if (!(key in cache) || (refetch && cache[key] == refetch)) {"," cache[key] = source.apply(source, arguments);"," }",""," return cache[key];"," };","};","","/**","Returns the `location` object from the window/frame in which this YUI instance","operates, or `undefined` when executing in a non-browser environment","(e.g. Node.js).","","It is _not_ recommended to hold references to the `window.location` object","outside of the scope of a function in which its properties are being accessed or","its methods are being called. This is because of a nasty bug/issue that exists","in both Safari and MobileSafari browsers:","[WebKit Bug 34679](https://bugs.webkit.org/show_bug.cgi?id=34679).","","@method getLocation","@return {location} The `location` object from the window/frame in which this YUI"," instance operates.","@since 3.5.0","**/","Y.getLocation = function () {"," // It is safer to look this up every time because yui-base is attached to a"," // YUI instance before a user's config is applied; i.e. `Y.config.win` does"," // not point the correct window object when this file is loaded."," var win = Y.config.win;",""," // It is not safe to hold a reference to the `location` object outside the"," // scope in which it is being used. The WebKit engine used in Safari and"," // MobileSafari will \"disconnect\" the `location` object from the `window`"," // when a page is restored from back/forward history cache."," return win && win.location;","};","","/**","Returns a new object containing all of the properties of all the supplied","objects. The properties from later objects will overwrite those in earlier","objects.","","Passing in a single object will create a shallow copy of it. For a deep copy,","use `clone()`.","","@method merge","@param {Object} objects* One or more objects to merge.","@return {Object} A new merged object.","**/","Y.merge = function () {"," var i = 0,"," len = arguments.length,"," result = {},"," key,"," obj;",""," for (; i < len; ++i) {"," obj = arguments[i];",""," for (key in obj) {"," if (hasOwn.call(obj, key)) {"," result[key] = obj[key];"," }"," }"," }",""," return result;","};","","/**","Mixes _supplier_'s properties into _receiver_.","","Properties on _receiver_ or _receiver_'s prototype will not be overwritten or","shadowed unless the _overwrite_ parameter is `true`, and will not be merged","unless the _merge_ parameter is `true`.","","In the default mode (0), only properties the supplier owns are copied (prototype","properties are not copied). The following copying modes are available:",""," * `0`: _Default_. Object to object."," * `1`: Prototype to prototype."," * `2`: Prototype to prototype and object to object."," * `3`: Prototype to object."," * `4`: Object to prototype.","","@method mix","@param {Function|Object} receiver The object or function to receive the mixed"," properties.","@param {Function|Object} supplier The object or function supplying the"," properties to be mixed.","@param {Boolean} [overwrite=false] If `true`, properties that already exist"," on the receiver will be overwritten with properties from the supplier.","@param {String[]} [whitelist] An array of property names to copy. If"," specified, only the whitelisted properties will be copied, and all others"," will be ignored.","@param {Number} [mode=0] Mix mode to use. See above for available modes.","@param {Boolean} [merge=false] If `true`, objects and arrays that already"," exist on the receiver will have the corresponding object/array from the"," supplier merged into them, rather than being skipped or overwritten. When"," both _overwrite_ and _merge_ are `true`, _merge_ takes precedence.","@return {Function|Object|YUI} The receiver, or the YUI instance if the"," specified receiver is falsy.","**/","Y.mix = function(receiver, supplier, overwrite, whitelist, mode, merge) {"," var alwaysOverwrite, exists, from, i, key, len, to;",""," // If no supplier is given, we return the receiver. If no receiver is given,"," // we return Y. Returning Y doesn't make much sense to me, but it's"," // grandfathered in for backcompat reasons."," if (!receiver || !supplier) {"," return receiver || Y;"," }",""," if (mode) {"," // In mode 2 (prototype to prototype and object to object), we recurse"," // once to do the proto to proto mix. The object to object mix will be"," // handled later on."," if (mode === 2) {"," Y.mix(receiver.prototype, supplier.prototype, overwrite,"," whitelist, 0, merge);"," }",""," // Depending on which mode is specified, we may be copying from or to"," // the prototypes of the supplier and receiver."," from = mode === 1 || mode === 3 ? supplier.prototype : supplier;"," to = mode === 1 || mode === 4 ? receiver.prototype : receiver;",""," // If either the supplier or receiver doesn't actually have a"," // prototype property, then we could end up with an undefined `from`"," // or `to`. If that happens, we abort and return the receiver."," if (!from || !to) {"," return receiver;"," }"," } else {"," from = supplier;"," to = receiver;"," }",""," // If `overwrite` is truthy and `merge` is falsy, then we can skip a"," // property existence check on each iteration and save some time."," alwaysOverwrite = overwrite && !merge;",""," if (whitelist) {"," for (i = 0, len = whitelist.length; i < len; ++i) {"," key = whitelist[i];",""," // We call `Object.prototype.hasOwnProperty` instead of calling"," // `hasOwnProperty` on the object itself, since the object's"," // `hasOwnProperty` method may have been overridden or removed."," // Also, some native objects don't implement a `hasOwnProperty`"," // method."," if (!hasOwn.call(from, key)) {"," continue;"," }",""," // The `key in to` check here is (sadly) intentional for backwards"," // compatibility reasons. It prevents undesired shadowing of"," // prototype members on `to`."," exists = alwaysOverwrite ? false : key in to;",""," if (merge && exists && isObject(to[key], true)"," && isObject(from[key], true)) {"," // If we're in merge mode, and the key is present on both"," // objects, and the value on both objects is either an object or"," // an array (but not a function), then we recurse to merge the"," // `from` value into the `to` value instead of overwriting it."," //"," // Note: It's intentional that the whitelist isn't passed to the"," // recursive call here. This is legacy behavior that lots of"," // code still depends on."," Y.mix(to[key], from[key], overwrite, null, 0, merge);"," } else if (overwrite || !exists) {"," // We're not in merge mode, so we'll only copy the `from` value"," // to the `to` value if we're in overwrite mode or if the"," // current key doesn't exist on the `to` object."," to[key] = from[key];"," }"," }"," } else {"," for (key in from) {"," // The code duplication here is for runtime performance reasons."," // Combining whitelist and non-whitelist operations into a single"," // loop or breaking the shared logic out into a function both result"," // in worse performance, and Y.mix is critical enough that the byte"," // tradeoff is worth it."," if (!hasOwn.call(from, key)) {"," continue;"," }",""," // The `key in to` check here is (sadly) intentional for backwards"," // compatibility reasons. It prevents undesired shadowing of"," // prototype members on `to`."," exists = alwaysOverwrite ? false : key in to;",""," if (merge && exists && isObject(to[key], true)"," && isObject(from[key], true)) {"," Y.mix(to[key], from[key], overwrite, null, 0, merge);"," } else if (overwrite || !exists) {"," to[key] = from[key];"," }"," }",""," // If this is an IE browser with the JScript enumeration bug, force"," // enumeration of the buggy properties by making a recursive call with"," // the buggy properties as the whitelist."," if (Y.Object._hasEnumBug) {"," Y.mix(to, from, overwrite, Y.Object._forceEnum, mode, merge);"," }"," }",""," return receiver;","};","/**"," * The YUI module contains the components required for building the YUI"," * seed file. This includes the script loading mechanism, a simple queue,"," * and the core utilities for the library."," * @module yui"," * @submodule yui-base"," */","","/**"," * Adds utilities to the YUI instance for working with objects."," *"," * @class Object"," */","","var Lang = Y.Lang,"," hasOwn = Object.prototype.hasOwnProperty,",""," UNDEFINED, // <-- Note the comma. We're still declaring vars.","","/**"," * Returns a new object that uses _obj_ as its prototype. This method wraps the"," * native ES5 `Object.create()` method if available, but doesn't currently"," * pass through `Object.create()`'s second argument (properties) in order to"," * ensure compatibility with older browsers."," *"," * @method ()"," * @param {Object} obj Prototype object."," * @return {Object} New object using _obj_ as its prototype."," * @static"," */","O = Y.Object = Lang._isNative(Object.create) ? function (obj) {"," // We currently wrap the native Object.create instead of simply aliasing it"," // to ensure consistency with our fallback shim, which currently doesn't"," // support Object.create()'s second argument (properties). Once we have a"," // safe fallback for the properties arg, we can stop wrapping"," // Object.create()."," return Object.create(obj);","} : (function () {"," // Reusable constructor function for the Object.create() shim."," function F() {}",""," // The actual shim."," return function (obj) {"," F.prototype = obj;"," return new F();"," };","}()),","","/**"," * Property names that IE doesn't enumerate in for..in loops, even when they"," * should be enumerable. When `_hasEnumBug` is `true`, it's necessary to"," * manually enumerate these properties."," *"," * @property _forceEnum"," * @type String[]"," * @protected"," * @static"," */","forceEnum = O._forceEnum = ["," 'hasOwnProperty',"," 'isPrototypeOf',"," 'propertyIsEnumerable',"," 'toString',"," 'toLocaleString',"," 'valueOf'","],","","/**"," * `true` if this browser has the JScript enumeration bug that prevents"," * enumeration of the properties named in the `_forceEnum` array, `false`"," * otherwise."," *"," * See:"," * - "," * - "," *"," * @property _hasEnumBug"," * @type Boolean"," * @protected"," * @static"," */","hasEnumBug = O._hasEnumBug = !{valueOf: 0}.propertyIsEnumerable('valueOf'),","","/**"," * `true` if this browser incorrectly considers the `prototype` property of"," * functions to be enumerable. Currently known to affect Opera 11.50."," *"," * @property _hasProtoEnumBug"," * @type Boolean"," * @protected"," * @static"," */","hasProtoEnumBug = O._hasProtoEnumBug = (function () {}).propertyIsEnumerable('prototype'),","","/**"," * Returns `true` if _key_ exists on _obj_, `false` if _key_ doesn't exist or"," * exists only on _obj_'s prototype. This is essentially a safer version of"," * `obj.hasOwnProperty()`."," *"," * @method owns"," * @param {Object} obj Object to test."," * @param {String} key Property name to look for."," * @return {Boolean} `true` if _key_ exists on _obj_, `false` otherwise."," * @static"," */","owns = O.owns = function (obj, key) {"," return !!obj && hasOwn.call(obj, key);","}; // <-- End of var declarations.","","/**"," * Alias for `owns()`."," *"," * @method hasKey"," * @param {Object} obj Object to test."," * @param {String} key Property name to look for."," * @return {Boolean} `true` if _key_ exists on _obj_, `false` otherwise."," * @static"," */","O.hasKey = owns;","","/**"," * Returns an array containing the object's enumerable keys. Does not include"," * prototype keys or non-enumerable keys."," *"," * Note that keys are returned in enumeration order (that is, in the same order"," * that they would be enumerated by a `for-in` loop), which may not be the same"," * as the order in which they were defined."," *"," * This method is an alias for the native ES5 `Object.keys()` method if"," * available."," *"," * @example"," *"," * Y.Object.keys({a: 'foo', b: 'bar', c: 'baz'});"," * // => ['a', 'b', 'c']"," *"," * @method keys"," * @param {Object} obj An object."," * @return {String[]} Array of keys."," * @static"," */","O.keys = Lang._isNative(Object.keys) ? Object.keys : function (obj) {"," if (!Lang.isObject(obj)) {"," throw new TypeError('Object.keys called on a non-object');"," }",""," var keys = [],"," i, key, len;",""," if (hasProtoEnumBug && typeof obj === 'function') {"," for (key in obj) {"," if (owns(obj, key) && key !== 'prototype') {"," keys.push(key);"," }"," }"," } else {"," for (key in obj) {"," if (owns(obj, key)) {"," keys.push(key);"," }"," }"," }",""," if (hasEnumBug) {"," for (i = 0, len = forceEnum.length; i < len; ++i) {"," key = forceEnum[i];",""," if (owns(obj, key)) {"," keys.push(key);"," }"," }"," }",""," return keys;","};","","/**"," * Returns an array containing the values of the object's enumerable keys."," *"," * Note that values are returned in enumeration order (that is, in the same"," * order that they would be enumerated by a `for-in` loop), which may not be the"," * same as the order in which they were defined."," *"," * @example"," *"," * Y.Object.values({a: 'foo', b: 'bar', c: 'baz'});"," * // => ['foo', 'bar', 'baz']"," *"," * @method values"," * @param {Object} obj An object."," * @return {Array} Array of values."," * @static"," */","O.values = function (obj) {"," var keys = O.keys(obj),"," i = 0,"," len = keys.length,"," values = [];",""," for (; i < len; ++i) {"," values.push(obj[keys[i]]);"," }",""," return values;","};","","/**"," * Returns the number of enumerable keys owned by an object."," *"," * @method size"," * @param {Object} obj An object."," * @return {Number} The object's size."," * @static"," */","O.size = function (obj) {"," try {"," return O.keys(obj).length;"," } catch (ex) {"," return 0; // Legacy behavior for non-objects."," }","};","","/**"," * Returns `true` if the object owns an enumerable property with the specified"," * value."," *"," * @method hasValue"," * @param {Object} obj An object."," * @param {any} value The value to search for."," * @return {Boolean} `true` if _obj_ contains _value_, `false` otherwise."," * @static"," */","O.hasValue = function (obj, value) {"," return Y.Array.indexOf(O.values(obj), value) > -1;","};","","/**"," * Executes a function on each enumerable property in _obj_. The function"," * receives the value, the key, and the object itself as parameters (in that"," * order)."," *"," * By default, only properties owned by _obj_ are enumerated. To include"," * prototype properties, set the _proto_ parameter to `true`."," *"," * @method each"," * @param {Object} obj Object to enumerate."," * @param {Function} fn Function to execute on each enumerable property."," * @param {mixed} fn.value Value of the current property."," * @param {String} fn.key Key of the current property."," * @param {Object} fn.obj Object being enumerated."," * @param {Object} [thisObj] `this` object to use when calling _fn_."," * @param {Boolean} [proto=false] Include prototype properties."," * @return {YUI} the YUI instance."," * @chainable"," * @static"," */","O.each = function (obj, fn, thisObj, proto) {"," var key;",""," for (key in obj) {"," if (proto || owns(obj, key)) {"," fn.call(thisObj || Y, obj[key], key, obj);"," }"," }",""," return Y;","};","","/**"," * Executes a function on each enumerable property in _obj_, but halts if the"," * function returns a truthy value. The function receives the value, the key,"," * and the object itself as paramters (in that order)."," *"," * By default, only properties owned by _obj_ are enumerated. To include"," * prototype properties, set the _proto_ parameter to `true`."," *"," * @method some"," * @param {Object} obj Object to enumerate."," * @param {Function} fn Function to execute on each enumerable property."," * @param {mixed} fn.value Value of the current property."," * @param {String} fn.key Key of the current property."," * @param {Object} fn.obj Object being enumerated."," * @param {Object} [thisObj] `this` object to use when calling _fn_."," * @param {Boolean} [proto=false] Include prototype properties."," * @return {Boolean} `true` if any execution of _fn_ returns a truthy value,"," * `false` otherwise."," * @static"," */","O.some = function (obj, fn, thisObj, proto) {"," var key;",""," for (key in obj) {"," if (proto || owns(obj, key)) {"," if (fn.call(thisObj || Y, obj[key], key, obj)) {"," return true;"," }"," }"," }",""," return false;","};","","/**"," * Retrieves the sub value at the provided path,"," * from the value object provided."," *"," * @method getValue"," * @static"," * @param o The object from which to extract the property value."," * @param path {Array} A path array, specifying the object traversal path"," * from which to obtain the sub value."," * @return {Any} The value stored in the path, undefined if not found,"," * undefined if the source is not an object. Returns the source object"," * if an empty path is provided."," */","O.getValue = function(o, path) {"," if (!Lang.isObject(o)) {"," return UNDEFINED;"," }",""," var i,"," p = Y.Array(path),"," l = p.length;",""," for (i = 0; o !== UNDEFINED && i < l; i++) {"," o = o[p[i]];"," }",""," return o;","};","","/**"," * Sets the sub-attribute value at the provided path on the"," * value object. Returns the modified value object, or"," * undefined if the path is invalid."," *"," * @method setValue"," * @static"," * @param o The object on which to set the sub value."," * @param path {Array} A path array, specifying the object traversal path"," * at which to set the sub value."," * @param val {Any} The new value for the sub-attribute."," * @return {Object} The modified object, with the new sub value set, or"," * undefined, if the path was invalid."," */","O.setValue = function(o, path, val) {"," var i,"," p = Y.Array(path),"," leafIdx = p.length - 1,"," ref = o;",""," if (leafIdx >= 0) {"," for (i = 0; ref !== UNDEFINED && i < leafIdx; i++) {"," ref = ref[p[i]];"," }",""," if (ref !== UNDEFINED) {"," ref[p[i]] = val;"," } else {"," return UNDEFINED;"," }"," }",""," return o;","};","","/**"," * Returns `true` if the object has no enumerable properties of its own."," *"," * @method isEmpty"," * @param {Object} obj An object."," * @return {Boolean} `true` if the object is empty."," * @static"," * @since 3.2.0"," */","O.isEmpty = function (obj) {"," return !O.keys(Object(obj)).length;","};","/**"," * The YUI module contains the components required for building the YUI seed"," * file. This includes the script loading mechanism, a simple queue, and the"," * core utilities for the library."," * @module yui"," * @submodule yui-base"," */","","/**"," * YUI user agent detection."," * Do not fork for a browser if it can be avoided. Use feature detection when"," * you can. Use the user agent as a last resort. For all fields listed"," * as @type float, UA stores a version number for the browser engine,"," * 0 otherwise. This value may or may not map to the version number of"," * the browser using the engine. The value is presented as a float so"," * that it can easily be used for boolean evaluation as well as for"," * looking for a particular range of versions. Because of this,"," * some of the granularity of the version info may be lost. The fields that"," * are @type string default to null. The API docs list the values that"," * these fields can have."," * @class UA"," * @static"," */","","/**","* Static method on `YUI.Env` for parsing a UA string. Called at instantiation","* to populate `Y.UA`.","*","* @static","* @method parseUA","* @param {String} [subUA=navigator.userAgent] UA string to parse","* @return {Object} The Y.UA object","*/","YUI.Env.parseUA = function(subUA) {",""," var numberify = function(s) {"," var c = 0;"," return parseFloat(s.replace(/\\./g, function() {"," return (c++ === 1) ? '' : '.';"," }));"," },",""," win = Y.config.win,",""," nav = win && win.navigator,",""," o = {",""," /**"," * Internet Explorer version number or 0. Example: 6"," * @property ie"," * @type float"," * @static"," */"," ie: 0,",""," /**"," * Opera version number or 0. Example: 9.2"," * @property opera"," * @type float"," * @static"," */"," opera: 0,",""," /**"," * Gecko engine revision number. Will evaluate to 1 if Gecko"," * is detected but the revision could not be found. Other browsers"," * will be 0. Example: 1.8"," *
          ","         * Firefox 1.0.0.4: 1.7.8   <-- Reports 1.7","         * Firefox 1.5.0.9: 1.8.0.9 <-- 1.8","         * Firefox 2.0.0.3: 1.8.1.3 <-- 1.81","         * Firefox 3.0   <-- 1.9","         * Firefox 3.5   <-- 1.91","         * 
          "," * @property gecko"," * @type float"," * @static"," */"," gecko: 0,",""," /**"," * AppleWebKit version. KHTML browsers that are not WebKit browsers"," * will evaluate to 1, other browsers 0. Example: 418.9"," *
          ","         * Safari 1.3.2 (312.6): 312.8.1 <-- Reports 312.8 -- currently the","         *                                   latest available for Mac OSX 10.3.","         * Safari 2.0.2:         416     <-- hasOwnProperty introduced","         * Safari 2.0.4:         418     <-- preventDefault fixed","         * Safari 2.0.4 (419.3): 418.9.1 <-- One version of Safari may run","         *                                   different versions of webkit","         * Safari 2.0.4 (419.3): 419     <-- Tiger installations that have been","         *                                   updated, but not updated","         *                                   to the latest patch.","         * Webkit 212 nightly:   522+    <-- Safari 3.0 precursor (with native","         * SVG and many major issues fixed).","         * Safari 3.0.4 (523.12) 523.12  <-- First Tiger release - automatic","         * update from 2.x via the 10.4.11 OS patch.","         * Webkit nightly 1/2008:525+    <-- Supports DOMContentLoaded event.","         *                                   yahoo.com user agent hack removed.","         * 
          "," * http://en.wikipedia.org/wiki/Safari_version_history"," * @property webkit"," * @type float"," * @static"," */"," webkit: 0,",""," /**"," * Safari will be detected as webkit, but this property will also"," * be populated with the Safari version number"," * @property safari"," * @type float"," * @static"," */"," safari: 0,",""," /**"," * Chrome will be detected as webkit, but this property will also"," * be populated with the Chrome version number"," * @property chrome"," * @type float"," * @static"," */"," chrome: 0,",""," /**"," * The mobile property will be set to a string containing any relevant"," * user agent information when a modern mobile browser is detected."," * Currently limited to Safari on the iPhone/iPod Touch, Nokia N-series"," * devices with the WebKit-based browser, and Opera Mini."," * @property mobile"," * @type string"," * @default null"," * @static"," */"," mobile: null,",""," /**"," * Adobe AIR version number or 0. Only populated if webkit is detected."," * Example: 1.0"," * @property air"," * @type float"," */"," air: 0,"," /**"," * PhantomJS version number or 0. Only populated if webkit is detected."," * Example: 1.0"," * @property phantomjs"," * @type float"," */"," phantomjs: 0,"," /**"," * Detects Apple iPad's OS version"," * @property ipad"," * @type float"," * @static"," */"," ipad: 0,"," /**"," * Detects Apple iPhone's OS version"," * @property iphone"," * @type float"," * @static"," */"," iphone: 0,"," /**"," * Detects Apples iPod's OS version"," * @property ipod"," * @type float"," * @static"," */"," ipod: 0,"," /**"," * General truthy check for iPad, iPhone or iPod"," * @property ios"," * @type Boolean"," * @default null"," * @static"," */"," ios: null,"," /**"," * Detects Googles Android OS version"," * @property android"," * @type float"," * @static"," */"," android: 0,"," /**"," * Detects Kindle Silk"," * @property silk"," * @type float"," * @static"," */"," silk: 0,"," /**"," * Detects Kindle Silk Acceleration"," * @property accel"," * @type Boolean"," * @static"," */"," accel: false,"," /**"," * Detects Palms WebOS version"," * @property webos"," * @type float"," * @static"," */"," webos: 0,",""," /**"," * Google Caja version number or 0."," * @property caja"," * @type float"," */"," caja: nav && nav.cajaVersion,",""," /**"," * Set to true if the page appears to be in SSL"," * @property secure"," * @type boolean"," * @static"," */"," secure: false,",""," /**"," * The operating system. Currently only detecting windows or macintosh"," * @property os"," * @type string"," * @default null"," * @static"," */"," os: null,",""," /**"," * The Nodejs Version"," * @property nodejs"," * @type float"," * @default 0"," * @static"," */"," nodejs: 0,"," /*"," * Window8/IE10 Application host environment"," * @property winjs"," * @type Boolean"," * @static"," */"," winjs: !!((typeof Windows !== \"undefined\") && Windows.System),"," /**"," * Are touch/msPointer events available on this device"," * @property touchEnabled"," * @type Boolean"," * @static"," */"," touchEnabled: false"," },",""," ua = subUA || nav && nav.userAgent,",""," loc = win && win.location,",""," href = loc && loc.href,",""," m;",""," /**"," * The User Agent string that was parsed"," * @property userAgent"," * @type String"," * @static"," */"," o.userAgent = ua;","",""," o.secure = href && (href.toLowerCase().indexOf('https') === 0);",""," if (ua) {",""," if ((/windows|win32/i).test(ua)) {"," o.os = 'windows';"," } else if ((/macintosh|mac_powerpc/i).test(ua)) {"," o.os = 'macintosh';"," } else if ((/android/i).test(ua)) {"," o.os = 'android';"," } else if ((/symbos/i).test(ua)) {"," o.os = 'symbos';"," } else if ((/linux/i).test(ua)) {"," o.os = 'linux';"," } else if ((/rhino/i).test(ua)) {"," o.os = 'rhino';"," }",""," // Modern KHTML browsers should qualify as Safari X-Grade"," if ((/KHTML/).test(ua)) {"," o.webkit = 1;"," }"," if ((/IEMobile|XBLWP7/).test(ua)) {"," o.mobile = 'windows';"," }"," if ((/Fennec/).test(ua)) {"," o.mobile = 'gecko';"," }"," // Modern WebKit browsers are at least X-Grade"," m = ua.match(/AppleWebKit\\/([^\\s]*)/);"," if (m && m[1]) {"," o.webkit = numberify(m[1]);"," o.safari = o.webkit;",""," if (/PhantomJS/.test(ua)) {"," m = ua.match(/PhantomJS\\/([^\\s]*)/);"," if (m && m[1]) {"," o.phantomjs = numberify(m[1]);"," }"," }",""," // Mobile browser check"," if (/ Mobile\\//.test(ua) || (/iPad|iPod|iPhone/).test(ua)) {"," o.mobile = 'Apple'; // iPhone or iPod Touch",""," m = ua.match(/OS ([^\\s]*)/);"," if (m && m[1]) {"," m = numberify(m[1].replace('_', '.'));"," }"," o.ios = m;"," o.os = 'ios';"," o.ipad = o.ipod = o.iphone = 0;",""," m = ua.match(/iPad|iPod|iPhone/);"," if (m && m[0]) {"," o[m[0].toLowerCase()] = o.ios;"," }"," } else {"," m = ua.match(/NokiaN[^\\/]*|webOS\\/\\d\\.\\d/);"," if (m) {"," // Nokia N-series, webOS, ex: NokiaN95"," o.mobile = m[0];"," }"," if (/webOS/.test(ua)) {"," o.mobile = 'WebOS';"," m = ua.match(/webOS\\/([^\\s]*);/);"," if (m && m[1]) {"," o.webos = numberify(m[1]);"," }"," }"," if (/ Android/.test(ua)) {"," if (/Mobile/.test(ua)) {"," o.mobile = 'Android';"," }"," m = ua.match(/Android ([^\\s]*);/);"," if (m && m[1]) {"," o.android = numberify(m[1]);"," }",""," }"," if (/Silk/.test(ua)) {"," m = ua.match(/Silk\\/([^\\s]*)\\)/);"," if (m && m[1]) {"," o.silk = numberify(m[1]);"," }"," if (!o.android) {"," o.android = 2.34; //Hack for desktop mode in Kindle"," o.os = 'Android';"," }"," if (/Accelerated=true/.test(ua)) {"," o.accel = true;"," }"," }"," }",""," m = ua.match(/(Chrome|CrMo|CriOS)\\/([^\\s]*)/);"," if (m && m[1] && m[2]) {"," o.chrome = numberify(m[2]); // Chrome"," o.safari = 0; //Reset safari back to 0"," if (m[1] === 'CrMo') {"," o.mobile = 'chrome';"," }"," } else {"," m = ua.match(/AdobeAIR\\/([^\\s]*)/);"," if (m) {"," o.air = m[0]; // Adobe AIR 1.0 or better"," }"," }"," }",""," if (!o.webkit) { // not webkit","// @todo check Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1316; fi; U; ssr)"," if (/Opera/.test(ua)) {"," m = ua.match(/Opera[\\s\\/]([^\\s]*)/);"," if (m && m[1]) {"," o.opera = numberify(m[1]);"," }"," m = ua.match(/Version\\/([^\\s]*)/);"," if (m && m[1]) {"," o.opera = numberify(m[1]); // opera 10+"," }",""," if (/Opera Mobi/.test(ua)) {"," o.mobile = 'opera';"," m = ua.replace('Opera Mobi', '').match(/Opera ([^\\s]*)/);"," if (m && m[1]) {"," o.opera = numberify(m[1]);"," }"," }"," m = ua.match(/Opera Mini[^;]*/);",""," if (m) {"," o.mobile = m[0]; // ex: Opera Mini/2.0.4509/1316"," }"," } else { // not opera or webkit"," m = ua.match(/MSIE\\s([^;]*)/);"," if (m && m[1]) {"," o.ie = numberify(m[1]);"," } else { // not opera, webkit, or ie"," m = ua.match(/Gecko\\/([^\\s]*)/);"," if (m) {"," o.gecko = 1; // Gecko detected, look for revision"," m = ua.match(/rv:([^\\s\\)]*)/);"," if (m && m[1]) {"," o.gecko = numberify(m[1]);"," }"," }"," }"," }"," }"," }",""," //Check for known properties to tell if touch events are enabled on this device or if"," //the number of MSPointer touchpoints on this device is greater than 0."," if (win && nav && !(o.chrome && o.chrome < 6)) {"," o.touchEnabled = ((\"ontouchstart\" in win) || ((\"msMaxTouchPoints\" in nav) && (nav.msMaxTouchPoints > 0)));"," }",""," //It was a parsed UA, do not assign the global value."," if (!subUA) {",""," if (typeof process === 'object') {",""," if (process.versions && process.versions.node) {"," //NodeJS"," o.os = process.platform;"," o.nodejs = numberify(process.versions.node);"," }"," }",""," YUI.Env.UA = o;",""," }",""," return o;","};","","","Y.UA = YUI.Env.UA || YUI.Env.parseUA();","","/**","Performs a simple comparison between two version numbers, accounting for","standard versioning logic such as the fact that \"535.8\" is a lower version than","\"535.24\", even though a simple numerical comparison would indicate that it's","greater. Also accounts for cases such as \"1.1\" vs. \"1.1.0\", which are","considered equivalent.","","Returns -1 if version _a_ is lower than version _b_, 0 if they're equivalent,","1 if _a_ is higher than _b_.","","Versions may be numbers or strings containing numbers and dots. For example,","both `535` and `\"535.8.10\"` are acceptable. A version string containing","non-numeric characters, like `\"535.8.beta\"`, may produce unexpected results.","","@method compareVersions","@param {Number|String} a First version number to compare.","@param {Number|String} b Second version number to compare.","@return -1 if _a_ is lower than _b_, 0 if they're equivalent, 1 if _a_ is"," higher than _b_.","**/","Y.UA.compareVersions = function (a, b) {"," var aPart, aParts, bPart, bParts, i, len;",""," if (a === b) {"," return 0;"," }",""," aParts = (a + '').split('.');"," bParts = (b + '').split('.');",""," for (i = 0, len = Math.max(aParts.length, bParts.length); i < len; ++i) {"," aPart = parseInt(aParts[i], 10);"," bPart = parseInt(bParts[i], 10);",""," isNaN(aPart) && (aPart = 0);"," isNaN(bPart) && (bPart = 0);",""," if (aPart < bPart) {"," return -1;"," }",""," if (aPart > bPart) {"," return 1;"," }"," }",""," return 0;","};","YUI.Env.aliases = {"," \"anim\": [\"anim-base\",\"anim-color\",\"anim-curve\",\"anim-easing\",\"anim-node-plugin\",\"anim-scroll\",\"anim-xy\"],"," \"anim-shape-transform\": [\"anim-shape\"],"," \"app\": [\"app-base\",\"app-content\",\"app-transitions\",\"lazy-model-list\",\"model\",\"model-list\",\"model-sync-rest\",\"router\",\"view\",\"view-node-map\"],"," \"attribute\": [\"attribute-base\",\"attribute-complex\"],"," \"autocomplete\": [\"autocomplete-base\",\"autocomplete-sources\",\"autocomplete-list\",\"autocomplete-plugin\"],"," \"base\": [\"base-base\",\"base-pluginhost\",\"base-build\"],"," \"cache\": [\"cache-base\",\"cache-offline\",\"cache-plugin\"],"," \"collection\": [\"array-extras\",\"arraylist\",\"arraylist-add\",\"arraylist-filter\",\"array-invoke\"],"," \"controller\": [\"router\"],"," \"dataschema\": [\"dataschema-base\",\"dataschema-json\",\"dataschema-xml\",\"dataschema-array\",\"dataschema-text\"],"," \"datasource\": [\"datasource-local\",\"datasource-io\",\"datasource-get\",\"datasource-function\",\"datasource-cache\",\"datasource-jsonschema\",\"datasource-xmlschema\",\"datasource-arrayschema\",\"datasource-textschema\",\"datasource-polling\"],"," \"datatable\": [\"datatable-core\",\"datatable-table\",\"datatable-head\",\"datatable-body\",\"datatable-base\",\"datatable-column-widths\",\"datatable-message\",\"datatable-mutable\",\"datatable-sort\",\"datatable-datasource\"],"," \"datatable-deprecated\": [\"datatable-base-deprecated\",\"datatable-datasource-deprecated\",\"datatable-sort-deprecated\",\"datatable-scroll-deprecated\"],"," \"datatype\": [\"datatype-date\",\"datatype-number\",\"datatype-xml\"],"," \"datatype-date\": [\"datatype-date-parse\",\"datatype-date-format\",\"datatype-date-math\"],"," \"datatype-number\": [\"datatype-number-parse\",\"datatype-number-format\"],"," \"datatype-xml\": [\"datatype-xml-parse\",\"datatype-xml-format\"],"," \"dd\": [\"dd-ddm-base\",\"dd-ddm\",\"dd-ddm-drop\",\"dd-drag\",\"dd-proxy\",\"dd-constrain\",\"dd-drop\",\"dd-scroll\",\"dd-delegate\"],"," \"dom\": [\"dom-base\",\"dom-screen\",\"dom-style\",\"selector-native\",\"selector\"],"," \"editor\": [\"frame\",\"editor-selection\",\"exec-command\",\"editor-base\",\"editor-para\",\"editor-br\",\"editor-bidi\",\"editor-tab\",\"createlink-base\"],"," \"event\": [\"event-base\",\"event-delegate\",\"event-synthetic\",\"event-mousewheel\",\"event-mouseenter\",\"event-key\",\"event-focus\",\"event-resize\",\"event-hover\",\"event-outside\",\"event-touch\",\"event-move\",\"event-flick\",\"event-valuechange\",\"event-tap\"],"," \"event-custom\": [\"event-custom-base\",\"event-custom-complex\"],"," \"event-gestures\": [\"event-flick\",\"event-move\"],"," \"handlebars\": [\"handlebars-compiler\"],"," \"highlight\": [\"highlight-base\",\"highlight-accentfold\"],"," \"history\": [\"history-base\",\"history-hash\",\"history-hash-ie\",\"history-html5\"],"," \"io\": [\"io-base\",\"io-xdr\",\"io-form\",\"io-upload-iframe\",\"io-queue\"],"," \"json\": [\"json-parse\",\"json-stringify\"],"," \"loader\": [\"loader-base\",\"loader-rollup\",\"loader-yui3\"],"," \"node\": [\"node-base\",\"node-event-delegate\",\"node-pluginhost\",\"node-screen\",\"node-style\"],"," \"pluginhost\": [\"pluginhost-base\",\"pluginhost-config\"],"," \"querystring\": [\"querystring-parse\",\"querystring-stringify\"],"," \"recordset\": [\"recordset-base\",\"recordset-sort\",\"recordset-filter\",\"recordset-indexer\"],"," \"resize\": [\"resize-base\",\"resize-proxy\",\"resize-constrain\"],"," \"slider\": [\"slider-base\",\"slider-value-range\",\"clickable-rail\",\"range-slider\"],"," \"text\": [\"text-accentfold\",\"text-wordbreak\"],"," \"widget\": [\"widget-base\",\"widget-htmlparser\",\"widget-skin\",\"widget-uievents\"]","};","","","}, '3.7.3', {\"use\": [\"yui-base\", \"get\", \"features\", \"intl-base\", \"yui-log\", \"yui-log-nodejs\", \"yui-later\", \"loader-base\", \"loader-rollup\", \"loader-yui3\"]});"]; -/** - * The YUI module contains the components required for building the YUI seed - * file. This includes the script loading mechanism, a simple queue, and - * the core utilities for the library. - * @module yui - * @main yui - * @submodule yui-base - */ - -_yuitest_coverage["build/yui-nodejs/yui-nodejs.js"].lines = {"10":0,"11":0,"54":0,"55":0,"60":0,"64":0,"65":0,"68":0,"96":0,"97":0,"126":0,"127":0,"131":0,"132":0,"136":0,"141":0,"142":0,"145":0,"148":0,"150":0,"153":0,"155":0,"179":0,"180":0,"181":0,"182":0,"186":0,"188":0,"189":0,"191":0,"192":0,"196":0,"197":0,"198":0,"199":0,"203":0,"208":0,"210":0,"211":0,"212":0,"213":0,"214":0,"216":0,"217":0,"219":0,"220":0,"222":0,"224":0,"228":0,"229":0,"230":0,"239":0,"240":0,"241":0,"243":0,"244":0,"247":0,"248":0,"251":0,"263":0,"265":0,"274":0,"275":0,"276":0,"277":0,"278":0,"279":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"286":0,"289":0,"294":0,"295":0,"306":0,"315":0,"326":0,"328":0,"329":0,"375":0,"378":0,"379":0,"383":0,"387":0,"388":0,"390":0,"395":0,"399":0,"403":0,"404":0,"405":0,"406":0,"407":0,"408":0,"409":0,"410":0,"416":0,"421":0,"423":0,"425":0,"426":0,"427":0,"429":0,"431":0,"432":0,"433":0,"435":0,"436":0,"437":0,"441":0,"444":0,"445":0,"449":0,"452":0,"465":0,"466":0,"467":0,"468":0,"469":0,"470":0,"472":0,"476":0,"478":0,"480":0,"481":0,"483":0,"484":0,"495":0,"500":0,"501":0,"502":0,"506":0,"507":0,"509":0,"510":0,"526":0,"527":0,"528":0,"531":0,"532":0,"533":0,"534":0,"535":0,"536":0,"537":0,"538":0,"541":0,"544":0,"583":0,"584":0,"596":0,"597":0,"598":0,"600":0,"601":0,"602":0,"603":0,"604":0,"605":0,"606":0,"607":0,"608":0,"615":0,"627":0,"639":0,"640":0,"641":0,"642":0,"643":0,"644":0,"645":0,"646":0,"647":0,"648":0,"649":0,"655":0,"656":0,"658":0,"659":0,"660":0,"661":0,"663":0,"664":0,"665":0,"667":0,"668":0,"669":0,"670":0,"676":0,"677":0,"678":0,"679":0,"680":0,"684":0,"687":0,"688":0,"689":0,"690":0,"698":0,"699":0,"700":0,"701":0,"702":0,"703":0,"706":0,"709":0,"710":0,"711":0,"712":0,"714":0,"715":0,"716":0,"719":0,"720":0,"721":0,"722":0,"723":0,"725":0,"730":0,"731":0,"732":0,"733":0,"734":0,"736":0,"741":0,"742":0,"743":0,"745":0,"746":0,"748":0,"749":0,"754":0,"755":0,"756":0,"757":0,"758":0,"760":0,"771":0,"782":0,"785":0,"787":0,"788":0,"791":0,"792":0,"793":0,"794":0,"795":0,"796":0,"851":0,"861":0,"862":0,"863":0,"864":0,"867":0,"869":0,"870":0,"873":0,"874":0,"875":0,"876":0,"877":0,"881":0,"882":0,"884":0,"885":0,"889":0,"890":0,"891":0,"893":0,"894":0,"898":0,"909":0,"910":0,"911":0,"912":0,"913":0,"914":0,"916":0,"917":0,"919":0,"920":0,"922":0,"940":0,"941":0,"944":0,"963":0,"965":0,"966":0,"969":0,"970":0,"971":0,"972":0,"973":0,"975":0,"978":0,"981":0,"983":0,"984":0,"985":0,"986":0,"990":0,"991":0,"994":0,"995":0,"996":0,"998":0,"999":0,"1000":0,"1001":0,"1005":0,"1006":0,"1008":0,"1013":0,"1014":0,"1018":0,"1019":0,"1026":0,"1034":0,"1036":0,"1037":0,"1038":0,"1039":0,"1040":0,"1041":0,"1042":0,"1043":0,"1045":0,"1050":0,"1051":0,"1052":0,"1053":0,"1054":0,"1058":0,"1059":0,"1061":0,"1062":0,"1066":0,"1067":0,"1074":0,"1075":0,"1076":0,"1077":0,"1078":0,"1081":0,"1082":0,"1083":0,"1085":0,"1088":0,"1089":0,"1095":0,"1096":0,"1097":0,"1098":0,"1099":0,"1100":0,"1101":0,"1102":0,"1105":0,"1107":0,"1110":0,"1111":0,"1112":0,"1117":0,"1118":0,"1119":0,"1120":0,"1121":0,"1122":0,"1123":0,"1124":0,"1125":0,"1127":0,"1129":0,"1131":0,"1132":0,"1133":0,"1134":0,"1135":0,"1136":0,"1137":0,"1141":0,"1142":0,"1144":0,"1145":0,"1151":0,"1152":0,"1153":0,"1157":0,"1195":0,"1197":0,"1198":0,"1199":0,"1200":0,"1201":0,"1202":0,"1203":0,"1204":0,"1207":0,"1208":0,"1211":0,"1218":0,"1236":0,"1238":0,"1239":0,"1242":0,"1243":0,"1245":0,"1248":0,"1258":0,"1259":0,"1273":0,"1274":0,"1275":0,"1280":0,"1281":0,"1283":0,"1286":0,"1287":0,"1288":0,"1289":0,"1290":0,"1292":0,"1296":0,"1305":0,"1306":0,"1307":0,"1309":0,"1310":0,"1311":0,"1325":0,"1328":0,"1329":0,"1330":0,"1366":0,"1367":0,"1368":0,"1371":0,"1372":0,"1375":0,"1377":0,"1381":0,"1383":0,"1387":0,"1389":0,"1392":0,"1393":0,"1397":0,"1398":0,"1950":0,"1972":0,"2020":0,"2021":0,"2038":0,"2039":0,"2049":0,"2050":0,"2060":0,"2061":0,"2088":0,"2089":0,"2099":0,"2100":0,"2110":0,"2111":0,"2125":0,"2126":0,"2127":0,"2138":0,"2139":0,"2149":0,"2150":0,"2162":0,"2163":0,"2165":0,"2167":0,"2171":0,"2174":0,"2186":0,"2187":0,"2201":0,"2202":0,"2203":0,"2215":0,"2216":0,"2218":0,"2219":0,"2221":0,"2232":0,"2233":0,"2235":0,"2245":0,"2246":0,"2248":0,"2278":0,"2279":0,"2286":0,"2319":0,"2320":0,"2322":0,"2324":0,"2326":0,"2327":0,"2329":0,"2331":0,"2332":0,"2335":0,"2339":0,"2342":0,"2358":0,"2359":0,"2363":0,"2364":0,"2366":0,"2367":0,"2368":0,"2372":0,"2390":0,"2391":0,"2392":0,"2394":0,"2395":0,"2396":0,"2400":0,"2427":0,"2428":0,"2432":0,"2433":0,"2434":0,"2438":0,"2455":0,"2456":0,"2459":0,"2461":0,"2462":0,"2464":0,"2465":0,"2467":0,"2468":0,"2472":0,"2473":0,"2474":0,"2478":0,"2500":0,"2501":0,"2520":0,"2521":0,"2523":0,"2524":0,"2525":0,"2529":0,"2550":0,"2551":0,"2553":0,"2554":0,"2555":0,"2556":0,"2560":0,"2561":0,"2566":0,"2584":0,"2585":0,"2586":0,"2589":0,"2604":0,"2614":0,"2624":0,"2635":0,"2637":0,"2647":0,"2651":0,"2653":0,"2664":0,"2693":0,"2694":0,"2696":0,"2697":0,"2701":0,"2702":0,"2705":0,"2725":0,"2729":0,"2735":0,"2750":0,"2751":0,"2757":0,"2758":0,"2760":0,"2761":0,"2762":0,"2767":0,"2804":0,"2805":0,"2810":0,"2811":0,"2814":0,"2818":0,"2819":0,"2825":0,"2826":0,"2831":0,"2832":0,"2835":0,"2836":0,"2841":0,"2843":0,"2844":0,"2845":0,"2852":0,"2853":0,"2859":0,"2861":0,"2871":0,"2872":0,"2876":0,"2880":0,"2886":0,"2887":0,"2893":0,"2895":0,"2897":0,"2898":0,"2899":0,"2906":0,"2907":0,"2911":0,"2927":0,"2949":0,"2952":0,"2955":0,"2956":0,"2957":0,"3019":0,"3031":0,"3054":0,"3055":0,"3056":0,"3059":0,"3062":0,"3063":0,"3064":0,"3065":0,"3069":0,"3070":0,"3071":0,"3076":0,"3077":0,"3078":0,"3080":0,"3081":0,"3086":0,"3106":0,"3107":0,"3112":0,"3113":0,"3116":0,"3127":0,"3128":0,"3129":0,"3131":0,"3145":0,"3146":0,"3169":0,"3170":0,"3172":0,"3173":0,"3174":0,"3178":0,"3201":0,"3202":0,"3204":0,"3205":0,"3206":0,"3207":0,"3212":0,"3228":0,"3229":0,"3230":0,"3233":0,"3237":0,"3238":0,"3241":0,"3258":0,"3259":0,"3264":0,"3265":0,"3266":0,"3269":0,"3270":0,"3272":0,"3276":0,"3288":0,"3289":0,"3324":0,"3326":0,"3327":0,"3328":0,"3329":0,"3563":0,"3566":0,"3568":0,"3570":0,"3571":0,"3572":0,"3573":0,"3574":0,"3575":0,"3576":0,"3577":0,"3578":0,"3579":0,"3580":0,"3581":0,"3585":0,"3586":0,"3588":0,"3589":0,"3591":0,"3592":0,"3595":0,"3596":0,"3597":0,"3598":0,"3600":0,"3601":0,"3602":0,"3603":0,"3608":0,"3609":0,"3611":0,"3612":0,"3613":0,"3615":0,"3616":0,"3617":0,"3619":0,"3620":0,"3621":0,"3624":0,"3625":0,"3627":0,"3629":0,"3630":0,"3631":0,"3632":0,"3633":0,"3636":0,"3637":0,"3638":0,"3640":0,"3641":0,"3642":0,"3646":0,"3647":0,"3648":0,"3649":0,"3651":0,"3652":0,"3653":0,"3655":0,"3656":0,"3661":0,"3662":0,"3663":0,"3664":0,"3665":0,"3666":0,"3669":0,"3670":0,"3671":0,"3676":0,"3678":0,"3679":0,"3680":0,"3681":0,"3683":0,"3684":0,"3685":0,"3688":0,"3689":0,"3690":0,"3691":0,"3692":0,"3695":0,"3697":0,"3698":0,"3701":0,"3702":0,"3703":0,"3705":0,"3706":0,"3707":0,"3708":0,"3709":0,"3710":0,"3720":0,"3721":0,"3725":0,"3727":0,"3729":0,"3731":0,"3732":0,"3736":0,"3740":0,"3744":0,"3766":0,"3767":0,"3769":0,"3770":0,"3773":0,"3774":0,"3776":0,"3777":0,"3778":0,"3780":0,"3781":0,"3783":0,"3784":0,"3787":0,"3788":0,"3792":0,"3794":0}; -_yuitest_coverage["build/yui-nodejs/yui-nodejs.js"].functions = {"instanceOf:59":0,"YUI:54":0,"add:178":0,"remove:185":0,"handleLoad:195":0,"getLoader:202":0,"clobber:227":0,"applyConfig:261":0,"_config:305":0,"parseBasePath:374":0,"(anonymous 2):398":0,"_init:314":0,"_setup:494":0,"applyTo:525":0,"add:582":0,"_attach:626":0,"(anonymous 5):794":0,"(anonymous 4):793":0,"(anonymous 3):791":0,"_delayCallback:780":0,"(anonymous 6):893":0,"use:850":0,"_notify:908":0,"process:961":0,"(anonymous 7):1052":0,"handleLoader:1025":0,"handleBoot:1131":0,"_use:938":0,"namespace:1194":0,"dump:1218":0,"error:1233":0,"guid:1257":0,"stamp:1272":0,"destroy:1304":0,"applyConfig:1366":0,"(anonymous 1):153":0,"_isNative:2020":0,"isArray:2038":0,"isBoolean:2049":0,"isDate:2060":0,"isFunction:2088":0,"isNull:2099":0,"isNumber:2110":0,"isObject:2125":0,"isString:2138":0,"isUndefined:2149":0,"isValue:2162":0,"(anonymous 9):2186":0,"(anonymous 10):2202":0,"sub:2201":0,"(anonymous 11):2215":0,"}:2217":0,"(anonymous 12):2232":0,"}:2234":0,"(anonymous 13):2245":0,"}:2247":0,"type:2278":0,"YArray:2319":0,"dedupe:2358":0,"(anonymous 14):2390":0,"}:2393":0,"hash:2427":0,"(anonymous 15):2455":0,"}:2457":0,"numericSort:2500":0,"(anonymous 16):2520":0,"}:2522":0,"test:2550":0,"Queue:2584":0,"_init:2596":0,"next:2613":0,"last:2623":0,"add:2634":0,"size:2646":0,"(anonymous 17):2696":0,"cached:2693":0,"getLocation:2725":0,"merge:2750":0,"mix:2804":0,"(anonymous 18):2943":0,"F:2952":0,"(anonymous 20):2955":0,"(anonymous 19):2950":0,"owns:3018":0,"keys:3054":0,"values:3106":0,"size:3127":0,"hasValue:3145":0,"each:3169":0,"some:3201":0,"getValue:3228":0,"setValue:3258":0,"isEmpty:3288":0,"(anonymous 22):3328":0,"numberify:3326":0,"parseUA:3324":0,"compareVersions:3766":0,"(anonymous 8):1950":0}; -_yuitest_coverage["build/yui-nodejs/yui-nodejs.js"].coveredLines = 824; -_yuitest_coverage["build/yui-nodejs/yui-nodejs.js"].coveredFunctions = 98; -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 10); -if (typeof YUI != 'undefined') { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 11); -YUI._YUI = YUI; -} - -/** -The YUI global namespace object. If YUI is already defined, the -existing YUI object will not be overwritten so that defined -namespaces are preserved. It is the constructor for the object -the end user interacts with. As indicated below, each instance -has full custom event support, but only if the event system -is available. This is a self-instantiable factory function. You -can invoke it directly like this: - - YUI().use('*', function(Y) { - // ready - }); - -But it also works like this: - - var Y = YUI(); - -Configuring the YUI object: - - YUI({ - debug: true, - combine: false - }).use('node', function(Y) { - //Node is ready to use - }); - -See the API docs for the Config class -for the complete list of supported configuration properties accepted -by the YUI constuctor. - -@class YUI -@constructor -@global -@uses EventTarget -@param [o]* {Object} 0..n optional configuration objects. these values -are store in Y.config. See Config for the list of supported -properties. -*/ - /*global YUI*/ - /*global YUI_config*/ - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 54); -var YUI = function() { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "YUI", 54); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 55); -var i = 0, - Y = this, - args = arguments, - l = args.length, - instanceOf = function(o, type) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "instanceOf", 59); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 60); -return (o && o.hasOwnProperty && (o instanceof type)); - }, - gconf = (typeof YUI_config !== 'undefined') && YUI_config; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 64); -if (!(instanceOf(Y, YUI))) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 65); -Y = new YUI(); - } else { - // set up the core environment - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 68); -Y._init(); - - /** - YUI.GlobalConfig is a master configuration that might span - multiple contexts in a non-browser environment. It is applied - first to all instances in all contexts. - @property GlobalConfig - @type {Object} - @global - @static - @example - - - YUI.GlobalConfig = { - filter: 'debug' - }; - - YUI().use('node', function(Y) { - //debug files used here - }); - - YUI({ - filter: 'min' - }).use('node', function(Y) { - //min files used here - }); - - */ - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 96); -if (YUI.GlobalConfig) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 97); -Y.applyConfig(YUI.GlobalConfig); - } - - /** - YUI_config is a page-level config. It is applied to all - instances created on the page. This is applied after - YUI.GlobalConfig, and before the instance level configuration - objects. - @global - @property YUI_config - @type {Object} - @example - - - //Single global var to include before YUI seed file - YUI_config = { - filter: 'debug' - }; - - YUI().use('node', function(Y) { - //debug files used here - }); - - YUI({ - filter: 'min' - }).use('node', function(Y) { - //min files used here - }); - */ - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 126); -if (gconf) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 127); -Y.applyConfig(gconf); - } - - // bind the specified additional modules for this instance - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 131); -if (!l) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 132); -Y._setup(); - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 136); -if (l) { - // Each instance can accept one or more configuration objects. - // These are applied after YUI.GlobalConfig and YUI_Config, - // overriding values set in those config files if there is a ' - // matching property. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 141); -for (; i < l; i++) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 142); -Y.applyConfig(args[i]); - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 145); -Y._setup(); - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 148); -Y.instanceOf = instanceOf; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 150); -return Y; - }; - -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 153); -(function() { - - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "(anonymous 1)", 153); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 155); -var proto, prop, - VERSION = '3.7.3', - PERIOD = '.', - BASE = 'http://yui.yahooapis.com/', - /* - These CSS class names can't be generated by - getClassName since it is not available at the - time they are being used. - */ - DOC_LABEL = 'yui3-js-enabled', - CSS_STAMP_EL = 'yui3-css-stamp', - NOOP = function() {}, - SLICE = Array.prototype.slice, - APPLY_TO_AUTH = { 'io.xdrReady': 1, // the functions applyTo - 'io.xdrResponse': 1, // can call. this should - 'SWF.eventHandler': 1 }, // be done at build time - hasWin = (typeof window != 'undefined'), - win = (hasWin) ? window : null, - doc = (hasWin) ? win.document : null, - docEl = doc && doc.documentElement, - docClass = docEl && docEl.className, - instances = {}, - time = new Date().getTime(), - add = function(el, type, fn, capture) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "add", 178); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 179); -if (el && el.addEventListener) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 180); -el.addEventListener(type, fn, capture); - } else {_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 181); -if (el && el.attachEvent) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 182); -el.attachEvent('on' + type, fn); - }} - }, - remove = function(el, type, fn, capture) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "remove", 185); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 186); -if (el && el.removeEventListener) { - // this can throw an uncaught exception in FF - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 188); -try { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 189); -el.removeEventListener(type, fn, capture); - } catch (ex) {} - } else {_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 191); -if (el && el.detachEvent) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 192); -el.detachEvent('on' + type, fn); - }} - }, - handleLoad = function() { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "handleLoad", 195); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 196); -YUI.Env.windowLoaded = true; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 197); -YUI.Env.DOMReady = true; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 198); -if (hasWin) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 199); -remove(window, 'load', handleLoad); - } - }, - getLoader = function(Y, o) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "getLoader", 202); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 203); -var loader = Y.Env._loader, - lCore = [ 'loader-base' ], - G_ENV = YUI.Env, - mods = G_ENV.mods; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 208); -if (loader) { - //loader._config(Y.config); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 210); -loader.ignoreRegistered = false; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 211); -loader.onEnd = null; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 212); -loader.data = null; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 213); -loader.required = []; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 214); -loader.loadType = null; - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 216); -loader = new Y.Loader(Y.config); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 217); -Y.Env._loader = loader; - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 219); -if (mods && mods.loader) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 220); -lCore = [].concat(lCore, YUI.Env.loaderExtras); - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 222); -YUI.Env.core = Y.Array.dedupe([].concat(YUI.Env.core, lCore)); - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 224); -return loader; - }, - - clobber = function(r, s) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "clobber", 227); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 228); -for (var i in s) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 229); -if (s.hasOwnProperty(i)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 230); -r[i] = s[i]; - } - } - }, - - ALREADY_DONE = { success: true }; - -// Stamp the documentElement (HTML) with a class of "yui-loaded" to -// enable styles that need to key off of JS being enabled. -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 239); -if (docEl && docClass.indexOf(DOC_LABEL) == -1) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 240); -if (docClass) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 241); -docClass += ' '; - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 243); -docClass += DOC_LABEL; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 244); -docEl.className = docClass; -} - -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 247); -if (VERSION.indexOf('@') > -1) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 248); -VERSION = '3.5.0'; // dev time hack for cdn test -} - -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 251); -proto = { - /** - * Applies a new configuration object to the YUI instance config. - * This will merge new group/module definitions, and will also - * update the loader cache if necessary. Updating Y.config directly - * will not update the cache. - * @method applyConfig - * @param {Object} o the configuration object. - * @since 3.2.0 - */ - applyConfig: function(o) { - - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "applyConfig", 261); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 263); -o = o || NOOP; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 265); -var attr, - name, - // detail, - config = this.config, - mods = config.modules, - groups = config.groups, - aliases = config.aliases, - loader = this.Env._loader; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 274); -for (name in o) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 275); -if (o.hasOwnProperty(name)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 276); -attr = o[name]; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 277); -if (mods && name == 'modules') { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 278); -clobber(mods, attr); - } else {_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 279); -if (aliases && name == 'aliases') { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 280); -clobber(aliases, attr); - } else {_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 281); -if (groups && name == 'groups') { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 282); -clobber(groups, attr); - } else {_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 283); -if (name == 'win') { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 284); -config[name] = (attr && attr.contentWindow) || attr; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 285); -config.doc = config[name] ? config[name].document : null; - } else {_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 286); -if (name == '_yuid') { - // preserve the guid - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 289); -config[name] = attr; - }}}}} - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 294); -if (loader) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 295); -loader._config(o); - } - - }, - /** - * Old way to apply a config to the instance (calls `applyConfig` under the hood) - * @private - * @method _config - * @param {Object} o The config to apply - */ - _config: function(o) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "_config", 305); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 306); -this.applyConfig(o); - }, - - /** - * Initialize this YUI instance - * @private - * @method _init - */ - _init: function() { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "_init", 314); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 315); -var filter, el, - Y = this, - G_ENV = YUI.Env, - Env = Y.Env, - prop; - - /** - * The version number of the YUI instance. - * @property version - * @type string - */ - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 326); -Y.version = VERSION; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 328); -if (!Env) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 329); -Y.Env = { - core: ['get', 'features', 'intl-base', 'yui-log', 'yui-log-nodejs', 'yui-later', 'loader-base', 'loader-rollup', 'loader-yui3'], - loaderExtras: ['loader-rollup', 'loader-yui3'], - mods: {}, // flat module map - versions: {}, // version module map - base: BASE, - cdn: BASE + VERSION + '/build/', - // bootstrapped: false, - _idx: 0, - _used: {}, - _attached: {}, - _missed: [], - _yidx: 0, - _uidx: 0, - _guidp: 'y', - _loaded: {}, - // serviced: {}, - // Regex in English: - // I'll start at the \b(simpleyui). - // 1. Look in the test string for "simpleyui" or "yui" or - // "yui-base" or "yui-davglass" or "yui-foobar" that comes after a word break. That is, it - // can't match "foyui" or "i_heart_simpleyui". This can be anywhere in the string. - // 2. After #1 must come a forward slash followed by the string matched in #1, so - // "yui-base/yui-base" or "simpleyui/simpleyui" or "yui-pants/yui-pants". - // 3. The second occurence of the #1 token can optionally be followed by "-debug" or "-min", - // so "yui/yui-min", "yui/yui-debug", "yui-base/yui-base-debug". NOT "yui/yui-tshirt". - // 4. This is followed by ".js", so "yui/yui.js", "simpleyui/simpleyui-min.js" - // 0. Going back to the beginning, now. If all that stuff in 1-4 comes after a "?" in the string, - // then capture the junk between the LAST "&" and the string in 1-4. So - // "blah?foo/yui/yui.js" will capture "foo/" and "blah?some/thing.js&3.3.0/build/yui-davglass/yui-davglass.js" - // will capture "3.3.0/build/" - // - // Regex Exploded: - // (?:\? Find a ? - // (?:[^&]*&) followed by 0..n characters followed by an & - // * in fact, find as many sets of characters followed by a & as you can - // ([^&]*) capture the stuff after the last & in \1 - // )? but it's ok if all this ?junk&more_junk stuff isn't even there - // \b(simpleyui| after a word break find either the string "simpleyui" or - // yui(?:-\w+)? the string "yui" optionally followed by a -, then more characters - // ) and store the simpleyui or yui-* string in \2 - // \/\2 then comes a / followed by the simpleyui or yui-* string in \2 - // (?:-(min|debug))? optionally followed by "-min" or "-debug" - // .js and ending in ".js" - _BASE_RE: /(?:\?(?:[^&]*&)*([^&]*))?\b(simpleyui|yui(?:-\w+)?)\/\2(?:-(min|debug))?\.js/, - parseBasePath: function(src, pattern) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "parseBasePath", 374); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 375); -var match = src.match(pattern), - path, filter; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 378); -if (match) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 379); -path = RegExp.leftContext || src.slice(0, src.indexOf(match[0])); - - // this is to set up the path to the loader. The file - // filter for loader should match the yui include. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 383); -filter = match[3]; - - // extract correct path for mixed combo urls - // http://yuilibrary.com/projects/yui3/ticket/2528423 - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 387); -if (match[1]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 388); -path += '?' + match[1]; - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 390); -path = { - filter: filter, - path: path - }; - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 395); -return path; - }, - getBase: G_ENV && G_ENV.getBase || - function(pattern) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "(anonymous 2)", 398); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 399); -var nodes = (doc && doc.getElementsByTagName('script')) || [], - path = Env.cdn, parsed, - i, len, src; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 403); -for (i = 0, len = nodes.length; i < len; ++i) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 404); -src = nodes[i].src; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 405); -if (src) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 406); -parsed = Y.Env.parseBasePath(src, pattern); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 407); -if (parsed) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 408); -filter = parsed.filter; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 409); -path = parsed.path; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 410); -break; - } - } - } - - // use CDN default - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 416); -return path; - } - - }; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 421); -Env = Y.Env; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 423); -Env._loaded[VERSION] = {}; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 425); -if (G_ENV && Y !== YUI) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 426); -Env._yidx = ++G_ENV._yidx; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 427); -Env._guidp = ('yui_' + VERSION + '_' + - Env._yidx + '_' + time).replace(/\./g, '_').replace(/-/g, '_'); - } else {_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 429); -if (YUI._YUI) { - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 431); -G_ENV = YUI._YUI.Env; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 432); -Env._yidx += G_ENV._yidx; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 433); -Env._uidx += G_ENV._uidx; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 435); -for (prop in G_ENV) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 436); -if (!(prop in Env)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 437); -Env[prop] = G_ENV[prop]; - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 441); -delete YUI._YUI; - }} - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 444); -Y.id = Y.stamp(Y); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 445); -instances[Y.id] = Y; - - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 449); -Y.constructor = YUI; - - // configuration defaults - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 452); -Y.config = Y.config || { - bootstrap: true, - cacheUse: true, - debug: true, - doc: doc, - fetchCSS: true, - throwFail: true, - useBrowserConsole: true, - useNativeES5: true, - win: win - }; - - //Register the CSS stamp element - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 465); -if (doc && !doc.getElementById(CSS_STAMP_EL)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 466); -el = doc.createElement('div'); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 467); -el.innerHTML = '
          '; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 468); -YUI.Env.cssStampEl = el.firstChild; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 469); -if (doc.body) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 470); -doc.body.appendChild(YUI.Env.cssStampEl); - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 472); -docEl.insertBefore(YUI.Env.cssStampEl, docEl.firstChild); - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 476); -Y.config.lang = Y.config.lang || 'en-US'; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 478); -Y.config.base = YUI.config.base || Y.Env.getBase(Y.Env._BASE_RE); - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 480); -if (!filter || (!('mindebug').indexOf(filter))) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 481); -filter = 'min'; - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 483); -filter = (filter) ? '-' + filter : filter; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 484); -Y.config.loaderPath = YUI.config.loaderPath || 'loader/loader' + filter + '.js'; - - }, - - /** - * Finishes the instance setup. Attaches whatever modules were defined - * when the yui modules was registered. - * @method _setup - * @private - */ - _setup: function(o) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "_setup", 494); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 495); -var i, Y = this, - core = [], - mods = YUI.Env.mods, - extras = Y.config.core || [].concat(YUI.Env.core); //Clone it.. - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 500); -for (i = 0; i < extras.length; i++) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 501); -if (mods[extras[i]]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 502); -core.push(extras[i]); - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 506); -Y._attach(['yui-base']); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 507); -Y._attach(core); - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 509); -if (Y.Loader) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 510); -getLoader(Y); - } - - }, - - /** - * Executes a method on a YUI instance with - * the specified id if the specified method is whitelisted. - * @method applyTo - * @param id {String} the YUI instance id. - * @param method {String} the name of the method to exectute. - * Ex: 'Object.keys'. - * @param args {Array} the arguments to apply to the method. - * @return {Object} the return value from the applied method or null. - */ - applyTo: function(id, method, args) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "applyTo", 525); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 526); -if (!(method in APPLY_TO_AUTH)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 527); -this.log(method + ': applyTo not allowed', 'warn', 'yui'); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 528); -return null; - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 531); -var instance = instances[id], nest, m, i; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 532); -if (instance) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 533); -nest = method.split('.'); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 534); -m = instance; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 535); -for (i = 0; i < nest.length; i = i + 1) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 536); -m = m[nest[i]]; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 537); -if (!m) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 538); -this.log('applyTo not found: ' + method, 'warn', 'yui'); - } - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 541); -return m && m.apply(instance, args); - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 544); -return null; - }, - -/** -Registers a module with the YUI global. The easiest way to create a -first-class YUI module is to use the YUI component -build tool Shifter. - -The build system will produce the `YUI.add` wrapper for your module, along -with any configuration info required for the module. - -@method add -@param name {String} module name. -@param fn {Function} entry point into the module that is used to bind module to the YUI instance. -@param {YUI} fn.Y The YUI instance this module is executed in. -@param {String} fn.name The name of the module -@param version {String} version string. -@param details {Object} optional config data: -@param details.requires {Array} features that must be present before this module can be attached. -@param details.optional {Array} optional features that should be present if loadOptional - is defined. Note: modules are not often loaded this way in YUI 3, - but this field is still useful to inform the user that certain - features in the component will require additional dependencies. -@param details.use {Array} features that are included within this module which need to - be attached automatically when this module is attached. This - supports the YUI 3 rollup system -- a module with submodules - defined will need to have the submodules listed in the 'use' - config. The YUI component build tool does this for you. -@return {YUI} the YUI instance. -@example - - YUI.add('davglass', function(Y, name) { - Y.davglass = function() { - alert('Dav was here!'); - }; - }, '3.4.0', { requires: ['yui-base', 'harley-davidson', 'mt-dew'] }); - -*/ - add: function(name, fn, version, details) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "add", 582); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 583); -details = details || {}; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 584); -var env = YUI.Env, - mod = { - name: name, - fn: fn, - version: version, - details: details - }, - //Instance hash so we don't apply it to the same instance twice - applied = {}, - loader, inst, - i, versions = env.versions; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 596); -env.mods[name] = mod; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 597); -versions[version] = versions[version] || {}; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 598); -versions[version][name] = mod; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 600); -for (i in instances) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 601); -if (instances.hasOwnProperty(i)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 602); -inst = instances[i]; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 603); -if (!applied[inst.id]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 604); -applied[inst.id] = true; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 605); -loader = inst.Env._loader; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 606); -if (loader) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 607); -if (!loader.moduleInfo[name] || loader.moduleInfo[name].temp) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 608); -loader.addModule(details, name); - } - } - } - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 615); -return this; - }, - - /** - * Executes the function associated with each required - * module, binding the module to the YUI instance. - * @param {Array} r The array of modules to attach - * @param {Boolean} [moot=false] Don't throw a warning if the module is not attached - * @method _attach - * @private - */ - _attach: function(r, moot) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "_attach", 626); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 627); -var i, name, mod, details, req, use, after, - mods = YUI.Env.mods, - aliases = YUI.Env.aliases, - Y = this, j, - cache = YUI.Env._renderedMods, - loader = Y.Env._loader, - done = Y.Env._attached, - len = r.length, loader, def, go, - c = []; - - //Check for conditional modules (in a second+ instance) and add their requirements - //TODO I hate this entire method, it needs to be fixed ASAP (3.5.0) ^davglass - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 639); -for (i = 0; i < len; i++) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 640); -name = r[i]; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 641); -mod = mods[name]; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 642); -c.push(name); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 643); -if (loader && loader.conditions[name]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 644); -for (j in loader.conditions[name]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 645); -if (loader.conditions[name].hasOwnProperty(j)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 646); -def = loader.conditions[name][j]; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 647); -go = def && ((def.ua && Y.UA[def.ua]) || (def.test && def.test(Y))); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 648); -if (go) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 649); -c.push(def.name); - } - } - } - } - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 655); -r = c; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 656); -len = r.length; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 658); -for (i = 0; i < len; i++) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 659); -if (!done[r[i]]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 660); -name = r[i]; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 661); -mod = mods[name]; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 663); -if (aliases && aliases[name] && !mod) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 664); -Y._attach(aliases[name]); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 665); -continue; - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 667); -if (!mod) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 668); -if (loader && loader.moduleInfo[name]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 669); -mod = loader.moduleInfo[name]; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 670); -moot = true; - } - - - //if (!loader || !loader.moduleInfo[name]) { - //if ((!loader || !loader.moduleInfo[name]) && !moot) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 676); -if (!moot && name) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 677); -if ((name.indexOf('skin-') === -1) && (name.indexOf('css') === -1)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 678); -Y.Env._missed.push(name); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 679); -Y.Env._missed = Y.Array.dedupe(Y.Env._missed); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 680); -Y.message('NOT loaded: ' + name, 'warn', 'yui'); - } - } - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 684); -done[name] = true; - //Don't like this, but in case a mod was asked for once, then we fetch it - //We need to remove it from the missed list ^davglass - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 687); -for (j = 0; j < Y.Env._missed.length; j++) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 688); -if (Y.Env._missed[j] === name) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 689); -Y.message('Found: ' + name + ' (was reported as missing earlier)', 'warn', 'yui'); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 690); -Y.Env._missed.splice(j, 1); - } - } - /* - If it's a temp module, we need to redo it's requirements if it's already loaded - since it may have been loaded by another instance and it's dependencies might - have been redefined inside the fetched file. - */ - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 698); -if (loader && cache && cache[name] && cache[name].temp) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 699); -loader.getRequires(cache[name]); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 700); -req = []; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 701); -for (j in loader.moduleInfo[name].expanded_map) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 702); -if (loader.moduleInfo[name].expanded_map.hasOwnProperty(j)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 703); -req.push(j); - } - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 706); -Y._attach(req); - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 709); -details = mod.details; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 710); -req = details.requires; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 711); -use = details.use; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 712); -after = details.after; - //Force Intl load if there is a language (Loader logic) @todo fix this shit - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 714); -if (details.lang) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 715); -req = req || []; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 716); -req.unshift('intl'); - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 719); -if (req) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 720); -for (j = 0; j < req.length; j++) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 721); -if (!done[req[j]]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 722); -if (!Y._attach(req)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 723); -return false; - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 725); -break; - } - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 730); -if (after) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 731); -for (j = 0; j < after.length; j++) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 732); -if (!done[after[j]]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 733); -if (!Y._attach(after, true)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 734); -return false; - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 736); -break; - } - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 741); -if (mod.fn) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 742); -if (Y.config.throwFail) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 743); -mod.fn(Y, name); - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 745); -try { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 746); -mod.fn(Y, name); - } catch (e) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 748); -Y.error('Attach error: ' + name, e, name); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 749); -return false; - } - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 754); -if (use) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 755); -for (j = 0; j < use.length; j++) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 756); -if (!done[use[j]]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 757); -if (!Y._attach(use)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 758); -return false; - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 760); -break; - } - } - } - - - - } - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 771); -return true; - }, - /** - * Delays the `use` callback until another event has taken place. Like: window.onload, domready, contentready, available. - * @private - * @method _delayCallback - * @param {Callback} cb The original `use` callback - * @param {String|Object} until Either an event (load, domready) or an Object containing event/args keys for contentready/available - */ - _delayCallback: function(cb, until) { - - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "_delayCallback", 780); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 782); -var Y = this, - mod = ['event-base']; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 785); -until = (Y.Lang.isObject(until) ? until : { event: until }); - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 787); -if (until.event === 'load') { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 788); -mod.push('event-synthetic'); - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 791); -return function() { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "(anonymous 3)", 791); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 792); -var args = arguments; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 793); -Y._use(mod, function() { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "(anonymous 4)", 793); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 794); -Y.on(until.event, function() { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "(anonymous 5)", 794); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 795); -args[1].delayUntil = until.event; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 796); -cb.apply(Y, args); - }, until.args); - }); - }; - }, - - /** - * Attaches one or more modules to the YUI instance. When this - * is executed, the requirements are analyzed, and one of - * several things can happen: - * - * * All requirements are available on the page -- The modules - * are attached to the instance. If supplied, the use callback - * is executed synchronously. - * - * * Modules are missing, the Get utility is not available OR - * the 'bootstrap' config is false -- A warning is issued about - * the missing modules and all available modules are attached. - * - * * Modules are missing, the Loader is not available but the Get - * utility is and boostrap is not false -- The loader is bootstrapped - * before doing the following.... - * - * * Modules are missing and the Loader is available -- The loader - * expands the dependency tree and fetches missing modules. When - * the loader is finshed the callback supplied to use is executed - * asynchronously. - * - * @method use - * @param modules* {String|Array} 1-n modules to bind (uses arguments array). - * @param [callback] {Function} callback function executed when - * the instance has the required functionality. If included, it - * must be the last parameter. - * @param callback.Y {YUI} The `YUI` instance created for this sandbox - * @param callback.status {Object} Object containing `success`, `msg` and `data` properties - * - * @example - * // loads and attaches dd and its dependencies - * YUI().use('dd', function(Y) {}); - * - * // loads and attaches dd and node as well as all of their dependencies (since 3.4.0) - * YUI().use(['dd', 'node'], function(Y) {}); - * - * // attaches all modules that are available on the page - * YUI().use('*', function(Y) {}); - * - * // intrinsic YUI gallery support (since 3.1.0) - * YUI().use('gallery-yql', function(Y) {}); - * - * // intrinsic YUI 2in3 support (since 3.1.0) - * YUI().use('yui2-datatable', function(Y) {}); - * - * @return {YUI} the YUI instance. - */ - use: function() { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "use", 850); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 851); -var args = SLICE.call(arguments, 0), - callback = args[args.length - 1], - Y = this, - i = 0, - a = [], - name, - Env = Y.Env, - provisioned = true; - - // The last argument supplied to use can be a load complete callback - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 861); -if (Y.Lang.isFunction(callback)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 862); -args.pop(); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 863); -if (Y.config.delayUntil) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 864); -callback = Y._delayCallback(callback, Y.config.delayUntil); - } - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 867); -callback = null; - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 869); -if (Y.Lang.isArray(args[0])) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 870); -args = args[0]; - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 873); -if (Y.config.cacheUse) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 874); -while ((name = args[i++])) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 875); -if (!Env._attached[name]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 876); -provisioned = false; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 877); -break; - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 881); -if (provisioned) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 882); -if (args.length) { - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 884); -Y._notify(callback, ALREADY_DONE, args); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 885); -return Y; - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 889); -if (Y._loading) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 890); -Y._useQueue = Y._useQueue || new Y.Queue(); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 891); -Y._useQueue.add([args, callback]); - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 893); -Y._use(args, function(Y, response) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "(anonymous 6)", 893); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 894); -Y._notify(callback, response, args); - }); - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 898); -return Y; - }, - /** - * Notify handler from Loader for attachment/load errors - * @method _notify - * @param callback {Function} The callback to pass to the `Y.config.loadErrorFn` - * @param response {Object} The response returned from Loader - * @param args {Array} The aruments passed from Loader - * @private - */ - _notify: function(callback, response, args) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "_notify", 908); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 909); -if (!response.success && this.config.loadErrorFn) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 910); -this.config.loadErrorFn.call(this, this, callback, response, args); - } else {_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 911); -if (callback) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 912); -if (this.Env._missed && this.Env._missed.length) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 913); -response.msg = 'Missing modules: ' + this.Env._missed.join(); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 914); -response.success = false; - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 916); -if (this.config.throwFail) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 917); -callback(this, response); - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 919); -try { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 920); -callback(this, response); - } catch (e) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 922); -this.error('use callback error', e, args); - } - } - }} - }, - - /** - * This private method is called from the `use` method queue. To ensure that only one set of loading - * logic is performed at a time. - * @method _use - * @private - * @param args* {String} 1-n modules to bind (uses arguments array). - * @param *callback {Function} callback function executed when - * the instance has the required functionality. If included, it - * must be the last parameter. - */ - _use: function(args, callback) { - - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "_use", 938); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 940); -if (!this.Array) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 941); -this._attach(['yui-base']); - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 944); -var len, loader, handleBoot, handleRLS, - Y = this, - G_ENV = YUI.Env, - mods = G_ENV.mods, - Env = Y.Env, - used = Env._used, - aliases = G_ENV.aliases, - queue = G_ENV._loaderQueue, - firstArg = args[0], - YArray = Y.Array, - config = Y.config, - boot = config.bootstrap, - missing = [], - i, - r = [], - ret = true, - fetchCSS = config.fetchCSS, - process = function(names, skip) { - - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "process", 961); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 963); -var i = 0, a = [], name, len, m, req, use; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 965); -if (!names.length) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 966); -return; - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 969); -if (aliases) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 970); -len = names.length; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 971); -for (i = 0; i < len; i++) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 972); -if (aliases[names[i]] && !mods[names[i]]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 973); -a = [].concat(a, aliases[names[i]]); - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 975); -a.push(names[i]); - } - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 978); -names = a; - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 981); -len = names.length; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 983); -for (i = 0; i < len; i++) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 984); -name = names[i]; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 985); -if (!skip) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 986); -r.push(name); - } - - // only attach a module once - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 990); -if (used[name]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 991); -continue; - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 994); -m = mods[name]; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 995); -req = null; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 996); -use = null; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 998); -if (m) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 999); -used[name] = true; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1000); -req = m.details.requires; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1001); -use = m.details.use; - } else { - // CSS files don't register themselves, see if it has - // been loaded - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1005); -if (!G_ENV._loaded[VERSION][name]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1006); -missing.push(name); - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1008); -used[name] = true; // probably css - } - } - - // make sure requirements are attached - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1013); -if (req && req.length) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1014); -process(req); - } - - // make sure we grab the submodule dependencies too - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1018); -if (use && use.length) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1019); -process(use, 1); - } - } - - }, - - handleLoader = function(fromLoader) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "handleLoader", 1025); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1026); -var response = fromLoader || { - success: true, - msg: 'not dynamic' - }, - redo, origMissing, - ret = true, - data = response.data; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1034); -Y._loading = false; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1036); -if (data) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1037); -origMissing = missing; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1038); -missing = []; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1039); -r = []; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1040); -process(data); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1041); -redo = missing.length; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1042); -if (redo) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1043); -if ([].concat(missing).sort().join() == - origMissing.sort().join()) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1045); -redo = false; - } - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1050); -if (redo && data) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1051); -Y._loading = true; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1052); -Y._use(missing, function() { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "(anonymous 7)", 1052); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1053); -if (Y._attach(data)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1054); -Y._notify(callback, response, data); - } - }); - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1058); -if (data) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1059); -ret = Y._attach(data); - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1061); -if (ret) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1062); -Y._notify(callback, response, args); - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1066); -if (Y._useQueue && Y._useQueue.size() && !Y._loading) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1067); -Y._use.apply(Y, Y._useQueue.next()); - } - - }; - - - // YUI().use('*'); // bind everything available - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1074); -if (firstArg === '*') { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1075); -args = []; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1076); -for (i in mods) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1077); -if (mods.hasOwnProperty(i)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1078); -args.push(i); - } - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1081); -ret = Y._attach(args); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1082); -if (ret) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1083); -handleLoader(); - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1085); -return Y; - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1088); -if ((mods.loader || mods['loader-base']) && !Y.Loader) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1089); -Y._attach(['loader' + ((!mods.loader) ? '-base' : '')]); - } - - - // use loader to expand dependencies and sort the - // requirements if it is available. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1095); -if (boot && Y.Loader && args.length) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1096); -loader = getLoader(Y); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1097); -loader.require(args); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1098); -loader.ignoreRegistered = true; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1099); -loader._boot = true; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1100); -loader.calculate(null, (fetchCSS) ? null : 'js'); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1101); -args = loader.sorted; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1102); -loader._boot = false; - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1105); -process(args); - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1107); -len = missing.length; - - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1110); -if (len) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1111); -missing = YArray.dedupe(missing); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1112); -len = missing.length; - } - - - // dynamic load - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1117); -if (boot && len && Y.Loader) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1118); -Y._loading = true; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1119); -loader = getLoader(Y); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1120); -loader.onEnd = handleLoader; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1121); -loader.context = Y; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1122); -loader.data = args; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1123); -loader.ignoreRegistered = false; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1124); -loader.require(args); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1125); -loader.insert(null, (fetchCSS) ? null : 'js'); - - } else {_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1127); -if (boot && len && Y.Get && !Env.bootstrapped) { - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1129); -Y._loading = true; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1131); -handleBoot = function() { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "handleBoot", 1131); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1132); -Y._loading = false; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1133); -queue.running = false; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1134); -Env.bootstrapped = true; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1135); -G_ENV._bootstrapping = false; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1136); -if (Y._attach(['loader'])) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1137); -Y._use(args, callback); - } - }; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1141); -if (G_ENV._bootstrapping) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1142); -queue.add(handleBoot); - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1144); -G_ENV._bootstrapping = true; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1145); -Y.Get.script(config.base + config.loaderPath, { - onEnd: handleBoot - }); - } - - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1151); -ret = Y._attach(args); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1152); -if (ret) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1153); -handleLoader(); - } - }} - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1157); -return Y; - }, - - - /** - Adds a namespace object onto the YUI global if called statically. - - // creates YUI.your.namespace.here as nested objects - YUI.namespace("your.namespace.here"); - - If called as a method on a YUI instance, it creates the - namespace on the instance. - - // creates Y.property.package - Y.namespace("property.package"); - - Dots in the input string cause `namespace` to create nested objects for - each token. If any part of the requested namespace already exists, the - current object will be left in place. This allows multiple calls to - `namespace` to preserve existing namespaced properties. - - If the first token in the namespace string is "YAHOO", the token is - discarded. - - Be careful with namespace tokens. Reserved words may work in some browsers - and not others. For instance, the following will fail in some browsers - because the supported version of JavaScript reserves the word "long": - - Y.namespace("really.long.nested.namespace"); - - Note: If you pass multiple arguments to create multiple namespaces, only - the last one created is returned from this function. - - @method namespace - @param {String} namespace* namespaces to create. - @return {Object} A reference to the last namespace object created. - **/ - namespace: function() { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "namespace", 1194); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1195); -var a = arguments, o, i = 0, j, d, arg; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1197); -for (; i < a.length; i++) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1198); -o = this; //Reset base object per argument or it will get reused from the last - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1199); -arg = a[i]; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1200); -if (arg.indexOf(PERIOD) > -1) { //Skip this if no "." is present - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1201); -d = arg.split(PERIOD); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1202); -for (j = (d[0] == 'YAHOO') ? 1 : 0; j < d.length; j++) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1203); -o[d[j]] = o[d[j]] || {}; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1204); -o = o[d[j]]; - } - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1207); -o[arg] = o[arg] || {}; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1208); -o = o[arg]; //Reset base object to the new object so it's returned - } - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1211); -return o; - }, - - // this is replaced if the log module is included - log: NOOP, - message: NOOP, - // this is replaced if the dump module is included - dump: function (o) { _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "dump", 1218); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1218); -return ''+o; }, - - /** - * Report an error. The reporting mechanism is controlled by - * the `throwFail` configuration attribute. If throwFail is - * not specified, the message is written to the Logger, otherwise - * a JS error is thrown. If an `errorFn` is specified in the config - * it must return `true` to keep the error from being thrown. - * @method error - * @param msg {String} the error message. - * @param e {Error|String} Optional JS error that was caught, or an error string. - * @param src Optional additional info (passed to `Y.config.errorFn` and `Y.message`) - * and `throwFail` is specified, this error will be re-thrown. - * @return {YUI} this YUI instance. - */ - error: function(msg, e, src) { - //TODO Add check for window.onerror here - - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "error", 1233); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1236); -var Y = this, ret; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1238); -if (Y.config.errorFn) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1239); -ret = Y.config.errorFn.apply(Y, arguments); - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1242); -if (!ret) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1243); -throw (e || new Error(msg)); - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1245); -Y.message(msg, 'error', ''+src); // don't scrub this one - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1248); -return Y; - }, - - /** - * Generate an id that is unique among all YUI instances - * @method guid - * @param pre {String} optional guid prefix. - * @return {String} the guid. - */ - guid: function(pre) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "guid", 1257); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1258); -var id = this.Env._guidp + '_' + (++this.Env._uidx); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1259); -return (pre) ? (pre + id) : id; - }, - - /** - * Returns a `guid` associated with an object. If the object - * does not have one, a new one is created unless `readOnly` - * is specified. - * @method stamp - * @param o {Object} The object to stamp. - * @param readOnly {Boolean} if `true`, a valid guid will only - * be returned if the object has one assigned to it. - * @return {String} The object's guid or null. - */ - stamp: function(o, readOnly) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "stamp", 1272); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1273); -var uid; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1274); -if (!o) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1275); -return o; - } - - // IE generates its own unique ID for dom nodes - // The uniqueID property of a document node returns a new ID - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1280); -if (o.uniqueID && o.nodeType && o.nodeType !== 9) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1281); -uid = o.uniqueID; - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1283); -uid = (typeof o === 'string') ? o : o._yuid; - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1286); -if (!uid) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1287); -uid = this.guid(); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1288); -if (!readOnly) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1289); -try { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1290); -o._yuid = uid; - } catch (e) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1292); -uid = null; - } - } - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1296); -return uid; - }, - - /** - * Destroys the YUI instance - * @method destroy - * @since 3.3.0 - */ - destroy: function() { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "destroy", 1304); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1305); -var Y = this; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1306); -if (Y.Event) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1307); -Y.Event._unload(); - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1309); -delete instances[Y.id]; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1310); -delete Y.Env; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1311); -delete Y.config; - } - - /** - * instanceof check for objects that works around - * memory leak in IE when the item tested is - * window/document - * @method instanceOf - * @param o {Object} The object to check. - * @param type {Object} The class to check against. - * @since 3.3.0 - */ -}; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1325); -YUI.prototype = proto; - - // inheritance utilities are not available yet - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1328); -for (prop in proto) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1329); -if (proto.hasOwnProperty(prop)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1330); -YUI[prop] = proto[prop]; - } - } - - /** -Static method on the Global YUI object to apply a config to all YUI instances. -It's main use case is "mashups" where several third party scripts are trying to write to -a global YUI config at the same time. This way they can all call `YUI.applyConfig({})` instead of -overwriting other scripts configs. -@static -@since 3.5.0 -@method applyConfig -@param {Object} o the configuration object. -@example - - YUI.applyConfig({ - modules: { - davglass: { - fullpath: './davglass.js' - } - } - }); - - YUI.applyConfig({ - modules: { - foo: { - fullpath: './foo.js' - } - } - }); - - YUI().use('davglass', function(Y) { - //Module davglass will be available here.. - }); - - */ - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1366); -YUI.applyConfig = function(o) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "applyConfig", 1366); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1367); -if (!o) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1368); -return; - } - //If there is a GlobalConfig, apply it first to set the defaults - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1371); -if (YUI.GlobalConfig) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1372); -this.prototype.applyConfig.call(this, YUI.GlobalConfig); - } - //Apply this config to it - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1375); -this.prototype.applyConfig.call(this, o); - //Reset GlobalConfig to the combined config - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1377); -YUI.GlobalConfig = this.config; - }; - - // set up the environment - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1381); -YUI._init(); - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1383); -if (hasWin) { - // add a window load event at load time so we can capture - // the case where it fires before dynamic loading is - // complete. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1387); -add(window, 'load', handleLoad); - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1389); -handleLoad(); - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1392); -YUI.Env.add = add; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1393); -YUI.Env.remove = remove; - - /*global exports*/ - // Support the CommonJS method for exporting our single global - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1397); -if (typeof exports == 'object') { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1398); -exports.YUI = YUI; - } - -}()); - - -/** - * The config object contains all of the configuration options for - * the `YUI` instance. This object is supplied by the implementer - * when instantiating a `YUI` instance. Some properties have default - * values if they are not supplied by the implementer. This should - * not be updated directly because some values are cached. Use - * `applyConfig()` to update the config object on a YUI instance that - * has already been configured. - * - * @class config - * @static - */ - -/** - * Allows the YUI seed file to fetch the loader component and library - * metadata to dynamically load additional dependencies. - * - * @property bootstrap - * @type boolean - * @default true - */ - -/** - * Turns on writing Ylog messages to the browser console. - * - * @property debug - * @type boolean - * @default true - */ - -/** - * Log to the browser console if debug is on and the browser has a - * supported console. - * - * @property useBrowserConsole - * @type boolean - * @default true - */ - -/** - * A hash of log sources that should be logged. If specified, only - * log messages from these sources will be logged. - * - * @property logInclude - * @type object - */ - -/** - * A hash of log sources that should be not be logged. If specified, - * all sources are logged if not on this list. - * - * @property logExclude - * @type object - */ - -/** - * Set to true if the yui seed file was dynamically loaded in - * order to bootstrap components relying on the window load event - * and the `domready` custom event. - * - * @property injected - * @type boolean - * @default false - */ - -/** - * If `throwFail` is set, `Y.error` will generate or re-throw a JS Error. - * Otherwise the failure is logged. - * - * @property throwFail - * @type boolean - * @default true - */ - -/** - * The window/frame that this instance should operate in. - * - * @property win - * @type Window - * @default the window hosting YUI - */ - -/** - * The document associated with the 'win' configuration. - * - * @property doc - * @type Document - * @default the document hosting YUI - */ - -/** - * A list of modules that defines the YUI core (overrides the default list). - * - * @property core - * @type Array - * @default [ get,features,intl-base,yui-log,yui-later,loader-base, loader-rollup, loader-yui3 ] - */ - -/** - * A list of languages in order of preference. This list is matched against - * the list of available languages in modules that the YUI instance uses to - * determine the best possible localization of language sensitive modules. - * Languages are represented using BCP 47 language tags, such as "en-GB" for - * English as used in the United Kingdom, or "zh-Hans-CN" for simplified - * Chinese as used in China. The list can be provided as a comma-separated - * list or as an array. - * - * @property lang - * @type string|string[] - */ - -/** - * The default date format - * @property dateFormat - * @type string - * @deprecated use configuration in `DataType.Date.format()` instead. - */ - -/** - * The default locale - * @property locale - * @type string - * @deprecated use `config.lang` instead. - */ - -/** - * The default interval when polling in milliseconds. - * @property pollInterval - * @type int - * @default 20 - */ - -/** - * The number of dynamic nodes to insert by default before - * automatically removing them. This applies to script nodes - * because removing the node will not make the evaluated script - * unavailable. Dynamic CSS is not auto purged, because removing - * a linked style sheet will also remove the style definitions. - * @property purgethreshold - * @type int - * @default 20 - */ - -/** - * The default interval when polling in milliseconds. - * @property windowResizeDelay - * @type int - * @default 40 - */ - -/** - * Base directory for dynamic loading - * @property base - * @type string - */ - -/* - * The secure base dir (not implemented) - * For dynamic loading. - * @property secureBase - * @type string - */ - -/** - * The YUI combo service base dir. Ex: `http://yui.yahooapis.com/combo?` - * For dynamic loading. - * @property comboBase - * @type string - */ - -/** - * The root path to prepend to module path for the combo service. - * Ex: 3.0.0b1/build/ - * For dynamic loading. - * @property root - * @type string - */ - -/** - * A filter to apply to result urls. This filter will modify the default - * path for all modules. The default path for the YUI library is the - * minified version of the files (e.g., event-min.js). The filter property - * can be a predefined filter or a custom filter. The valid predefined - * filters are: - *
          - *
          DEBUG
          - *
          Selects the debug versions of the library (e.g., event-debug.js). - * This option will automatically include the Logger widget
          - *
          RAW
          - *
          Selects the non-minified version of the library (e.g., event.js).
          - *
          - * You can also define a custom filter, which must be an object literal - * containing a search expression and a replace string: - * - * myFilter: { - * 'searchExp': "-min\\.js", - * 'replaceStr': "-debug.js" - * } - * - * For dynamic loading. - * - * @property filter - * @type string|object - */ - -/** - * The `skin` config let's you configure application level skin - * customizations. It contains the following attributes which - * can be specified to override the defaults: - * - * // The default skin, which is automatically applied if not - * // overriden by a component-specific skin definition. - * // Change this in to apply a different skin globally - * defaultSkin: 'sam', - * - * // This is combined with the loader base property to get - * // the default root directory for a skin. - * base: 'assets/skins/', - * - * // Any component-specific overrides can be specified here, - * // making it possible to load different skins for different - * // components. It is possible to load more than one skin - * // for a given component as well. - * overrides: { - * slider: ['capsule', 'round'] - * } - * - * For dynamic loading. - * - * @property skin - */ - -/** - * Hash of per-component filter specification. If specified for a given - * component, this overrides the filter config. - * - * For dynamic loading. - * - * @property filters - */ - -/** - * Use the YUI combo service to reduce the number of http connections - * required to load your dependencies. Turning this off will - * disable combo handling for YUI and all module groups configured - * with a combo service. - * - * For dynamic loading. - * - * @property combine - * @type boolean - * @default true if 'base' is not supplied, false if it is. - */ - -/** - * A list of modules that should never be dynamically loaded - * - * @property ignore - * @type string[] - */ - -/** - * A list of modules that should always be loaded when required, even if already - * present on the page. - * - * @property force - * @type string[] - */ - -/** - * Node or id for a node that should be used as the insertion point for new - * nodes. For dynamic loading. - * - * @property insertBefore - * @type string - */ - -/** - * Object literal containing attributes to add to dynamically loaded script - * nodes. - * @property jsAttributes - * @type string - */ - -/** - * Object literal containing attributes to add to dynamically loaded link - * nodes. - * @property cssAttributes - * @type string - */ - -/** - * Number of milliseconds before a timeout occurs when dynamically - * loading nodes. If not set, there is no timeout. - * @property timeout - * @type int - */ - -/** - * Callback for the 'CSSComplete' event. When dynamically loading YUI - * components with CSS, this property fires when the CSS is finished - * loading but script loading is still ongoing. This provides an - * opportunity to enhance the presentation of a loading page a little - * bit before the entire loading process is done. - * - * @property onCSS - * @type function - */ - -/** - * A hash of module definitions to add to the list of YUI components. - * These components can then be dynamically loaded side by side with - * YUI via the `use()` method. This is a hash, the key is the module - * name, and the value is an object literal specifying the metdata - * for the module. See `Loader.addModule` for the supported module - * metadata fields. Also see groups, which provides a way to - * configure the base and combo spec for a set of modules. - * - * modules: { - * mymod1: { - * requires: ['node'], - * fullpath: '/mymod1/mymod1.js' - * }, - * mymod2: { - * requires: ['mymod1'], - * fullpath: '/mymod2/mymod2.js' - * }, - * mymod3: '/js/mymod3.js', - * mycssmod: '/css/mycssmod.css' - * } - * - * - * @property modules - * @type object - */ - -/** - * Aliases are dynamic groups of modules that can be used as - * shortcuts. - * - * YUI({ - * aliases: { - * davglass: [ 'node', 'yql', 'dd' ], - * mine: [ 'davglass', 'autocomplete'] - * } - * }).use('mine', function(Y) { - * //Node, YQL, DD & AutoComplete available here.. - * }); - * - * @property aliases - * @type object - */ - -/** - * A hash of module group definitions. It for each group you - * can specify a list of modules and the base path and - * combo spec to use when dynamically loading the modules. - * - * groups: { - * yui2: { - * // specify whether or not this group has a combo service - * combine: true, - * - * // The comboSeperator to use with this group's combo handler - * comboSep: ';', - * - * // The maxURLLength for this server - * maxURLLength: 500, - * - * // the base path for non-combo paths - * base: 'http://yui.yahooapis.com/2.8.0r4/build/', - * - * // the path to the combo service - * comboBase: 'http://yui.yahooapis.com/combo?', - * - * // a fragment to prepend to the path attribute when - * // when building combo urls - * root: '2.8.0r4/build/', - * - * // the module definitions - * modules: { - * yui2_yde: { - * path: "yahoo-dom-event/yahoo-dom-event.js" - * }, - * yui2_anim: { - * path: "animation/animation.js", - * requires: ['yui2_yde'] - * } - * } - * } - * } - * - * @property groups - * @type object - */ - -/** - * The loader 'path' attribute to the loader itself. This is combined - * with the 'base' attribute to dynamically load the loader component - * when boostrapping with the get utility alone. - * - * @property loaderPath - * @type string - * @default loader/loader-min.js - */ - -/** - * Specifies whether or not YUI().use(...) will attempt to load CSS - * resources at all. Any truthy value will cause CSS dependencies - * to load when fetching script. The special value 'force' will - * cause CSS dependencies to be loaded even if no script is needed. - * - * @property fetchCSS - * @type boolean|string - * @default true - */ - -/** - * The default gallery version to build gallery module urls - * @property gallery - * @type string - * @since 3.1.0 - */ - -/** - * The default YUI 2 version to build yui2 module urls. This is for - * intrinsic YUI 2 support via the 2in3 project. Also see the '2in3' - * config for pulling different revisions of the wrapped YUI 2 - * modules. - * @since 3.1.0 - * @property yui2 - * @type string - * @default 2.9.0 - */ - -/** - * The 2in3 project is a deployment of the various versions of YUI 2 - * deployed as first-class YUI 3 modules. Eventually, the wrapper - * for the modules will change (but the underlying YUI 2 code will - * be the same), and you can select a particular version of - * the wrapper modules via this config. - * @since 3.1.0 - * @property 2in3 - * @type string - * @default 4 - */ - -/** - * Alternative console log function for use in environments without - * a supported native console. The function is executed in the - * YUI instance context. - * @since 3.1.0 - * @property logFn - * @type Function - */ - -/** - * A callback to execute when Y.error is called. It receives the - * error message and an javascript error object if Y.error was - * executed because a javascript error was caught. The function - * is executed in the YUI instance context. Returning `true` from this - * function will stop the Error from being thrown. - * - * @since 3.2.0 - * @property errorFn - * @type Function - */ - -/** - * A callback to execute when the loader fails to load one or - * more resource. This could be because of a script load - * failure. It can also fail if a javascript module fails - * to register itself, but only when the 'requireRegistration' - * is true. If this function is defined, the use() callback will - * only be called when the loader succeeds, otherwise it always - * executes unless there was a javascript error when attaching - * a module. - * - * @since 3.3.0 - * @property loadErrorFn - * @type Function - */ - -/** - * When set to true, the YUI loader will expect that all modules - * it is responsible for loading will be first-class YUI modules - * that register themselves with the YUI global. If this is - * set to true, loader will fail if the module registration fails - * to happen after the script is loaded. - * - * @since 3.3.0 - * @property requireRegistration - * @type boolean - * @default false - */ - -/** - * Cache serviced use() requests. - * @since 3.3.0 - * @property cacheUse - * @type boolean - * @default true - * @deprecated no longer used - */ - -/** - * Whether or not YUI should use native ES5 functionality when available for - * features like `Y.Array.each()`, `Y.Object()`, etc. When `false`, YUI will - * always use its own fallback implementations instead of relying on ES5 - * functionality, even when it's available. - * - * @property useNativeES5 - * @type Boolean - * @default true - * @since 3.5.0 - */ - -/** -Delay the `use` callback until a specific event has passed (`load`, `domready`, `contentready` or `available`) -@property delayUntil -@type String|Object -@since 3.6.0 -@example - -You can use `load` or `domready` strings by default: - - YUI({ - delayUntil: 'domready' - }, function(Y) { - //This will not fire until 'domeready' - }); - -Or you can delay until a node is available (with `available` or `contentready`): - - YUI({ - delayUntil: { - event: 'available', - args: '#foo' - } - }, function(Y) { - //This will not fire until '#foo' is - // available in the DOM - }); - - -*/ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1950); -YUI.add('yui-base', function (Y, NAME) { - -/* - * YUI stub - * @module yui - * @submodule yui-base - */ -/** - * The YUI module contains the components required for building the YUI - * seed file. This includes the script loading mechanism, a simple queue, - * and the core utilities for the library. - * @module yui - * @submodule yui-base - */ - -/** - * Provides core language utilites and extensions used throughout YUI. - * - * @class Lang - * @static - */ - -_yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "(anonymous 8)", 1950); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 1972); -var L = Y.Lang || (Y.Lang = {}), - -STRING_PROTO = String.prototype, -TOSTRING = Object.prototype.toString, - -TYPES = { - 'undefined' : 'undefined', - 'number' : 'number', - 'boolean' : 'boolean', - 'string' : 'string', - '[object Function]': 'function', - '[object RegExp]' : 'regexp', - '[object Array]' : 'array', - '[object Date]' : 'date', - '[object Error]' : 'error' -}, - -SUBREGEX = /\{\s*([^|}]+?)\s*(?:\|([^}]*))?\s*\}/g, -TRIMREGEX = /^\s+|\s+$/g, -NATIVE_FN_REGEX = /\{\s*\[(?:native code|function)\]\s*\}/i; - -// -- Protected Methods -------------------------------------------------------- - -/** -Returns `true` if the given function appears to be implemented in native code, -`false` otherwise. Will always return `false` -- even in ES5-capable browsers -- -if the `useNativeES5` YUI config option is set to `false`. - -This isn't guaranteed to be 100% accurate and won't work for anything other than -functions, but it can be useful for determining whether a function like -`Array.prototype.forEach` is native or a JS shim provided by another library. - -There's a great article by @kangax discussing certain flaws with this technique: - - -While his points are valid, it's still possible to benefit from this function -as long as it's used carefully and sparingly, and in such a way that false -negatives have minimal consequences. It's used internally to avoid using -potentially broken non-native ES5 shims that have been added to the page by -other libraries. - -@method _isNative -@param {Function} fn Function to test. -@return {Boolean} `true` if _fn_ appears to be native, `false` otherwise. -@static -@protected -@since 3.5.0 -**/ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2020); -L._isNative = function (fn) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "_isNative", 2020); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2021); -return !!(Y.config.useNativeES5 && fn && NATIVE_FN_REGEX.test(fn)); -}; - -// -- Public Methods ----------------------------------------------------------- - -/** - * Determines whether or not the provided item is an array. - * - * Returns `false` for array-like collections such as the function `arguments` - * collection or `HTMLElement` collections. Use `Y.Array.test()` if you want to - * test for an array-like collection. - * - * @method isArray - * @param o The object to test. - * @return {boolean} true if o is an array. - * @static - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2038); -L.isArray = L._isNative(Array.isArray) ? Array.isArray : function (o) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "isArray", 2038); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2039); -return L.type(o) === 'array'; -}; - -/** - * Determines whether or not the provided item is a boolean. - * @method isBoolean - * @static - * @param o The object to test. - * @return {boolean} true if o is a boolean. - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2049); -L.isBoolean = function(o) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "isBoolean", 2049); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2050); -return typeof o === 'boolean'; -}; - -/** - * Determines whether or not the supplied item is a date instance. - * @method isDate - * @static - * @param o The object to test. - * @return {boolean} true if o is a date. - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2060); -L.isDate = function(o) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "isDate", 2060); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2061); -return L.type(o) === 'date' && o.toString() !== 'Invalid Date' && !isNaN(o); -}; - -/** - *

          - * Determines whether or not the provided item is a function. - * Note: Internet Explorer thinks certain functions are objects: - *

          - * - *
          - * var obj = document.createElement("object");
          - * Y.Lang.isFunction(obj.getAttribute) // reports false in IE
          - *  
          - * var input = document.createElement("input"); // append to body
          - * Y.Lang.isFunction(input.focus) // reports false in IE
          - * 
          - * - *

          - * You will have to implement additional tests if these functions - * matter to you. - *

          - * - * @method isFunction - * @static - * @param o The object to test. - * @return {boolean} true if o is a function. - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2088); -L.isFunction = function(o) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "isFunction", 2088); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2089); -return L.type(o) === 'function'; -}; - -/** - * Determines whether or not the provided item is null. - * @method isNull - * @static - * @param o The object to test. - * @return {boolean} true if o is null. - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2099); -L.isNull = function(o) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "isNull", 2099); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2100); -return o === null; -}; - -/** - * Determines whether or not the provided item is a legal number. - * @method isNumber - * @static - * @param o The object to test. - * @return {boolean} true if o is a number. - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2110); -L.isNumber = function(o) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "isNumber", 2110); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2111); -return typeof o === 'number' && isFinite(o); -}; - -/** - * Determines whether or not the provided item is of type object - * or function. Note that arrays are also objects, so - * Y.Lang.isObject([]) === true. - * @method isObject - * @static - * @param o The object to test. - * @param failfn {boolean} fail if the input is a function. - * @return {boolean} true if o is an object. - * @see isPlainObject - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2125); -L.isObject = function(o, failfn) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "isObject", 2125); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2126); -var t = typeof o; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2127); -return (o && (t === 'object' || - (!failfn && (t === 'function' || L.isFunction(o))))) || false; -}; - -/** - * Determines whether or not the provided item is a string. - * @method isString - * @static - * @param o The object to test. - * @return {boolean} true if o is a string. - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2138); -L.isString = function(o) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "isString", 2138); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2139); -return typeof o === 'string'; -}; - -/** - * Determines whether or not the provided item is undefined. - * @method isUndefined - * @static - * @param o The object to test. - * @return {boolean} true if o is undefined. - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2149); -L.isUndefined = function(o) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "isUndefined", 2149); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2150); -return typeof o === 'undefined'; -}; - -/** - * A convenience method for detecting a legitimate non-null value. - * Returns false for null/undefined/NaN, true for other values, - * including 0/false/'' - * @method isValue - * @static - * @param o The item to test. - * @return {boolean} true if it is not null/undefined/NaN || false. - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2162); -L.isValue = function(o) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "isValue", 2162); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2163); -var t = L.type(o); - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2165); -switch (t) { - case 'number': - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2167); -return isFinite(o); - - case 'null': // fallthru - case 'undefined': - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2171); -return false; - - default: - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2174); -return !!t; - } -}; - -/** - * Returns the current time in milliseconds. - * - * @method now - * @return {Number} Current time in milliseconds. - * @static - * @since 3.3.0 - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2186); -L.now = Date.now || function () { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "(anonymous 9)", 2186); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2187); -return new Date().getTime(); -}; - -/** - * Lightweight version of Y.substitute. Uses the same template - * structure as Y.substitute, but doesn't support recursion, - * auto-object coersion, or formats. - * @method sub - * @param {string} s String to be modified. - * @param {object} o Object containing replacement values. - * @return {string} the substitute result. - * @static - * @since 3.2.0 - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2201); -L.sub = function(s, o) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "sub", 2201); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2202); -return s.replace ? s.replace(SUBREGEX, function (match, key) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "(anonymous 10)", 2202); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2203); -return L.isUndefined(o[key]) ? match : o[key]; - }) : s; -}; - -/** - * Returns a string without any leading or trailing whitespace. If - * the input is not a string, the input will be returned untouched. - * @method trim - * @static - * @param s {string} the string to trim. - * @return {string} the trimmed string. - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2215); -L.trim = STRING_PROTO.trim ? function(s) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "(anonymous 11)", 2215); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2216); -return s && s.trim ? s.trim() : s; -} : function (s) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "}", 2217); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2218); -try { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2219); -return s.replace(TRIMREGEX, ''); - } catch (e) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2221); -return s; - } -}; - -/** - * Returns a string without any leading whitespace. - * @method trimLeft - * @static - * @param s {string} the string to trim. - * @return {string} the trimmed string. - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2232); -L.trimLeft = STRING_PROTO.trimLeft ? function (s) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "(anonymous 12)", 2232); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2233); -return s.trimLeft(); -} : function (s) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "}", 2234); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2235); -return s.replace(/^\s+/, ''); -}; - -/** - * Returns a string without any trailing whitespace. - * @method trimRight - * @static - * @param s {string} the string to trim. - * @return {string} the trimmed string. - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2245); -L.trimRight = STRING_PROTO.trimRight ? function (s) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "(anonymous 13)", 2245); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2246); -return s.trimRight(); -} : function (s) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "}", 2247); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2248); -return s.replace(/\s+$/, ''); -}; - -/** -Returns one of the following strings, representing the type of the item passed -in: - - * "array" - * "boolean" - * "date" - * "error" - * "function" - * "null" - * "number" - * "object" - * "regexp" - * "string" - * "undefined" - -Known issues: - - * `typeof HTMLElementCollection` returns function in Safari, but - `Y.Lang.type()` reports "object", which could be a good thing -- - but it actually caused the logic in Y.Lang.isObject to fail. - -@method type -@param o the item to test. -@return {string} the detected type. -@static -**/ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2278); -L.type = function(o) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "type", 2278); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2279); -return TYPES[typeof o] || TYPES[TOSTRING.call(o)] || (o ? 'object' : 'null'); -}; -/** -@module yui -@submodule yui-base -*/ - -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2286); -var Lang = Y.Lang, - Native = Array.prototype, - - hasOwn = Object.prototype.hasOwnProperty; - -/** -Provides utility methods for working with arrays. Additional array helpers can -be found in the `collection` and `array-extras` modules. - -`Y.Array(thing)` returns a native array created from _thing_. Depending on -_thing_'s type, one of the following will happen: - - * Arrays are returned unmodified unless a non-zero _startIndex_ is - specified. - * Array-like collections (see `Array.test()`) are converted to arrays. - * For everything else, a new array is created with _thing_ as the sole - item. - -Note: elements that are also collections, such as `` and ``, to be array-like. - -@method test -@param {Object} obj Object to test. -@return {Number} A number indicating the results of the test: - - * 0: Neither an array nor an array-like collection. - * 1: Real array. - * 2: Array-like collection. - -@static -**/ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2550); -YArray.test = function (obj) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "test", 2550); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2551); -var result = 0; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2553); -if (Lang.isArray(obj)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2554); -result = 1; - } else {_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2555); -if (Lang.isObject(obj)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2556); -try { - // indexed, but no tagName (element) or scrollTo/document (window. From DOM.isWindow test which we can't use here), - // or functions without apply/call (Safari - // HTMLElementCollection bug). - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2560); -if ('length' in obj && !obj.tagName && !(obj.scrollTo && obj.document) && !obj.apply) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2561); -result = 2; - } - } catch (ex) {} - }} - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2566); -return result; -}; -/** - * The YUI module contains the components required for building the YUI - * seed file. This includes the script loading mechanism, a simple queue, - * and the core utilities for the library. - * @module yui - * @submodule yui-base - */ - -/** - * A simple FIFO queue. Items are added to the Queue with add(1..n items) and - * removed using next(). - * - * @class Queue - * @constructor - * @param {MIXED} item* 0..n items to seed the queue. - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2584); -function Queue() { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "Queue", 2584); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2585); -this._init(); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2586); -this.add.apply(this, arguments); -} - -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2589); -Queue.prototype = { - /** - * Initialize the queue - * - * @method _init - * @protected - */ - _init: function() { - /** - * The collection of enqueued items - * - * @property _q - * @type Array - * @protected - */ - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "_init", 2596); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2604); -this._q = []; - }, - - /** - * Get the next item in the queue. FIFO support - * - * @method next - * @return {MIXED} the next item in the queue. - */ - next: function() { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "next", 2613); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2614); -return this._q.shift(); - }, - - /** - * Get the last in the queue. LIFO support. - * - * @method last - * @return {MIXED} the last item in the queue. - */ - last: function() { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "last", 2623); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2624); -return this._q.pop(); - }, - - /** - * Add 0..n items to the end of the queue. - * - * @method add - * @param {MIXED} item* 0..n items. - * @return {object} this queue. - */ - add: function() { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "add", 2634); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2635); -this._q.push.apply(this._q, arguments); - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2637); -return this; - }, - - /** - * Returns the current number of queued items. - * - * @method size - * @return {Number} The size. - */ - size: function() { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "size", 2646); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2647); -return this._q.length; - } -}; - -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2651); -Y.Queue = Queue; - -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2653); -YUI.Env._loaderQueue = YUI.Env._loaderQueue || new Queue(); - -/** -The YUI module contains the components required for building the YUI seed file. -This includes the script loading mechanism, a simple queue, and the core -utilities for the library. - -@module yui -@submodule yui-base -**/ - -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2664); -var CACHED_DELIMITER = '__', - - hasOwn = Object.prototype.hasOwnProperty, - isObject = Y.Lang.isObject; - -/** -Returns a wrapper for a function which caches the return value of that function, -keyed off of the combined string representation of the argument values provided -when the wrapper is called. - -Calling this function again with the same arguments will return the cached value -rather than executing the wrapped function. - -Note that since the cache is keyed off of the string representation of arguments -passed to the wrapper function, arguments that aren't strings and don't provide -a meaningful `toString()` method may result in unexpected caching behavior. For -example, the objects `{}` and `{foo: 'bar'}` would both be converted to the -string `[object Object]` when used as a cache key. - -@method cached -@param {Function} source The function to memoize. -@param {Object} [cache={}] Object in which to store cached values. You may seed - this object with pre-existing cached values if desired. -@param {any} [refetch] If supplied, this value is compared with the cached value - using a `==` comparison. If the values are equal, the wrapped function is - executed again even though a cached value exists. -@return {Function} Wrapped function. -@for YUI -**/ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2693); -Y.cached = function (source, cache, refetch) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "cached", 2693); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2694); -cache || (cache = {}); - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2696); -return function (arg) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "(anonymous 17)", 2696); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2697); -var key = arguments.length > 1 ? - Array.prototype.join.call(arguments, CACHED_DELIMITER) : - String(arg); - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2701); -if (!(key in cache) || (refetch && cache[key] == refetch)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2702); -cache[key] = source.apply(source, arguments); - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2705); -return cache[key]; - }; -}; - -/** -Returns the `location` object from the window/frame in which this YUI instance -operates, or `undefined` when executing in a non-browser environment -(e.g. Node.js). - -It is _not_ recommended to hold references to the `window.location` object -outside of the scope of a function in which its properties are being accessed or -its methods are being called. This is because of a nasty bug/issue that exists -in both Safari and MobileSafari browsers: -[WebKit Bug 34679](https://bugs.webkit.org/show_bug.cgi?id=34679). - -@method getLocation -@return {location} The `location` object from the window/frame in which this YUI - instance operates. -@since 3.5.0 -**/ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2725); -Y.getLocation = function () { - // It is safer to look this up every time because yui-base is attached to a - // YUI instance before a user's config is applied; i.e. `Y.config.win` does - // not point the correct window object when this file is loaded. - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "getLocation", 2725); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2729); -var win = Y.config.win; - - // It is not safe to hold a reference to the `location` object outside the - // scope in which it is being used. The WebKit engine used in Safari and - // MobileSafari will "disconnect" the `location` object from the `window` - // when a page is restored from back/forward history cache. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2735); -return win && win.location; -}; - -/** -Returns a new object containing all of the properties of all the supplied -objects. The properties from later objects will overwrite those in earlier -objects. - -Passing in a single object will create a shallow copy of it. For a deep copy, -use `clone()`. - -@method merge -@param {Object} objects* One or more objects to merge. -@return {Object} A new merged object. -**/ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2750); -Y.merge = function () { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "merge", 2750); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2751); -var i = 0, - len = arguments.length, - result = {}, - key, - obj; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2757); -for (; i < len; ++i) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2758); -obj = arguments[i]; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2760); -for (key in obj) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2761); -if (hasOwn.call(obj, key)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2762); -result[key] = obj[key]; - } - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2767); -return result; -}; - -/** -Mixes _supplier_'s properties into _receiver_. - -Properties on _receiver_ or _receiver_'s prototype will not be overwritten or -shadowed unless the _overwrite_ parameter is `true`, and will not be merged -unless the _merge_ parameter is `true`. - -In the default mode (0), only properties the supplier owns are copied (prototype -properties are not copied). The following copying modes are available: - - * `0`: _Default_. Object to object. - * `1`: Prototype to prototype. - * `2`: Prototype to prototype and object to object. - * `3`: Prototype to object. - * `4`: Object to prototype. - -@method mix -@param {Function|Object} receiver The object or function to receive the mixed - properties. -@param {Function|Object} supplier The object or function supplying the - properties to be mixed. -@param {Boolean} [overwrite=false] If `true`, properties that already exist - on the receiver will be overwritten with properties from the supplier. -@param {String[]} [whitelist] An array of property names to copy. If - specified, only the whitelisted properties will be copied, and all others - will be ignored. -@param {Number} [mode=0] Mix mode to use. See above for available modes. -@param {Boolean} [merge=false] If `true`, objects and arrays that already - exist on the receiver will have the corresponding object/array from the - supplier merged into them, rather than being skipped or overwritten. When - both _overwrite_ and _merge_ are `true`, _merge_ takes precedence. -@return {Function|Object|YUI} The receiver, or the YUI instance if the - specified receiver is falsy. -**/ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2804); -Y.mix = function(receiver, supplier, overwrite, whitelist, mode, merge) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "mix", 2804); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2805); -var alwaysOverwrite, exists, from, i, key, len, to; - - // If no supplier is given, we return the receiver. If no receiver is given, - // we return Y. Returning Y doesn't make much sense to me, but it's - // grandfathered in for backcompat reasons. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2810); -if (!receiver || !supplier) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2811); -return receiver || Y; - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2814); -if (mode) { - // In mode 2 (prototype to prototype and object to object), we recurse - // once to do the proto to proto mix. The object to object mix will be - // handled later on. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2818); -if (mode === 2) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2819); -Y.mix(receiver.prototype, supplier.prototype, overwrite, - whitelist, 0, merge); - } - - // Depending on which mode is specified, we may be copying from or to - // the prototypes of the supplier and receiver. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2825); -from = mode === 1 || mode === 3 ? supplier.prototype : supplier; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2826); -to = mode === 1 || mode === 4 ? receiver.prototype : receiver; - - // If either the supplier or receiver doesn't actually have a - // prototype property, then we could end up with an undefined `from` - // or `to`. If that happens, we abort and return the receiver. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2831); -if (!from || !to) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2832); -return receiver; - } - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2835); -from = supplier; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2836); -to = receiver; - } - - // If `overwrite` is truthy and `merge` is falsy, then we can skip a - // property existence check on each iteration and save some time. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2841); -alwaysOverwrite = overwrite && !merge; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2843); -if (whitelist) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2844); -for (i = 0, len = whitelist.length; i < len; ++i) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2845); -key = whitelist[i]; - - // We call `Object.prototype.hasOwnProperty` instead of calling - // `hasOwnProperty` on the object itself, since the object's - // `hasOwnProperty` method may have been overridden or removed. - // Also, some native objects don't implement a `hasOwnProperty` - // method. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2852); -if (!hasOwn.call(from, key)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2853); -continue; - } - - // The `key in to` check here is (sadly) intentional for backwards - // compatibility reasons. It prevents undesired shadowing of - // prototype members on `to`. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2859); -exists = alwaysOverwrite ? false : key in to; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2861); -if (merge && exists && isObject(to[key], true) - && isObject(from[key], true)) { - // If we're in merge mode, and the key is present on both - // objects, and the value on both objects is either an object or - // an array (but not a function), then we recurse to merge the - // `from` value into the `to` value instead of overwriting it. - // - // Note: It's intentional that the whitelist isn't passed to the - // recursive call here. This is legacy behavior that lots of - // code still depends on. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2871); -Y.mix(to[key], from[key], overwrite, null, 0, merge); - } else {_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2872); -if (overwrite || !exists) { - // We're not in merge mode, so we'll only copy the `from` value - // to the `to` value if we're in overwrite mode or if the - // current key doesn't exist on the `to` object. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2876); -to[key] = from[key]; - }} - } - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2880); -for (key in from) { - // The code duplication here is for runtime performance reasons. - // Combining whitelist and non-whitelist operations into a single - // loop or breaking the shared logic out into a function both result - // in worse performance, and Y.mix is critical enough that the byte - // tradeoff is worth it. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2886); -if (!hasOwn.call(from, key)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2887); -continue; - } - - // The `key in to` check here is (sadly) intentional for backwards - // compatibility reasons. It prevents undesired shadowing of - // prototype members on `to`. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2893); -exists = alwaysOverwrite ? false : key in to; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2895); -if (merge && exists && isObject(to[key], true) - && isObject(from[key], true)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2897); -Y.mix(to[key], from[key], overwrite, null, 0, merge); - } else {_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2898); -if (overwrite || !exists) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2899); -to[key] = from[key]; - }} - } - - // If this is an IE browser with the JScript enumeration bug, force - // enumeration of the buggy properties by making a recursive call with - // the buggy properties as the whitelist. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2906); -if (Y.Object._hasEnumBug) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2907); -Y.mix(to, from, overwrite, Y.Object._forceEnum, mode, merge); - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2911); -return receiver; -}; -/** - * The YUI module contains the components required for building the YUI - * seed file. This includes the script loading mechanism, a simple queue, - * and the core utilities for the library. - * @module yui - * @submodule yui-base - */ - -/** - * Adds utilities to the YUI instance for working with objects. - * - * @class Object - */ - -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2927); -var Lang = Y.Lang, - hasOwn = Object.prototype.hasOwnProperty, - - UNDEFINED, // <-- Note the comma. We're still declaring vars. - -/** - * Returns a new object that uses _obj_ as its prototype. This method wraps the - * native ES5 `Object.create()` method if available, but doesn't currently - * pass through `Object.create()`'s second argument (properties) in order to - * ensure compatibility with older browsers. - * - * @method () - * @param {Object} obj Prototype object. - * @return {Object} New object using _obj_ as its prototype. - * @static - */ -O = Y.Object = Lang._isNative(Object.create) ? function (obj) { - // We currently wrap the native Object.create instead of simply aliasing it - // to ensure consistency with our fallback shim, which currently doesn't - // support Object.create()'s second argument (properties). Once we have a - // safe fallback for the properties arg, we can stop wrapping - // Object.create(). - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "(anonymous 18)", 2943); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2949); -return Object.create(obj); -} : (function () { - // Reusable constructor function for the Object.create() shim. - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "(anonymous 19)", 2950); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2952); -function F() {} - - // The actual shim. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2955); -return function (obj) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "(anonymous 20)", 2955); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2956); -F.prototype = obj; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 2957); -return new F(); - }; -}()), - -/** - * Property names that IE doesn't enumerate in for..in loops, even when they - * should be enumerable. When `_hasEnumBug` is `true`, it's necessary to - * manually enumerate these properties. - * - * @property _forceEnum - * @type String[] - * @protected - * @static - */ -forceEnum = O._forceEnum = [ - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toString', - 'toLocaleString', - 'valueOf' -], - -/** - * `true` if this browser has the JScript enumeration bug that prevents - * enumeration of the properties named in the `_forceEnum` array, `false` - * otherwise. - * - * See: - * - - * - - * - * @property _hasEnumBug - * @type Boolean - * @protected - * @static - */ -hasEnumBug = O._hasEnumBug = !{valueOf: 0}.propertyIsEnumerable('valueOf'), - -/** - * `true` if this browser incorrectly considers the `prototype` property of - * functions to be enumerable. Currently known to affect Opera 11.50. - * - * @property _hasProtoEnumBug - * @type Boolean - * @protected - * @static - */ -hasProtoEnumBug = O._hasProtoEnumBug = (function () {}).propertyIsEnumerable('prototype'), - -/** - * Returns `true` if _key_ exists on _obj_, `false` if _key_ doesn't exist or - * exists only on _obj_'s prototype. This is essentially a safer version of - * `obj.hasOwnProperty()`. - * - * @method owns - * @param {Object} obj Object to test. - * @param {String} key Property name to look for. - * @return {Boolean} `true` if _key_ exists on _obj_, `false` otherwise. - * @static - */ -owns = O.owns = function (obj, key) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "owns", 3018); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3019); -return !!obj && hasOwn.call(obj, key); -}; // <-- End of var declarations. - -/** - * Alias for `owns()`. - * - * @method hasKey - * @param {Object} obj Object to test. - * @param {String} key Property name to look for. - * @return {Boolean} `true` if _key_ exists on _obj_, `false` otherwise. - * @static - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3031); -O.hasKey = owns; - -/** - * Returns an array containing the object's enumerable keys. Does not include - * prototype keys or non-enumerable keys. - * - * Note that keys are returned in enumeration order (that is, in the same order - * that they would be enumerated by a `for-in` loop), which may not be the same - * as the order in which they were defined. - * - * This method is an alias for the native ES5 `Object.keys()` method if - * available. - * - * @example - * - * Y.Object.keys({a: 'foo', b: 'bar', c: 'baz'}); - * // => ['a', 'b', 'c'] - * - * @method keys - * @param {Object} obj An object. - * @return {String[]} Array of keys. - * @static - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3054); -O.keys = Lang._isNative(Object.keys) ? Object.keys : function (obj) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "keys", 3054); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3055); -if (!Lang.isObject(obj)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3056); -throw new TypeError('Object.keys called on a non-object'); - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3059); -var keys = [], - i, key, len; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3062); -if (hasProtoEnumBug && typeof obj === 'function') { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3063); -for (key in obj) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3064); -if (owns(obj, key) && key !== 'prototype') { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3065); -keys.push(key); - } - } - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3069); -for (key in obj) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3070); -if (owns(obj, key)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3071); -keys.push(key); - } - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3076); -if (hasEnumBug) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3077); -for (i = 0, len = forceEnum.length; i < len; ++i) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3078); -key = forceEnum[i]; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3080); -if (owns(obj, key)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3081); -keys.push(key); - } - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3086); -return keys; -}; - -/** - * Returns an array containing the values of the object's enumerable keys. - * - * Note that values are returned in enumeration order (that is, in the same - * order that they would be enumerated by a `for-in` loop), which may not be the - * same as the order in which they were defined. - * - * @example - * - * Y.Object.values({a: 'foo', b: 'bar', c: 'baz'}); - * // => ['foo', 'bar', 'baz'] - * - * @method values - * @param {Object} obj An object. - * @return {Array} Array of values. - * @static - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3106); -O.values = function (obj) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "values", 3106); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3107); -var keys = O.keys(obj), - i = 0, - len = keys.length, - values = []; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3112); -for (; i < len; ++i) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3113); -values.push(obj[keys[i]]); - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3116); -return values; -}; - -/** - * Returns the number of enumerable keys owned by an object. - * - * @method size - * @param {Object} obj An object. - * @return {Number} The object's size. - * @static - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3127); -O.size = function (obj) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "size", 3127); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3128); -try { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3129); -return O.keys(obj).length; - } catch (ex) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3131); -return 0; // Legacy behavior for non-objects. - } -}; - -/** - * Returns `true` if the object owns an enumerable property with the specified - * value. - * - * @method hasValue - * @param {Object} obj An object. - * @param {any} value The value to search for. - * @return {Boolean} `true` if _obj_ contains _value_, `false` otherwise. - * @static - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3145); -O.hasValue = function (obj, value) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "hasValue", 3145); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3146); -return Y.Array.indexOf(O.values(obj), value) > -1; -}; - -/** - * Executes a function on each enumerable property in _obj_. The function - * receives the value, the key, and the object itself as parameters (in that - * order). - * - * By default, only properties owned by _obj_ are enumerated. To include - * prototype properties, set the _proto_ parameter to `true`. - * - * @method each - * @param {Object} obj Object to enumerate. - * @param {Function} fn Function to execute on each enumerable property. - * @param {mixed} fn.value Value of the current property. - * @param {String} fn.key Key of the current property. - * @param {Object} fn.obj Object being enumerated. - * @param {Object} [thisObj] `this` object to use when calling _fn_. - * @param {Boolean} [proto=false] Include prototype properties. - * @return {YUI} the YUI instance. - * @chainable - * @static - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3169); -O.each = function (obj, fn, thisObj, proto) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "each", 3169); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3170); -var key; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3172); -for (key in obj) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3173); -if (proto || owns(obj, key)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3174); -fn.call(thisObj || Y, obj[key], key, obj); - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3178); -return Y; -}; - -/** - * Executes a function on each enumerable property in _obj_, but halts if the - * function returns a truthy value. The function receives the value, the key, - * and the object itself as paramters (in that order). - * - * By default, only properties owned by _obj_ are enumerated. To include - * prototype properties, set the _proto_ parameter to `true`. - * - * @method some - * @param {Object} obj Object to enumerate. - * @param {Function} fn Function to execute on each enumerable property. - * @param {mixed} fn.value Value of the current property. - * @param {String} fn.key Key of the current property. - * @param {Object} fn.obj Object being enumerated. - * @param {Object} [thisObj] `this` object to use when calling _fn_. - * @param {Boolean} [proto=false] Include prototype properties. - * @return {Boolean} `true` if any execution of _fn_ returns a truthy value, - * `false` otherwise. - * @static - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3201); -O.some = function (obj, fn, thisObj, proto) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "some", 3201); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3202); -var key; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3204); -for (key in obj) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3205); -if (proto || owns(obj, key)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3206); -if (fn.call(thisObj || Y, obj[key], key, obj)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3207); -return true; - } - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3212); -return false; -}; - -/** - * Retrieves the sub value at the provided path, - * from the value object provided. - * - * @method getValue - * @static - * @param o The object from which to extract the property value. - * @param path {Array} A path array, specifying the object traversal path - * from which to obtain the sub value. - * @return {Any} The value stored in the path, undefined if not found, - * undefined if the source is not an object. Returns the source object - * if an empty path is provided. - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3228); -O.getValue = function(o, path) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "getValue", 3228); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3229); -if (!Lang.isObject(o)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3230); -return UNDEFINED; - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3233); -var i, - p = Y.Array(path), - l = p.length; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3237); -for (i = 0; o !== UNDEFINED && i < l; i++) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3238); -o = o[p[i]]; - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3241); -return o; -}; - -/** - * Sets the sub-attribute value at the provided path on the - * value object. Returns the modified value object, or - * undefined if the path is invalid. - * - * @method setValue - * @static - * @param o The object on which to set the sub value. - * @param path {Array} A path array, specifying the object traversal path - * at which to set the sub value. - * @param val {Any} The new value for the sub-attribute. - * @return {Object} The modified object, with the new sub value set, or - * undefined, if the path was invalid. - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3258); -O.setValue = function(o, path, val) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "setValue", 3258); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3259); -var i, - p = Y.Array(path), - leafIdx = p.length - 1, - ref = o; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3264); -if (leafIdx >= 0) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3265); -for (i = 0; ref !== UNDEFINED && i < leafIdx; i++) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3266); -ref = ref[p[i]]; - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3269); -if (ref !== UNDEFINED) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3270); -ref[p[i]] = val; - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3272); -return UNDEFINED; - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3276); -return o; -}; - -/** - * Returns `true` if the object has no enumerable properties of its own. - * - * @method isEmpty - * @param {Object} obj An object. - * @return {Boolean} `true` if the object is empty. - * @static - * @since 3.2.0 - */ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3288); -O.isEmpty = function (obj) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "isEmpty", 3288); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3289); -return !O.keys(Object(obj)).length; -}; -/** - * The YUI module contains the components required for building the YUI seed - * file. This includes the script loading mechanism, a simple queue, and the - * core utilities for the library. - * @module yui - * @submodule yui-base - */ - -/** - * YUI user agent detection. - * Do not fork for a browser if it can be avoided. Use feature detection when - * you can. Use the user agent as a last resort. For all fields listed - * as @type float, UA stores a version number for the browser engine, - * 0 otherwise. This value may or may not map to the version number of - * the browser using the engine. The value is presented as a float so - * that it can easily be used for boolean evaluation as well as for - * looking for a particular range of versions. Because of this, - * some of the granularity of the version info may be lost. The fields that - * are @type string default to null. The API docs list the values that - * these fields can have. - * @class UA - * @static - */ - -/** -* Static method on `YUI.Env` for parsing a UA string. Called at instantiation -* to populate `Y.UA`. -* -* @static -* @method parseUA -* @param {String} [subUA=navigator.userAgent] UA string to parse -* @return {Object} The Y.UA object -*/ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3324); -YUI.Env.parseUA = function(subUA) { - - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "parseUA", 3324); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3326); -var numberify = function(s) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "numberify", 3326); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3327); -var c = 0; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3328); -return parseFloat(s.replace(/\./g, function() { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "(anonymous 22)", 3328); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3329); -return (c++ === 1) ? '' : '.'; - })); - }, - - win = Y.config.win, - - nav = win && win.navigator, - - o = { - - /** - * Internet Explorer version number or 0. Example: 6 - * @property ie - * @type float - * @static - */ - ie: 0, - - /** - * Opera version number or 0. Example: 9.2 - * @property opera - * @type float - * @static - */ - opera: 0, - - /** - * Gecko engine revision number. Will evaluate to 1 if Gecko - * is detected but the revision could not be found. Other browsers - * will be 0. Example: 1.8 - *
          -         * Firefox 1.0.0.4: 1.7.8   <-- Reports 1.7
          -         * Firefox 1.5.0.9: 1.8.0.9 <-- 1.8
          -         * Firefox 2.0.0.3: 1.8.1.3 <-- 1.81
          -         * Firefox 3.0   <-- 1.9
          -         * Firefox 3.5   <-- 1.91
          -         * 
          - * @property gecko - * @type float - * @static - */ - gecko: 0, - - /** - * AppleWebKit version. KHTML browsers that are not WebKit browsers - * will evaluate to 1, other browsers 0. Example: 418.9 - *
          -         * Safari 1.3.2 (312.6): 312.8.1 <-- Reports 312.8 -- currently the
          -         *                                   latest available for Mac OSX 10.3.
          -         * Safari 2.0.2:         416     <-- hasOwnProperty introduced
          -         * Safari 2.0.4:         418     <-- preventDefault fixed
          -         * Safari 2.0.4 (419.3): 418.9.1 <-- One version of Safari may run
          -         *                                   different versions of webkit
          -         * Safari 2.0.4 (419.3): 419     <-- Tiger installations that have been
          -         *                                   updated, but not updated
          -         *                                   to the latest patch.
          -         * Webkit 212 nightly:   522+    <-- Safari 3.0 precursor (with native
          -         * SVG and many major issues fixed).
          -         * Safari 3.0.4 (523.12) 523.12  <-- First Tiger release - automatic
          -         * update from 2.x via the 10.4.11 OS patch.
          -         * Webkit nightly 1/2008:525+    <-- Supports DOMContentLoaded event.
          -         *                                   yahoo.com user agent hack removed.
          -         * 
          - * http://en.wikipedia.org/wiki/Safari_version_history - * @property webkit - * @type float - * @static - */ - webkit: 0, - - /** - * Safari will be detected as webkit, but this property will also - * be populated with the Safari version number - * @property safari - * @type float - * @static - */ - safari: 0, - - /** - * Chrome will be detected as webkit, but this property will also - * be populated with the Chrome version number - * @property chrome - * @type float - * @static - */ - chrome: 0, - - /** - * The mobile property will be set to a string containing any relevant - * user agent information when a modern mobile browser is detected. - * Currently limited to Safari on the iPhone/iPod Touch, Nokia N-series - * devices with the WebKit-based browser, and Opera Mini. - * @property mobile - * @type string - * @default null - * @static - */ - mobile: null, - - /** - * Adobe AIR version number or 0. Only populated if webkit is detected. - * Example: 1.0 - * @property air - * @type float - */ - air: 0, - /** - * PhantomJS version number or 0. Only populated if webkit is detected. - * Example: 1.0 - * @property phantomjs - * @type float - */ - phantomjs: 0, - /** - * Detects Apple iPad's OS version - * @property ipad - * @type float - * @static - */ - ipad: 0, - /** - * Detects Apple iPhone's OS version - * @property iphone - * @type float - * @static - */ - iphone: 0, - /** - * Detects Apples iPod's OS version - * @property ipod - * @type float - * @static - */ - ipod: 0, - /** - * General truthy check for iPad, iPhone or iPod - * @property ios - * @type Boolean - * @default null - * @static - */ - ios: null, - /** - * Detects Googles Android OS version - * @property android - * @type float - * @static - */ - android: 0, - /** - * Detects Kindle Silk - * @property silk - * @type float - * @static - */ - silk: 0, - /** - * Detects Kindle Silk Acceleration - * @property accel - * @type Boolean - * @static - */ - accel: false, - /** - * Detects Palms WebOS version - * @property webos - * @type float - * @static - */ - webos: 0, - - /** - * Google Caja version number or 0. - * @property caja - * @type float - */ - caja: nav && nav.cajaVersion, - - /** - * Set to true if the page appears to be in SSL - * @property secure - * @type boolean - * @static - */ - secure: false, - - /** - * The operating system. Currently only detecting windows or macintosh - * @property os - * @type string - * @default null - * @static - */ - os: null, - - /** - * The Nodejs Version - * @property nodejs - * @type float - * @default 0 - * @static - */ - nodejs: 0, - /* - * Window8/IE10 Application host environment - * @property winjs - * @type Boolean - * @static - */ - winjs: !!((typeof Windows !== "undefined") && Windows.System), - /** - * Are touch/msPointer events available on this device - * @property touchEnabled - * @type Boolean - * @static - */ - touchEnabled: false - }, - - ua = subUA || nav && nav.userAgent, - - loc = win && win.location, - - href = loc && loc.href, - - m; - - /** - * The User Agent string that was parsed - * @property userAgent - * @type String - * @static - */ - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3563); -o.userAgent = ua; - - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3566); -o.secure = href && (href.toLowerCase().indexOf('https') === 0); - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3568); -if (ua) { - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3570); -if ((/windows|win32/i).test(ua)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3571); -o.os = 'windows'; - } else {_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3572); -if ((/macintosh|mac_powerpc/i).test(ua)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3573); -o.os = 'macintosh'; - } else {_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3574); -if ((/android/i).test(ua)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3575); -o.os = 'android'; - } else {_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3576); -if ((/symbos/i).test(ua)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3577); -o.os = 'symbos'; - } else {_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3578); -if ((/linux/i).test(ua)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3579); -o.os = 'linux'; - } else {_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3580); -if ((/rhino/i).test(ua)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3581); -o.os = 'rhino'; - }}}}}} - - // Modern KHTML browsers should qualify as Safari X-Grade - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3585); -if ((/KHTML/).test(ua)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3586); -o.webkit = 1; - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3588); -if ((/IEMobile|XBLWP7/).test(ua)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3589); -o.mobile = 'windows'; - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3591); -if ((/Fennec/).test(ua)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3592); -o.mobile = 'gecko'; - } - // Modern WebKit browsers are at least X-Grade - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3595); -m = ua.match(/AppleWebKit\/([^\s]*)/); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3596); -if (m && m[1]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3597); -o.webkit = numberify(m[1]); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3598); -o.safari = o.webkit; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3600); -if (/PhantomJS/.test(ua)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3601); -m = ua.match(/PhantomJS\/([^\s]*)/); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3602); -if (m && m[1]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3603); -o.phantomjs = numberify(m[1]); - } - } - - // Mobile browser check - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3608); -if (/ Mobile\//.test(ua) || (/iPad|iPod|iPhone/).test(ua)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3609); -o.mobile = 'Apple'; // iPhone or iPod Touch - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3611); -m = ua.match(/OS ([^\s]*)/); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3612); -if (m && m[1]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3613); -m = numberify(m[1].replace('_', '.')); - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3615); -o.ios = m; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3616); -o.os = 'ios'; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3617); -o.ipad = o.ipod = o.iphone = 0; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3619); -m = ua.match(/iPad|iPod|iPhone/); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3620); -if (m && m[0]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3621); -o[m[0].toLowerCase()] = o.ios; - } - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3624); -m = ua.match(/NokiaN[^\/]*|webOS\/\d\.\d/); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3625); -if (m) { - // Nokia N-series, webOS, ex: NokiaN95 - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3627); -o.mobile = m[0]; - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3629); -if (/webOS/.test(ua)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3630); -o.mobile = 'WebOS'; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3631); -m = ua.match(/webOS\/([^\s]*);/); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3632); -if (m && m[1]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3633); -o.webos = numberify(m[1]); - } - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3636); -if (/ Android/.test(ua)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3637); -if (/Mobile/.test(ua)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3638); -o.mobile = 'Android'; - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3640); -m = ua.match(/Android ([^\s]*);/); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3641); -if (m && m[1]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3642); -o.android = numberify(m[1]); - } - - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3646); -if (/Silk/.test(ua)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3647); -m = ua.match(/Silk\/([^\s]*)\)/); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3648); -if (m && m[1]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3649); -o.silk = numberify(m[1]); - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3651); -if (!o.android) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3652); -o.android = 2.34; //Hack for desktop mode in Kindle - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3653); -o.os = 'Android'; - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3655); -if (/Accelerated=true/.test(ua)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3656); -o.accel = true; - } - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3661); -m = ua.match(/(Chrome|CrMo|CriOS)\/([^\s]*)/); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3662); -if (m && m[1] && m[2]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3663); -o.chrome = numberify(m[2]); // Chrome - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3664); -o.safari = 0; //Reset safari back to 0 - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3665); -if (m[1] === 'CrMo') { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3666); -o.mobile = 'chrome'; - } - } else { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3669); -m = ua.match(/AdobeAIR\/([^\s]*)/); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3670); -if (m) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3671); -o.air = m[0]; // Adobe AIR 1.0 or better - } - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3676); -if (!o.webkit) { // not webkit -// @todo check Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1316; fi; U; ssr) - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3678); -if (/Opera/.test(ua)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3679); -m = ua.match(/Opera[\s\/]([^\s]*)/); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3680); -if (m && m[1]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3681); -o.opera = numberify(m[1]); - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3683); -m = ua.match(/Version\/([^\s]*)/); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3684); -if (m && m[1]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3685); -o.opera = numberify(m[1]); // opera 10+ - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3688); -if (/Opera Mobi/.test(ua)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3689); -o.mobile = 'opera'; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3690); -m = ua.replace('Opera Mobi', '').match(/Opera ([^\s]*)/); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3691); -if (m && m[1]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3692); -o.opera = numberify(m[1]); - } - } - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3695); -m = ua.match(/Opera Mini[^;]*/); - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3697); -if (m) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3698); -o.mobile = m[0]; // ex: Opera Mini/2.0.4509/1316 - } - } else { // not opera or webkit - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3701); -m = ua.match(/MSIE\s([^;]*)/); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3702); -if (m && m[1]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3703); -o.ie = numberify(m[1]); - } else { // not opera, webkit, or ie - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3705); -m = ua.match(/Gecko\/([^\s]*)/); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3706); -if (m) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3707); -o.gecko = 1; // Gecko detected, look for revision - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3708); -m = ua.match(/rv:([^\s\)]*)/); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3709); -if (m && m[1]) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3710); -o.gecko = numberify(m[1]); - } - } - } - } - } - } - - //Check for known properties to tell if touch events are enabled on this device or if - //the number of MSPointer touchpoints on this device is greater than 0. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3720); -if (win && nav && !(o.chrome && o.chrome < 6)) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3721); -o.touchEnabled = (("ontouchstart" in win) || (("msMaxTouchPoints" in nav) && (nav.msMaxTouchPoints > 0))); - } - - //It was a parsed UA, do not assign the global value. - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3725); -if (!subUA) { - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3727); -if (typeof process === 'object') { - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3729); -if (process.versions && process.versions.node) { - //NodeJS - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3731); -o.os = process.platform; - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3732); -o.nodejs = numberify(process.versions.node); - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3736); -YUI.Env.UA = o; - - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3740); -return o; -}; - - -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3744); -Y.UA = YUI.Env.UA || YUI.Env.parseUA(); - -/** -Performs a simple comparison between two version numbers, accounting for -standard versioning logic such as the fact that "535.8" is a lower version than -"535.24", even though a simple numerical comparison would indicate that it's -greater. Also accounts for cases such as "1.1" vs. "1.1.0", which are -considered equivalent. - -Returns -1 if version _a_ is lower than version _b_, 0 if they're equivalent, -1 if _a_ is higher than _b_. - -Versions may be numbers or strings containing numbers and dots. For example, -both `535` and `"535.8.10"` are acceptable. A version string containing -non-numeric characters, like `"535.8.beta"`, may produce unexpected results. - -@method compareVersions -@param {Number|String} a First version number to compare. -@param {Number|String} b Second version number to compare. -@return -1 if _a_ is lower than _b_, 0 if they're equivalent, 1 if _a_ is - higher than _b_. -**/ -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3766); -Y.UA.compareVersions = function (a, b) { - _yuitest_coverfunc("build/yui-nodejs/yui-nodejs.js", "compareVersions", 3766); -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3767); -var aPart, aParts, bPart, bParts, i, len; - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3769); -if (a === b) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3770); -return 0; - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3773); -aParts = (a + '').split('.'); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3774); -bParts = (b + '').split('.'); - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3776); -for (i = 0, len = Math.max(aParts.length, bParts.length); i < len; ++i) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3777); -aPart = parseInt(aParts[i], 10); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3778); -bPart = parseInt(bParts[i], 10); - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3780); -isNaN(aPart) && (aPart = 0); - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3781); -isNaN(bPart) && (bPart = 0); - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3783); -if (aPart < bPart) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3784); -return -1; - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3787); -if (aPart > bPart) { - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3788); -return 1; - } - } - - _yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3792); -return 0; -}; -_yuitest_coverline("build/yui-nodejs/yui-nodejs.js", 3794); -YUI.Env.aliases = { - "anim": ["anim-base","anim-color","anim-curve","anim-easing","anim-node-plugin","anim-scroll","anim-xy"], - "anim-shape-transform": ["anim-shape"], - "app": ["app-base","app-content","app-transitions","lazy-model-list","model","model-list","model-sync-rest","router","view","view-node-map"], - "attribute": ["attribute-base","attribute-complex"], - "autocomplete": ["autocomplete-base","autocomplete-sources","autocomplete-list","autocomplete-plugin"], - "base": ["base-base","base-pluginhost","base-build"], - "cache": ["cache-base","cache-offline","cache-plugin"], - "collection": ["array-extras","arraylist","arraylist-add","arraylist-filter","array-invoke"], - "controller": ["router"], - "dataschema": ["dataschema-base","dataschema-json","dataschema-xml","dataschema-array","dataschema-text"], - "datasource": ["datasource-local","datasource-io","datasource-get","datasource-function","datasource-cache","datasource-jsonschema","datasource-xmlschema","datasource-arrayschema","datasource-textschema","datasource-polling"], - "datatable": ["datatable-core","datatable-table","datatable-head","datatable-body","datatable-base","datatable-column-widths","datatable-message","datatable-mutable","datatable-sort","datatable-datasource"], - "datatable-deprecated": ["datatable-base-deprecated","datatable-datasource-deprecated","datatable-sort-deprecated","datatable-scroll-deprecated"], - "datatype": ["datatype-date","datatype-number","datatype-xml"], - "datatype-date": ["datatype-date-parse","datatype-date-format","datatype-date-math"], - "datatype-number": ["datatype-number-parse","datatype-number-format"], - "datatype-xml": ["datatype-xml-parse","datatype-xml-format"], - "dd": ["dd-ddm-base","dd-ddm","dd-ddm-drop","dd-drag","dd-proxy","dd-constrain","dd-drop","dd-scroll","dd-delegate"], - "dom": ["dom-base","dom-screen","dom-style","selector-native","selector"], - "editor": ["frame","editor-selection","exec-command","editor-base","editor-para","editor-br","editor-bidi","editor-tab","createlink-base"], - "event": ["event-base","event-delegate","event-synthetic","event-mousewheel","event-mouseenter","event-key","event-focus","event-resize","event-hover","event-outside","event-touch","event-move","event-flick","event-valuechange","event-tap"], - "event-custom": ["event-custom-base","event-custom-complex"], - "event-gestures": ["event-flick","event-move"], - "handlebars": ["handlebars-compiler"], - "highlight": ["highlight-base","highlight-accentfold"], - "history": ["history-base","history-hash","history-hash-ie","history-html5"], - "io": ["io-base","io-xdr","io-form","io-upload-iframe","io-queue"], - "json": ["json-parse","json-stringify"], - "loader": ["loader-base","loader-rollup","loader-yui3"], - "node": ["node-base","node-event-delegate","node-pluginhost","node-screen","node-style"], - "pluginhost": ["pluginhost-base","pluginhost-config"], - "querystring": ["querystring-parse","querystring-stringify"], - "recordset": ["recordset-base","recordset-sort","recordset-filter","recordset-indexer"], - "resize": ["resize-base","resize-proxy","resize-constrain"], - "slider": ["slider-base","slider-value-range","clickable-rail","range-slider"], - "text": ["text-accentfold","text-wordbreak"], - "widget": ["widget-base","widget-htmlparser","widget-skin","widget-uievents"] -}; - - -}, '3.7.3', {"use": ["yui-base", "get", "features", "intl-base", "yui-log", "yui-log-nodejs", "yui-later", "loader-base", "loader-rollup", "loader-yui3"]}); diff --git a/lib/yuilib/3.7.3/build/yui-nodejs/yui-nodejs-min.js b/lib/yuilib/3.7.3/build/yui-nodejs/yui-nodejs-min.js deleted file mode 100644 index d623cac69ed..00000000000 --- a/lib/yuilib/3.7.3/build/yui-nodejs/yui-nodejs-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -typeof YUI!="undefined"&&(YUI._YUI=YUI);var YUI=function(){var e=0,t=this,n=arguments,r=n.length,i=function(e,t){return e&&e.hasOwnProperty&&e instanceof t},s=typeof YUI_config!="undefined"&&YUI_config;i(t,YUI)?(t._init(),YUI.GlobalConfig&&t.applyConfig(YUI.GlobalConfig),s&&t.applyConfig(s),r||t._setup()):t=new YUI;if(r){for(;e-1&&(n="3.5.0"),e={applyConfig:function(e){e=e||u;var t,n,r=this.config,i=r.modules,s=r.groups,o=r.aliases,a=this.Env._loader;for(n in e)e.hasOwnProperty(n)&&(t=e[n],i&&n=="modules"?E(i,t):o&&n=="aliases"?E(o,t):s&&n=="groups"?E(s,t):n=="win"?(r[n]=t&&t.contentWindow||t,r.doc=r[n]?r[n].document:null):n!="_yuid"&&(r[n]=t));a&&a._config(e)},_config:function(e){this.applyConfig(e)},_init:function(){var e,t,r=this,s=YUI.Env,u=r.Env,a;r.version=n;if(!u){r.Env={core:["get","features","intl-base","yui-log","yui-log-nodejs","yui-later","loader-base","loader-rollup","loader-yui3"],loaderExtras:["loader-rollup","loader-yui3"],mods:{},versions:{},base:i,cdn:i+n+"/build/",_idx:0,_used:{},_attached:{},_missed:[],_yidx:0,_uidx:0,_guidp:"y",_loaded:{},_BASE_RE:/(?:\?(?:[^&]*&)*([^&]*))?\b(simpleyui|yui(?:-\w+)?)\/\2(?:-(min|debug))?\.js/,parseBasePath:function(e,t){var n=e.match(t),r,i;return n&&(r=RegExp.leftContext||e.slice(0,e.indexOf(n[0])),i=n[3],n[1]&&(r+="?"+n[1]),r={filter:i,path:r}),r},getBase:s&&s.getBase||function(t){var n=h&&h.getElementsByTagName("script")||[],i=u.cdn,s,o,a,f;for(o=0,a=n.length;o',YUI.Env.cssStampEl=t.firstChild,h.body?h.body.appendChild(YUI.Env.cssStampEl):p.insertBefore(YUI.Env.cssStampEl,p.firstChild)),r.config.lang=r.config.lang||"en-US",r.config.base=YUI.config.base||r.Env.getBase(r.Env._BASE_RE);if(!e||!"mindebug".indexOf(e))e="min";e=e?"-"+e:e,r.config.loaderPath=YUI.config.loaderPath||"loader/loader"+e+".js"},_setup:function(e){var t,n=this,r=[],i=YUI.Env.mods,s=n.config.core||[].concat(YUI.Env.core);for(t=0;t-1){s=o.split(r);for(i=s[0]=="YAHOO"?1:0;ii&&i in t?t[i]:!0);return n},h.indexOf=f._isNative(l.indexOf)?function(e,t,n){return l.indexOf.call(e,t,n)}:function(e,t,n){var r=e.length;n=+n||0,n=(n>0||-1)*Math.floor(Math.abs(n)),n<0&&(n+=r,n<0&&(n=0));for(;n1?Array.prototype.join.call(arguments,d):String(r);if(!(i in t)||n&&t[i]==n)t[i]=e.apply(e,arguments);return t[i]}},e.getLocation=function(){var t=e.config.win;return t&&t.location},e.merge=function(){var e=0,t=arguments.length,n={},r,i;for(;e-1},g.each=function(t,n,r,i){var s;for(s in t)(i||E(t,s))&&n.call(r||e,t[s],s,t);return e},g.some=function(t,n,r,i){var s;for(s in t)if(i||E(t,s))if(n.call(r||e,t[s],s,t))return!0;return!1},g.getValue=function(t,n){if(!f.isObject(t))return m;var r,i=e.Array(n),s=i.length;for(r=0;t!==m&&r=0){for(i=0;u!==m&&i0),t||(typeof process=="object"&&process.versions&&process.versions.node&&(s.os=process.platform,s.nodejs=n(process.versions.node)),YUI.Env.UA=s),s},e.UA=YUI.Env.UA||YUI.Env.parseUA(),e.UA.compareVersions=function(e,t){var n,r,i,s,o,u;if(e===t)return 0;r=(e+"").split("."),s=(t+"").split(".");for(o=0,u=Math.max(r.length,s.length);oi)return 1}return 0},YUI.Env.aliases={anim:["anim-base","anim-color","anim-curve","anim-easing","anim-node-plugin","anim-scroll","anim-xy"],"anim-shape-transform":["anim-shape"],app:["app-base","app-content","app-transitions","lazy-model-list","model","model-list","model-sync-rest","router","view","view-node-map"],attribute:["attribute-base","attribute-complex"],autocomplete:["autocomplete-base","autocomplete-sources","autocomplete-list","autocomplete-plugin"],base:["base-base","base-pluginhost","base-build"],cache:["cache-base","cache-offline","cache-plugin"],collection:["array-extras","arraylist","arraylist-add","arraylist-filter","array-invoke"],controller:["router"],dataschema:["dataschema-base","dataschema-json","dataschema-xml","dataschema-array","dataschema-text"],datasource:["datasource-local","datasource-io","datasource-get","datasource-function","datasource-cache","datasource-jsonschema","datasource-xmlschema","datasource-arrayschema","datasource-textschema","datasource-polling"],datatable:["datatable-core","datatable-table","datatable-head","datatable-body","datatable-base","datatable-column-widths","datatable-message","datatable-mutable","datatable-sort","datatable-datasource"],"datatable-deprecated":["datatable-base-deprecated","datatable-datasource-deprecated","datatable-sort-deprecated","datatable-scroll-deprecated"],datatype:["datatype-date","datatype-number","datatype-xml"],"datatype-date":["datatype-date-parse","datatype-date-format","datatype-date-math"],"datatype-number":["datatype-number-parse","datatype-number-format"],"datatype-xml":["datatype-xml-parse","datatype-xml-format"],dd:["dd-ddm-base","dd-ddm","dd-ddm-drop","dd-drag","dd-proxy","dd-constrain","dd-drop","dd-scroll","dd-delegate"],dom:["dom-base","dom-screen","dom-style","selector-native","selector"],editor:["frame","editor-selection","exec-command","editor-base","editor-para","editor-br","editor-bidi","editor-tab","createlink-base"],event:["event-base","event-delegate","event-synthetic","event-mousewheel","event-mouseenter","event-key","event-focus","event-resize","event-hover","event-outside","event-touch","event-move","event-flick","event-valuechange","event-tap"],"event-custom":["event-custom-base","event-custom-complex"],"event-gestures":["event-flick","event-move"],handlebars:["handlebars-compiler"],highlight:["highlight-base","highlight-accentfold"],history:["history-base","history-hash","history-hash-ie","history-html5"],io:["io-base","io-xdr","io-form","io-upload-iframe","io-queue"],json:["json-parse","json-stringify"],loader:["loader-base","loader-rollup","loader-yui3"],node:["node-base","node-event-delegate","node-pluginhost","node-screen","node-style"],pluginhost:["pluginhost-base","pluginhost-config"],querystring:["querystring-parse","querystring-stringify"],recordset:["recordset-base","recordset-sort","recordset-filter","recordset-indexer"],resize:["resize-base","resize-proxy","resize-constrain"],slider:["slider-base","slider-value-range","clickable-rail","range-slider"],text:["text-accentfold","text-wordbreak"],widget:["widget-base","widget-htmlparser","widget-skin","widget-uievents"]}},"3.7.3",{use:["yui-base","get","features","intl-base","yui-log","yui-log-nodejs","yui-later","loader-base","loader-rollup","loader-yui3"]}),YUI.add("get",function(e,t){var n=require("path"),r=require("vm"),i=require("fs"),s=require("request"),o=i.existsSync||n.existsSync;e.Get=function(){},e.config.base=n.join(__dirname,"../"),YUI.require=require,YUI.process=process;var u=function(e){return e.replace(/\\/g,"\\\\")};e.Get._exec=function(e,t,i){var s=u(n.dirname(t)),o=u(t);s.match(/^https?:\/\//)&&(s=".",o="remoteResource");var a="(function(YUI) { var __dirname = '"+s+"'; "+"var __filename = '"+o+"'; "+"var process = YUI.process;"+"var require = function(file) {"+" if (file.indexOf('./') === 0) {"+" file = __dirname + file.replace('./', '/'); }"+" return YUI.require(file); }; "+e+" ;return YUI; })",f=r.createScript(a,t),l=f.runInThisContext(a);YUI=l(YUI),i(null,t)},e.Get._include=function(t,n){var r=this;if(t.match(/^https?:\/\//)){var u={url:t,timeout:r.timeout};s(u,function(r,i,s){r?n(r,t):e.Get._exec(s,t,n)})}else if(e.config.useSync)if(o(t)){var a=i.readFileSync(t,"utf8");e.Get._exec(a,t,n)}else n("Path does not exist: "+t,t);else i.readFile(t,"utf8",function(r,i){r?n(r,t):e.Get._exec(i,t,n)})};var a=function(t,n,r){e.Lang.isFunction(t.onEnd)&&t.onEnd.call(e,n,r)},f=function(t){e.Lang.isFunction(t.onSuccess)&&t.onSuccess.call(e,t),a(t,"success","success")},l=function(t,n){n.errors=[n],e.Lang.isFunction(t.onFailure)&&t.onFailure.call(e,n,t),a(t,n,"fail")};e.Get.js=function(t,n){var r=e.Array,i=this,s=r(t),o,u,a=s.length,c=0,h=function(){c===a&&f(n)};for(u=0;u0){o=a(s);if(o)return o;u=s.lastIndexOf("-");if(!(u>=0))break;s=s.substring(0,u),u>=2&&s.charAt(u-2)==="-"&&(s=s.substring(0,u-2))}}return""}})},"3.7.3",{requires:["yui-base"]}),YUI.add("yui-log",function(e,t){var n=e,r="yui:log",i="undefined",s={debug:1,info:1,warn:1,error:1};n.log=function(e,t,o,u){var a,f,l,c,h,p=n,d=p.config,v=p.fire?p:YUI.Env.globalEvents;return d.debug&&(o=o||"",typeof o!="undefined"&&(f=d.logExclude,l=d.logInclude,!l||o in l?l&&o in l?a=!l[o]:f&&o in f&&(a=f[o]):a=1),a||(d.useBrowserConsole&&(c=o?o+": "+e:e,p.Lang.isFunction(d.logFn)?d.logFn.call(p,e,t,o):typeof console!=i&&console.log?(h=t&&console[t]&&t in s?t:"log",console[h](c)):typeof opera!=i&&opera.postError(c)),v&&!u&&(v==p&&!v.getEvent(r)&&v.publish(r,{broadcast:2}),v.fire(r,{msg:e,cat:t,src:o})))),p},n.message=function(){return n.log.apply(n,arguments)}},"3.7.3",{requires:["yui-base"]}),YUI.add("yui-log-nodejs",function(e,t){var n=require(process.binding("natives").util?"util":"sys"),r=!1;try{var i=require("stdio");r=i.isStderrATTY()}catch(s){r=!0}e.config.useColor=r,e.consoleColor=function(e,t){return this.config.useColor?(t||(t="32"),"["+t+"m"+e+""):e};var o=function(e,t,r){var i="";this.id&&(i="["+this.id+"]:"),t=t||"info",r=r?this.consoleColor(" ("+r.toLowerCase()+"):",35):"",e===null&&(e="null");if(typeof e=="object"||e instanceof Array)try{e.tagName||e._yuid||e._query?e=e.toString():e=n.inspect(e)}catch(s){}var o="37;40",u=e?"":31;t+="";switch(t.toLowerCase()){case"error":o=u=31;break;case"warn":o=33;break;case"debug":o=34}typeof e=="string"&&e&&e.indexOf("\n")!==-1&&(e="\n"+e),n.error(this.consoleColor(t.toLowerCase()+":",o)+r+" "+this.consoleColor(e,u))};e.config.logFn||(e.config.logFn=o)},"3.7.3"),YUI.add("yui-later",function(e,t){var n=[];e.later=function(t,r,i,s,o){t=t||0,s=e.Lang.isUndefined(s)?n:e.Array(s),r=r||e.config.win||e;var u=!1,a=r&&e.Lang.isString(i)?r[i]:i,f=function(){u||(a.apply?a.apply(r,s||n):a(s[0],s[1],s[2],s[3]))},l=o?setInterval(f,t):setTimeout(f,t);return{id:l,interval:o,cancel:function(){u=!0,this.interval?clearInterval(l):clearTimeout(l)}}},e.Lang.later=e.later},"3.7.3",{requires:["yui-base"]}),YUI.add("loader-base",function(e,t){YUI.Env[e.version]||function(){var t=e.version,n="/build/",r=t+n,i=e.Env.base,s="gallery-2012.10.10-19-59",o="2in3",u="4",a="2.9.0",f=i+"combo?",l={version:t,root:r,base:e.Env.base,comboBase:f,skin:{defaultSkin:"sam",base:"assets/skins/",path:"skin.css",after:["cssreset","cssfonts","cssgrids","cssbase","cssreset-context","cssfonts-context"]},groups:{},patterns:{}},c=l.groups,h=function(e,t,r){var s=o+"."+(e||u)+"/"+(t||a)+n,l=r&&r.base?r.base:i,h=r&&r.comboBase?r.comboBase:f;c.yui2.base=l+s,c.yui2.root=s,c.yui2.comboBase=h},p=function(e,t){var r=(e||s)+n,o=t&&t.base?t.base:i,u=t&&t.comboBase?t.comboBase:f;c.gallery.base=o+r,c.gallery.root=r,c.gallery.comboBase=u};c[t]={},c.gallery={ext:!1,combine:!0,comboBase:f,update:p,patterns:{"gallery-":{},"lang/gallery-":{},"gallerycss-":{type:"css"}}},c.yui2={combine:!0,ext:!1,comboBase:f,update:h,patterns:{"yui2-":{configFn:function(e){/-skin|reset|fonts|grids|base/.test(e.name)&&(e.type="css",e.path=e.path.replace(/\.js/,".css"),e.path=e.path.replace(/\/yui2-skin/,"/assets/skins/sam/yui2-skin"))}}}},p(),h(),YUI.Env[t]=l}();var n={},r=[],i=1024,s=YUI.Env,o=s._loaded,u="css",a="js",f="intl",l="sam",c=e.version,h="",p=e.Object,d=p.each,v=e.Array,m=s._loaderQueue,g=s[c],y="skin-",b=e.Lang,w=s.mods,E,S=function(e,t,n,r){var i=e+"/"+t;return r||(i+="-min"),i+="."+(n||u),i};YUI.Env._cssLoaded||(YUI.Env._cssLoaded={}),e.Env.meta=g,e.Loader=function(t){var n=this;t=t||{},E=g.md5,n.context=e,n.base=e.Env.meta.base+e.Env.meta.root,n.comboBase=e.Env.meta.comboBase,n.combine=t.base&&t.base.indexOf(n.comboBase.substr(0,20))>-1,n.comboSep="&",n.maxURLLength=i,n.ignoreRegistered=t.ignoreRegistered,n.root=e.Env.meta.root,n.timeout=0,n.forceMap={},n.allowRollup=!1,n.filters={},n.required={},n.patterns={},n.moduleInfo={},n.groups=e.merge(e.Env.meta.groups),n.skin=e.merge(e.Env.meta.skin),n.conditions={},n.config=t,n._internal=!0,n._populateCache(),n.loaded=o[c],n.async=!0,n._inspectPage(),n._internal=!1,n._config(t),n.forceMap=n.force?e.Array.hash(n.force):{},n.testresults=null,e.config.tests&&(n.testresults=e.config.tests),n.sorted=[],n.dirty=!0,n.inserted={},n.skipped={},n.tested={},n.ignoreRegistered&&n._resetModules()},e.Loader.prototype={_populateCache:function(){var t=this,n=g.modules,r=s._renderedMods,i;if(r&&!t.ignoreRegistered){for(i in r)r.hasOwnProperty(i)&&(t.moduleInfo[i]=e.merge(r[i]));r=s._conditions;for(i in r)r.hasOwnProperty(i)&&(t.conditions[i]=e.merge(r[i]))}else for(i in n)n.hasOwnProperty(i)&&t.addModule(n[i],i)},_resetModules:function(){var e=this,t,n,r,i,s;for(t in e.moduleInfo)if(e.moduleInfo.hasOwnProperty(t)){r=e.moduleInfo[t],i=r.name,s=YUI.Env.mods[i]?YUI.Env.mods[i].details:null,s&&(e.moduleInfo[i]._reset=!0,e.moduleInfo[i].requires=s.requires||[],e.moduleInfo[i].optional=s.optional||[],e.moduleInfo[i].supersedes=s.supercedes||[]);if(r.defaults)for(n in r.defaults)r.defaults.hasOwnProperty(n)&&r[n]&&(r[n]=r.defaults[n]);delete r.langCache,delete r.skinCache,r.skinnable&&e._addSkin(e.skin.defaultSkin,r.name)}},REGEX_CSS:/\.css(?:[?;].*)?$/i,FILTER_DEFS:{RAW:{searchExp:"-min\\.js",replaceStr:".js"},DEBUG:{searchExp:"-min\\.js",replaceStr:"-debug.js"},COVERAGE:{searchExp:"-min\\.js",replaceStr:"-coverage.js"}},_inspectPage:function(){var e=this,t,n,r,i,s;for(s in e.moduleInfo)e.moduleInfo.hasOwnProperty(s)&&(t=e.moduleInfo[s],t.type&&t.type===u&&e.isCSSLoaded(t.name)&&(e.loaded[s]=!0));for(s in w)w.hasOwnProperty(s)&&(t=w[s],t.details&&(n=e.moduleInfo[t.name],r=t.details.requires,i=n&&n.requires,n?!n._inspected&&r&&i.length!==r.length&&delete n.expanded:n=e.addModule(t.details,s),n._inspected=!0))},_requires:function(e,t){var n,r,i,s,o=this.moduleInfo,a=o[e],f=o[t];if(!a||!f)return!1;r=a.expanded_map,i=a.after_map;if(i&&t in i)return!0;i=f.after_map;if(i&&e in i)return!1;s=o[t]&&o[t].supersedes;if(s)for(n=0;n-1&&(k=n);if(C&&(C[c]||k&&C[k])){L=c,C[k]&&(L=k);for(n=0;n-1},getModule:function(t){if(!t)return null;var n,r,i,s=this.moduleInfo[t],o=this.patterns;if(!s||s&&s.ext)for(i in o)if(o.hasOwnProperty(i)){n=o[i],n.test||(n.test=this._patternTest);if(n.test(t,i)){r=n;break}}return s?r&&s&&r.configFn&&!s.configFn&&(s.configFn=r.configFn,s.configFn(s)):r&&(n.action?n.action.call(this,t,i):(s=this.addModule(e.merge(r),t),r.configFn&&(s.configFn=r.configFn),s.temp=!0)),s},_rollup:function(){},_reduce:function(e){e=e||this.required;var t,n,r,i,s=this.loadType,o=this.ignore?v.hash(this.ignore):!1;for(t in e)if(e.hasOwnProperty(t)){i=this.getModule(t),((this.loaded[t]||w[t])&&!this.forceMap[t]&&!this.ignoreRegistered||s&&i&&i.type!==s)&&delete e[t],o&&o[t]&&delete e[t],r=i&&i.supersedes;if(r)for(n=0;n0&&(m.running=!0,m.next()())},insert:function(t,n,r){var i=this,s=e.merge(this);delete s.require,delete s.dirty,m.add(function(){i._insert(s,t,n,r)}),this._continue()},loadNext:function(){return},_filter:function(e,t,n){var r=this.filter,i=t&&t in this.filters,s=i&&this.filters[t],o=n||(this.moduleInfo[t]?this.moduleInfo[t].group:null);return o&&this.groups[o]&&this.groups[o].filter&&(s=this.groups[o].filter,i=!0),e&&(i&&(r=b.isString(s)?this.FILTER_DEFS[s.toUpperCase()]||null:s),r&&(e=e.replace(new RegExp(r.searchExp,"g"),r.replaceStr))),e},_url:function(e,t,n){return this._filter((n||this.base||"")+e,t)},resolve:function(e,t){var r,s,o,f,c,h,p,d,v,m,g,y,w,E,S=[],x,T,N={},C=this,k,A,O=C.ignoreRegistered?{}:C.inserted,M={js:[],jsMods:[],css:[],cssMods:[]},_=C.loadType||"js",D;(C.skin.overrides||C.skin.defaultSkin!==l||C.ignoreRegistered)&&C._resetModules(),e&&C.calculate(),t=t||C.sorted,D=function(e){if(e){c=e.group&&C.groups[e.group]||n,c.async===!1&&(e.async=c.async),f=e.fullpath?C._filter(e.fullpath,t[s]):C._url(e.path,t[s],c.base||e.base);if(e.attributes||e.async===!1)f={url:f,async:e.async},e.attributes&&(f.attributes=e.attributes);M[e.type].push(f),M[e.type+"Mods"].push(e)}},r=t.length,y=C.comboBase,f=y,m={};for(s=0;sA){S=[];for(t=0;tA&&(o=S.pop(),x=w+S.join(k),M[_].push(C._filter(x,null,N[w].group)),S=[],o&&S.push(o));S.length&&(x=w+S.join(k),M[_].push(C._filter(x,null,N[w].group)))}else M[_].push(C._filter(x,null,N[w].group));M[_+"Mods"]=M[_+"Mods"].concat(g)}}return N=null,M},load:function(e){if(!e)return;var t=this,n=t.resolve(!0);t.data=n,t.onEnd=function(){e.apply(t.context||t,arguments)},t.insert()}}},"3.7.3",{requires:["get","features"]}),YUI.add("loader-rollup",function(e,t){e.Loader.prototype._rollup=function(){var e,t,n,r,i=this.required,s,o=this.moduleInfo,u,a,f;if(this.dirty||!this.rollups){this.rollups={};for(e in o)o.hasOwnProperty(e)&&(n=this.getModule(e),n&&n.rollup&&(this.rollups[e]=n))}for(;;){u=!1;for(e in this.rollups)if(this.rollups.hasOwnProperty(e)&&!i[e]&&(!this.loaded[e]||this.forceMap[e])){n=this.getModule(e),r=n.supersedes||[],s=!1;if(!n.rollup)continue;a=0;for(t=0;t=n.rollup;if(s)break}}s&&(i[e]=!0,u=!0,this.getRequires(n))}if(!u)break}}},"3.7.3",{requires:["loader-base"]}),YUI.add("loader-yui3",function(e,t){YUI.Env[e.version].modules=YUI.Env[e.version].modules||{"align-plugin":{requires:["node-screen","node-pluginhost"]},anim:{use:["anim-base","anim-color","anim-curve","anim-easing","anim-node-plugin","anim-scroll","anim-xy"]},"anim-base":{requires:["base-base","node-style"]},"anim-color":{requires:["anim-base"]},"anim-curve":{requires:["anim-xy"]},"anim-easing":{requires:["anim-base"]},"anim-node-plugin":{requires:["node-pluginhost","anim-base"]},"anim-scroll":{requires:["anim-base"]},"anim-shape":{requires:["anim-base","anim-easing","anim-color","matrix"]},"anim-shape-transform":{use:["anim-shape"]},"anim-xy":{requires:["anim-base","node-screen"]},app:{use:["app-base","app-content","app-transitions","lazy-model-list","model","model-list","model-sync-rest","router","view","view-node-map"]},"app-base":{requires:["classnamemanager","pjax-base","router","view"]},"app-content":{requires:["app-base","pjax-content"]},"app-transitions":{requires:["app-base"]},"app-transitions-css":{type:"css"},"app-transitions-native":{condition:{name:"app-transitions-native",test:function(e){var t=e.config.doc,n=t?t.documentElement:null;return n&&n.style?"MozTransition"in n.style||"WebkitTransition"in n.style||"transition"in n.style:!1},trigger:"app-transitions"},requires:["app-transitions","app-transitions-css","parallel","transition"]},"array-extras":{requires:["yui-base"]},"array-invoke":{requires:["yui-base"]},arraylist:{requires:["yui-base"]},"arraylist-add":{requires:["arraylist"]},"arraylist-filter":{requires:["arraylist"]},arraysort:{requires:["yui-base"]},"async-queue":{requires:["event-custom"]},attribute:{use:["attribute-base","attribute-complex"]},"attribute-base":{requires:["attribute-core","attribute-events","attribute-extras"]},"attribute-complex":{requires:["attribute-base"]},"attribute-core":{requires:["oop"]},"attribute-events":{requires:["event-custom"]},"attribute-extras":{requires:["oop"]},autocomplete:{use:["autocomplete-base","autocomplete-sources","autocomplete-list","autocomplete-plugin"]},"autocomplete-base":{optional:["autocomplete-sources"],requires:["array-extras","base-build","escape","event-valuechange","node-base"]},"autocomplete-filters":{requires:["array-extras","text-wordbreak"]},"autocomplete-filters-accentfold":{requires:["array-extras","text-accentfold","text-wordbreak"]},"autocomplete-highlighters":{requires:["array-extras","highlight-base"]},"autocomplete-highlighters-accentfold":{requires:["array-extras","highlight-accentfold"]},"autocomplete-list":{after:["autocomplete-sources"],lang:["en"],requires:["autocomplete-base","event-resize","node-screen","selector-css3","shim-plugin","widget","widget-position","widget-position-align"],skinnable:!0},"autocomplete-list-keys":{condition:{name:"autocomplete-list-keys",test:function(e){return!e.UA.ios&&!e.UA.android},trigger:"autocomplete-list"},requires:["autocomplete-list","base-build"]},"autocomplete-plugin":{requires:["autocomplete-list","node-pluginhost"]},"autocomplete-sources":{optional:["io-base","json-parse","jsonp","yql"],requires:["autocomplete-base"]},base:{use:["base-base","base-pluginhost","base-build"]},"base-base":{after:["attribute-complex"],requires:["base-core","attribute-base"]},"base-build":{requires:["base-base"]},"base-core":{requires:["attribute-core"]},"base-pluginhost":{requires:["base-base","pluginhost"]},button:{requires:["button-core","cssbutton","widget"]},"button-core":{requires:["attribute-core","classnamemanager","node-base"]},"button-group":{requires:["button-plugin","cssbutton","widget"]},"button-plugin":{requires:["button-core","cssbutton","node-pluginhost"]},cache:{use:["cache-base","cache-offline","cache-plugin"]},"cache-base":{requires:["base"]},"cache-offline":{requires:["cache-base","json"]},"cache-plugin":{requires:["plugin","cache-base"]},calendar:{lang:["de","en","fr","ja","nb-NO","pt-BR","ru","zh-HANT-TW"],requires:["calendar-base","calendarnavigator"],skinnable:!0},"calendar-base":{lang:["de","en","fr","ja","nb-NO","pt-BR","ru","zh-HANT-TW"],requires:["widget","substitute","datatype-date","datatype-date-math","cssgrids"],skinnable:!0},calendarnavigator:{requires:["plugin","classnamemanager","datatype-date","node","substitute"],skinnable:!0},charts:{requires:["charts-base"]},"charts-base":{requires:["dom","datatype-number","datatype-date","event-custom","event-mouseenter","event-touch","widget","widget-position","widget-stack","graphics"]},"charts-legend":{requires:["charts-base"]},classnamemanager:{requires:["yui-base"]},"clickable-rail":{requires:["slider-base"]},collection:{use:["array-extras","arraylist","arraylist-add","arraylist-filter","array-invoke"]},console:{lang:["en","es","ja"],requires:["yui-log","widget"],skinnable:!0},"console-filters":{requires:["plugin","console"],skinnable:!0},controller:{use:["router"]},cookie:{requires:["yui-base"]},"createlink-base":{requires:["editor-base"]},cssbase:{after:["cssreset","cssfonts","cssgrids","cssreset-context","cssfonts-context","cssgrids-context"],type:"css"},"cssbase-context":{after:["cssreset","cssfonts","cssgrids","cssreset-context","cssfonts-context","cssgrids-context"],type:"css"},cssbutton:{type:"css"},cssfonts:{type:"css"},"cssfonts-context":{type:"css"},cssgrids:{optional:["cssreset","cssfonts"],type:"css"},"cssgrids-base":{optional:["cssreset","cssfonts"],type:"css"},"cssgrids-units":{optional:["cssreset","cssfonts"],requires:["cssgrids-base"],type:"css"},cssreset:{type:"css"},"cssreset-context":{type:"css"},dataschema:{use:["dataschema-base","dataschema-json","dataschema-xml","dataschema-array","dataschema-text"]},"dataschema-array":{requires:["dataschema-base"]},"dataschema-base":{requires:["base"]},"dataschema-json":{requires:["dataschema-base","json"]},"dataschema-text":{requires:["dataschema-base"]},"dataschema-xml":{requires:["dataschema-base"]},datasource:{use:["datasource-local","datasource-io","datasource-get","datasource-function","datasource-cache","datasource-jsonschema","datasource-xmlschema","datasource-arrayschema","datasource-textschema","datasource-polling"]},"datasource-arrayschema":{requires:["datasource-local","plugin","dataschema-array"]},"datasource-cache":{requires:["datasource-local","plugin","cache-base"]},"datasource-function":{requires:["datasource-local"]},"datasource-get":{requires:["datasource-local","get"]},"datasource-io":{requires:["datasource-local","io-base"]},"datasource-jsonschema":{requires:["datasource-local","plugin","dataschema-json"]},"datasource-local":{requires:["base"]},"datasource-polling":{requires:["datasource-local"]},"datasource-textschema":{requires:["datasource-local","plugin","dataschema-text"]},"datasource-xmlschema":{requires:["datasource-local","plugin","datatype-xml","dataschema-xml"]},datatable:{use:["datatable-core","datatable-table","datatable-head","datatable-body","datatable-base","datatable-column-widths","datatable-message","datatable-mutable","datatable-sort","datatable-datasource"]},"datatable-base":{requires:["datatable-core","datatable-table","datatable-head","datatable-body","base-build","widget"],skinnable:!0},"datatable-base-deprecated":{requires:["recordset-base","widget","substitute","event-mouseenter"],skinnable:!0},"datatable-body":{requires:["datatable-core","view","classnamemanager"]},"datatable-column-widths":{requires:["datatable-base"]},"datatable-core":{requires:["escape","model-list","node-event-delegate"]},"datatable-datasource":{requires:["datatable-base","plugin","datasource-local"]},"datatable-datasource-deprecated":{requires:["datatable-base-deprecated","plugin","datasource-local"]},"datatable-deprecated":{use:["datatable-base-deprecated","datatable-datasource-deprecated","datatable-sort-deprecated","datatable-scroll-deprecated"]},"datatable-head":{requires:["datatable-core","view","classnamemanager"]},"datatable-message":{lang:["en"],requires:["datatable-base"],skinnable:!0},"datatable-mutable":{requires:["datatable-base"]},"datatable-scroll":{requires:["datatable-base","datatable-column-widths","dom-screen"],skinnable:!0},"datatable-scroll-deprecated":{requires:["datatable-base-deprecated","plugin"]},"datatable-sort":{lang:["en"],requires:["datatable-base"],skinnable:!0},"datatable-sort-deprecated":{lang:["en"],requires:["datatable-base-deprecated","plugin","recordset-sort"]},"datatable-table":{requires:["datatable-core","datatable-head","datatable-body","view","classnamemanager"]},datatype:{use:["datatype-date","datatype-number","datatype-xml"]},"datatype-date":{use:["datatype-date-parse","datatype-date-format","datatype-date-math"]},"datatype-date-format":{lang:["ar","ar-JO","ca","ca-ES","da","da-DK","de","de-AT","de-DE","el","el-GR","en","en-AU","en-CA","en-GB","en-IE","en-IN","en-JO","en-MY","en-NZ","en-PH","en-SG","en-US","es","es-AR","es-BO","es-CL","es-CO","es-EC","es-ES","es-MX","es-PE","es-PY","es-US","es-UY","es-VE","fi","fi-FI","fr","fr-BE","fr-CA","fr-FR","hi","hi-IN","id","id-ID","it","it-IT","ja","ja-JP","ko","ko-KR","ms","ms-MY","nb","nb-NO","nl","nl-BE","nl-NL","pl","pl-PL","pt","pt-BR","ro","ro-RO","ru","ru-RU","sv","sv-SE","th","th-TH","tr","tr-TR","vi","vi-VN","zh-Hans","zh-Hans-CN","zh-Hant","zh-Hant-HK","zh-Hant-TW"]},"datatype-date-math":{requires:["yui-base"]},"datatype-date-parse":{},"datatype-number":{use:["datatype-number-parse","datatype-number-format"]},"datatype-number-format":{},"datatype-number-parse":{},"datatype-xml":{use:["datatype-xml-parse","datatype-xml-format"]},"datatype-xml-format":{},"datatype-xml-parse":{},dd:{use:["dd-ddm-base","dd-ddm","dd-ddm-drop","dd-drag","dd-proxy","dd-constrain","dd-drop","dd-scroll","dd-delegate"]},"dd-constrain":{requires:["dd-drag"]},"dd-ddm":{requires:["dd-ddm-base","event-resize"]},"dd-ddm-base":{requires:["node","base","yui-throttle","classnamemanager"]},"dd-ddm-drop":{requires:["dd-ddm"]},"dd-delegate":{requires:["dd-drag","dd-drop-plugin","event-mouseenter"]},"dd-drag":{requires:["dd-ddm-base"]},"dd-drop":{requires:["dd-drag","dd-ddm-drop"]},"dd-drop-plugin":{requires:["dd-drop"]},"dd-gestures":{condition:{name:"dd-gestures",trigger:"dd-drag",ua:"touchEnabled"},requires:["dd-drag","event-synthetic","event-gestures"]},"dd-plugin":{optional:["dd-constrain","dd-proxy"],requires:["dd-drag"]},"dd-proxy":{requires:["dd-drag"]},"dd-scroll":{requires:["dd-drag"]},dial:{lang:["en","es"],requires:["widget","dd-drag","event-mouseenter","event-move","event-key","transition","intl"],skinnable:!0},dom:{use:["dom-base","dom-screen","dom-style","selector-native","selector"]},"dom-base":{requires:["dom-core"]},"dom-core":{requires:["oop","features"]},"dom-deprecated":{requires:["dom-base"]},"dom-screen":{requires:["dom-base","dom-style"]},"dom-style":{requires:["dom-base"]},"dom-style-ie":{condition:{name:"dom-style-ie",test:function(e){var t=e.Features.test,n=e.Features.add,r=e.config.win,i=e.config.doc,s="documentElement",o=!1;return n("style","computedStyle",{test:function(){return r&&"getComputedStyle"in r}}),n("style","opacity",{test:function(){return i&&"opacity"in i[s].style}}),o=!t("style","opacity")&&!t("style","computedStyle"),o},trigger:"dom-style"},requires:["dom-style"]},dump:{requires:["yui-base"]},editor:{use:["frame","editor-selection","exec-command","editor-base","editor-para","editor-br","editor-bidi","editor-tab","createlink-base"]},"editor-base":{requires:["base","frame","node","exec-command","editor-selection"]},"editor-bidi":{requires:["editor-base"]},"editor-br":{requires:["editor-base"]},"editor-lists":{requires:["editor-base"]},"editor-para":{requires:["editor-para-base"]},"editor-para-base":{requires:["editor-base"]},"editor-para-ie":{condition:{name:"editor-para-ie",trigger:"editor-para",ua:"ie",when:"instead"},requires:["editor-para-base"]},"editor-selection":{requires:["node"]},"editor-tab":{requires:["editor-base"]},escape:{requires:["yui-base"]},event:{after:["node-base"],use:["event-base","event-delegate","event-synthetic","event-mousewheel","event-mouseenter","event-key","event-focus","event-resize","event-hover","event-outside","event-touch","event-move","event-flick","event-valuechange","event-tap"]},"event-base":{after:["node-base"],requires:["event-custom-base"]},"event-base-ie":{after:["event-base"],condition:{name:"event-base-ie",test:function(e){var t=e.config.doc&&e.config.doc.implementation;return t&&!t.hasFeature("Events","2.0")},trigger:"node-base"},requires:["node-base"]},"event-contextmenu":{requires:["event-synthetic","dom-screen"]},"event-custom":{use:["event-custom-base","event-custom-complex"]},"event-custom-base":{requires:["oop"]},"event-custom-complex":{requires:["event-custom-base"]},"event-delegate":{requires:["node-base"]},"event-flick":{requires:["node-base","event-touch","event-synthetic"]},"event-focus":{requires:["event-synthetic"]},"event-gestures":{use:["event-flick","event-move"]},"event-hover":{requires:["event-mouseenter"]},"event-key":{requires:["event-synthetic"]},"event-mouseenter":{requires:["event-synthetic"]},"event-mousewheel":{requires:["node-base"]},"event-move":{requires:["node-base","event-touch","event-synthetic"]},"event-outside":{requires:["event-synthetic"]},"event-resize":{requires:["node-base","event-synthetic"]},"event-simulate":{requires:["event-base"]},"event-synthetic":{requires:["node-base","event-custom-complex"]},"event-tap":{requires:["node-base","event-base","event-touch","event-synthetic"]},"event-touch":{requires:["node-base"]},"event-valuechange":{requires:["event-focus","event-synthetic"]},"exec-command":{requires:["frame"]},features:{requires:["yui-base"]},file:{requires:["file-flash","file-html5"]},"file-flash":{requires:["base"]},"file-html5":{requires:["base"]},frame:{requires:["base","node","selector-css3","yui-throttle"]},"gesture-simulate":{requires:["async-queue","event-simulate","node-screen"]},get:{requires:["yui-base"]},graphics:{requires:["node","event-custom","pluginhost","matrix","classnamemanager"]},"graphics-canvas":{condition:{name:"graphics-canvas",test:function(e){var t=e.config.doc,n=e.config.defaultGraphicEngine&&e.config.defaultGraphicEngine=="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return(!i||n)&&r&&r.getContext&&r.getContext("2d")},trigger:"graphics"},requires:["graphics"]},"graphics-canvas-default":{condition:{name:"graphics-canvas-default",test:function(e){var t=e.config.doc,n=e.config.defaultGraphicEngine&&e.config.defaultGraphicEngine=="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return(!i||n)&&r&&r.getContext&&r.getContext("2d")},trigger:"graphics"}},"graphics-svg":{condition:{name:"graphics-svg",test:function(e){var t=e.config.doc,n=!e.config.defaultGraphicEngine||e.config.defaultGraphicEngine!="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return i&&(n||!r)},trigger:"graphics"},requires:["graphics"]},"graphics-svg-default":{condition:{name:"graphics-svg-default",test:function(e){var t=e.config.doc,n=!e.config.defaultGraphicEngine||e.config.defaultGraphicEngine!="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return i&&(n||!r)},trigger:"graphics"}},"graphics-vml":{condition:{name:"graphics-vml",test:function(e){var t=e.config.doc,n=t&&t.createElement("canvas");return t&&!t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")&&(!n||!n.getContext||!n.getContext("2d"))},trigger:"graphics"},requires:["graphics"]},"graphics-vml-default":{condition:{name:"graphics-vml-default",test:function(e){var t=e.config.doc,n=t&&t.createElement("canvas");return t&&!t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")&&(!n||!n.getContext||!n.getContext("2d"))},trigger:"graphics"}},handlebars:{use:["handlebars-compiler"]},"handlebars-base":{requires:["escape"]},"handlebars-compiler":{requires:["handlebars-base"]},highlight:{use:["highlight-base","highlight-accentfold"]},"highlight-accentfold":{requires:["highlight-base","text-accentfold"]},"highlight-base":{requires:["array-extras","classnamemanager","escape","text-wordbreak"]},history:{use:["history-base","history-hash","history-hash-ie","history-html5"]},"history-base":{requires:["event-custom-complex"]},"history-hash":{after:["history-html5"],requires:["event-synthetic","history-base","yui-later"]},"history-hash-ie":{condition:{name:"history-hash-ie",test:function(e){var t=e.config.doc&&e.config.doc.documentMode;return e.UA.ie&&(!("onhashchange"in e.config.win)||!t||t<8)},trigger:"history-hash"},requires:["history-hash","node-base"]},"history-html5":{optional:["json"],requires:["event-base","history-base","node-base"]},imageloader:{requires:["base-base","node-style","node-screen"]},intl:{requires:["intl-base","event-custom"]},"intl-base":{requires:["yui-base"]},io:{use:["io-base","io-xdr","io-form","io-upload-iframe","io-queue"]},"io-base":{requires:["event-custom-base","querystring-stringify-simple"]},"io-form":{requires:["io-base","node-base"]},"io-nodejs":{condition:{name:"io-nodejs",trigger:"io-base",ua:"nodejs"},requires:["io-base"]},"io-queue":{requires:["io-base","queue-promote"]},"io-upload-iframe":{requires:["io-base","node-base"]},"io-xdr":{requires:["io-base","datatype-xml-parse"]},json:{use:["json-parse","json-stringify"]},"json-parse":{requires:["yui-base"]},"json-stringify":{requires:["yui-base"]},jsonp:{requires:["get","oop"]},"jsonp-url":{requires:["jsonp"]},"lazy-model-list":{requires:["model-list"]},loader:{use:["loader-base","loader-rollup","loader-yui3"]},"loader-base":{requires:["get","features"]},"loader-rollup":{requires:["loader-base"]},"loader-yui3":{requires:["loader-base"]},matrix:{requires:["yui-base"]},model:{requires:["base-build","escape","json-parse"]},"model-list":{requires:["array-extras","array-invoke","arraylist","base-build","escape","json-parse","model"]},"model-sync-rest":{requires:["model","io-base","json-stringify"]},node:{use:["node-base","node-event-delegate","node-pluginhost","node-screen","node-style"]},"node-base":{requires:["event-base","node-core","dom-base"]},"node-core":{requires:["dom-core","selector"]},"node-deprecated":{requires:["node-base"]},"node-event-delegate":{requires:["node-base","event-delegate"]},"node-event-html5":{requires:["node-base"]},"node-event-simulate":{requires:["node-base","event-simulate","gesture-simulate"]},"node-flick":{requires:["classnamemanager","transition","event-flick","plugin"],skinnable:!0},"node-focusmanager":{requires:["attribute","node","plugin","node-event-simulate","event-key","event-focus"]},"node-load":{requires:["node-base","io-base"]},"node-menunav":{requires:["node","classnamemanager","plugin","node-focusmanager"],skinnable:!0},"node-pluginhost":{requires:["node-base","pluginhost"]},"node-screen":{requires:["dom-screen","node-base"]},"node-scroll-info":{requires:["base-build","dom-screen","event-resize","node-pluginhost","plugin"]},"node-style":{requires:["dom-style","node-base"]},oop:{requires:["yui-base"]},overlay:{requires:["widget","widget-stdmod","widget-position","widget-position-align","widget-stack","widget-position-constrain"],skinnable:!0},panel:{requires:["widget","widget-autohide","widget-buttons","widget-modality","widget-position","widget-position-align","widget-position-constrain","widget-stack","widget-stdmod"],skinnable:!0},parallel:{requires:["yui-base"]},pjax:{requires:["pjax-base","pjax-content"]},"pjax-base":{requires:["classnamemanager","node-event-delegate","router"]},"pjax-content":{requires:["io-base","node-base","router"]},"pjax-plugin":{requires:["node-pluginhost","pjax","plugin"]},plugin:{requires:["base-base"]},pluginhost:{use:["pluginhost-base","pluginhost-config"]},"pluginhost-base":{requires:["yui-base"]},"pluginhost-config":{requires:["pluginhost-base"]},profiler:{requires:["yui-base"]},querystring:{use:["querystring-parse","querystring-stringify"]},"querystring-parse":{requires:["yui-base","array-extras"]},"querystring-parse-simple":{requires:["yui-base"]},"querystring-stringify":{requires:["yui-base"]},"querystring-stringify-simple":{requires:["yui-base"]},"queue-promote":{requires:["yui-base"]},"range-slider":{requires:["slider-base","slider-value-range","clickable-rail"]},recordset:{use:["recordset-base","recordset-sort","recordset-filter","recordset-indexer"]},"recordset-base":{requires:["base","arraylist"]},"recordset-filter":{requires:["recordset-base","array-extras","plugin"]},"recordset-indexer":{requires:["recordset-base","plugin"]},"recordset-sort":{requires:["arraysort","recordset-base","plugin"]},resize:{use:["resize-base","resize-proxy","resize-constrain"]},"resize-base":{requires:["base","widget","event","oop","dd-drag","dd-delegate","dd-drop"],skinnable:!0},"resize-constrain":{requires:["plugin","resize-base"]},"resize-plugin":{optional:["resize-constrain"],requires:["resize-base","plugin"]},"resize-proxy":{requires:["plugin","resize-base"]},router:{optional:["querystring-parse"],requires:["array-extras","base-build","history"]},scrollview:{requires:["scrollview-base","scrollview-scrollbars"]},"scrollview-base":{requires:["widget","event-gestures","event-mousewheel","transition"],skinnable:!0},"scrollview-base-ie":{condition:{name:"scrollview-base-ie",trigger:"scrollview-base",ua:"ie"},requires:["scrollview-base"]},"scrollview-list":{requires:["plugin","classnamemanager"],skinnable:!0},"scrollview-paginator":{requires:["plugin","classnamemanager"]},"scrollview-scrollbars":{requires:["classnamemanager","transition","plugin"],skinnable:!0},selector:{requires:["selector-native"]},"selector-css2":{condition:{name:"selector-css2",test:function(e){var t=e.config.doc,n=t&&!("querySelectorAll"in t);return n},trigger:"selector"},requires:["selector-native"]},"selector-css3":{requires:["selector-native","selector-css2"]},"selector-native":{requires:["dom-base"]},"shim-plugin":{requires:["node-style","node-pluginhost"]},slider:{use:["slider-base","slider-value-range","clickable-rail","range-slider"]},"slider-base":{requires:["widget","dd-constrain","event-key"],skinnable:!0},"slider-value-range":{requires:["slider-base"]},sortable:{requires:["dd-delegate","dd-drop-plugin","dd-proxy"]},"sortable-scroll":{requires:["dd-scroll","sortable"]},stylesheet:{requires:["yui-base"]},substitute:{optional:["dump"],requires:["yui-base"]},swf:{requires:["event-custom","node","swfdetect","escape"]},swfdetect:{requires:["yui-base"]},tabview:{requires:["widget","widget-parent","widget-child","tabview-base","node-pluginhost","node-focusmanager"],skinnable:!0},"tabview-base":{requires:["node-event-delegate","classnamemanager","skin-sam-tabview"]},"tabview-plugin":{requires:["tabview-base"]},test:{requires:["event-simulate","event-custom","json-stringify"]},"test-console":{requires:["console-filters","test","array-extras"],skinnable:!0},text:{use:["text-accentfold","text-wordbreak"]},"text-accentfold":{requires:["array-extras","text-data-accentfold"]},"text-data-accentfold":{requires:["yui-base"]},"text-data-wordbreak":{requires:["yui-base"]},"text-wordbreak":{requires:["array-extras","text-data-wordbreak"]},transition:{requires:["node-style"]},"transition-timer":{condition:{name:"transition-timer",test:function(e){var t=e.config.doc,n=t?t.documentElement:null,r=!0;return n&&n.style&&(r=!("MozTransition"in n.style||"WebkitTransition"in n.style||"transition"in n.style)),r},trigger:"transition"},requires:["transition"]},uploader:{requires:["uploader-html5","uploader-flash"]},"uploader-deprecated":{requires:["event-custom","node","base","swf"]},"uploader-flash":{requires:["swf","widget","substitute","base","cssbutton","node","event-custom","file-flash","uploader-queue"]},"uploader-html5":{requires:["widget","node-event-simulate","substitute","file-html5","uploader-queue"]},"uploader-queue":{requires:["base"]},view:{requires:["base-build","node-event-delegate"]},"view-node-map":{requires:["view"]},widget:{use:["widget-base","widget-htmlparser","widget-skin","widget-uievents"]},"widget-anim":{requires:["anim-base","plugin","widget"]},"widget-autohide":{requires:["base-build","event-key","event-outside","widget"]},"widget-base":{requires:["attribute","base-base","base-pluginhost","classnamemanager","event-focus","node-base","node-style"],skinnable:!0},"widget-base-ie":{condition:{name:"widget-base-ie",trigger:"widget-base",ua:"ie"},requires:["widget-base"]},"widget-buttons":{requires:["button-plugin","cssbutton","widget-stdmod"]},"widget-child":{requires:["base-build","widget"]},"widget-htmlparser":{requires:["widget-base"]},"widget-locale":{requires:["widget-base"]},"widget-modality":{requires:["base-build","event-outside","widget"],skinnable:!0},"widget-parent":{requires:["arraylist","base-build","widget"]},"widget-position":{requires:["base-build","node-screen","widget"]},"widget-position-align":{requires:["widget-position"]},"widget-position-constrain":{requires:["widget-position"]},"widget-skin":{requires:["widget-base"]},"widget-stack":{requires:["base-build","widget"],skinnable:!0},"widget-stdmod":{requires:["base-build","widget"]},"widget-uievents":{requires:["node-event-delegate","widget-base"]},yql:{requires:["jsonp","jsonp-url"]},"yql-nodejs":{condition:{name:"yql-nodejs",trigger:"yql",ua:"nodejs",when:"after"}},"yql-winjs":{condition:{name:"yql-winjs",trigger:"yql",ua:"winjs",when:"after"}},yui:{},"yui-base":{},"yui-later":{requires:["yui-base"]},"yui-log":{requires:["yui-base"]},"yui-throttle":{requires:["yui-base"]}},YUI.Env[e.version].md5="a28e022ad022130f7a4fb4ac77a2f1df"},"3.7.3",{requires:["loader-base"]}),YUI.add("yui",function(e,t){},"3.7.3",{use:["get","features","intl-base","yui-log","yui-log-nodejs","yui-later","loader-base","loader-rollup","loader-yui3"]}); diff --git a/lib/yuilib/3.7.3/build/yui/yui-coverage.js b/lib/yuilib/3.7.3/build/yui/yui-coverage.js deleted file mode 100644 index 1caeb1002b0..00000000000 --- a/lib/yuilib/3.7.3/build/yui/yui-coverage.js +++ /dev/null @@ -1,4795 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -if (typeof _yuitest_coverage == "undefined"){ - _yuitest_coverage = {}; - _yuitest_coverline = function(src, line){ - var coverage = _yuitest_coverage[src]; - if (!coverage.lines[line]){ - coverage.calledLines++; - } - coverage.lines[line]++; - }; - _yuitest_coverfunc = function(src, name, line){ - var coverage = _yuitest_coverage[src], - funcId = name + ":" + line; - if (!coverage.functions[funcId]){ - coverage.calledFunctions++; - } - coverage.functions[funcId]++; - }; -} -_yuitest_coverage["build/yui/yui.js"] = { - lines: {}, - functions: {}, - coveredLines: 0, - calledLines: 0, - coveredFunctions: 0, - calledFunctions: 0, - path: "build/yui/yui.js", - code: [] -}; -_yuitest_coverage["build/yui/yui.js"].code=["/**"," * The YUI module contains the components required for building the YUI seed"," * file. This includes the script loading mechanism, a simple queue, and"," * the core utilities for the library."," * @module yui"," * @main yui"," * @submodule yui-base"," */","","if (typeof YUI != 'undefined') {"," YUI._YUI = YUI;","}","","/**","The YUI global namespace object. If YUI is already defined, the","existing YUI object will not be overwritten so that defined","namespaces are preserved. It is the constructor for the object","the end user interacts with. As indicated below, each instance","has full custom event support, but only if the event system","is available. This is a self-instantiable factory function. You","can invoke it directly like this:",""," YUI().use('*', function(Y) {"," // ready"," });","","But it also works like this:",""," var Y = YUI();","","Configuring the YUI object:",""," YUI({"," debug: true,"," combine: false"," }).use('node', function(Y) {"," //Node is ready to use"," });","","See the API docs for the Config class","for the complete list of supported configuration properties accepted","by the YUI constuctor.","","@class YUI","@constructor","@global","@uses EventTarget","@param [o]* {Object} 0..n optional configuration objects. these values","are store in Y.config. See Config for the list of supported","properties.","*/"," /*global YUI*/"," /*global YUI_config*/"," var YUI = function() {"," var i = 0,"," Y = this,"," args = arguments,"," l = args.length,"," instanceOf = function(o, type) {"," return (o && o.hasOwnProperty && (o instanceof type));"," },"," gconf = (typeof YUI_config !== 'undefined') && YUI_config;",""," if (!(instanceOf(Y, YUI))) {"," Y = new YUI();"," } else {"," // set up the core environment"," Y._init();",""," /**"," YUI.GlobalConfig is a master configuration that might span"," multiple contexts in a non-browser environment. It is applied"," first to all instances in all contexts."," @property GlobalConfig"," @type {Object}"," @global"," @static"," @example","",""," YUI.GlobalConfig = {"," filter: 'debug'"," };",""," YUI().use('node', function(Y) {"," //debug files used here"," });",""," YUI({"," filter: 'min'"," }).use('node', function(Y) {"," //min files used here"," });",""," */"," if (YUI.GlobalConfig) {"," Y.applyConfig(YUI.GlobalConfig);"," }",""," /**"," YUI_config is a page-level config. It is applied to all"," instances created on the page. This is applied after"," YUI.GlobalConfig, and before the instance level configuration"," objects."," @global"," @property YUI_config"," @type {Object}"," @example","",""," //Single global var to include before YUI seed file"," YUI_config = {"," filter: 'debug'"," };",""," YUI().use('node', function(Y) {"," //debug files used here"," });",""," YUI({"," filter: 'min'"," }).use('node', function(Y) {"," //min files used here"," });"," */"," if (gconf) {"," Y.applyConfig(gconf);"," }",""," // bind the specified additional modules for this instance"," if (!l) {"," Y._setup();"," }"," }",""," if (l) {"," // Each instance can accept one or more configuration objects."," // These are applied after YUI.GlobalConfig and YUI_Config,"," // overriding values set in those config files if there is a '"," // matching property."," for (; i < l; i++) {"," Y.applyConfig(args[i]);"," }",""," Y._setup();"," }",""," Y.instanceOf = instanceOf;",""," return Y;"," };","","(function() {",""," var proto, prop,"," VERSION = '3.7.3',"," PERIOD = '.',"," BASE = 'http://yui.yahooapis.com/',"," /*"," These CSS class names can't be generated by"," getClassName since it is not available at the"," time they are being used."," */"," DOC_LABEL = 'yui3-js-enabled',"," CSS_STAMP_EL = 'yui3-css-stamp',"," NOOP = function() {},"," SLICE = Array.prototype.slice,"," APPLY_TO_AUTH = { 'io.xdrReady': 1, // the functions applyTo"," 'io.xdrResponse': 1, // can call. this should"," 'SWF.eventHandler': 1 }, // be done at build time"," hasWin = (typeof window != 'undefined'),"," win = (hasWin) ? window : null,"," doc = (hasWin) ? win.document : null,"," docEl = doc && doc.documentElement,"," docClass = docEl && docEl.className,"," instances = {},"," time = new Date().getTime(),"," add = function(el, type, fn, capture) {"," if (el && el.addEventListener) {"," el.addEventListener(type, fn, capture);"," } else if (el && el.attachEvent) {"," el.attachEvent('on' + type, fn);"," }"," },"," remove = function(el, type, fn, capture) {"," if (el && el.removeEventListener) {"," // this can throw an uncaught exception in FF"," try {"," el.removeEventListener(type, fn, capture);"," } catch (ex) {}"," } else if (el && el.detachEvent) {"," el.detachEvent('on' + type, fn);"," }"," },"," handleLoad = function() {"," YUI.Env.windowLoaded = true;"," YUI.Env.DOMReady = true;"," if (hasWin) {"," remove(window, 'load', handleLoad);"," }"," },"," getLoader = function(Y, o) {"," var loader = Y.Env._loader,"," lCore = [ 'loader-base' ],"," G_ENV = YUI.Env,"," mods = G_ENV.mods;",""," if (loader) {"," //loader._config(Y.config);"," loader.ignoreRegistered = false;"," loader.onEnd = null;"," loader.data = null;"," loader.required = [];"," loader.loadType = null;"," } else {"," loader = new Y.Loader(Y.config);"," Y.Env._loader = loader;"," }"," if (mods && mods.loader) {"," lCore = [].concat(lCore, YUI.Env.loaderExtras);"," }"," YUI.Env.core = Y.Array.dedupe([].concat(YUI.Env.core, lCore));",""," return loader;"," },",""," clobber = function(r, s) {"," for (var i in s) {"," if (s.hasOwnProperty(i)) {"," r[i] = s[i];"," }"," }"," },",""," ALREADY_DONE = { success: true };","","// Stamp the documentElement (HTML) with a class of \"yui-loaded\" to","// enable styles that need to key off of JS being enabled.","if (docEl && docClass.indexOf(DOC_LABEL) == -1) {"," if (docClass) {"," docClass += ' ';"," }"," docClass += DOC_LABEL;"," docEl.className = docClass;","}","","if (VERSION.indexOf('@') > -1) {"," VERSION = '3.5.0'; // dev time hack for cdn test","}","","proto = {"," /**"," * Applies a new configuration object to the YUI instance config."," * This will merge new group/module definitions, and will also"," * update the loader cache if necessary. Updating Y.config directly"," * will not update the cache."," * @method applyConfig"," * @param {Object} o the configuration object."," * @since 3.2.0"," */"," applyConfig: function(o) {",""," o = o || NOOP;",""," var attr,"," name,"," // detail,"," config = this.config,"," mods = config.modules,"," groups = config.groups,"," aliases = config.aliases,"," loader = this.Env._loader;",""," for (name in o) {"," if (o.hasOwnProperty(name)) {"," attr = o[name];"," if (mods && name == 'modules') {"," clobber(mods, attr);"," } else if (aliases && name == 'aliases') {"," clobber(aliases, attr);"," } else if (groups && name == 'groups') {"," clobber(groups, attr);"," } else if (name == 'win') {"," config[name] = (attr && attr.contentWindow) || attr;"," config.doc = config[name] ? config[name].document : null;"," } else if (name == '_yuid') {"," // preserve the guid"," } else {"," config[name] = attr;"," }"," }"," }",""," if (loader) {"," loader._config(o);"," }",""," },"," /**"," * Old way to apply a config to the instance (calls `applyConfig` under the hood)"," * @private"," * @method _config"," * @param {Object} o The config to apply"," */"," _config: function(o) {"," this.applyConfig(o);"," },",""," /**"," * Initialize this YUI instance"," * @private"," * @method _init"," */"," _init: function() {"," var filter, el,"," Y = this,"," G_ENV = YUI.Env,"," Env = Y.Env,"," prop;",""," /**"," * The version number of the YUI instance."," * @property version"," * @type string"," */"," Y.version = VERSION;",""," if (!Env) {"," Y.Env = {"," core: ['get', 'features', 'intl-base', 'yui-log', 'yui-later', 'loader-base', 'loader-rollup', 'loader-yui3'],"," loaderExtras: ['loader-rollup', 'loader-yui3'],"," mods: {}, // flat module map"," versions: {}, // version module map"," base: BASE,"," cdn: BASE + VERSION + '/build/',"," // bootstrapped: false,"," _idx: 0,"," _used: {},"," _attached: {},"," _missed: [],"," _yidx: 0,"," _uidx: 0,"," _guidp: 'y',"," _loaded: {},"," // serviced: {},"," // Regex in English:"," // I'll start at the \\b(simpleyui)."," // 1. Look in the test string for \"simpleyui\" or \"yui\" or"," // \"yui-base\" or \"yui-davglass\" or \"yui-foobar\" that comes after a word break. That is, it"," // can't match \"foyui\" or \"i_heart_simpleyui\". This can be anywhere in the string."," // 2. After #1 must come a forward slash followed by the string matched in #1, so"," // \"yui-base/yui-base\" or \"simpleyui/simpleyui\" or \"yui-pants/yui-pants\"."," // 3. The second occurence of the #1 token can optionally be followed by \"-debug\" or \"-min\","," // so \"yui/yui-min\", \"yui/yui-debug\", \"yui-base/yui-base-debug\". NOT \"yui/yui-tshirt\"."," // 4. This is followed by \".js\", so \"yui/yui.js\", \"simpleyui/simpleyui-min.js\""," // 0. Going back to the beginning, now. If all that stuff in 1-4 comes after a \"?\" in the string,"," // then capture the junk between the LAST \"&\" and the string in 1-4. So"," // \"blah?foo/yui/yui.js\" will capture \"foo/\" and \"blah?some/thing.js&3.3.0/build/yui-davglass/yui-davglass.js\""," // will capture \"3.3.0/build/\""," //"," // Regex Exploded:"," // (?:\\? Find a ?"," // (?:[^&]*&) followed by 0..n characters followed by an &"," // * in fact, find as many sets of characters followed by a & as you can"," // ([^&]*) capture the stuff after the last & in \\1"," // )? but it's ok if all this ?junk&more_junk stuff isn't even there"," // \\b(simpleyui| after a word break find either the string \"simpleyui\" or"," // yui(?:-\\w+)? the string \"yui\" optionally followed by a -, then more characters"," // ) and store the simpleyui or yui-* string in \\2"," // \\/\\2 then comes a / followed by the simpleyui or yui-* string in \\2"," // (?:-(min|debug))? optionally followed by \"-min\" or \"-debug\""," // .js and ending in \".js\""," _BASE_RE: /(?:\\?(?:[^&]*&)*([^&]*))?\\b(simpleyui|yui(?:-\\w+)?)\\/\\2(?:-(min|debug))?\\.js/,"," parseBasePath: function(src, pattern) {"," var match = src.match(pattern),"," path, filter;",""," if (match) {"," path = RegExp.leftContext || src.slice(0, src.indexOf(match[0]));",""," // this is to set up the path to the loader. The file"," // filter for loader should match the yui include."," filter = match[3];",""," // extract correct path for mixed combo urls"," // http://yuilibrary.com/projects/yui3/ticket/2528423"," if (match[1]) {"," path += '?' + match[1];"," }"," path = {"," filter: filter,"," path: path"," };"," }"," return path;"," },"," getBase: G_ENV && G_ENV.getBase ||"," function(pattern) {"," var nodes = (doc && doc.getElementsByTagName('script')) || [],"," path = Env.cdn, parsed,"," i, len, src;",""," for (i = 0, len = nodes.length; i < len; ++i) {"," src = nodes[i].src;"," if (src) {"," parsed = Y.Env.parseBasePath(src, pattern);"," if (parsed) {"," filter = parsed.filter;"," path = parsed.path;"," break;"," }"," }"," }",""," // use CDN default"," return path;"," }",""," };",""," Env = Y.Env;",""," Env._loaded[VERSION] = {};",""," if (G_ENV && Y !== YUI) {"," Env._yidx = ++G_ENV._yidx;"," Env._guidp = ('yui_' + VERSION + '_' +"," Env._yidx + '_' + time).replace(/\\./g, '_').replace(/-/g, '_');"," } else if (YUI._YUI) {",""," G_ENV = YUI._YUI.Env;"," Env._yidx += G_ENV._yidx;"," Env._uidx += G_ENV._uidx;",""," for (prop in G_ENV) {"," if (!(prop in Env)) {"," Env[prop] = G_ENV[prop];"," }"," }",""," delete YUI._YUI;"," }",""," Y.id = Y.stamp(Y);"," instances[Y.id] = Y;",""," }",""," Y.constructor = YUI;",""," // configuration defaults"," Y.config = Y.config || {"," bootstrap: true,"," cacheUse: true,"," debug: true,"," doc: doc,"," fetchCSS: true,"," throwFail: true,"," useBrowserConsole: true,"," useNativeES5: true,"," win: win"," };",""," //Register the CSS stamp element"," if (doc && !doc.getElementById(CSS_STAMP_EL)) {"," el = doc.createElement('div');"," el.innerHTML = '';"," YUI.Env.cssStampEl = el.firstChild;"," if (doc.body) {"," doc.body.appendChild(YUI.Env.cssStampEl);"," } else {"," docEl.insertBefore(YUI.Env.cssStampEl, docEl.firstChild);"," }"," }",""," Y.config.lang = Y.config.lang || 'en-US';",""," Y.config.base = YUI.config.base || Y.Env.getBase(Y.Env._BASE_RE);",""," if (!filter || (!('mindebug').indexOf(filter))) {"," filter = 'min';"," }"," filter = (filter) ? '-' + filter : filter;"," Y.config.loaderPath = YUI.config.loaderPath || 'loader/loader' + filter + '.js';",""," },",""," /**"," * Finishes the instance setup. Attaches whatever modules were defined"," * when the yui modules was registered."," * @method _setup"," * @private"," */"," _setup: function(o) {"," var i, Y = this,"," core = [],"," mods = YUI.Env.mods,"," extras = Y.config.core || [].concat(YUI.Env.core); //Clone it..",""," for (i = 0; i < extras.length; i++) {"," if (mods[extras[i]]) {"," core.push(extras[i]);"," }"," }",""," Y._attach(['yui-base']);"," Y._attach(core);",""," if (Y.Loader) {"," getLoader(Y);"," }",""," },",""," /**"," * Executes a method on a YUI instance with"," * the specified id if the specified method is whitelisted."," * @method applyTo"," * @param id {String} the YUI instance id."," * @param method {String} the name of the method to exectute."," * Ex: 'Object.keys'."," * @param args {Array} the arguments to apply to the method."," * @return {Object} the return value from the applied method or null."," */"," applyTo: function(id, method, args) {"," if (!(method in APPLY_TO_AUTH)) {"," this.log(method + ': applyTo not allowed', 'warn', 'yui');"," return null;"," }",""," var instance = instances[id], nest, m, i;"," if (instance) {"," nest = method.split('.');"," m = instance;"," for (i = 0; i < nest.length; i = i + 1) {"," m = m[nest[i]];"," if (!m) {"," this.log('applyTo not found: ' + method, 'warn', 'yui');"," }"," }"," return m && m.apply(instance, args);"," }",""," return null;"," },","","/**","Registers a module with the YUI global. The easiest way to create a","first-class YUI module is to use the YUI component ","build tool Shifter.","","The build system will produce the `YUI.add` wrapper for your module, along","with any configuration info required for the module.","","@method add","@param name {String} module name.","@param fn {Function} entry point into the module that is used to bind module to the YUI instance.","@param {YUI} fn.Y The YUI instance this module is executed in.","@param {String} fn.name The name of the module","@param version {String} version string.","@param details {Object} optional config data:","@param details.requires {Array} features that must be present before this module can be attached.","@param details.optional {Array} optional features that should be present if loadOptional"," is defined. Note: modules are not often loaded this way in YUI 3,"," but this field is still useful to inform the user that certain"," features in the component will require additional dependencies.","@param details.use {Array} features that are included within this module which need to"," be attached automatically when this module is attached. This"," supports the YUI 3 rollup system -- a module with submodules"," defined will need to have the submodules listed in the 'use'"," config. The YUI component build tool does this for you.","@return {YUI} the YUI instance.","@example",""," YUI.add('davglass', function(Y, name) {"," Y.davglass = function() {"," alert('Dav was here!');"," };"," }, '3.4.0', { requires: ['yui-base', 'harley-davidson', 'mt-dew'] });","","*/"," add: function(name, fn, version, details) {"," details = details || {};"," var env = YUI.Env,"," mod = {"," name: name,"," fn: fn,"," version: version,"," details: details"," },"," //Instance hash so we don't apply it to the same instance twice"," applied = {},"," loader, inst,"," i, versions = env.versions;",""," env.mods[name] = mod;"," versions[version] = versions[version] || {};"," versions[version][name] = mod;",""," for (i in instances) {"," if (instances.hasOwnProperty(i)) {"," inst = instances[i];"," if (!applied[inst.id]) {"," applied[inst.id] = true;"," loader = inst.Env._loader;"," if (loader) {"," if (!loader.moduleInfo[name] || loader.moduleInfo[name].temp) {"," loader.addModule(details, name);"," }"," }"," }"," }"," }",""," return this;"," },",""," /**"," * Executes the function associated with each required"," * module, binding the module to the YUI instance."," * @param {Array} r The array of modules to attach"," * @param {Boolean} [moot=false] Don't throw a warning if the module is not attached"," * @method _attach"," * @private"," */"," _attach: function(r, moot) {"," var i, name, mod, details, req, use, after,"," mods = YUI.Env.mods,"," aliases = YUI.Env.aliases,"," Y = this, j,"," cache = YUI.Env._renderedMods,"," loader = Y.Env._loader,"," done = Y.Env._attached,"," len = r.length, loader, def, go,"," c = [];",""," //Check for conditional modules (in a second+ instance) and add their requirements"," //TODO I hate this entire method, it needs to be fixed ASAP (3.5.0) ^davglass"," for (i = 0; i < len; i++) {"," name = r[i];"," mod = mods[name];"," c.push(name);"," if (loader && loader.conditions[name]) {"," for (j in loader.conditions[name]) {"," if (loader.conditions[name].hasOwnProperty(j)) {"," def = loader.conditions[name][j];"," go = def && ((def.ua && Y.UA[def.ua]) || (def.test && def.test(Y)));"," if (go) {"," c.push(def.name);"," }"," }"," }"," }"," }"," r = c;"," len = r.length;",""," for (i = 0; i < len; i++) {"," if (!done[r[i]]) {"," name = r[i];"," mod = mods[name];",""," if (aliases && aliases[name] && !mod) {"," Y._attach(aliases[name]);"," continue;"," }"," if (!mod) {"," if (loader && loader.moduleInfo[name]) {"," mod = loader.moduleInfo[name];"," moot = true;"," }","",""," //if (!loader || !loader.moduleInfo[name]) {"," //if ((!loader || !loader.moduleInfo[name]) && !moot) {"," if (!moot && name) {"," if ((name.indexOf('skin-') === -1) && (name.indexOf('css') === -1)) {"," Y.Env._missed.push(name);"," Y.Env._missed = Y.Array.dedupe(Y.Env._missed);"," Y.message('NOT loaded: ' + name, 'warn', 'yui');"," }"," }"," } else {"," done[name] = true;"," //Don't like this, but in case a mod was asked for once, then we fetch it"," //We need to remove it from the missed list ^davglass"," for (j = 0; j < Y.Env._missed.length; j++) {"," if (Y.Env._missed[j] === name) {"," Y.message('Found: ' + name + ' (was reported as missing earlier)', 'warn', 'yui');"," Y.Env._missed.splice(j, 1);"," }"," }"," /*"," If it's a temp module, we need to redo it's requirements if it's already loaded"," since it may have been loaded by another instance and it's dependencies might"," have been redefined inside the fetched file."," */"," if (loader && cache && cache[name] && cache[name].temp) {"," loader.getRequires(cache[name]);"," req = [];"," for (j in loader.moduleInfo[name].expanded_map) {"," if (loader.moduleInfo[name].expanded_map.hasOwnProperty(j)) {"," req.push(j);"," }"," }"," Y._attach(req);"," }"," "," details = mod.details;"," req = details.requires;"," use = details.use;"," after = details.after;"," //Force Intl load if there is a language (Loader logic) @todo fix this shit"," if (details.lang) {"," req = req || [];"," req.unshift('intl');"," }",""," if (req) {"," for (j = 0; j < req.length; j++) {"," if (!done[req[j]]) {"," if (!Y._attach(req)) {"," return false;"," }"," break;"," }"," }"," }",""," if (after) {"," for (j = 0; j < after.length; j++) {"," if (!done[after[j]]) {"," if (!Y._attach(after, true)) {"," return false;"," }"," break;"," }"," }"," }",""," if (mod.fn) {"," if (Y.config.throwFail) {"," mod.fn(Y, name);"," } else {"," try {"," mod.fn(Y, name);"," } catch (e) {"," Y.error('Attach error: ' + name, e, name);"," return false;"," }"," }"," }",""," if (use) {"," for (j = 0; j < use.length; j++) {"," if (!done[use[j]]) {"," if (!Y._attach(use)) {"," return false;"," }"," break;"," }"," }"," }","","",""," }"," }"," }",""," return true;"," },"," /**"," * Delays the `use` callback until another event has taken place. Like: window.onload, domready, contentready, available."," * @private"," * @method _delayCallback"," * @param {Callback} cb The original `use` callback"," * @param {String|Object} until Either an event (load, domready) or an Object containing event/args keys for contentready/available"," */"," _delayCallback: function(cb, until) {",""," var Y = this,"," mod = ['event-base'];",""," until = (Y.Lang.isObject(until) ? until : { event: until });",""," if (until.event === 'load') {"," mod.push('event-synthetic');"," }",""," return function() {"," var args = arguments;"," Y._use(mod, function() {"," Y.on(until.event, function() {"," args[1].delayUntil = until.event;"," cb.apply(Y, args);"," }, until.args);"," });"," };"," },",""," /**"," * Attaches one or more modules to the YUI instance. When this"," * is executed, the requirements are analyzed, and one of"," * several things can happen:"," *"," * * All requirements are available on the page -- The modules"," * are attached to the instance. If supplied, the use callback"," * is executed synchronously."," *"," * * Modules are missing, the Get utility is not available OR"," * the 'bootstrap' config is false -- A warning is issued about"," * the missing modules and all available modules are attached."," *"," * * Modules are missing, the Loader is not available but the Get"," * utility is and boostrap is not false -- The loader is bootstrapped"," * before doing the following...."," *"," * * Modules are missing and the Loader is available -- The loader"," * expands the dependency tree and fetches missing modules. When"," * the loader is finshed the callback supplied to use is executed"," * asynchronously."," *"," * @method use"," * @param modules* {String|Array} 1-n modules to bind (uses arguments array)."," * @param [callback] {Function} callback function executed when"," * the instance has the required functionality. If included, it"," * must be the last parameter."," * @param callback.Y {YUI} The `YUI` instance created for this sandbox"," * @param callback.status {Object} Object containing `success`, `msg` and `data` properties"," *"," * @example"," * // loads and attaches dd and its dependencies"," * YUI().use('dd', function(Y) {});"," *"," * // loads and attaches dd and node as well as all of their dependencies (since 3.4.0)"," * YUI().use(['dd', 'node'], function(Y) {});"," *"," * // attaches all modules that are available on the page"," * YUI().use('*', function(Y) {});"," *"," * // intrinsic YUI gallery support (since 3.1.0)"," * YUI().use('gallery-yql', function(Y) {});"," *"," * // intrinsic YUI 2in3 support (since 3.1.0)"," * YUI().use('yui2-datatable', function(Y) {});"," *"," * @return {YUI} the YUI instance."," */"," use: function() {"," var args = SLICE.call(arguments, 0),"," callback = args[args.length - 1],"," Y = this,"," i = 0,"," a = [],"," name,"," Env = Y.Env,"," provisioned = true;",""," // The last argument supplied to use can be a load complete callback"," if (Y.Lang.isFunction(callback)) {"," args.pop();"," if (Y.config.delayUntil) {"," callback = Y._delayCallback(callback, Y.config.delayUntil);"," }"," } else {"," callback = null;"," }"," if (Y.Lang.isArray(args[0])) {"," args = args[0];"," }",""," if (Y.config.cacheUse) {"," while ((name = args[i++])) {"," if (!Env._attached[name]) {"," provisioned = false;"," break;"," }"," }",""," if (provisioned) {"," if (args.length) {"," }"," Y._notify(callback, ALREADY_DONE, args);"," return Y;"," }"," }",""," if (Y._loading) {"," Y._useQueue = Y._useQueue || new Y.Queue();"," Y._useQueue.add([args, callback]);"," } else {"," Y._use(args, function(Y, response) {"," Y._notify(callback, response, args);"," });"," }",""," return Y;"," },"," /**"," * Notify handler from Loader for attachment/load errors"," * @method _notify"," * @param callback {Function} The callback to pass to the `Y.config.loadErrorFn`"," * @param response {Object} The response returned from Loader"," * @param args {Array} The aruments passed from Loader"," * @private"," */"," _notify: function(callback, response, args) {"," if (!response.success && this.config.loadErrorFn) {"," this.config.loadErrorFn.call(this, this, callback, response, args);"," } else if (callback) {"," if (this.Env._missed && this.Env._missed.length) {"," response.msg = 'Missing modules: ' + this.Env._missed.join();"," response.success = false;"," }"," if (this.config.throwFail) {"," callback(this, response);"," } else {"," try {"," callback(this, response);"," } catch (e) {"," this.error('use callback error', e, args);"," }"," }"," }"," },",""," /**"," * This private method is called from the `use` method queue. To ensure that only one set of loading"," * logic is performed at a time."," * @method _use"," * @private"," * @param args* {String} 1-n modules to bind (uses arguments array)."," * @param *callback {Function} callback function executed when"," * the instance has the required functionality. If included, it"," * must be the last parameter."," */"," _use: function(args, callback) {",""," if (!this.Array) {"," this._attach(['yui-base']);"," }",""," var len, loader, handleBoot, handleRLS,"," Y = this,"," G_ENV = YUI.Env,"," mods = G_ENV.mods,"," Env = Y.Env,"," used = Env._used,"," aliases = G_ENV.aliases,"," queue = G_ENV._loaderQueue,"," firstArg = args[0],"," YArray = Y.Array,"," config = Y.config,"," boot = config.bootstrap,"," missing = [],"," i,"," r = [],"," ret = true,"," fetchCSS = config.fetchCSS,"," process = function(names, skip) {",""," var i = 0, a = [], name, len, m, req, use;",""," if (!names.length) {"," return;"," }",""," if (aliases) {"," len = names.length;"," for (i = 0; i < len; i++) {"," if (aliases[names[i]] && !mods[names[i]]) {"," a = [].concat(a, aliases[names[i]]);"," } else {"," a.push(names[i]);"," }"," }"," names = a;"," }"," "," len = names.length;"," "," for (i = 0; i < len; i++) {"," name = names[i];"," if (!skip) {"," r.push(name);"," }",""," // only attach a module once"," if (used[name]) {"," continue;"," }"," "," m = mods[name];"," req = null;"," use = null;",""," if (m) {"," used[name] = true;"," req = m.details.requires;"," use = m.details.use;"," } else {"," // CSS files don't register themselves, see if it has"," // been loaded"," if (!G_ENV._loaded[VERSION][name]) {"," missing.push(name);"," } else {"," used[name] = true; // probably css"," }"," }",""," // make sure requirements are attached"," if (req && req.length) {"," process(req);"," }",""," // make sure we grab the submodule dependencies too"," if (use && use.length) {"," process(use, 1);"," }"," }",""," },",""," handleLoader = function(fromLoader) {"," var response = fromLoader || {"," success: true,"," msg: 'not dynamic'"," },"," redo, origMissing,"," ret = true,"," data = response.data;",""," Y._loading = false;",""," if (data) {"," origMissing = missing;"," missing = [];"," r = [];"," process(data);"," redo = missing.length;"," if (redo) {"," if ([].concat(missing).sort().join() =="," origMissing.sort().join()) {"," redo = false;"," }"," }"," }",""," if (redo && data) {"," Y._loading = true;"," Y._use(missing, function() {"," if (Y._attach(data)) {"," Y._notify(callback, response, data);"," }"," });"," } else {"," if (data) {"," ret = Y._attach(data);"," }"," if (ret) {"," Y._notify(callback, response, args);"," }"," }",""," if (Y._useQueue && Y._useQueue.size() && !Y._loading) {"," Y._use.apply(Y, Y._useQueue.next());"," }",""," };","",""," // YUI().use('*'); // bind everything available"," if (firstArg === '*') {"," args = [];"," for (i in mods) {"," if (mods.hasOwnProperty(i)) {"," args.push(i);"," }"," }"," ret = Y._attach(args);"," if (ret) {"," handleLoader();"," }"," return Y;"," }",""," if ((mods.loader || mods['loader-base']) && !Y.Loader) {"," Y._attach(['loader' + ((!mods.loader) ? '-base' : '')]);"," }","",""," // use loader to expand dependencies and sort the"," // requirements if it is available."," if (boot && Y.Loader && args.length) {"," loader = getLoader(Y);"," loader.require(args);"," loader.ignoreRegistered = true;"," loader._boot = true;"," loader.calculate(null, (fetchCSS) ? null : 'js');"," args = loader.sorted;"," loader._boot = false;"," }"," "," process(args);",""," len = missing.length;","",""," if (len) {"," missing = YArray.dedupe(missing);"," len = missing.length;"," }","",""," // dynamic load"," if (boot && len && Y.Loader) {"," Y._loading = true;"," loader = getLoader(Y);"," loader.onEnd = handleLoader;"," loader.context = Y;"," loader.data = args;"," loader.ignoreRegistered = false;"," loader.require(args);"," loader.insert(null, (fetchCSS) ? null : 'js');",""," } else if (boot && len && Y.Get && !Env.bootstrapped) {",""," Y._loading = true;",""," handleBoot = function() {"," Y._loading = false;"," queue.running = false;"," Env.bootstrapped = true;"," G_ENV._bootstrapping = false;"," if (Y._attach(['loader'])) {"," Y._use(args, callback);"," }"," };",""," if (G_ENV._bootstrapping) {"," queue.add(handleBoot);"," } else {"," G_ENV._bootstrapping = true;"," Y.Get.script(config.base + config.loaderPath, {"," onEnd: handleBoot"," });"," }",""," } else {"," ret = Y._attach(args);"," if (ret) {"," handleLoader();"," }"," }",""," return Y;"," },","",""," /**"," Adds a namespace object onto the YUI global if called statically.",""," // creates YUI.your.namespace.here as nested objects"," YUI.namespace(\"your.namespace.here\");",""," If called as a method on a YUI instance, it creates the"," namespace on the instance.",""," // creates Y.property.package"," Y.namespace(\"property.package\");",""," Dots in the input string cause `namespace` to create nested objects for"," each token. If any part of the requested namespace already exists, the"," current object will be left in place. This allows multiple calls to"," `namespace` to preserve existing namespaced properties.",""," If the first token in the namespace string is \"YAHOO\", the token is"," discarded.",""," Be careful with namespace tokens. Reserved words may work in some browsers"," and not others. For instance, the following will fail in some browsers"," because the supported version of JavaScript reserves the word \"long\":",""," Y.namespace(\"really.long.nested.namespace\");",""," Note: If you pass multiple arguments to create multiple namespaces, only"," the last one created is returned from this function.",""," @method namespace"," @param {String} namespace* namespaces to create."," @return {Object} A reference to the last namespace object created."," **/"," namespace: function() {"," var a = arguments, o, i = 0, j, d, arg;",""," for (; i < a.length; i++) {"," o = this; //Reset base object per argument or it will get reused from the last"," arg = a[i];"," if (arg.indexOf(PERIOD) > -1) { //Skip this if no \".\" is present"," d = arg.split(PERIOD);"," for (j = (d[0] == 'YAHOO') ? 1 : 0; j < d.length; j++) {"," o[d[j]] = o[d[j]] || {};"," o = o[d[j]];"," }"," } else {"," o[arg] = o[arg] || {};"," o = o[arg]; //Reset base object to the new object so it's returned"," }"," }"," return o;"," },",""," // this is replaced if the log module is included"," log: NOOP,"," message: NOOP,"," // this is replaced if the dump module is included"," dump: function (o) { return ''+o; },",""," /**"," * Report an error. The reporting mechanism is controlled by"," * the `throwFail` configuration attribute. If throwFail is"," * not specified, the message is written to the Logger, otherwise"," * a JS error is thrown. If an `errorFn` is specified in the config"," * it must return `true` to keep the error from being thrown."," * @method error"," * @param msg {String} the error message."," * @param e {Error|String} Optional JS error that was caught, or an error string."," * @param src Optional additional info (passed to `Y.config.errorFn` and `Y.message`)"," * and `throwFail` is specified, this error will be re-thrown."," * @return {YUI} this YUI instance."," */"," error: function(msg, e, src) {"," //TODO Add check for window.onerror here",""," var Y = this, ret;",""," if (Y.config.errorFn) {"," ret = Y.config.errorFn.apply(Y, arguments);"," }",""," if (!ret) {"," throw (e || new Error(msg));"," } else {"," Y.message(msg, 'error', ''+src); // don't scrub this one"," }",""," return Y;"," },",""," /**"," * Generate an id that is unique among all YUI instances"," * @method guid"," * @param pre {String} optional guid prefix."," * @return {String} the guid."," */"," guid: function(pre) {"," var id = this.Env._guidp + '_' + (++this.Env._uidx);"," return (pre) ? (pre + id) : id;"," },",""," /**"," * Returns a `guid` associated with an object. If the object"," * does not have one, a new one is created unless `readOnly`"," * is specified."," * @method stamp"," * @param o {Object} The object to stamp."," * @param readOnly {Boolean} if `true`, a valid guid will only"," * be returned if the object has one assigned to it."," * @return {String} The object's guid or null."," */"," stamp: function(o, readOnly) {"," var uid;"," if (!o) {"," return o;"," }",""," // IE generates its own unique ID for dom nodes"," // The uniqueID property of a document node returns a new ID"," if (o.uniqueID && o.nodeType && o.nodeType !== 9) {"," uid = o.uniqueID;"," } else {"," uid = (typeof o === 'string') ? o : o._yuid;"," }",""," if (!uid) {"," uid = this.guid();"," if (!readOnly) {"," try {"," o._yuid = uid;"," } catch (e) {"," uid = null;"," }"," }"," }"," return uid;"," },",""," /**"," * Destroys the YUI instance"," * @method destroy"," * @since 3.3.0"," */"," destroy: function() {"," var Y = this;"," if (Y.Event) {"," Y.Event._unload();"," }"," delete instances[Y.id];"," delete Y.Env;"," delete Y.config;"," }",""," /**"," * instanceof check for objects that works around"," * memory leak in IE when the item tested is"," * window/document"," * @method instanceOf"," * @param o {Object} The object to check."," * @param type {Object} The class to check against."," * @since 3.3.0"," */","};",""," YUI.prototype = proto;",""," // inheritance utilities are not available yet"," for (prop in proto) {"," if (proto.hasOwnProperty(prop)) {"," YUI[prop] = proto[prop];"," }"," }",""," /**","Static method on the Global YUI object to apply a config to all YUI instances.","It's main use case is \"mashups\" where several third party scripts are trying to write to","a global YUI config at the same time. This way they can all call `YUI.applyConfig({})` instead of","overwriting other scripts configs.","@static","@since 3.5.0","@method applyConfig","@param {Object} o the configuration object.","@example",""," YUI.applyConfig({"," modules: {"," davglass: {"," fullpath: './davglass.js'"," }"," }"," });",""," YUI.applyConfig({"," modules: {"," foo: {"," fullpath: './foo.js'"," }"," }"," });",""," YUI().use('davglass', function(Y) {"," //Module davglass will be available here.."," });",""," */"," YUI.applyConfig = function(o) {"," if (!o) {"," return;"," }"," //If there is a GlobalConfig, apply it first to set the defaults"," if (YUI.GlobalConfig) {"," this.prototype.applyConfig.call(this, YUI.GlobalConfig);"," }"," //Apply this config to it"," this.prototype.applyConfig.call(this, o);"," //Reset GlobalConfig to the combined config"," YUI.GlobalConfig = this.config;"," };",""," // set up the environment"," YUI._init();",""," if (hasWin) {"," // add a window load event at load time so we can capture"," // the case where it fires before dynamic loading is"," // complete."," add(window, 'load', handleLoad);"," } else {"," handleLoad();"," }",""," YUI.Env.add = add;"," YUI.Env.remove = remove;",""," /*global exports*/"," // Support the CommonJS method for exporting our single global"," if (typeof exports == 'object') {"," exports.YUI = YUI;"," }","","}());","","","/**"," * The config object contains all of the configuration options for"," * the `YUI` instance. This object is supplied by the implementer"," * when instantiating a `YUI` instance. Some properties have default"," * values if they are not supplied by the implementer. This should"," * not be updated directly because some values are cached. Use"," * `applyConfig()` to update the config object on a YUI instance that"," * has already been configured."," *"," * @class config"," * @static"," */","","/**"," * Allows the YUI seed file to fetch the loader component and library"," * metadata to dynamically load additional dependencies."," *"," * @property bootstrap"," * @type boolean"," * @default true"," */","","/**"," * Turns on writing Ylog messages to the browser console."," *"," * @property debug"," * @type boolean"," * @default true"," */","","/**"," * Log to the browser console if debug is on and the browser has a"," * supported console."," *"," * @property useBrowserConsole"," * @type boolean"," * @default true"," */","","/**"," * A hash of log sources that should be logged. If specified, only"," * log messages from these sources will be logged."," *"," * @property logInclude"," * @type object"," */","","/**"," * A hash of log sources that should be not be logged. If specified,"," * all sources are logged if not on this list."," *"," * @property logExclude"," * @type object"," */","","/**"," * Set to true if the yui seed file was dynamically loaded in"," * order to bootstrap components relying on the window load event"," * and the `domready` custom event."," *"," * @property injected"," * @type boolean"," * @default false"," */","","/**"," * If `throwFail` is set, `Y.error` will generate or re-throw a JS Error."," * Otherwise the failure is logged."," *"," * @property throwFail"," * @type boolean"," * @default true"," */","","/**"," * The window/frame that this instance should operate in."," *"," * @property win"," * @type Window"," * @default the window hosting YUI"," */","","/**"," * The document associated with the 'win' configuration."," *"," * @property doc"," * @type Document"," * @default the document hosting YUI"," */","","/**"," * A list of modules that defines the YUI core (overrides the default list)."," *"," * @property core"," * @type Array"," * @default [ get,features,intl-base,yui-log,yui-later,loader-base, loader-rollup, loader-yui3 ]"," */","","/**"," * A list of languages in order of preference. This list is matched against"," * the list of available languages in modules that the YUI instance uses to"," * determine the best possible localization of language sensitive modules."," * Languages are represented using BCP 47 language tags, such as \"en-GB\" for"," * English as used in the United Kingdom, or \"zh-Hans-CN\" for simplified"," * Chinese as used in China. The list can be provided as a comma-separated"," * list or as an array."," *"," * @property lang"," * @type string|string[]"," */","","/**"," * The default date format"," * @property dateFormat"," * @type string"," * @deprecated use configuration in `DataType.Date.format()` instead."," */","","/**"," * The default locale"," * @property locale"," * @type string"," * @deprecated use `config.lang` instead."," */","","/**"," * The default interval when polling in milliseconds."," * @property pollInterval"," * @type int"," * @default 20"," */","","/**"," * The number of dynamic nodes to insert by default before"," * automatically removing them. This applies to script nodes"," * because removing the node will not make the evaluated script"," * unavailable. Dynamic CSS is not auto purged, because removing"," * a linked style sheet will also remove the style definitions."," * @property purgethreshold"," * @type int"," * @default 20"," */","","/**"," * The default interval when polling in milliseconds."," * @property windowResizeDelay"," * @type int"," * @default 40"," */","","/**"," * Base directory for dynamic loading"," * @property base"," * @type string"," */","","/*"," * The secure base dir (not implemented)"," * For dynamic loading."," * @property secureBase"," * @type string"," */","","/**"," * The YUI combo service base dir. Ex: `http://yui.yahooapis.com/combo?`"," * For dynamic loading."," * @property comboBase"," * @type string"," */","","/**"," * The root path to prepend to module path for the combo service."," * Ex: 3.0.0b1/build/"," * For dynamic loading."," * @property root"," * @type string"," */","","/**"," * A filter to apply to result urls. This filter will modify the default"," * path for all modules. The default path for the YUI library is the"," * minified version of the files (e.g., event-min.js). The filter property"," * can be a predefined filter or a custom filter. The valid predefined"," * filters are:"," *
          "," *
          DEBUG
          "," *
          Selects the debug versions of the library (e.g., event-debug.js)."," * This option will automatically include the Logger widget
          "," *
          RAW
          "," *
          Selects the non-minified version of the library (e.g., event.js).
          "," *
          "," * You can also define a custom filter, which must be an object literal"," * containing a search expression and a replace string:"," *"," * myFilter: {"," * 'searchExp': \"-min\\\\.js\","," * 'replaceStr': \"-debug.js\""," * }"," *"," * For dynamic loading."," *"," * @property filter"," * @type string|object"," */","","/**"," * The `skin` config let's you configure application level skin"," * customizations. It contains the following attributes which"," * can be specified to override the defaults:"," *"," * // The default skin, which is automatically applied if not"," * // overriden by a component-specific skin definition."," * // Change this in to apply a different skin globally"," * defaultSkin: 'sam',"," *"," * // This is combined with the loader base property to get"," * // the default root directory for a skin."," * base: 'assets/skins/',"," *"," * // Any component-specific overrides can be specified here,"," * // making it possible to load different skins for different"," * // components. It is possible to load more than one skin"," * // for a given component as well."," * overrides: {"," * slider: ['capsule', 'round']"," * }"," *"," * For dynamic loading."," *"," * @property skin"," */","","/**"," * Hash of per-component filter specification. If specified for a given"," * component, this overrides the filter config."," *"," * For dynamic loading."," *"," * @property filters"," */","","/**"," * Use the YUI combo service to reduce the number of http connections"," * required to load your dependencies. Turning this off will"," * disable combo handling for YUI and all module groups configured"," * with a combo service."," *"," * For dynamic loading."," *"," * @property combine"," * @type boolean"," * @default true if 'base' is not supplied, false if it is."," */","","/**"," * A list of modules that should never be dynamically loaded"," *"," * @property ignore"," * @type string[]"," */","","/**"," * A list of modules that should always be loaded when required, even if already"," * present on the page."," *"," * @property force"," * @type string[]"," */","","/**"," * Node or id for a node that should be used as the insertion point for new"," * nodes. For dynamic loading."," *"," * @property insertBefore"," * @type string"," */","","/**"," * Object literal containing attributes to add to dynamically loaded script"," * nodes."," * @property jsAttributes"," * @type string"," */","","/**"," * Object literal containing attributes to add to dynamically loaded link"," * nodes."," * @property cssAttributes"," * @type string"," */","","/**"," * Number of milliseconds before a timeout occurs when dynamically"," * loading nodes. If not set, there is no timeout."," * @property timeout"," * @type int"," */","","/**"," * Callback for the 'CSSComplete' event. When dynamically loading YUI"," * components with CSS, this property fires when the CSS is finished"," * loading but script loading is still ongoing. This provides an"," * opportunity to enhance the presentation of a loading page a little"," * bit before the entire loading process is done."," *"," * @property onCSS"," * @type function"," */","","/**"," * A hash of module definitions to add to the list of YUI components."," * These components can then be dynamically loaded side by side with"," * YUI via the `use()` method. This is a hash, the key is the module"," * name, and the value is an object literal specifying the metdata"," * for the module. See `Loader.addModule` for the supported module"," * metadata fields. Also see groups, which provides a way to"," * configure the base and combo spec for a set of modules."," *"," * modules: {"," * mymod1: {"," * requires: ['node'],"," * fullpath: '/mymod1/mymod1.js'"," * },"," * mymod2: {"," * requires: ['mymod1'],"," * fullpath: '/mymod2/mymod2.js'"," * },"," * mymod3: '/js/mymod3.js',"," * mycssmod: '/css/mycssmod.css'"," * }"," *"," *"," * @property modules"," * @type object"," */","","/**"," * Aliases are dynamic groups of modules that can be used as"," * shortcuts."," *"," * YUI({"," * aliases: {"," * davglass: [ 'node', 'yql', 'dd' ],"," * mine: [ 'davglass', 'autocomplete']"," * }"," * }).use('mine', function(Y) {"," * //Node, YQL, DD & AutoComplete available here.."," * });"," *"," * @property aliases"," * @type object"," */","","/**"," * A hash of module group definitions. It for each group you"," * can specify a list of modules and the base path and"," * combo spec to use when dynamically loading the modules."," *"," * groups: {"," * yui2: {"," * // specify whether or not this group has a combo service"," * combine: true,"," *"," * // The comboSeperator to use with this group's combo handler"," * comboSep: ';',"," *"," * // The maxURLLength for this server"," * maxURLLength: 500,"," *"," * // the base path for non-combo paths"," * base: 'http://yui.yahooapis.com/2.8.0r4/build/',"," *"," * // the path to the combo service"," * comboBase: 'http://yui.yahooapis.com/combo?',"," *"," * // a fragment to prepend to the path attribute when"," * // when building combo urls"," * root: '2.8.0r4/build/',"," *"," * // the module definitions"," * modules: {"," * yui2_yde: {"," * path: \"yahoo-dom-event/yahoo-dom-event.js\""," * },"," * yui2_anim: {"," * path: \"animation/animation.js\","," * requires: ['yui2_yde']"," * }"," * }"," * }"," * }"," *"," * @property groups"," * @type object"," */","","/**"," * The loader 'path' attribute to the loader itself. This is combined"," * with the 'base' attribute to dynamically load the loader component"," * when boostrapping with the get utility alone."," *"," * @property loaderPath"," * @type string"," * @default loader/loader-min.js"," */","","/**"," * Specifies whether or not YUI().use(...) will attempt to load CSS"," * resources at all. Any truthy value will cause CSS dependencies"," * to load when fetching script. The special value 'force' will"," * cause CSS dependencies to be loaded even if no script is needed."," *"," * @property fetchCSS"," * @type boolean|string"," * @default true"," */","","/**"," * The default gallery version to build gallery module urls"," * @property gallery"," * @type string"," * @since 3.1.0"," */","","/**"," * The default YUI 2 version to build yui2 module urls. This is for"," * intrinsic YUI 2 support via the 2in3 project. Also see the '2in3'"," * config for pulling different revisions of the wrapped YUI 2"," * modules."," * @since 3.1.0"," * @property yui2"," * @type string"," * @default 2.9.0"," */","","/**"," * The 2in3 project is a deployment of the various versions of YUI 2"," * deployed as first-class YUI 3 modules. Eventually, the wrapper"," * for the modules will change (but the underlying YUI 2 code will"," * be the same), and you can select a particular version of"," * the wrapper modules via this config."," * @since 3.1.0"," * @property 2in3"," * @type string"," * @default 4"," */","","/**"," * Alternative console log function for use in environments without"," * a supported native console. The function is executed in the"," * YUI instance context."," * @since 3.1.0"," * @property logFn"," * @type Function"," */","","/**"," * A callback to execute when Y.error is called. It receives the"," * error message and an javascript error object if Y.error was"," * executed because a javascript error was caught. The function"," * is executed in the YUI instance context. Returning `true` from this"," * function will stop the Error from being thrown."," *"," * @since 3.2.0"," * @property errorFn"," * @type Function"," */","","/**"," * A callback to execute when the loader fails to load one or"," * more resource. This could be because of a script load"," * failure. It can also fail if a javascript module fails"," * to register itself, but only when the 'requireRegistration'"," * is true. If this function is defined, the use() callback will"," * only be called when the loader succeeds, otherwise it always"," * executes unless there was a javascript error when attaching"," * a module."," *"," * @since 3.3.0"," * @property loadErrorFn"," * @type Function"," */","","/**"," * When set to true, the YUI loader will expect that all modules"," * it is responsible for loading will be first-class YUI modules"," * that register themselves with the YUI global. If this is"," * set to true, loader will fail if the module registration fails"," * to happen after the script is loaded."," *"," * @since 3.3.0"," * @property requireRegistration"," * @type boolean"," * @default false"," */","","/**"," * Cache serviced use() requests."," * @since 3.3.0"," * @property cacheUse"," * @type boolean"," * @default true"," * @deprecated no longer used"," */","","/**"," * Whether or not YUI should use native ES5 functionality when available for"," * features like `Y.Array.each()`, `Y.Object()`, etc. When `false`, YUI will"," * always use its own fallback implementations instead of relying on ES5"," * functionality, even when it's available."," *"," * @property useNativeES5"," * @type Boolean"," * @default true"," * @since 3.5.0"," */","","/**","Delay the `use` callback until a specific event has passed (`load`, `domready`, `contentready` or `available`)","@property delayUntil","@type String|Object","@since 3.6.0","@example","","You can use `load` or `domready` strings by default:",""," YUI({"," delayUntil: 'domready'"," }, function(Y) {"," //This will not fire until 'domeready'"," });","","Or you can delay until a node is available (with `available` or `contentready`):",""," YUI({"," delayUntil: {"," event: 'available',"," args: '#foo'"," }"," }, function(Y) {"," //This will not fire until '#foo' is "," // available in the DOM"," });"," ","","*/","YUI.add('yui-base', function (Y, NAME) {","","/*"," * YUI stub"," * @module yui"," * @submodule yui-base"," */","/**"," * The YUI module contains the components required for building the YUI"," * seed file. This includes the script loading mechanism, a simple queue,"," * and the core utilities for the library."," * @module yui"," * @submodule yui-base"," */","","/**"," * Provides core language utilites and extensions used throughout YUI."," *"," * @class Lang"," * @static"," */","","var L = Y.Lang || (Y.Lang = {}),","","STRING_PROTO = String.prototype,","TOSTRING = Object.prototype.toString,","","TYPES = {"," 'undefined' : 'undefined',"," 'number' : 'number',"," 'boolean' : 'boolean',"," 'string' : 'string',"," '[object Function]': 'function',"," '[object RegExp]' : 'regexp',"," '[object Array]' : 'array',"," '[object Date]' : 'date',"," '[object Error]' : 'error'","},","","SUBREGEX = /\\{\\s*([^|}]+?)\\s*(?:\\|([^}]*))?\\s*\\}/g,","TRIMREGEX = /^\\s+|\\s+$/g,","NATIVE_FN_REGEX = /\\{\\s*\\[(?:native code|function)\\]\\s*\\}/i;","","// -- Protected Methods --------------------------------------------------------","","/**","Returns `true` if the given function appears to be implemented in native code,","`false` otherwise. Will always return `false` -- even in ES5-capable browsers --","if the `useNativeES5` YUI config option is set to `false`.","","This isn't guaranteed to be 100% accurate and won't work for anything other than","functions, but it can be useful for determining whether a function like","`Array.prototype.forEach` is native or a JS shim provided by another library.","","There's a great article by @kangax discussing certain flaws with this technique:","","","While his points are valid, it's still possible to benefit from this function","as long as it's used carefully and sparingly, and in such a way that false","negatives have minimal consequences. It's used internally to avoid using","potentially broken non-native ES5 shims that have been added to the page by","other libraries.","","@method _isNative","@param {Function} fn Function to test.","@return {Boolean} `true` if _fn_ appears to be native, `false` otherwise.","@static","@protected","@since 3.5.0","**/","L._isNative = function (fn) {"," return !!(Y.config.useNativeES5 && fn && NATIVE_FN_REGEX.test(fn));","};","","// -- Public Methods -----------------------------------------------------------","","/**"," * Determines whether or not the provided item is an array."," *"," * Returns `false` for array-like collections such as the function `arguments`"," * collection or `HTMLElement` collections. Use `Y.Array.test()` if you want to"," * test for an array-like collection."," *"," * @method isArray"," * @param o The object to test."," * @return {boolean} true if o is an array."," * @static"," */","L.isArray = L._isNative(Array.isArray) ? Array.isArray : function (o) {"," return L.type(o) === 'array';","};","","/**"," * Determines whether or not the provided item is a boolean."," * @method isBoolean"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a boolean."," */","L.isBoolean = function(o) {"," return typeof o === 'boolean';","};","","/**"," * Determines whether or not the supplied item is a date instance."," * @method isDate"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a date."," */","L.isDate = function(o) {"," return L.type(o) === 'date' && o.toString() !== 'Invalid Date' && !isNaN(o);","};","","/**"," *

          "," * Determines whether or not the provided item is a function."," * Note: Internet Explorer thinks certain functions are objects:"," *

          "," *"," *
          "," * var obj = document.createElement(\"object\");"," * Y.Lang.isFunction(obj.getAttribute) // reports false in IE"," *  "," * var input = document.createElement(\"input\"); // append to body"," * Y.Lang.isFunction(input.focus) // reports false in IE"," * 
          "," *"," *

          "," * You will have to implement additional tests if these functions"," * matter to you."," *

          "," *"," * @method isFunction"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a function."," */","L.isFunction = function(o) {"," return L.type(o) === 'function';","};","","/**"," * Determines whether or not the provided item is null."," * @method isNull"," * @static"," * @param o The object to test."," * @return {boolean} true if o is null."," */","L.isNull = function(o) {"," return o === null;","};","","/**"," * Determines whether or not the provided item is a legal number."," * @method isNumber"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a number."," */","L.isNumber = function(o) {"," return typeof o === 'number' && isFinite(o);","};","","/**"," * Determines whether or not the provided item is of type object"," * or function. Note that arrays are also objects, so"," * Y.Lang.isObject([]) === true."," * @method isObject"," * @static"," * @param o The object to test."," * @param failfn {boolean} fail if the input is a function."," * @return {boolean} true if o is an object."," * @see isPlainObject"," */","L.isObject = function(o, failfn) {"," var t = typeof o;"," return (o && (t === 'object' ||"," (!failfn && (t === 'function' || L.isFunction(o))))) || false;","};","","/**"," * Determines whether or not the provided item is a string."," * @method isString"," * @static"," * @param o The object to test."," * @return {boolean} true if o is a string."," */","L.isString = function(o) {"," return typeof o === 'string';","};","","/**"," * Determines whether or not the provided item is undefined."," * @method isUndefined"," * @static"," * @param o The object to test."," * @return {boolean} true if o is undefined."," */","L.isUndefined = function(o) {"," return typeof o === 'undefined';","};","","/**"," * A convenience method for detecting a legitimate non-null value."," * Returns false for null/undefined/NaN, true for other values,"," * including 0/false/''"," * @method isValue"," * @static"," * @param o The item to test."," * @return {boolean} true if it is not null/undefined/NaN || false."," */","L.isValue = function(o) {"," var t = L.type(o);",""," switch (t) {"," case 'number':"," return isFinite(o);",""," case 'null': // fallthru"," case 'undefined':"," return false;",""," default:"," return !!t;"," }","};","","/**"," * Returns the current time in milliseconds."," *"," * @method now"," * @return {Number} Current time in milliseconds."," * @static"," * @since 3.3.0"," */","L.now = Date.now || function () {"," return new Date().getTime();","};","","/**"," * Lightweight version of Y.substitute. Uses the same template"," * structure as Y.substitute, but doesn't support recursion,"," * auto-object coersion, or formats."," * @method sub"," * @param {string} s String to be modified."," * @param {object} o Object containing replacement values."," * @return {string} the substitute result."," * @static"," * @since 3.2.0"," */","L.sub = function(s, o) {"," return s.replace ? s.replace(SUBREGEX, function (match, key) {"," return L.isUndefined(o[key]) ? match : o[key];"," }) : s;","};","","/**"," * Returns a string without any leading or trailing whitespace. If"," * the input is not a string, the input will be returned untouched."," * @method trim"," * @static"," * @param s {string} the string to trim."," * @return {string} the trimmed string."," */","L.trim = STRING_PROTO.trim ? function(s) {"," return s && s.trim ? s.trim() : s;","} : function (s) {"," try {"," return s.replace(TRIMREGEX, '');"," } catch (e) {"," return s;"," }","};","","/**"," * Returns a string without any leading whitespace."," * @method trimLeft"," * @static"," * @param s {string} the string to trim."," * @return {string} the trimmed string."," */","L.trimLeft = STRING_PROTO.trimLeft ? function (s) {"," return s.trimLeft();","} : function (s) {"," return s.replace(/^\\s+/, '');","};","","/**"," * Returns a string without any trailing whitespace."," * @method trimRight"," * @static"," * @param s {string} the string to trim."," * @return {string} the trimmed string."," */","L.trimRight = STRING_PROTO.trimRight ? function (s) {"," return s.trimRight();","} : function (s) {"," return s.replace(/\\s+$/, '');","};","","/**","Returns one of the following strings, representing the type of the item passed","in:",""," * \"array\""," * \"boolean\""," * \"date\""," * \"error\""," * \"function\""," * \"null\""," * \"number\""," * \"object\""," * \"regexp\""," * \"string\""," * \"undefined\"","","Known issues:",""," * `typeof HTMLElementCollection` returns function in Safari, but"," `Y.Lang.type()` reports \"object\", which could be a good thing --"," but it actually caused the logic in Y.Lang.isObject to fail.","","@method type","@param o the item to test.","@return {string} the detected type.","@static","**/","L.type = function(o) {"," return TYPES[typeof o] || TYPES[TOSTRING.call(o)] || (o ? 'object' : 'null');","};","/**","@module yui","@submodule yui-base","*/","","var Lang = Y.Lang,"," Native = Array.prototype,",""," hasOwn = Object.prototype.hasOwnProperty;","","/**","Provides utility methods for working with arrays. Additional array helpers can","be found in the `collection` and `array-extras` modules.","","`Y.Array(thing)` returns a native array created from _thing_. Depending on","_thing_'s type, one of the following will happen:",""," * Arrays are returned unmodified unless a non-zero _startIndex_ is"," specified."," * Array-like collections (see `Array.test()`) are converted to arrays."," * For everything else, a new array is created with _thing_ as the sole"," item.","","Note: elements that are also collections, such as `` and ``, to be array-like.","","@method test","@param {Object} obj Object to test.","@return {Number} A number indicating the results of the test:",""," * 0: Neither an array nor an array-like collection."," * 1: Real array."," * 2: Array-like collection.","","@static","**/","YArray.test = function (obj) {"," var result = 0;",""," if (Lang.isArray(obj)) {"," result = 1;"," } else if (Lang.isObject(obj)) {"," try {"," // indexed, but no tagName (element) or scrollTo/document (window. From DOM.isWindow test which we can't use here),"," // or functions without apply/call (Safari"," // HTMLElementCollection bug)."," if ('length' in obj && !obj.tagName && !(obj.scrollTo && obj.document) && !obj.apply) {"," result = 2;"," }"," } catch (ex) {}"," }",""," return result;","};","/**"," * The YUI module contains the components required for building the YUI"," * seed file. This includes the script loading mechanism, a simple queue,"," * and the core utilities for the library."," * @module yui"," * @submodule yui-base"," */","","/**"," * A simple FIFO queue. Items are added to the Queue with add(1..n items) and"," * removed using next()."," *"," * @class Queue"," * @constructor"," * @param {MIXED} item* 0..n items to seed the queue."," */","function Queue() {"," this._init();"," this.add.apply(this, arguments);","}","","Queue.prototype = {"," /**"," * Initialize the queue"," *"," * @method _init"," * @protected"," */"," _init: function() {"," /**"," * The collection of enqueued items"," *"," * @property _q"," * @type Array"," * @protected"," */"," this._q = [];"," },",""," /**"," * Get the next item in the queue. FIFO support"," *"," * @method next"," * @return {MIXED} the next item in the queue."," */"," next: function() {"," return this._q.shift();"," },",""," /**"," * Get the last in the queue. LIFO support."," *"," * @method last"," * @return {MIXED} the last item in the queue."," */"," last: function() {"," return this._q.pop();"," },",""," /**"," * Add 0..n items to the end of the queue."," *"," * @method add"," * @param {MIXED} item* 0..n items."," * @return {object} this queue."," */"," add: function() {"," this._q.push.apply(this._q, arguments);",""," return this;"," },",""," /**"," * Returns the current number of queued items."," *"," * @method size"," * @return {Number} The size."," */"," size: function() {"," return this._q.length;"," }","};","","Y.Queue = Queue;","","YUI.Env._loaderQueue = YUI.Env._loaderQueue || new Queue();","","/**","The YUI module contains the components required for building the YUI seed file.","This includes the script loading mechanism, a simple queue, and the core","utilities for the library.","","@module yui","@submodule yui-base","**/","","var CACHED_DELIMITER = '__',",""," hasOwn = Object.prototype.hasOwnProperty,"," isObject = Y.Lang.isObject;","","/**","Returns a wrapper for a function which caches the return value of that function,","keyed off of the combined string representation of the argument values provided","when the wrapper is called.","","Calling this function again with the same arguments will return the cached value","rather than executing the wrapped function.","","Note that since the cache is keyed off of the string representation of arguments","passed to the wrapper function, arguments that aren't strings and don't provide","a meaningful `toString()` method may result in unexpected caching behavior. For","example, the objects `{}` and `{foo: 'bar'}` would both be converted to the","string `[object Object]` when used as a cache key.","","@method cached","@param {Function} source The function to memoize.","@param {Object} [cache={}] Object in which to store cached values. You may seed"," this object with pre-existing cached values if desired.","@param {any} [refetch] If supplied, this value is compared with the cached value"," using a `==` comparison. If the values are equal, the wrapped function is"," executed again even though a cached value exists.","@return {Function} Wrapped function.","@for YUI","**/","Y.cached = function (source, cache, refetch) {"," cache || (cache = {});",""," return function (arg) {"," var key = arguments.length > 1 ?"," Array.prototype.join.call(arguments, CACHED_DELIMITER) :"," String(arg);",""," if (!(key in cache) || (refetch && cache[key] == refetch)) {"," cache[key] = source.apply(source, arguments);"," }",""," return cache[key];"," };","};","","/**","Returns the `location` object from the window/frame in which this YUI instance","operates, or `undefined` when executing in a non-browser environment","(e.g. Node.js).","","It is _not_ recommended to hold references to the `window.location` object","outside of the scope of a function in which its properties are being accessed or","its methods are being called. This is because of a nasty bug/issue that exists","in both Safari and MobileSafari browsers:","[WebKit Bug 34679](https://bugs.webkit.org/show_bug.cgi?id=34679).","","@method getLocation","@return {location} The `location` object from the window/frame in which this YUI"," instance operates.","@since 3.5.0","**/","Y.getLocation = function () {"," // It is safer to look this up every time because yui-base is attached to a"," // YUI instance before a user's config is applied; i.e. `Y.config.win` does"," // not point the correct window object when this file is loaded."," var win = Y.config.win;",""," // It is not safe to hold a reference to the `location` object outside the"," // scope in which it is being used. The WebKit engine used in Safari and"," // MobileSafari will \"disconnect\" the `location` object from the `window`"," // when a page is restored from back/forward history cache."," return win && win.location;","};","","/**","Returns a new object containing all of the properties of all the supplied","objects. The properties from later objects will overwrite those in earlier","objects.","","Passing in a single object will create a shallow copy of it. For a deep copy,","use `clone()`.","","@method merge","@param {Object} objects* One or more objects to merge.","@return {Object} A new merged object.","**/","Y.merge = function () {"," var i = 0,"," len = arguments.length,"," result = {},"," key,"," obj;",""," for (; i < len; ++i) {"," obj = arguments[i];",""," for (key in obj) {"," if (hasOwn.call(obj, key)) {"," result[key] = obj[key];"," }"," }"," }",""," return result;","};","","/**","Mixes _supplier_'s properties into _receiver_.","","Properties on _receiver_ or _receiver_'s prototype will not be overwritten or","shadowed unless the _overwrite_ parameter is `true`, and will not be merged","unless the _merge_ parameter is `true`.","","In the default mode (0), only properties the supplier owns are copied (prototype","properties are not copied). The following copying modes are available:",""," * `0`: _Default_. Object to object."," * `1`: Prototype to prototype."," * `2`: Prototype to prototype and object to object."," * `3`: Prototype to object."," * `4`: Object to prototype.","","@method mix","@param {Function|Object} receiver The object or function to receive the mixed"," properties.","@param {Function|Object} supplier The object or function supplying the"," properties to be mixed.","@param {Boolean} [overwrite=false] If `true`, properties that already exist"," on the receiver will be overwritten with properties from the supplier.","@param {String[]} [whitelist] An array of property names to copy. If"," specified, only the whitelisted properties will be copied, and all others"," will be ignored.","@param {Number} [mode=0] Mix mode to use. See above for available modes.","@param {Boolean} [merge=false] If `true`, objects and arrays that already"," exist on the receiver will have the corresponding object/array from the"," supplier merged into them, rather than being skipped or overwritten. When"," both _overwrite_ and _merge_ are `true`, _merge_ takes precedence.","@return {Function|Object|YUI} The receiver, or the YUI instance if the"," specified receiver is falsy.","**/","Y.mix = function(receiver, supplier, overwrite, whitelist, mode, merge) {"," var alwaysOverwrite, exists, from, i, key, len, to;",""," // If no supplier is given, we return the receiver. If no receiver is given,"," // we return Y. Returning Y doesn't make much sense to me, but it's"," // grandfathered in for backcompat reasons."," if (!receiver || !supplier) {"," return receiver || Y;"," }",""," if (mode) {"," // In mode 2 (prototype to prototype and object to object), we recurse"," // once to do the proto to proto mix. The object to object mix will be"," // handled later on."," if (mode === 2) {"," Y.mix(receiver.prototype, supplier.prototype, overwrite,"," whitelist, 0, merge);"," }",""," // Depending on which mode is specified, we may be copying from or to"," // the prototypes of the supplier and receiver."," from = mode === 1 || mode === 3 ? supplier.prototype : supplier;"," to = mode === 1 || mode === 4 ? receiver.prototype : receiver;",""," // If either the supplier or receiver doesn't actually have a"," // prototype property, then we could end up with an undefined `from`"," // or `to`. If that happens, we abort and return the receiver."," if (!from || !to) {"," return receiver;"," }"," } else {"," from = supplier;"," to = receiver;"," }",""," // If `overwrite` is truthy and `merge` is falsy, then we can skip a"," // property existence check on each iteration and save some time."," alwaysOverwrite = overwrite && !merge;",""," if (whitelist) {"," for (i = 0, len = whitelist.length; i < len; ++i) {"," key = whitelist[i];",""," // We call `Object.prototype.hasOwnProperty` instead of calling"," // `hasOwnProperty` on the object itself, since the object's"," // `hasOwnProperty` method may have been overridden or removed."," // Also, some native objects don't implement a `hasOwnProperty`"," // method."," if (!hasOwn.call(from, key)) {"," continue;"," }",""," // The `key in to` check here is (sadly) intentional for backwards"," // compatibility reasons. It prevents undesired shadowing of"," // prototype members on `to`."," exists = alwaysOverwrite ? false : key in to;",""," if (merge && exists && isObject(to[key], true)"," && isObject(from[key], true)) {"," // If we're in merge mode, and the key is present on both"," // objects, and the value on both objects is either an object or"," // an array (but not a function), then we recurse to merge the"," // `from` value into the `to` value instead of overwriting it."," //"," // Note: It's intentional that the whitelist isn't passed to the"," // recursive call here. This is legacy behavior that lots of"," // code still depends on."," Y.mix(to[key], from[key], overwrite, null, 0, merge);"," } else if (overwrite || !exists) {"," // We're not in merge mode, so we'll only copy the `from` value"," // to the `to` value if we're in overwrite mode or if the"," // current key doesn't exist on the `to` object."," to[key] = from[key];"," }"," }"," } else {"," for (key in from) {"," // The code duplication here is for runtime performance reasons."," // Combining whitelist and non-whitelist operations into a single"," // loop or breaking the shared logic out into a function both result"," // in worse performance, and Y.mix is critical enough that the byte"," // tradeoff is worth it."," if (!hasOwn.call(from, key)) {"," continue;"," }",""," // The `key in to` check here is (sadly) intentional for backwards"," // compatibility reasons. It prevents undesired shadowing of"," // prototype members on `to`."," exists = alwaysOverwrite ? false : key in to;",""," if (merge && exists && isObject(to[key], true)"," && isObject(from[key], true)) {"," Y.mix(to[key], from[key], overwrite, null, 0, merge);"," } else if (overwrite || !exists) {"," to[key] = from[key];"," }"," }",""," // If this is an IE browser with the JScript enumeration bug, force"," // enumeration of the buggy properties by making a recursive call with"," // the buggy properties as the whitelist."," if (Y.Object._hasEnumBug) {"," Y.mix(to, from, overwrite, Y.Object._forceEnum, mode, merge);"," }"," }",""," return receiver;","};","/**"," * The YUI module contains the components required for building the YUI"," * seed file. This includes the script loading mechanism, a simple queue,"," * and the core utilities for the library."," * @module yui"," * @submodule yui-base"," */","","/**"," * Adds utilities to the YUI instance for working with objects."," *"," * @class Object"," */","","var Lang = Y.Lang,"," hasOwn = Object.prototype.hasOwnProperty,",""," UNDEFINED, // <-- Note the comma. We're still declaring vars.","","/**"," * Returns a new object that uses _obj_ as its prototype. This method wraps the"," * native ES5 `Object.create()` method if available, but doesn't currently"," * pass through `Object.create()`'s second argument (properties) in order to"," * ensure compatibility with older browsers."," *"," * @method ()"," * @param {Object} obj Prototype object."," * @return {Object} New object using _obj_ as its prototype."," * @static"," */","O = Y.Object = Lang._isNative(Object.create) ? function (obj) {"," // We currently wrap the native Object.create instead of simply aliasing it"," // to ensure consistency with our fallback shim, which currently doesn't"," // support Object.create()'s second argument (properties). Once we have a"," // safe fallback for the properties arg, we can stop wrapping"," // Object.create()."," return Object.create(obj);","} : (function () {"," // Reusable constructor function for the Object.create() shim."," function F() {}",""," // The actual shim."," return function (obj) {"," F.prototype = obj;"," return new F();"," };","}()),","","/**"," * Property names that IE doesn't enumerate in for..in loops, even when they"," * should be enumerable. When `_hasEnumBug` is `true`, it's necessary to"," * manually enumerate these properties."," *"," * @property _forceEnum"," * @type String[]"," * @protected"," * @static"," */","forceEnum = O._forceEnum = ["," 'hasOwnProperty',"," 'isPrototypeOf',"," 'propertyIsEnumerable',"," 'toString',"," 'toLocaleString',"," 'valueOf'","],","","/**"," * `true` if this browser has the JScript enumeration bug that prevents"," * enumeration of the properties named in the `_forceEnum` array, `false`"," * otherwise."," *"," * See:"," * - "," * - "," *"," * @property _hasEnumBug"," * @type Boolean"," * @protected"," * @static"," */","hasEnumBug = O._hasEnumBug = !{valueOf: 0}.propertyIsEnumerable('valueOf'),","","/**"," * `true` if this browser incorrectly considers the `prototype` property of"," * functions to be enumerable. Currently known to affect Opera 11.50."," *"," * @property _hasProtoEnumBug"," * @type Boolean"," * @protected"," * @static"," */","hasProtoEnumBug = O._hasProtoEnumBug = (function () {}).propertyIsEnumerable('prototype'),","","/**"," * Returns `true` if _key_ exists on _obj_, `false` if _key_ doesn't exist or"," * exists only on _obj_'s prototype. This is essentially a safer version of"," * `obj.hasOwnProperty()`."," *"," * @method owns"," * @param {Object} obj Object to test."," * @param {String} key Property name to look for."," * @return {Boolean} `true` if _key_ exists on _obj_, `false` otherwise."," * @static"," */","owns = O.owns = function (obj, key) {"," return !!obj && hasOwn.call(obj, key);","}; // <-- End of var declarations.","","/**"," * Alias for `owns()`."," *"," * @method hasKey"," * @param {Object} obj Object to test."," * @param {String} key Property name to look for."," * @return {Boolean} `true` if _key_ exists on _obj_, `false` otherwise."," * @static"," */","O.hasKey = owns;","","/**"," * Returns an array containing the object's enumerable keys. Does not include"," * prototype keys or non-enumerable keys."," *"," * Note that keys are returned in enumeration order (that is, in the same order"," * that they would be enumerated by a `for-in` loop), which may not be the same"," * as the order in which they were defined."," *"," * This method is an alias for the native ES5 `Object.keys()` method if"," * available."," *"," * @example"," *"," * Y.Object.keys({a: 'foo', b: 'bar', c: 'baz'});"," * // => ['a', 'b', 'c']"," *"," * @method keys"," * @param {Object} obj An object."," * @return {String[]} Array of keys."," * @static"," */","O.keys = Lang._isNative(Object.keys) ? Object.keys : function (obj) {"," if (!Lang.isObject(obj)) {"," throw new TypeError('Object.keys called on a non-object');"," }",""," var keys = [],"," i, key, len;",""," if (hasProtoEnumBug && typeof obj === 'function') {"," for (key in obj) {"," if (owns(obj, key) && key !== 'prototype') {"," keys.push(key);"," }"," }"," } else {"," for (key in obj) {"," if (owns(obj, key)) {"," keys.push(key);"," }"," }"," }",""," if (hasEnumBug) {"," for (i = 0, len = forceEnum.length; i < len; ++i) {"," key = forceEnum[i];",""," if (owns(obj, key)) {"," keys.push(key);"," }"," }"," }",""," return keys;","};","","/**"," * Returns an array containing the values of the object's enumerable keys."," *"," * Note that values are returned in enumeration order (that is, in the same"," * order that they would be enumerated by a `for-in` loop), which may not be the"," * same as the order in which they were defined."," *"," * @example"," *"," * Y.Object.values({a: 'foo', b: 'bar', c: 'baz'});"," * // => ['foo', 'bar', 'baz']"," *"," * @method values"," * @param {Object} obj An object."," * @return {Array} Array of values."," * @static"," */","O.values = function (obj) {"," var keys = O.keys(obj),"," i = 0,"," len = keys.length,"," values = [];",""," for (; i < len; ++i) {"," values.push(obj[keys[i]]);"," }",""," return values;","};","","/**"," * Returns the number of enumerable keys owned by an object."," *"," * @method size"," * @param {Object} obj An object."," * @return {Number} The object's size."," * @static"," */","O.size = function (obj) {"," try {"," return O.keys(obj).length;"," } catch (ex) {"," return 0; // Legacy behavior for non-objects."," }","};","","/**"," * Returns `true` if the object owns an enumerable property with the specified"," * value."," *"," * @method hasValue"," * @param {Object} obj An object."," * @param {any} value The value to search for."," * @return {Boolean} `true` if _obj_ contains _value_, `false` otherwise."," * @static"," */","O.hasValue = function (obj, value) {"," return Y.Array.indexOf(O.values(obj), value) > -1;","};","","/**"," * Executes a function on each enumerable property in _obj_. The function"," * receives the value, the key, and the object itself as parameters (in that"," * order)."," *"," * By default, only properties owned by _obj_ are enumerated. To include"," * prototype properties, set the _proto_ parameter to `true`."," *"," * @method each"," * @param {Object} obj Object to enumerate."," * @param {Function} fn Function to execute on each enumerable property."," * @param {mixed} fn.value Value of the current property."," * @param {String} fn.key Key of the current property."," * @param {Object} fn.obj Object being enumerated."," * @param {Object} [thisObj] `this` object to use when calling _fn_."," * @param {Boolean} [proto=false] Include prototype properties."," * @return {YUI} the YUI instance."," * @chainable"," * @static"," */","O.each = function (obj, fn, thisObj, proto) {"," var key;",""," for (key in obj) {"," if (proto || owns(obj, key)) {"," fn.call(thisObj || Y, obj[key], key, obj);"," }"," }",""," return Y;","};","","/**"," * Executes a function on each enumerable property in _obj_, but halts if the"," * function returns a truthy value. The function receives the value, the key,"," * and the object itself as paramters (in that order)."," *"," * By default, only properties owned by _obj_ are enumerated. To include"," * prototype properties, set the _proto_ parameter to `true`."," *"," * @method some"," * @param {Object} obj Object to enumerate."," * @param {Function} fn Function to execute on each enumerable property."," * @param {mixed} fn.value Value of the current property."," * @param {String} fn.key Key of the current property."," * @param {Object} fn.obj Object being enumerated."," * @param {Object} [thisObj] `this` object to use when calling _fn_."," * @param {Boolean} [proto=false] Include prototype properties."," * @return {Boolean} `true` if any execution of _fn_ returns a truthy value,"," * `false` otherwise."," * @static"," */","O.some = function (obj, fn, thisObj, proto) {"," var key;",""," for (key in obj) {"," if (proto || owns(obj, key)) {"," if (fn.call(thisObj || Y, obj[key], key, obj)) {"," return true;"," }"," }"," }",""," return false;","};","","/**"," * Retrieves the sub value at the provided path,"," * from the value object provided."," *"," * @method getValue"," * @static"," * @param o The object from which to extract the property value."," * @param path {Array} A path array, specifying the object traversal path"," * from which to obtain the sub value."," * @return {Any} The value stored in the path, undefined if not found,"," * undefined if the source is not an object. Returns the source object"," * if an empty path is provided."," */","O.getValue = function(o, path) {"," if (!Lang.isObject(o)) {"," return UNDEFINED;"," }",""," var i,"," p = Y.Array(path),"," l = p.length;",""," for (i = 0; o !== UNDEFINED && i < l; i++) {"," o = o[p[i]];"," }",""," return o;","};","","/**"," * Sets the sub-attribute value at the provided path on the"," * value object. Returns the modified value object, or"," * undefined if the path is invalid."," *"," * @method setValue"," * @static"," * @param o The object on which to set the sub value."," * @param path {Array} A path array, specifying the object traversal path"," * at which to set the sub value."," * @param val {Any} The new value for the sub-attribute."," * @return {Object} The modified object, with the new sub value set, or"," * undefined, if the path was invalid."," */","O.setValue = function(o, path, val) {"," var i,"," p = Y.Array(path),"," leafIdx = p.length - 1,"," ref = o;",""," if (leafIdx >= 0) {"," for (i = 0; ref !== UNDEFINED && i < leafIdx; i++) {"," ref = ref[p[i]];"," }",""," if (ref !== UNDEFINED) {"," ref[p[i]] = val;"," } else {"," return UNDEFINED;"," }"," }",""," return o;","};","","/**"," * Returns `true` if the object has no enumerable properties of its own."," *"," * @method isEmpty"," * @param {Object} obj An object."," * @return {Boolean} `true` if the object is empty."," * @static"," * @since 3.2.0"," */","O.isEmpty = function (obj) {"," return !O.keys(Object(obj)).length;","};","/**"," * The YUI module contains the components required for building the YUI seed"," * file. This includes the script loading mechanism, a simple queue, and the"," * core utilities for the library."," * @module yui"," * @submodule yui-base"," */","","/**"," * YUI user agent detection."," * Do not fork for a browser if it can be avoided. Use feature detection when"," * you can. Use the user agent as a last resort. For all fields listed"," * as @type float, UA stores a version number for the browser engine,"," * 0 otherwise. This value may or may not map to the version number of"," * the browser using the engine. The value is presented as a float so"," * that it can easily be used for boolean evaluation as well as for"," * looking for a particular range of versions. Because of this,"," * some of the granularity of the version info may be lost. The fields that"," * are @type string default to null. The API docs list the values that"," * these fields can have."," * @class UA"," * @static"," */","","/**","* Static method on `YUI.Env` for parsing a UA string. Called at instantiation","* to populate `Y.UA`.","*","* @static","* @method parseUA","* @param {String} [subUA=navigator.userAgent] UA string to parse","* @return {Object} The Y.UA object","*/","YUI.Env.parseUA = function(subUA) {",""," var numberify = function(s) {"," var c = 0;"," return parseFloat(s.replace(/\\./g, function() {"," return (c++ === 1) ? '' : '.';"," }));"," },",""," win = Y.config.win,",""," nav = win && win.navigator,",""," o = {",""," /**"," * Internet Explorer version number or 0. Example: 6"," * @property ie"," * @type float"," * @static"," */"," ie: 0,",""," /**"," * Opera version number or 0. Example: 9.2"," * @property opera"," * @type float"," * @static"," */"," opera: 0,",""," /**"," * Gecko engine revision number. Will evaluate to 1 if Gecko"," * is detected but the revision could not be found. Other browsers"," * will be 0. Example: 1.8"," *
          ","         * Firefox 1.0.0.4: 1.7.8   <-- Reports 1.7","         * Firefox 1.5.0.9: 1.8.0.9 <-- 1.8","         * Firefox 2.0.0.3: 1.8.1.3 <-- 1.81","         * Firefox 3.0   <-- 1.9","         * Firefox 3.5   <-- 1.91","         * 
          "," * @property gecko"," * @type float"," * @static"," */"," gecko: 0,",""," /**"," * AppleWebKit version. KHTML browsers that are not WebKit browsers"," * will evaluate to 1, other browsers 0. Example: 418.9"," *
          ","         * Safari 1.3.2 (312.6): 312.8.1 <-- Reports 312.8 -- currently the","         *                                   latest available for Mac OSX 10.3.","         * Safari 2.0.2:         416     <-- hasOwnProperty introduced","         * Safari 2.0.4:         418     <-- preventDefault fixed","         * Safari 2.0.4 (419.3): 418.9.1 <-- One version of Safari may run","         *                                   different versions of webkit","         * Safari 2.0.4 (419.3): 419     <-- Tiger installations that have been","         *                                   updated, but not updated","         *                                   to the latest patch.","         * Webkit 212 nightly:   522+    <-- Safari 3.0 precursor (with native","         * SVG and many major issues fixed).","         * Safari 3.0.4 (523.12) 523.12  <-- First Tiger release - automatic","         * update from 2.x via the 10.4.11 OS patch.","         * Webkit nightly 1/2008:525+    <-- Supports DOMContentLoaded event.","         *                                   yahoo.com user agent hack removed.","         * 
          "," * http://en.wikipedia.org/wiki/Safari_version_history"," * @property webkit"," * @type float"," * @static"," */"," webkit: 0,",""," /**"," * Safari will be detected as webkit, but this property will also"," * be populated with the Safari version number"," * @property safari"," * @type float"," * @static"," */"," safari: 0,",""," /**"," * Chrome will be detected as webkit, but this property will also"," * be populated with the Chrome version number"," * @property chrome"," * @type float"," * @static"," */"," chrome: 0,",""," /**"," * The mobile property will be set to a string containing any relevant"," * user agent information when a modern mobile browser is detected."," * Currently limited to Safari on the iPhone/iPod Touch, Nokia N-series"," * devices with the WebKit-based browser, and Opera Mini."," * @property mobile"," * @type string"," * @default null"," * @static"," */"," mobile: null,",""," /**"," * Adobe AIR version number or 0. Only populated if webkit is detected."," * Example: 1.0"," * @property air"," * @type float"," */"," air: 0,"," /**"," * PhantomJS version number or 0. Only populated if webkit is detected."," * Example: 1.0"," * @property phantomjs"," * @type float"," */"," phantomjs: 0,"," /**"," * Detects Apple iPad's OS version"," * @property ipad"," * @type float"," * @static"," */"," ipad: 0,"," /**"," * Detects Apple iPhone's OS version"," * @property iphone"," * @type float"," * @static"," */"," iphone: 0,"," /**"," * Detects Apples iPod's OS version"," * @property ipod"," * @type float"," * @static"," */"," ipod: 0,"," /**"," * General truthy check for iPad, iPhone or iPod"," * @property ios"," * @type Boolean"," * @default null"," * @static"," */"," ios: null,"," /**"," * Detects Googles Android OS version"," * @property android"," * @type float"," * @static"," */"," android: 0,"," /**"," * Detects Kindle Silk"," * @property silk"," * @type float"," * @static"," */"," silk: 0,"," /**"," * Detects Kindle Silk Acceleration"," * @property accel"," * @type Boolean"," * @static"," */"," accel: false,"," /**"," * Detects Palms WebOS version"," * @property webos"," * @type float"," * @static"," */"," webos: 0,",""," /**"," * Google Caja version number or 0."," * @property caja"," * @type float"," */"," caja: nav && nav.cajaVersion,",""," /**"," * Set to true if the page appears to be in SSL"," * @property secure"," * @type boolean"," * @static"," */"," secure: false,",""," /**"," * The operating system. Currently only detecting windows or macintosh"," * @property os"," * @type string"," * @default null"," * @static"," */"," os: null,",""," /**"," * The Nodejs Version"," * @property nodejs"," * @type float"," * @default 0"," * @static"," */"," nodejs: 0,"," /*"," * Window8/IE10 Application host environment"," * @property winjs"," * @type Boolean"," * @static"," */"," winjs: !!((typeof Windows !== \"undefined\") && Windows.System),"," /**"," * Are touch/msPointer events available on this device"," * @property touchEnabled"," * @type Boolean"," * @static"," */"," touchEnabled: false"," },",""," ua = subUA || nav && nav.userAgent,",""," loc = win && win.location,",""," href = loc && loc.href,",""," m;",""," /**"," * The User Agent string that was parsed"," * @property userAgent"," * @type String"," * @static"," */"," o.userAgent = ua;","",""," o.secure = href && (href.toLowerCase().indexOf('https') === 0);",""," if (ua) {",""," if ((/windows|win32/i).test(ua)) {"," o.os = 'windows';"," } else if ((/macintosh|mac_powerpc/i).test(ua)) {"," o.os = 'macintosh';"," } else if ((/android/i).test(ua)) {"," o.os = 'android';"," } else if ((/symbos/i).test(ua)) {"," o.os = 'symbos';"," } else if ((/linux/i).test(ua)) {"," o.os = 'linux';"," } else if ((/rhino/i).test(ua)) {"," o.os = 'rhino';"," }",""," // Modern KHTML browsers should qualify as Safari X-Grade"," if ((/KHTML/).test(ua)) {"," o.webkit = 1;"," }"," if ((/IEMobile|XBLWP7/).test(ua)) {"," o.mobile = 'windows';"," }"," if ((/Fennec/).test(ua)) {"," o.mobile = 'gecko';"," }"," // Modern WebKit browsers are at least X-Grade"," m = ua.match(/AppleWebKit\\/([^\\s]*)/);"," if (m && m[1]) {"," o.webkit = numberify(m[1]);"," o.safari = o.webkit;",""," if (/PhantomJS/.test(ua)) {"," m = ua.match(/PhantomJS\\/([^\\s]*)/);"," if (m && m[1]) {"," o.phantomjs = numberify(m[1]);"," }"," }",""," // Mobile browser check"," if (/ Mobile\\//.test(ua) || (/iPad|iPod|iPhone/).test(ua)) {"," o.mobile = 'Apple'; // iPhone or iPod Touch",""," m = ua.match(/OS ([^\\s]*)/);"," if (m && m[1]) {"," m = numberify(m[1].replace('_', '.'));"," }"," o.ios = m;"," o.os = 'ios';"," o.ipad = o.ipod = o.iphone = 0;",""," m = ua.match(/iPad|iPod|iPhone/);"," if (m && m[0]) {"," o[m[0].toLowerCase()] = o.ios;"," }"," } else {"," m = ua.match(/NokiaN[^\\/]*|webOS\\/\\d\\.\\d/);"," if (m) {"," // Nokia N-series, webOS, ex: NokiaN95"," o.mobile = m[0];"," }"," if (/webOS/.test(ua)) {"," o.mobile = 'WebOS';"," m = ua.match(/webOS\\/([^\\s]*);/);"," if (m && m[1]) {"," o.webos = numberify(m[1]);"," }"," }"," if (/ Android/.test(ua)) {"," if (/Mobile/.test(ua)) {"," o.mobile = 'Android';"," }"," m = ua.match(/Android ([^\\s]*);/);"," if (m && m[1]) {"," o.android = numberify(m[1]);"," }",""," }"," if (/Silk/.test(ua)) {"," m = ua.match(/Silk\\/([^\\s]*)\\)/);"," if (m && m[1]) {"," o.silk = numberify(m[1]);"," }"," if (!o.android) {"," o.android = 2.34; //Hack for desktop mode in Kindle"," o.os = 'Android';"," }"," if (/Accelerated=true/.test(ua)) {"," o.accel = true;"," }"," }"," }",""," m = ua.match(/(Chrome|CrMo|CriOS)\\/([^\\s]*)/);"," if (m && m[1] && m[2]) {"," o.chrome = numberify(m[2]); // Chrome"," o.safari = 0; //Reset safari back to 0"," if (m[1] === 'CrMo') {"," o.mobile = 'chrome';"," }"," } else {"," m = ua.match(/AdobeAIR\\/([^\\s]*)/);"," if (m) {"," o.air = m[0]; // Adobe AIR 1.0 or better"," }"," }"," }",""," if (!o.webkit) { // not webkit","// @todo check Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1316; fi; U; ssr)"," if (/Opera/.test(ua)) {"," m = ua.match(/Opera[\\s\\/]([^\\s]*)/);"," if (m && m[1]) {"," o.opera = numberify(m[1]);"," }"," m = ua.match(/Version\\/([^\\s]*)/);"," if (m && m[1]) {"," o.opera = numberify(m[1]); // opera 10+"," }",""," if (/Opera Mobi/.test(ua)) {"," o.mobile = 'opera';"," m = ua.replace('Opera Mobi', '').match(/Opera ([^\\s]*)/);"," if (m && m[1]) {"," o.opera = numberify(m[1]);"," }"," }"," m = ua.match(/Opera Mini[^;]*/);",""," if (m) {"," o.mobile = m[0]; // ex: Opera Mini/2.0.4509/1316"," }"," } else { // not opera or webkit"," m = ua.match(/MSIE\\s([^;]*)/);"," if (m && m[1]) {"," o.ie = numberify(m[1]);"," } else { // not opera, webkit, or ie"," m = ua.match(/Gecko\\/([^\\s]*)/);"," if (m) {"," o.gecko = 1; // Gecko detected, look for revision"," m = ua.match(/rv:([^\\s\\)]*)/);"," if (m && m[1]) {"," o.gecko = numberify(m[1]);"," }"," }"," }"," }"," }"," }",""," //Check for known properties to tell if touch events are enabled on this device or if"," //the number of MSPointer touchpoints on this device is greater than 0."," if (win && nav && !(o.chrome && o.chrome < 6)) {"," o.touchEnabled = ((\"ontouchstart\" in win) || ((\"msMaxTouchPoints\" in nav) && (nav.msMaxTouchPoints > 0)));"," }",""," //It was a parsed UA, do not assign the global value."," if (!subUA) {",""," if (typeof process === 'object') {",""," if (process.versions && process.versions.node) {"," //NodeJS"," o.os = process.platform;"," o.nodejs = numberify(process.versions.node);"," }"," }",""," YUI.Env.UA = o;",""," }",""," return o;","};","","","Y.UA = YUI.Env.UA || YUI.Env.parseUA();","","/**","Performs a simple comparison between two version numbers, accounting for","standard versioning logic such as the fact that \"535.8\" is a lower version than","\"535.24\", even though a simple numerical comparison would indicate that it's","greater. Also accounts for cases such as \"1.1\" vs. \"1.1.0\", which are","considered equivalent.","","Returns -1 if version _a_ is lower than version _b_, 0 if they're equivalent,","1 if _a_ is higher than _b_.","","Versions may be numbers or strings containing numbers and dots. For example,","both `535` and `\"535.8.10\"` are acceptable. A version string containing","non-numeric characters, like `\"535.8.beta\"`, may produce unexpected results.","","@method compareVersions","@param {Number|String} a First version number to compare.","@param {Number|String} b Second version number to compare.","@return -1 if _a_ is lower than _b_, 0 if they're equivalent, 1 if _a_ is"," higher than _b_.","**/","Y.UA.compareVersions = function (a, b) {"," var aPart, aParts, bPart, bParts, i, len;",""," if (a === b) {"," return 0;"," }",""," aParts = (a + '').split('.');"," bParts = (b + '').split('.');",""," for (i = 0, len = Math.max(aParts.length, bParts.length); i < len; ++i) {"," aPart = parseInt(aParts[i], 10);"," bPart = parseInt(bParts[i], 10);",""," isNaN(aPart) && (aPart = 0);"," isNaN(bPart) && (bPart = 0);",""," if (aPart < bPart) {"," return -1;"," }",""," if (aPart > bPart) {"," return 1;"," }"," }",""," return 0;","};","YUI.Env.aliases = {"," \"anim\": [\"anim-base\",\"anim-color\",\"anim-curve\",\"anim-easing\",\"anim-node-plugin\",\"anim-scroll\",\"anim-xy\"],"," \"anim-shape-transform\": [\"anim-shape\"],"," \"app\": [\"app-base\",\"app-content\",\"app-transitions\",\"lazy-model-list\",\"model\",\"model-list\",\"model-sync-rest\",\"router\",\"view\",\"view-node-map\"],"," \"attribute\": [\"attribute-base\",\"attribute-complex\"],"," \"autocomplete\": [\"autocomplete-base\",\"autocomplete-sources\",\"autocomplete-list\",\"autocomplete-plugin\"],"," \"base\": [\"base-base\",\"base-pluginhost\",\"base-build\"],"," \"cache\": [\"cache-base\",\"cache-offline\",\"cache-plugin\"],"," \"collection\": [\"array-extras\",\"arraylist\",\"arraylist-add\",\"arraylist-filter\",\"array-invoke\"],"," \"controller\": [\"router\"],"," \"dataschema\": [\"dataschema-base\",\"dataschema-json\",\"dataschema-xml\",\"dataschema-array\",\"dataschema-text\"],"," \"datasource\": [\"datasource-local\",\"datasource-io\",\"datasource-get\",\"datasource-function\",\"datasource-cache\",\"datasource-jsonschema\",\"datasource-xmlschema\",\"datasource-arrayschema\",\"datasource-textschema\",\"datasource-polling\"],"," \"datatable\": [\"datatable-core\",\"datatable-table\",\"datatable-head\",\"datatable-body\",\"datatable-base\",\"datatable-column-widths\",\"datatable-message\",\"datatable-mutable\",\"datatable-sort\",\"datatable-datasource\"],"," \"datatable-deprecated\": [\"datatable-base-deprecated\",\"datatable-datasource-deprecated\",\"datatable-sort-deprecated\",\"datatable-scroll-deprecated\"],"," \"datatype\": [\"datatype-date\",\"datatype-number\",\"datatype-xml\"],"," \"datatype-date\": [\"datatype-date-parse\",\"datatype-date-format\",\"datatype-date-math\"],"," \"datatype-number\": [\"datatype-number-parse\",\"datatype-number-format\"],"," \"datatype-xml\": [\"datatype-xml-parse\",\"datatype-xml-format\"],"," \"dd\": [\"dd-ddm-base\",\"dd-ddm\",\"dd-ddm-drop\",\"dd-drag\",\"dd-proxy\",\"dd-constrain\",\"dd-drop\",\"dd-scroll\",\"dd-delegate\"],"," \"dom\": [\"dom-base\",\"dom-screen\",\"dom-style\",\"selector-native\",\"selector\"],"," \"editor\": [\"frame\",\"editor-selection\",\"exec-command\",\"editor-base\",\"editor-para\",\"editor-br\",\"editor-bidi\",\"editor-tab\",\"createlink-base\"],"," \"event\": [\"event-base\",\"event-delegate\",\"event-synthetic\",\"event-mousewheel\",\"event-mouseenter\",\"event-key\",\"event-focus\",\"event-resize\",\"event-hover\",\"event-outside\",\"event-touch\",\"event-move\",\"event-flick\",\"event-valuechange\",\"event-tap\"],"," \"event-custom\": [\"event-custom-base\",\"event-custom-complex\"],"," \"event-gestures\": [\"event-flick\",\"event-move\"],"," \"handlebars\": [\"handlebars-compiler\"],"," \"highlight\": [\"highlight-base\",\"highlight-accentfold\"],"," \"history\": [\"history-base\",\"history-hash\",\"history-hash-ie\",\"history-html5\"],"," \"io\": [\"io-base\",\"io-xdr\",\"io-form\",\"io-upload-iframe\",\"io-queue\"],"," \"json\": [\"json-parse\",\"json-stringify\"],"," \"loader\": [\"loader-base\",\"loader-rollup\",\"loader-yui3\"],"," \"node\": [\"node-base\",\"node-event-delegate\",\"node-pluginhost\",\"node-screen\",\"node-style\"],"," \"pluginhost\": [\"pluginhost-base\",\"pluginhost-config\"],"," \"querystring\": [\"querystring-parse\",\"querystring-stringify\"],"," \"recordset\": [\"recordset-base\",\"recordset-sort\",\"recordset-filter\",\"recordset-indexer\"],"," \"resize\": [\"resize-base\",\"resize-proxy\",\"resize-constrain\"],"," \"slider\": [\"slider-base\",\"slider-value-range\",\"clickable-rail\",\"range-slider\"],"," \"text\": [\"text-accentfold\",\"text-wordbreak\"],"," \"widget\": [\"widget-base\",\"widget-htmlparser\",\"widget-skin\",\"widget-uievents\"]","};","","","}, '3.7.3', {\"use\": [\"yui-base\", \"get\", \"features\", \"intl-base\", \"yui-log\", \"yui-later\", \"loader-base\", \"loader-rollup\", \"loader-yui3\"]});"]; -/** - * The YUI module contains the components required for building the YUI seed - * file. This includes the script loading mechanism, a simple queue, and - * the core utilities for the library. - * @module yui - * @main yui - * @submodule yui-base - */ - -_yuitest_coverage["build/yui/yui.js"].lines = {"10":0,"11":0,"54":0,"55":0,"60":0,"64":0,"65":0,"68":0,"96":0,"97":0,"126":0,"127":0,"131":0,"132":0,"136":0,"141":0,"142":0,"145":0,"148":0,"150":0,"153":0,"155":0,"179":0,"180":0,"181":0,"182":0,"186":0,"188":0,"189":0,"191":0,"192":0,"196":0,"197":0,"198":0,"199":0,"203":0,"208":0,"210":0,"211":0,"212":0,"213":0,"214":0,"216":0,"217":0,"219":0,"220":0,"222":0,"224":0,"228":0,"229":0,"230":0,"239":0,"240":0,"241":0,"243":0,"244":0,"247":0,"248":0,"251":0,"263":0,"265":0,"274":0,"275":0,"276":0,"277":0,"278":0,"279":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"286":0,"289":0,"294":0,"295":0,"306":0,"315":0,"326":0,"328":0,"329":0,"375":0,"378":0,"379":0,"383":0,"387":0,"388":0,"390":0,"395":0,"399":0,"403":0,"404":0,"405":0,"406":0,"407":0,"408":0,"409":0,"410":0,"416":0,"421":0,"423":0,"425":0,"426":0,"427":0,"429":0,"431":0,"432":0,"433":0,"435":0,"436":0,"437":0,"441":0,"444":0,"445":0,"449":0,"452":0,"465":0,"466":0,"467":0,"468":0,"469":0,"470":0,"472":0,"476":0,"478":0,"480":0,"481":0,"483":0,"484":0,"495":0,"500":0,"501":0,"502":0,"506":0,"507":0,"509":0,"510":0,"526":0,"527":0,"528":0,"531":0,"532":0,"533":0,"534":0,"535":0,"536":0,"537":0,"538":0,"541":0,"544":0,"583":0,"584":0,"596":0,"597":0,"598":0,"600":0,"601":0,"602":0,"603":0,"604":0,"605":0,"606":0,"607":0,"608":0,"615":0,"627":0,"639":0,"640":0,"641":0,"642":0,"643":0,"644":0,"645":0,"646":0,"647":0,"648":0,"649":0,"655":0,"656":0,"658":0,"659":0,"660":0,"661":0,"663":0,"664":0,"665":0,"667":0,"668":0,"669":0,"670":0,"676":0,"677":0,"678":0,"679":0,"680":0,"684":0,"687":0,"688":0,"689":0,"690":0,"698":0,"699":0,"700":0,"701":0,"702":0,"703":0,"706":0,"709":0,"710":0,"711":0,"712":0,"714":0,"715":0,"716":0,"719":0,"720":0,"721":0,"722":0,"723":0,"725":0,"730":0,"731":0,"732":0,"733":0,"734":0,"736":0,"741":0,"742":0,"743":0,"745":0,"746":0,"748":0,"749":0,"754":0,"755":0,"756":0,"757":0,"758":0,"760":0,"771":0,"782":0,"785":0,"787":0,"788":0,"791":0,"792":0,"793":0,"794":0,"795":0,"796":0,"851":0,"861":0,"862":0,"863":0,"864":0,"867":0,"869":0,"870":0,"873":0,"874":0,"875":0,"876":0,"877":0,"881":0,"882":0,"884":0,"885":0,"889":0,"890":0,"891":0,"893":0,"894":0,"898":0,"909":0,"910":0,"911":0,"912":0,"913":0,"914":0,"916":0,"917":0,"919":0,"920":0,"922":0,"940":0,"941":0,"944":0,"963":0,"965":0,"966":0,"969":0,"970":0,"971":0,"972":0,"973":0,"975":0,"978":0,"981":0,"983":0,"984":0,"985":0,"986":0,"990":0,"991":0,"994":0,"995":0,"996":0,"998":0,"999":0,"1000":0,"1001":0,"1005":0,"1006":0,"1008":0,"1013":0,"1014":0,"1018":0,"1019":0,"1026":0,"1034":0,"1036":0,"1037":0,"1038":0,"1039":0,"1040":0,"1041":0,"1042":0,"1043":0,"1045":0,"1050":0,"1051":0,"1052":0,"1053":0,"1054":0,"1058":0,"1059":0,"1061":0,"1062":0,"1066":0,"1067":0,"1074":0,"1075":0,"1076":0,"1077":0,"1078":0,"1081":0,"1082":0,"1083":0,"1085":0,"1088":0,"1089":0,"1095":0,"1096":0,"1097":0,"1098":0,"1099":0,"1100":0,"1101":0,"1102":0,"1105":0,"1107":0,"1110":0,"1111":0,"1112":0,"1117":0,"1118":0,"1119":0,"1120":0,"1121":0,"1122":0,"1123":0,"1124":0,"1125":0,"1127":0,"1129":0,"1131":0,"1132":0,"1133":0,"1134":0,"1135":0,"1136":0,"1137":0,"1141":0,"1142":0,"1144":0,"1145":0,"1151":0,"1152":0,"1153":0,"1157":0,"1195":0,"1197":0,"1198":0,"1199":0,"1200":0,"1201":0,"1202":0,"1203":0,"1204":0,"1207":0,"1208":0,"1211":0,"1218":0,"1236":0,"1238":0,"1239":0,"1242":0,"1243":0,"1245":0,"1248":0,"1258":0,"1259":0,"1273":0,"1274":0,"1275":0,"1280":0,"1281":0,"1283":0,"1286":0,"1287":0,"1288":0,"1289":0,"1290":0,"1292":0,"1296":0,"1305":0,"1306":0,"1307":0,"1309":0,"1310":0,"1311":0,"1325":0,"1328":0,"1329":0,"1330":0,"1366":0,"1367":0,"1368":0,"1371":0,"1372":0,"1375":0,"1377":0,"1381":0,"1383":0,"1387":0,"1389":0,"1392":0,"1393":0,"1397":0,"1398":0,"1950":0,"1972":0,"2020":0,"2021":0,"2038":0,"2039":0,"2049":0,"2050":0,"2060":0,"2061":0,"2088":0,"2089":0,"2099":0,"2100":0,"2110":0,"2111":0,"2125":0,"2126":0,"2127":0,"2138":0,"2139":0,"2149":0,"2150":0,"2162":0,"2163":0,"2165":0,"2167":0,"2171":0,"2174":0,"2186":0,"2187":0,"2201":0,"2202":0,"2203":0,"2215":0,"2216":0,"2218":0,"2219":0,"2221":0,"2232":0,"2233":0,"2235":0,"2245":0,"2246":0,"2248":0,"2278":0,"2279":0,"2286":0,"2319":0,"2320":0,"2322":0,"2324":0,"2326":0,"2327":0,"2329":0,"2331":0,"2332":0,"2335":0,"2339":0,"2342":0,"2358":0,"2359":0,"2363":0,"2364":0,"2366":0,"2367":0,"2368":0,"2372":0,"2390":0,"2391":0,"2392":0,"2394":0,"2395":0,"2396":0,"2400":0,"2427":0,"2428":0,"2432":0,"2433":0,"2434":0,"2438":0,"2455":0,"2456":0,"2459":0,"2461":0,"2462":0,"2464":0,"2465":0,"2467":0,"2468":0,"2472":0,"2473":0,"2474":0,"2478":0,"2500":0,"2501":0,"2520":0,"2521":0,"2523":0,"2524":0,"2525":0,"2529":0,"2550":0,"2551":0,"2553":0,"2554":0,"2555":0,"2556":0,"2560":0,"2561":0,"2566":0,"2584":0,"2585":0,"2586":0,"2589":0,"2604":0,"2614":0,"2624":0,"2635":0,"2637":0,"2647":0,"2651":0,"2653":0,"2664":0,"2693":0,"2694":0,"2696":0,"2697":0,"2701":0,"2702":0,"2705":0,"2725":0,"2729":0,"2735":0,"2750":0,"2751":0,"2757":0,"2758":0,"2760":0,"2761":0,"2762":0,"2767":0,"2804":0,"2805":0,"2810":0,"2811":0,"2814":0,"2818":0,"2819":0,"2825":0,"2826":0,"2831":0,"2832":0,"2835":0,"2836":0,"2841":0,"2843":0,"2844":0,"2845":0,"2852":0,"2853":0,"2859":0,"2861":0,"2871":0,"2872":0,"2876":0,"2880":0,"2886":0,"2887":0,"2893":0,"2895":0,"2897":0,"2898":0,"2899":0,"2906":0,"2907":0,"2911":0,"2927":0,"2949":0,"2952":0,"2955":0,"2956":0,"2957":0,"3019":0,"3031":0,"3054":0,"3055":0,"3056":0,"3059":0,"3062":0,"3063":0,"3064":0,"3065":0,"3069":0,"3070":0,"3071":0,"3076":0,"3077":0,"3078":0,"3080":0,"3081":0,"3086":0,"3106":0,"3107":0,"3112":0,"3113":0,"3116":0,"3127":0,"3128":0,"3129":0,"3131":0,"3145":0,"3146":0,"3169":0,"3170":0,"3172":0,"3173":0,"3174":0,"3178":0,"3201":0,"3202":0,"3204":0,"3205":0,"3206":0,"3207":0,"3212":0,"3228":0,"3229":0,"3230":0,"3233":0,"3237":0,"3238":0,"3241":0,"3258":0,"3259":0,"3264":0,"3265":0,"3266":0,"3269":0,"3270":0,"3272":0,"3276":0,"3288":0,"3289":0,"3324":0,"3326":0,"3327":0,"3328":0,"3329":0,"3563":0,"3566":0,"3568":0,"3570":0,"3571":0,"3572":0,"3573":0,"3574":0,"3575":0,"3576":0,"3577":0,"3578":0,"3579":0,"3580":0,"3581":0,"3585":0,"3586":0,"3588":0,"3589":0,"3591":0,"3592":0,"3595":0,"3596":0,"3597":0,"3598":0,"3600":0,"3601":0,"3602":0,"3603":0,"3608":0,"3609":0,"3611":0,"3612":0,"3613":0,"3615":0,"3616":0,"3617":0,"3619":0,"3620":0,"3621":0,"3624":0,"3625":0,"3627":0,"3629":0,"3630":0,"3631":0,"3632":0,"3633":0,"3636":0,"3637":0,"3638":0,"3640":0,"3641":0,"3642":0,"3646":0,"3647":0,"3648":0,"3649":0,"3651":0,"3652":0,"3653":0,"3655":0,"3656":0,"3661":0,"3662":0,"3663":0,"3664":0,"3665":0,"3666":0,"3669":0,"3670":0,"3671":0,"3676":0,"3678":0,"3679":0,"3680":0,"3681":0,"3683":0,"3684":0,"3685":0,"3688":0,"3689":0,"3690":0,"3691":0,"3692":0,"3695":0,"3697":0,"3698":0,"3701":0,"3702":0,"3703":0,"3705":0,"3706":0,"3707":0,"3708":0,"3709":0,"3710":0,"3720":0,"3721":0,"3725":0,"3727":0,"3729":0,"3731":0,"3732":0,"3736":0,"3740":0,"3744":0,"3766":0,"3767":0,"3769":0,"3770":0,"3773":0,"3774":0,"3776":0,"3777":0,"3778":0,"3780":0,"3781":0,"3783":0,"3784":0,"3787":0,"3788":0,"3792":0,"3794":0}; -_yuitest_coverage["build/yui/yui.js"].functions = {"instanceOf:59":0,"YUI:54":0,"add:178":0,"remove:185":0,"handleLoad:195":0,"getLoader:202":0,"clobber:227":0,"applyConfig:261":0,"_config:305":0,"parseBasePath:374":0,"(anonymous 2):398":0,"_init:314":0,"_setup:494":0,"applyTo:525":0,"add:582":0,"_attach:626":0,"(anonymous 5):794":0,"(anonymous 4):793":0,"(anonymous 3):791":0,"_delayCallback:780":0,"(anonymous 6):893":0,"use:850":0,"_notify:908":0,"process:961":0,"(anonymous 7):1052":0,"handleLoader:1025":0,"handleBoot:1131":0,"_use:938":0,"namespace:1194":0,"dump:1218":0,"error:1233":0,"guid:1257":0,"stamp:1272":0,"destroy:1304":0,"applyConfig:1366":0,"(anonymous 1):153":0,"_isNative:2020":0,"isArray:2038":0,"isBoolean:2049":0,"isDate:2060":0,"isFunction:2088":0,"isNull:2099":0,"isNumber:2110":0,"isObject:2125":0,"isString:2138":0,"isUndefined:2149":0,"isValue:2162":0,"(anonymous 9):2186":0,"(anonymous 10):2202":0,"sub:2201":0,"(anonymous 11):2215":0,"}:2217":0,"(anonymous 12):2232":0,"}:2234":0,"(anonymous 13):2245":0,"}:2247":0,"type:2278":0,"YArray:2319":0,"dedupe:2358":0,"(anonymous 14):2390":0,"}:2393":0,"hash:2427":0,"(anonymous 15):2455":0,"}:2457":0,"numericSort:2500":0,"(anonymous 16):2520":0,"}:2522":0,"test:2550":0,"Queue:2584":0,"_init:2596":0,"next:2613":0,"last:2623":0,"add:2634":0,"size:2646":0,"(anonymous 17):2696":0,"cached:2693":0,"getLocation:2725":0,"merge:2750":0,"mix:2804":0,"(anonymous 18):2943":0,"F:2952":0,"(anonymous 20):2955":0,"(anonymous 19):2950":0,"owns:3018":0,"keys:3054":0,"values:3106":0,"size:3127":0,"hasValue:3145":0,"each:3169":0,"some:3201":0,"getValue:3228":0,"setValue:3258":0,"isEmpty:3288":0,"(anonymous 22):3328":0,"numberify:3326":0,"parseUA:3324":0,"compareVersions:3766":0,"(anonymous 8):1950":0}; -_yuitest_coverage["build/yui/yui.js"].coveredLines = 824; -_yuitest_coverage["build/yui/yui.js"].coveredFunctions = 98; -_yuitest_coverline("build/yui/yui.js", 10); -if (typeof YUI != 'undefined') { - _yuitest_coverline("build/yui/yui.js", 11); -YUI._YUI = YUI; -} - -/** -The YUI global namespace object. If YUI is already defined, the -existing YUI object will not be overwritten so that defined -namespaces are preserved. It is the constructor for the object -the end user interacts with. As indicated below, each instance -has full custom event support, but only if the event system -is available. This is a self-instantiable factory function. You -can invoke it directly like this: - - YUI().use('*', function(Y) { - // ready - }); - -But it also works like this: - - var Y = YUI(); - -Configuring the YUI object: - - YUI({ - debug: true, - combine: false - }).use('node', function(Y) { - //Node is ready to use - }); - -See the API docs for the Config class -for the complete list of supported configuration properties accepted -by the YUI constuctor. - -@class YUI -@constructor -@global -@uses EventTarget -@param [o]* {Object} 0..n optional configuration objects. these values -are store in Y.config. See Config for the list of supported -properties. -*/ - /*global YUI*/ - /*global YUI_config*/ - _yuitest_coverline("build/yui/yui.js", 54); -var YUI = function() { - _yuitest_coverfunc("build/yui/yui.js", "YUI", 54); -_yuitest_coverline("build/yui/yui.js", 55); -var i = 0, - Y = this, - args = arguments, - l = args.length, - instanceOf = function(o, type) { - _yuitest_coverfunc("build/yui/yui.js", "instanceOf", 59); -_yuitest_coverline("build/yui/yui.js", 60); -return (o && o.hasOwnProperty && (o instanceof type)); - }, - gconf = (typeof YUI_config !== 'undefined') && YUI_config; - - _yuitest_coverline("build/yui/yui.js", 64); -if (!(instanceOf(Y, YUI))) { - _yuitest_coverline("build/yui/yui.js", 65); -Y = new YUI(); - } else { - // set up the core environment - _yuitest_coverline("build/yui/yui.js", 68); -Y._init(); - - /** - YUI.GlobalConfig is a master configuration that might span - multiple contexts in a non-browser environment. It is applied - first to all instances in all contexts. - @property GlobalConfig - @type {Object} - @global - @static - @example - - - YUI.GlobalConfig = { - filter: 'debug' - }; - - YUI().use('node', function(Y) { - //debug files used here - }); - - YUI({ - filter: 'min' - }).use('node', function(Y) { - //min files used here - }); - - */ - _yuitest_coverline("build/yui/yui.js", 96); -if (YUI.GlobalConfig) { - _yuitest_coverline("build/yui/yui.js", 97); -Y.applyConfig(YUI.GlobalConfig); - } - - /** - YUI_config is a page-level config. It is applied to all - instances created on the page. This is applied after - YUI.GlobalConfig, and before the instance level configuration - objects. - @global - @property YUI_config - @type {Object} - @example - - - //Single global var to include before YUI seed file - YUI_config = { - filter: 'debug' - }; - - YUI().use('node', function(Y) { - //debug files used here - }); - - YUI({ - filter: 'min' - }).use('node', function(Y) { - //min files used here - }); - */ - _yuitest_coverline("build/yui/yui.js", 126); -if (gconf) { - _yuitest_coverline("build/yui/yui.js", 127); -Y.applyConfig(gconf); - } - - // bind the specified additional modules for this instance - _yuitest_coverline("build/yui/yui.js", 131); -if (!l) { - _yuitest_coverline("build/yui/yui.js", 132); -Y._setup(); - } - } - - _yuitest_coverline("build/yui/yui.js", 136); -if (l) { - // Each instance can accept one or more configuration objects. - // These are applied after YUI.GlobalConfig and YUI_Config, - // overriding values set in those config files if there is a ' - // matching property. - _yuitest_coverline("build/yui/yui.js", 141); -for (; i < l; i++) { - _yuitest_coverline("build/yui/yui.js", 142); -Y.applyConfig(args[i]); - } - - _yuitest_coverline("build/yui/yui.js", 145); -Y._setup(); - } - - _yuitest_coverline("build/yui/yui.js", 148); -Y.instanceOf = instanceOf; - - _yuitest_coverline("build/yui/yui.js", 150); -return Y; - }; - -_yuitest_coverline("build/yui/yui.js", 153); -(function() { - - _yuitest_coverfunc("build/yui/yui.js", "(anonymous 1)", 153); -_yuitest_coverline("build/yui/yui.js", 155); -var proto, prop, - VERSION = '3.7.3', - PERIOD = '.', - BASE = 'http://yui.yahooapis.com/', - /* - These CSS class names can't be generated by - getClassName since it is not available at the - time they are being used. - */ - DOC_LABEL = 'yui3-js-enabled', - CSS_STAMP_EL = 'yui3-css-stamp', - NOOP = function() {}, - SLICE = Array.prototype.slice, - APPLY_TO_AUTH = { 'io.xdrReady': 1, // the functions applyTo - 'io.xdrResponse': 1, // can call. this should - 'SWF.eventHandler': 1 }, // be done at build time - hasWin = (typeof window != 'undefined'), - win = (hasWin) ? window : null, - doc = (hasWin) ? win.document : null, - docEl = doc && doc.documentElement, - docClass = docEl && docEl.className, - instances = {}, - time = new Date().getTime(), - add = function(el, type, fn, capture) { - _yuitest_coverfunc("build/yui/yui.js", "add", 178); -_yuitest_coverline("build/yui/yui.js", 179); -if (el && el.addEventListener) { - _yuitest_coverline("build/yui/yui.js", 180); -el.addEventListener(type, fn, capture); - } else {_yuitest_coverline("build/yui/yui.js", 181); -if (el && el.attachEvent) { - _yuitest_coverline("build/yui/yui.js", 182); -el.attachEvent('on' + type, fn); - }} - }, - remove = function(el, type, fn, capture) { - _yuitest_coverfunc("build/yui/yui.js", "remove", 185); -_yuitest_coverline("build/yui/yui.js", 186); -if (el && el.removeEventListener) { - // this can throw an uncaught exception in FF - _yuitest_coverline("build/yui/yui.js", 188); -try { - _yuitest_coverline("build/yui/yui.js", 189); -el.removeEventListener(type, fn, capture); - } catch (ex) {} - } else {_yuitest_coverline("build/yui/yui.js", 191); -if (el && el.detachEvent) { - _yuitest_coverline("build/yui/yui.js", 192); -el.detachEvent('on' + type, fn); - }} - }, - handleLoad = function() { - _yuitest_coverfunc("build/yui/yui.js", "handleLoad", 195); -_yuitest_coverline("build/yui/yui.js", 196); -YUI.Env.windowLoaded = true; - _yuitest_coverline("build/yui/yui.js", 197); -YUI.Env.DOMReady = true; - _yuitest_coverline("build/yui/yui.js", 198); -if (hasWin) { - _yuitest_coverline("build/yui/yui.js", 199); -remove(window, 'load', handleLoad); - } - }, - getLoader = function(Y, o) { - _yuitest_coverfunc("build/yui/yui.js", "getLoader", 202); -_yuitest_coverline("build/yui/yui.js", 203); -var loader = Y.Env._loader, - lCore = [ 'loader-base' ], - G_ENV = YUI.Env, - mods = G_ENV.mods; - - _yuitest_coverline("build/yui/yui.js", 208); -if (loader) { - //loader._config(Y.config); - _yuitest_coverline("build/yui/yui.js", 210); -loader.ignoreRegistered = false; - _yuitest_coverline("build/yui/yui.js", 211); -loader.onEnd = null; - _yuitest_coverline("build/yui/yui.js", 212); -loader.data = null; - _yuitest_coverline("build/yui/yui.js", 213); -loader.required = []; - _yuitest_coverline("build/yui/yui.js", 214); -loader.loadType = null; - } else { - _yuitest_coverline("build/yui/yui.js", 216); -loader = new Y.Loader(Y.config); - _yuitest_coverline("build/yui/yui.js", 217); -Y.Env._loader = loader; - } - _yuitest_coverline("build/yui/yui.js", 219); -if (mods && mods.loader) { - _yuitest_coverline("build/yui/yui.js", 220); -lCore = [].concat(lCore, YUI.Env.loaderExtras); - } - _yuitest_coverline("build/yui/yui.js", 222); -YUI.Env.core = Y.Array.dedupe([].concat(YUI.Env.core, lCore)); - - _yuitest_coverline("build/yui/yui.js", 224); -return loader; - }, - - clobber = function(r, s) { - _yuitest_coverfunc("build/yui/yui.js", "clobber", 227); -_yuitest_coverline("build/yui/yui.js", 228); -for (var i in s) { - _yuitest_coverline("build/yui/yui.js", 229); -if (s.hasOwnProperty(i)) { - _yuitest_coverline("build/yui/yui.js", 230); -r[i] = s[i]; - } - } - }, - - ALREADY_DONE = { success: true }; - -// Stamp the documentElement (HTML) with a class of "yui-loaded" to -// enable styles that need to key off of JS being enabled. -_yuitest_coverline("build/yui/yui.js", 239); -if (docEl && docClass.indexOf(DOC_LABEL) == -1) { - _yuitest_coverline("build/yui/yui.js", 240); -if (docClass) { - _yuitest_coverline("build/yui/yui.js", 241); -docClass += ' '; - } - _yuitest_coverline("build/yui/yui.js", 243); -docClass += DOC_LABEL; - _yuitest_coverline("build/yui/yui.js", 244); -docEl.className = docClass; -} - -_yuitest_coverline("build/yui/yui.js", 247); -if (VERSION.indexOf('@') > -1) { - _yuitest_coverline("build/yui/yui.js", 248); -VERSION = '3.5.0'; // dev time hack for cdn test -} - -_yuitest_coverline("build/yui/yui.js", 251); -proto = { - /** - * Applies a new configuration object to the YUI instance config. - * This will merge new group/module definitions, and will also - * update the loader cache if necessary. Updating Y.config directly - * will not update the cache. - * @method applyConfig - * @param {Object} o the configuration object. - * @since 3.2.0 - */ - applyConfig: function(o) { - - _yuitest_coverfunc("build/yui/yui.js", "applyConfig", 261); -_yuitest_coverline("build/yui/yui.js", 263); -o = o || NOOP; - - _yuitest_coverline("build/yui/yui.js", 265); -var attr, - name, - // detail, - config = this.config, - mods = config.modules, - groups = config.groups, - aliases = config.aliases, - loader = this.Env._loader; - - _yuitest_coverline("build/yui/yui.js", 274); -for (name in o) { - _yuitest_coverline("build/yui/yui.js", 275); -if (o.hasOwnProperty(name)) { - _yuitest_coverline("build/yui/yui.js", 276); -attr = o[name]; - _yuitest_coverline("build/yui/yui.js", 277); -if (mods && name == 'modules') { - _yuitest_coverline("build/yui/yui.js", 278); -clobber(mods, attr); - } else {_yuitest_coverline("build/yui/yui.js", 279); -if (aliases && name == 'aliases') { - _yuitest_coverline("build/yui/yui.js", 280); -clobber(aliases, attr); - } else {_yuitest_coverline("build/yui/yui.js", 281); -if (groups && name == 'groups') { - _yuitest_coverline("build/yui/yui.js", 282); -clobber(groups, attr); - } else {_yuitest_coverline("build/yui/yui.js", 283); -if (name == 'win') { - _yuitest_coverline("build/yui/yui.js", 284); -config[name] = (attr && attr.contentWindow) || attr; - _yuitest_coverline("build/yui/yui.js", 285); -config.doc = config[name] ? config[name].document : null; - } else {_yuitest_coverline("build/yui/yui.js", 286); -if (name == '_yuid') { - // preserve the guid - } else { - _yuitest_coverline("build/yui/yui.js", 289); -config[name] = attr; - }}}}} - } - } - - _yuitest_coverline("build/yui/yui.js", 294); -if (loader) { - _yuitest_coverline("build/yui/yui.js", 295); -loader._config(o); - } - - }, - /** - * Old way to apply a config to the instance (calls `applyConfig` under the hood) - * @private - * @method _config - * @param {Object} o The config to apply - */ - _config: function(o) { - _yuitest_coverfunc("build/yui/yui.js", "_config", 305); -_yuitest_coverline("build/yui/yui.js", 306); -this.applyConfig(o); - }, - - /** - * Initialize this YUI instance - * @private - * @method _init - */ - _init: function() { - _yuitest_coverfunc("build/yui/yui.js", "_init", 314); -_yuitest_coverline("build/yui/yui.js", 315); -var filter, el, - Y = this, - G_ENV = YUI.Env, - Env = Y.Env, - prop; - - /** - * The version number of the YUI instance. - * @property version - * @type string - */ - _yuitest_coverline("build/yui/yui.js", 326); -Y.version = VERSION; - - _yuitest_coverline("build/yui/yui.js", 328); -if (!Env) { - _yuitest_coverline("build/yui/yui.js", 329); -Y.Env = { - core: ['get', 'features', 'intl-base', 'yui-log', 'yui-later', 'loader-base', 'loader-rollup', 'loader-yui3'], - loaderExtras: ['loader-rollup', 'loader-yui3'], - mods: {}, // flat module map - versions: {}, // version module map - base: BASE, - cdn: BASE + VERSION + '/build/', - // bootstrapped: false, - _idx: 0, - _used: {}, - _attached: {}, - _missed: [], - _yidx: 0, - _uidx: 0, - _guidp: 'y', - _loaded: {}, - // serviced: {}, - // Regex in English: - // I'll start at the \b(simpleyui). - // 1. Look in the test string for "simpleyui" or "yui" or - // "yui-base" or "yui-davglass" or "yui-foobar" that comes after a word break. That is, it - // can't match "foyui" or "i_heart_simpleyui". This can be anywhere in the string. - // 2. After #1 must come a forward slash followed by the string matched in #1, so - // "yui-base/yui-base" or "simpleyui/simpleyui" or "yui-pants/yui-pants". - // 3. The second occurence of the #1 token can optionally be followed by "-debug" or "-min", - // so "yui/yui-min", "yui/yui-debug", "yui-base/yui-base-debug". NOT "yui/yui-tshirt". - // 4. This is followed by ".js", so "yui/yui.js", "simpleyui/simpleyui-min.js" - // 0. Going back to the beginning, now. If all that stuff in 1-4 comes after a "?" in the string, - // then capture the junk between the LAST "&" and the string in 1-4. So - // "blah?foo/yui/yui.js" will capture "foo/" and "blah?some/thing.js&3.3.0/build/yui-davglass/yui-davglass.js" - // will capture "3.3.0/build/" - // - // Regex Exploded: - // (?:\? Find a ? - // (?:[^&]*&) followed by 0..n characters followed by an & - // * in fact, find as many sets of characters followed by a & as you can - // ([^&]*) capture the stuff after the last & in \1 - // )? but it's ok if all this ?junk&more_junk stuff isn't even there - // \b(simpleyui| after a word break find either the string "simpleyui" or - // yui(?:-\w+)? the string "yui" optionally followed by a -, then more characters - // ) and store the simpleyui or yui-* string in \2 - // \/\2 then comes a / followed by the simpleyui or yui-* string in \2 - // (?:-(min|debug))? optionally followed by "-min" or "-debug" - // .js and ending in ".js" - _BASE_RE: /(?:\?(?:[^&]*&)*([^&]*))?\b(simpleyui|yui(?:-\w+)?)\/\2(?:-(min|debug))?\.js/, - parseBasePath: function(src, pattern) { - _yuitest_coverfunc("build/yui/yui.js", "parseBasePath", 374); -_yuitest_coverline("build/yui/yui.js", 375); -var match = src.match(pattern), - path, filter; - - _yuitest_coverline("build/yui/yui.js", 378); -if (match) { - _yuitest_coverline("build/yui/yui.js", 379); -path = RegExp.leftContext || src.slice(0, src.indexOf(match[0])); - - // this is to set up the path to the loader. The file - // filter for loader should match the yui include. - _yuitest_coverline("build/yui/yui.js", 383); -filter = match[3]; - - // extract correct path for mixed combo urls - // http://yuilibrary.com/projects/yui3/ticket/2528423 - _yuitest_coverline("build/yui/yui.js", 387); -if (match[1]) { - _yuitest_coverline("build/yui/yui.js", 388); -path += '?' + match[1]; - } - _yuitest_coverline("build/yui/yui.js", 390); -path = { - filter: filter, - path: path - }; - } - _yuitest_coverline("build/yui/yui.js", 395); -return path; - }, - getBase: G_ENV && G_ENV.getBase || - function(pattern) { - _yuitest_coverfunc("build/yui/yui.js", "(anonymous 2)", 398); -_yuitest_coverline("build/yui/yui.js", 399); -var nodes = (doc && doc.getElementsByTagName('script')) || [], - path = Env.cdn, parsed, - i, len, src; - - _yuitest_coverline("build/yui/yui.js", 403); -for (i = 0, len = nodes.length; i < len; ++i) { - _yuitest_coverline("build/yui/yui.js", 404); -src = nodes[i].src; - _yuitest_coverline("build/yui/yui.js", 405); -if (src) { - _yuitest_coverline("build/yui/yui.js", 406); -parsed = Y.Env.parseBasePath(src, pattern); - _yuitest_coverline("build/yui/yui.js", 407); -if (parsed) { - _yuitest_coverline("build/yui/yui.js", 408); -filter = parsed.filter; - _yuitest_coverline("build/yui/yui.js", 409); -path = parsed.path; - _yuitest_coverline("build/yui/yui.js", 410); -break; - } - } - } - - // use CDN default - _yuitest_coverline("build/yui/yui.js", 416); -return path; - } - - }; - - _yuitest_coverline("build/yui/yui.js", 421); -Env = Y.Env; - - _yuitest_coverline("build/yui/yui.js", 423); -Env._loaded[VERSION] = {}; - - _yuitest_coverline("build/yui/yui.js", 425); -if (G_ENV && Y !== YUI) { - _yuitest_coverline("build/yui/yui.js", 426); -Env._yidx = ++G_ENV._yidx; - _yuitest_coverline("build/yui/yui.js", 427); -Env._guidp = ('yui_' + VERSION + '_' + - Env._yidx + '_' + time).replace(/\./g, '_').replace(/-/g, '_'); - } else {_yuitest_coverline("build/yui/yui.js", 429); -if (YUI._YUI) { - - _yuitest_coverline("build/yui/yui.js", 431); -G_ENV = YUI._YUI.Env; - _yuitest_coverline("build/yui/yui.js", 432); -Env._yidx += G_ENV._yidx; - _yuitest_coverline("build/yui/yui.js", 433); -Env._uidx += G_ENV._uidx; - - _yuitest_coverline("build/yui/yui.js", 435); -for (prop in G_ENV) { - _yuitest_coverline("build/yui/yui.js", 436); -if (!(prop in Env)) { - _yuitest_coverline("build/yui/yui.js", 437); -Env[prop] = G_ENV[prop]; - } - } - - _yuitest_coverline("build/yui/yui.js", 441); -delete YUI._YUI; - }} - - _yuitest_coverline("build/yui/yui.js", 444); -Y.id = Y.stamp(Y); - _yuitest_coverline("build/yui/yui.js", 445); -instances[Y.id] = Y; - - } - - _yuitest_coverline("build/yui/yui.js", 449); -Y.constructor = YUI; - - // configuration defaults - _yuitest_coverline("build/yui/yui.js", 452); -Y.config = Y.config || { - bootstrap: true, - cacheUse: true, - debug: true, - doc: doc, - fetchCSS: true, - throwFail: true, - useBrowserConsole: true, - useNativeES5: true, - win: win - }; - - //Register the CSS stamp element - _yuitest_coverline("build/yui/yui.js", 465); -if (doc && !doc.getElementById(CSS_STAMP_EL)) { - _yuitest_coverline("build/yui/yui.js", 466); -el = doc.createElement('div'); - _yuitest_coverline("build/yui/yui.js", 467); -el.innerHTML = '
          '; - _yuitest_coverline("build/yui/yui.js", 468); -YUI.Env.cssStampEl = el.firstChild; - _yuitest_coverline("build/yui/yui.js", 469); -if (doc.body) { - _yuitest_coverline("build/yui/yui.js", 470); -doc.body.appendChild(YUI.Env.cssStampEl); - } else { - _yuitest_coverline("build/yui/yui.js", 472); -docEl.insertBefore(YUI.Env.cssStampEl, docEl.firstChild); - } - } - - _yuitest_coverline("build/yui/yui.js", 476); -Y.config.lang = Y.config.lang || 'en-US'; - - _yuitest_coverline("build/yui/yui.js", 478); -Y.config.base = YUI.config.base || Y.Env.getBase(Y.Env._BASE_RE); - - _yuitest_coverline("build/yui/yui.js", 480); -if (!filter || (!('mindebug').indexOf(filter))) { - _yuitest_coverline("build/yui/yui.js", 481); -filter = 'min'; - } - _yuitest_coverline("build/yui/yui.js", 483); -filter = (filter) ? '-' + filter : filter; - _yuitest_coverline("build/yui/yui.js", 484); -Y.config.loaderPath = YUI.config.loaderPath || 'loader/loader' + filter + '.js'; - - }, - - /** - * Finishes the instance setup. Attaches whatever modules were defined - * when the yui modules was registered. - * @method _setup - * @private - */ - _setup: function(o) { - _yuitest_coverfunc("build/yui/yui.js", "_setup", 494); -_yuitest_coverline("build/yui/yui.js", 495); -var i, Y = this, - core = [], - mods = YUI.Env.mods, - extras = Y.config.core || [].concat(YUI.Env.core); //Clone it.. - - _yuitest_coverline("build/yui/yui.js", 500); -for (i = 0; i < extras.length; i++) { - _yuitest_coverline("build/yui/yui.js", 501); -if (mods[extras[i]]) { - _yuitest_coverline("build/yui/yui.js", 502); -core.push(extras[i]); - } - } - - _yuitest_coverline("build/yui/yui.js", 506); -Y._attach(['yui-base']); - _yuitest_coverline("build/yui/yui.js", 507); -Y._attach(core); - - _yuitest_coverline("build/yui/yui.js", 509); -if (Y.Loader) { - _yuitest_coverline("build/yui/yui.js", 510); -getLoader(Y); - } - - }, - - /** - * Executes a method on a YUI instance with - * the specified id if the specified method is whitelisted. - * @method applyTo - * @param id {String} the YUI instance id. - * @param method {String} the name of the method to exectute. - * Ex: 'Object.keys'. - * @param args {Array} the arguments to apply to the method. - * @return {Object} the return value from the applied method or null. - */ - applyTo: function(id, method, args) { - _yuitest_coverfunc("build/yui/yui.js", "applyTo", 525); -_yuitest_coverline("build/yui/yui.js", 526); -if (!(method in APPLY_TO_AUTH)) { - _yuitest_coverline("build/yui/yui.js", 527); -this.log(method + ': applyTo not allowed', 'warn', 'yui'); - _yuitest_coverline("build/yui/yui.js", 528); -return null; - } - - _yuitest_coverline("build/yui/yui.js", 531); -var instance = instances[id], nest, m, i; - _yuitest_coverline("build/yui/yui.js", 532); -if (instance) { - _yuitest_coverline("build/yui/yui.js", 533); -nest = method.split('.'); - _yuitest_coverline("build/yui/yui.js", 534); -m = instance; - _yuitest_coverline("build/yui/yui.js", 535); -for (i = 0; i < nest.length; i = i + 1) { - _yuitest_coverline("build/yui/yui.js", 536); -m = m[nest[i]]; - _yuitest_coverline("build/yui/yui.js", 537); -if (!m) { - _yuitest_coverline("build/yui/yui.js", 538); -this.log('applyTo not found: ' + method, 'warn', 'yui'); - } - } - _yuitest_coverline("build/yui/yui.js", 541); -return m && m.apply(instance, args); - } - - _yuitest_coverline("build/yui/yui.js", 544); -return null; - }, - -/** -Registers a module with the YUI global. The easiest way to create a -first-class YUI module is to use the YUI component -build tool Shifter. - -The build system will produce the `YUI.add` wrapper for your module, along -with any configuration info required for the module. - -@method add -@param name {String} module name. -@param fn {Function} entry point into the module that is used to bind module to the YUI instance. -@param {YUI} fn.Y The YUI instance this module is executed in. -@param {String} fn.name The name of the module -@param version {String} version string. -@param details {Object} optional config data: -@param details.requires {Array} features that must be present before this module can be attached. -@param details.optional {Array} optional features that should be present if loadOptional - is defined. Note: modules are not often loaded this way in YUI 3, - but this field is still useful to inform the user that certain - features in the component will require additional dependencies. -@param details.use {Array} features that are included within this module which need to - be attached automatically when this module is attached. This - supports the YUI 3 rollup system -- a module with submodules - defined will need to have the submodules listed in the 'use' - config. The YUI component build tool does this for you. -@return {YUI} the YUI instance. -@example - - YUI.add('davglass', function(Y, name) { - Y.davglass = function() { - alert('Dav was here!'); - }; - }, '3.4.0', { requires: ['yui-base', 'harley-davidson', 'mt-dew'] }); - -*/ - add: function(name, fn, version, details) { - _yuitest_coverfunc("build/yui/yui.js", "add", 582); -_yuitest_coverline("build/yui/yui.js", 583); -details = details || {}; - _yuitest_coverline("build/yui/yui.js", 584); -var env = YUI.Env, - mod = { - name: name, - fn: fn, - version: version, - details: details - }, - //Instance hash so we don't apply it to the same instance twice - applied = {}, - loader, inst, - i, versions = env.versions; - - _yuitest_coverline("build/yui/yui.js", 596); -env.mods[name] = mod; - _yuitest_coverline("build/yui/yui.js", 597); -versions[version] = versions[version] || {}; - _yuitest_coverline("build/yui/yui.js", 598); -versions[version][name] = mod; - - _yuitest_coverline("build/yui/yui.js", 600); -for (i in instances) { - _yuitest_coverline("build/yui/yui.js", 601); -if (instances.hasOwnProperty(i)) { - _yuitest_coverline("build/yui/yui.js", 602); -inst = instances[i]; - _yuitest_coverline("build/yui/yui.js", 603); -if (!applied[inst.id]) { - _yuitest_coverline("build/yui/yui.js", 604); -applied[inst.id] = true; - _yuitest_coverline("build/yui/yui.js", 605); -loader = inst.Env._loader; - _yuitest_coverline("build/yui/yui.js", 606); -if (loader) { - _yuitest_coverline("build/yui/yui.js", 607); -if (!loader.moduleInfo[name] || loader.moduleInfo[name].temp) { - _yuitest_coverline("build/yui/yui.js", 608); -loader.addModule(details, name); - } - } - } - } - } - - _yuitest_coverline("build/yui/yui.js", 615); -return this; - }, - - /** - * Executes the function associated with each required - * module, binding the module to the YUI instance. - * @param {Array} r The array of modules to attach - * @param {Boolean} [moot=false] Don't throw a warning if the module is not attached - * @method _attach - * @private - */ - _attach: function(r, moot) { - _yuitest_coverfunc("build/yui/yui.js", "_attach", 626); -_yuitest_coverline("build/yui/yui.js", 627); -var i, name, mod, details, req, use, after, - mods = YUI.Env.mods, - aliases = YUI.Env.aliases, - Y = this, j, - cache = YUI.Env._renderedMods, - loader = Y.Env._loader, - done = Y.Env._attached, - len = r.length, loader, def, go, - c = []; - - //Check for conditional modules (in a second+ instance) and add their requirements - //TODO I hate this entire method, it needs to be fixed ASAP (3.5.0) ^davglass - _yuitest_coverline("build/yui/yui.js", 639); -for (i = 0; i < len; i++) { - _yuitest_coverline("build/yui/yui.js", 640); -name = r[i]; - _yuitest_coverline("build/yui/yui.js", 641); -mod = mods[name]; - _yuitest_coverline("build/yui/yui.js", 642); -c.push(name); - _yuitest_coverline("build/yui/yui.js", 643); -if (loader && loader.conditions[name]) { - _yuitest_coverline("build/yui/yui.js", 644); -for (j in loader.conditions[name]) { - _yuitest_coverline("build/yui/yui.js", 645); -if (loader.conditions[name].hasOwnProperty(j)) { - _yuitest_coverline("build/yui/yui.js", 646); -def = loader.conditions[name][j]; - _yuitest_coverline("build/yui/yui.js", 647); -go = def && ((def.ua && Y.UA[def.ua]) || (def.test && def.test(Y))); - _yuitest_coverline("build/yui/yui.js", 648); -if (go) { - _yuitest_coverline("build/yui/yui.js", 649); -c.push(def.name); - } - } - } - } - } - _yuitest_coverline("build/yui/yui.js", 655); -r = c; - _yuitest_coverline("build/yui/yui.js", 656); -len = r.length; - - _yuitest_coverline("build/yui/yui.js", 658); -for (i = 0; i < len; i++) { - _yuitest_coverline("build/yui/yui.js", 659); -if (!done[r[i]]) { - _yuitest_coverline("build/yui/yui.js", 660); -name = r[i]; - _yuitest_coverline("build/yui/yui.js", 661); -mod = mods[name]; - - _yuitest_coverline("build/yui/yui.js", 663); -if (aliases && aliases[name] && !mod) { - _yuitest_coverline("build/yui/yui.js", 664); -Y._attach(aliases[name]); - _yuitest_coverline("build/yui/yui.js", 665); -continue; - } - _yuitest_coverline("build/yui/yui.js", 667); -if (!mod) { - _yuitest_coverline("build/yui/yui.js", 668); -if (loader && loader.moduleInfo[name]) { - _yuitest_coverline("build/yui/yui.js", 669); -mod = loader.moduleInfo[name]; - _yuitest_coverline("build/yui/yui.js", 670); -moot = true; - } - - - //if (!loader || !loader.moduleInfo[name]) { - //if ((!loader || !loader.moduleInfo[name]) && !moot) { - _yuitest_coverline("build/yui/yui.js", 676); -if (!moot && name) { - _yuitest_coverline("build/yui/yui.js", 677); -if ((name.indexOf('skin-') === -1) && (name.indexOf('css') === -1)) { - _yuitest_coverline("build/yui/yui.js", 678); -Y.Env._missed.push(name); - _yuitest_coverline("build/yui/yui.js", 679); -Y.Env._missed = Y.Array.dedupe(Y.Env._missed); - _yuitest_coverline("build/yui/yui.js", 680); -Y.message('NOT loaded: ' + name, 'warn', 'yui'); - } - } - } else { - _yuitest_coverline("build/yui/yui.js", 684); -done[name] = true; - //Don't like this, but in case a mod was asked for once, then we fetch it - //We need to remove it from the missed list ^davglass - _yuitest_coverline("build/yui/yui.js", 687); -for (j = 0; j < Y.Env._missed.length; j++) { - _yuitest_coverline("build/yui/yui.js", 688); -if (Y.Env._missed[j] === name) { - _yuitest_coverline("build/yui/yui.js", 689); -Y.message('Found: ' + name + ' (was reported as missing earlier)', 'warn', 'yui'); - _yuitest_coverline("build/yui/yui.js", 690); -Y.Env._missed.splice(j, 1); - } - } - /* - If it's a temp module, we need to redo it's requirements if it's already loaded - since it may have been loaded by another instance and it's dependencies might - have been redefined inside the fetched file. - */ - _yuitest_coverline("build/yui/yui.js", 698); -if (loader && cache && cache[name] && cache[name].temp) { - _yuitest_coverline("build/yui/yui.js", 699); -loader.getRequires(cache[name]); - _yuitest_coverline("build/yui/yui.js", 700); -req = []; - _yuitest_coverline("build/yui/yui.js", 701); -for (j in loader.moduleInfo[name].expanded_map) { - _yuitest_coverline("build/yui/yui.js", 702); -if (loader.moduleInfo[name].expanded_map.hasOwnProperty(j)) { - _yuitest_coverline("build/yui/yui.js", 703); -req.push(j); - } - } - _yuitest_coverline("build/yui/yui.js", 706); -Y._attach(req); - } - - _yuitest_coverline("build/yui/yui.js", 709); -details = mod.details; - _yuitest_coverline("build/yui/yui.js", 710); -req = details.requires; - _yuitest_coverline("build/yui/yui.js", 711); -use = details.use; - _yuitest_coverline("build/yui/yui.js", 712); -after = details.after; - //Force Intl load if there is a language (Loader logic) @todo fix this shit - _yuitest_coverline("build/yui/yui.js", 714); -if (details.lang) { - _yuitest_coverline("build/yui/yui.js", 715); -req = req || []; - _yuitest_coverline("build/yui/yui.js", 716); -req.unshift('intl'); - } - - _yuitest_coverline("build/yui/yui.js", 719); -if (req) { - _yuitest_coverline("build/yui/yui.js", 720); -for (j = 0; j < req.length; j++) { - _yuitest_coverline("build/yui/yui.js", 721); -if (!done[req[j]]) { - _yuitest_coverline("build/yui/yui.js", 722); -if (!Y._attach(req)) { - _yuitest_coverline("build/yui/yui.js", 723); -return false; - } - _yuitest_coverline("build/yui/yui.js", 725); -break; - } - } - } - - _yuitest_coverline("build/yui/yui.js", 730); -if (after) { - _yuitest_coverline("build/yui/yui.js", 731); -for (j = 0; j < after.length; j++) { - _yuitest_coverline("build/yui/yui.js", 732); -if (!done[after[j]]) { - _yuitest_coverline("build/yui/yui.js", 733); -if (!Y._attach(after, true)) { - _yuitest_coverline("build/yui/yui.js", 734); -return false; - } - _yuitest_coverline("build/yui/yui.js", 736); -break; - } - } - } - - _yuitest_coverline("build/yui/yui.js", 741); -if (mod.fn) { - _yuitest_coverline("build/yui/yui.js", 742); -if (Y.config.throwFail) { - _yuitest_coverline("build/yui/yui.js", 743); -mod.fn(Y, name); - } else { - _yuitest_coverline("build/yui/yui.js", 745); -try { - _yuitest_coverline("build/yui/yui.js", 746); -mod.fn(Y, name); - } catch (e) { - _yuitest_coverline("build/yui/yui.js", 748); -Y.error('Attach error: ' + name, e, name); - _yuitest_coverline("build/yui/yui.js", 749); -return false; - } - } - } - - _yuitest_coverline("build/yui/yui.js", 754); -if (use) { - _yuitest_coverline("build/yui/yui.js", 755); -for (j = 0; j < use.length; j++) { - _yuitest_coverline("build/yui/yui.js", 756); -if (!done[use[j]]) { - _yuitest_coverline("build/yui/yui.js", 757); -if (!Y._attach(use)) { - _yuitest_coverline("build/yui/yui.js", 758); -return false; - } - _yuitest_coverline("build/yui/yui.js", 760); -break; - } - } - } - - - - } - } - } - - _yuitest_coverline("build/yui/yui.js", 771); -return true; - }, - /** - * Delays the `use` callback until another event has taken place. Like: window.onload, domready, contentready, available. - * @private - * @method _delayCallback - * @param {Callback} cb The original `use` callback - * @param {String|Object} until Either an event (load, domready) or an Object containing event/args keys for contentready/available - */ - _delayCallback: function(cb, until) { - - _yuitest_coverfunc("build/yui/yui.js", "_delayCallback", 780); -_yuitest_coverline("build/yui/yui.js", 782); -var Y = this, - mod = ['event-base']; - - _yuitest_coverline("build/yui/yui.js", 785); -until = (Y.Lang.isObject(until) ? until : { event: until }); - - _yuitest_coverline("build/yui/yui.js", 787); -if (until.event === 'load') { - _yuitest_coverline("build/yui/yui.js", 788); -mod.push('event-synthetic'); - } - - _yuitest_coverline("build/yui/yui.js", 791); -return function() { - _yuitest_coverfunc("build/yui/yui.js", "(anonymous 3)", 791); -_yuitest_coverline("build/yui/yui.js", 792); -var args = arguments; - _yuitest_coverline("build/yui/yui.js", 793); -Y._use(mod, function() { - _yuitest_coverfunc("build/yui/yui.js", "(anonymous 4)", 793); -_yuitest_coverline("build/yui/yui.js", 794); -Y.on(until.event, function() { - _yuitest_coverfunc("build/yui/yui.js", "(anonymous 5)", 794); -_yuitest_coverline("build/yui/yui.js", 795); -args[1].delayUntil = until.event; - _yuitest_coverline("build/yui/yui.js", 796); -cb.apply(Y, args); - }, until.args); - }); - }; - }, - - /** - * Attaches one or more modules to the YUI instance. When this - * is executed, the requirements are analyzed, and one of - * several things can happen: - * - * * All requirements are available on the page -- The modules - * are attached to the instance. If supplied, the use callback - * is executed synchronously. - * - * * Modules are missing, the Get utility is not available OR - * the 'bootstrap' config is false -- A warning is issued about - * the missing modules and all available modules are attached. - * - * * Modules are missing, the Loader is not available but the Get - * utility is and boostrap is not false -- The loader is bootstrapped - * before doing the following.... - * - * * Modules are missing and the Loader is available -- The loader - * expands the dependency tree and fetches missing modules. When - * the loader is finshed the callback supplied to use is executed - * asynchronously. - * - * @method use - * @param modules* {String|Array} 1-n modules to bind (uses arguments array). - * @param [callback] {Function} callback function executed when - * the instance has the required functionality. If included, it - * must be the last parameter. - * @param callback.Y {YUI} The `YUI` instance created for this sandbox - * @param callback.status {Object} Object containing `success`, `msg` and `data` properties - * - * @example - * // loads and attaches dd and its dependencies - * YUI().use('dd', function(Y) {}); - * - * // loads and attaches dd and node as well as all of their dependencies (since 3.4.0) - * YUI().use(['dd', 'node'], function(Y) {}); - * - * // attaches all modules that are available on the page - * YUI().use('*', function(Y) {}); - * - * // intrinsic YUI gallery support (since 3.1.0) - * YUI().use('gallery-yql', function(Y) {}); - * - * // intrinsic YUI 2in3 support (since 3.1.0) - * YUI().use('yui2-datatable', function(Y) {}); - * - * @return {YUI} the YUI instance. - */ - use: function() { - _yuitest_coverfunc("build/yui/yui.js", "use", 850); -_yuitest_coverline("build/yui/yui.js", 851); -var args = SLICE.call(arguments, 0), - callback = args[args.length - 1], - Y = this, - i = 0, - a = [], - name, - Env = Y.Env, - provisioned = true; - - // The last argument supplied to use can be a load complete callback - _yuitest_coverline("build/yui/yui.js", 861); -if (Y.Lang.isFunction(callback)) { - _yuitest_coverline("build/yui/yui.js", 862); -args.pop(); - _yuitest_coverline("build/yui/yui.js", 863); -if (Y.config.delayUntil) { - _yuitest_coverline("build/yui/yui.js", 864); -callback = Y._delayCallback(callback, Y.config.delayUntil); - } - } else { - _yuitest_coverline("build/yui/yui.js", 867); -callback = null; - } - _yuitest_coverline("build/yui/yui.js", 869); -if (Y.Lang.isArray(args[0])) { - _yuitest_coverline("build/yui/yui.js", 870); -args = args[0]; - } - - _yuitest_coverline("build/yui/yui.js", 873); -if (Y.config.cacheUse) { - _yuitest_coverline("build/yui/yui.js", 874); -while ((name = args[i++])) { - _yuitest_coverline("build/yui/yui.js", 875); -if (!Env._attached[name]) { - _yuitest_coverline("build/yui/yui.js", 876); -provisioned = false; - _yuitest_coverline("build/yui/yui.js", 877); -break; - } - } - - _yuitest_coverline("build/yui/yui.js", 881); -if (provisioned) { - _yuitest_coverline("build/yui/yui.js", 882); -if (args.length) { - } - _yuitest_coverline("build/yui/yui.js", 884); -Y._notify(callback, ALREADY_DONE, args); - _yuitest_coverline("build/yui/yui.js", 885); -return Y; - } - } - - _yuitest_coverline("build/yui/yui.js", 889); -if (Y._loading) { - _yuitest_coverline("build/yui/yui.js", 890); -Y._useQueue = Y._useQueue || new Y.Queue(); - _yuitest_coverline("build/yui/yui.js", 891); -Y._useQueue.add([args, callback]); - } else { - _yuitest_coverline("build/yui/yui.js", 893); -Y._use(args, function(Y, response) { - _yuitest_coverfunc("build/yui/yui.js", "(anonymous 6)", 893); -_yuitest_coverline("build/yui/yui.js", 894); -Y._notify(callback, response, args); - }); - } - - _yuitest_coverline("build/yui/yui.js", 898); -return Y; - }, - /** - * Notify handler from Loader for attachment/load errors - * @method _notify - * @param callback {Function} The callback to pass to the `Y.config.loadErrorFn` - * @param response {Object} The response returned from Loader - * @param args {Array} The aruments passed from Loader - * @private - */ - _notify: function(callback, response, args) { - _yuitest_coverfunc("build/yui/yui.js", "_notify", 908); -_yuitest_coverline("build/yui/yui.js", 909); -if (!response.success && this.config.loadErrorFn) { - _yuitest_coverline("build/yui/yui.js", 910); -this.config.loadErrorFn.call(this, this, callback, response, args); - } else {_yuitest_coverline("build/yui/yui.js", 911); -if (callback) { - _yuitest_coverline("build/yui/yui.js", 912); -if (this.Env._missed && this.Env._missed.length) { - _yuitest_coverline("build/yui/yui.js", 913); -response.msg = 'Missing modules: ' + this.Env._missed.join(); - _yuitest_coverline("build/yui/yui.js", 914); -response.success = false; - } - _yuitest_coverline("build/yui/yui.js", 916); -if (this.config.throwFail) { - _yuitest_coverline("build/yui/yui.js", 917); -callback(this, response); - } else { - _yuitest_coverline("build/yui/yui.js", 919); -try { - _yuitest_coverline("build/yui/yui.js", 920); -callback(this, response); - } catch (e) { - _yuitest_coverline("build/yui/yui.js", 922); -this.error('use callback error', e, args); - } - } - }} - }, - - /** - * This private method is called from the `use` method queue. To ensure that only one set of loading - * logic is performed at a time. - * @method _use - * @private - * @param args* {String} 1-n modules to bind (uses arguments array). - * @param *callback {Function} callback function executed when - * the instance has the required functionality. If included, it - * must be the last parameter. - */ - _use: function(args, callback) { - - _yuitest_coverfunc("build/yui/yui.js", "_use", 938); -_yuitest_coverline("build/yui/yui.js", 940); -if (!this.Array) { - _yuitest_coverline("build/yui/yui.js", 941); -this._attach(['yui-base']); - } - - _yuitest_coverline("build/yui/yui.js", 944); -var len, loader, handleBoot, handleRLS, - Y = this, - G_ENV = YUI.Env, - mods = G_ENV.mods, - Env = Y.Env, - used = Env._used, - aliases = G_ENV.aliases, - queue = G_ENV._loaderQueue, - firstArg = args[0], - YArray = Y.Array, - config = Y.config, - boot = config.bootstrap, - missing = [], - i, - r = [], - ret = true, - fetchCSS = config.fetchCSS, - process = function(names, skip) { - - _yuitest_coverfunc("build/yui/yui.js", "process", 961); -_yuitest_coverline("build/yui/yui.js", 963); -var i = 0, a = [], name, len, m, req, use; - - _yuitest_coverline("build/yui/yui.js", 965); -if (!names.length) { - _yuitest_coverline("build/yui/yui.js", 966); -return; - } - - _yuitest_coverline("build/yui/yui.js", 969); -if (aliases) { - _yuitest_coverline("build/yui/yui.js", 970); -len = names.length; - _yuitest_coverline("build/yui/yui.js", 971); -for (i = 0; i < len; i++) { - _yuitest_coverline("build/yui/yui.js", 972); -if (aliases[names[i]] && !mods[names[i]]) { - _yuitest_coverline("build/yui/yui.js", 973); -a = [].concat(a, aliases[names[i]]); - } else { - _yuitest_coverline("build/yui/yui.js", 975); -a.push(names[i]); - } - } - _yuitest_coverline("build/yui/yui.js", 978); -names = a; - } - - _yuitest_coverline("build/yui/yui.js", 981); -len = names.length; - - _yuitest_coverline("build/yui/yui.js", 983); -for (i = 0; i < len; i++) { - _yuitest_coverline("build/yui/yui.js", 984); -name = names[i]; - _yuitest_coverline("build/yui/yui.js", 985); -if (!skip) { - _yuitest_coverline("build/yui/yui.js", 986); -r.push(name); - } - - // only attach a module once - _yuitest_coverline("build/yui/yui.js", 990); -if (used[name]) { - _yuitest_coverline("build/yui/yui.js", 991); -continue; - } - - _yuitest_coverline("build/yui/yui.js", 994); -m = mods[name]; - _yuitest_coverline("build/yui/yui.js", 995); -req = null; - _yuitest_coverline("build/yui/yui.js", 996); -use = null; - - _yuitest_coverline("build/yui/yui.js", 998); -if (m) { - _yuitest_coverline("build/yui/yui.js", 999); -used[name] = true; - _yuitest_coverline("build/yui/yui.js", 1000); -req = m.details.requires; - _yuitest_coverline("build/yui/yui.js", 1001); -use = m.details.use; - } else { - // CSS files don't register themselves, see if it has - // been loaded - _yuitest_coverline("build/yui/yui.js", 1005); -if (!G_ENV._loaded[VERSION][name]) { - _yuitest_coverline("build/yui/yui.js", 1006); -missing.push(name); - } else { - _yuitest_coverline("build/yui/yui.js", 1008); -used[name] = true; // probably css - } - } - - // make sure requirements are attached - _yuitest_coverline("build/yui/yui.js", 1013); -if (req && req.length) { - _yuitest_coverline("build/yui/yui.js", 1014); -process(req); - } - - // make sure we grab the submodule dependencies too - _yuitest_coverline("build/yui/yui.js", 1018); -if (use && use.length) { - _yuitest_coverline("build/yui/yui.js", 1019); -process(use, 1); - } - } - - }, - - handleLoader = function(fromLoader) { - _yuitest_coverfunc("build/yui/yui.js", "handleLoader", 1025); -_yuitest_coverline("build/yui/yui.js", 1026); -var response = fromLoader || { - success: true, - msg: 'not dynamic' - }, - redo, origMissing, - ret = true, - data = response.data; - - _yuitest_coverline("build/yui/yui.js", 1034); -Y._loading = false; - - _yuitest_coverline("build/yui/yui.js", 1036); -if (data) { - _yuitest_coverline("build/yui/yui.js", 1037); -origMissing = missing; - _yuitest_coverline("build/yui/yui.js", 1038); -missing = []; - _yuitest_coverline("build/yui/yui.js", 1039); -r = []; - _yuitest_coverline("build/yui/yui.js", 1040); -process(data); - _yuitest_coverline("build/yui/yui.js", 1041); -redo = missing.length; - _yuitest_coverline("build/yui/yui.js", 1042); -if (redo) { - _yuitest_coverline("build/yui/yui.js", 1043); -if ([].concat(missing).sort().join() == - origMissing.sort().join()) { - _yuitest_coverline("build/yui/yui.js", 1045); -redo = false; - } - } - } - - _yuitest_coverline("build/yui/yui.js", 1050); -if (redo && data) { - _yuitest_coverline("build/yui/yui.js", 1051); -Y._loading = true; - _yuitest_coverline("build/yui/yui.js", 1052); -Y._use(missing, function() { - _yuitest_coverfunc("build/yui/yui.js", "(anonymous 7)", 1052); -_yuitest_coverline("build/yui/yui.js", 1053); -if (Y._attach(data)) { - _yuitest_coverline("build/yui/yui.js", 1054); -Y._notify(callback, response, data); - } - }); - } else { - _yuitest_coverline("build/yui/yui.js", 1058); -if (data) { - _yuitest_coverline("build/yui/yui.js", 1059); -ret = Y._attach(data); - } - _yuitest_coverline("build/yui/yui.js", 1061); -if (ret) { - _yuitest_coverline("build/yui/yui.js", 1062); -Y._notify(callback, response, args); - } - } - - _yuitest_coverline("build/yui/yui.js", 1066); -if (Y._useQueue && Y._useQueue.size() && !Y._loading) { - _yuitest_coverline("build/yui/yui.js", 1067); -Y._use.apply(Y, Y._useQueue.next()); - } - - }; - - - // YUI().use('*'); // bind everything available - _yuitest_coverline("build/yui/yui.js", 1074); -if (firstArg === '*') { - _yuitest_coverline("build/yui/yui.js", 1075); -args = []; - _yuitest_coverline("build/yui/yui.js", 1076); -for (i in mods) { - _yuitest_coverline("build/yui/yui.js", 1077); -if (mods.hasOwnProperty(i)) { - _yuitest_coverline("build/yui/yui.js", 1078); -args.push(i); - } - } - _yuitest_coverline("build/yui/yui.js", 1081); -ret = Y._attach(args); - _yuitest_coverline("build/yui/yui.js", 1082); -if (ret) { - _yuitest_coverline("build/yui/yui.js", 1083); -handleLoader(); - } - _yuitest_coverline("build/yui/yui.js", 1085); -return Y; - } - - _yuitest_coverline("build/yui/yui.js", 1088); -if ((mods.loader || mods['loader-base']) && !Y.Loader) { - _yuitest_coverline("build/yui/yui.js", 1089); -Y._attach(['loader' + ((!mods.loader) ? '-base' : '')]); - } - - - // use loader to expand dependencies and sort the - // requirements if it is available. - _yuitest_coverline("build/yui/yui.js", 1095); -if (boot && Y.Loader && args.length) { - _yuitest_coverline("build/yui/yui.js", 1096); -loader = getLoader(Y); - _yuitest_coverline("build/yui/yui.js", 1097); -loader.require(args); - _yuitest_coverline("build/yui/yui.js", 1098); -loader.ignoreRegistered = true; - _yuitest_coverline("build/yui/yui.js", 1099); -loader._boot = true; - _yuitest_coverline("build/yui/yui.js", 1100); -loader.calculate(null, (fetchCSS) ? null : 'js'); - _yuitest_coverline("build/yui/yui.js", 1101); -args = loader.sorted; - _yuitest_coverline("build/yui/yui.js", 1102); -loader._boot = false; - } - - _yuitest_coverline("build/yui/yui.js", 1105); -process(args); - - _yuitest_coverline("build/yui/yui.js", 1107); -len = missing.length; - - - _yuitest_coverline("build/yui/yui.js", 1110); -if (len) { - _yuitest_coverline("build/yui/yui.js", 1111); -missing = YArray.dedupe(missing); - _yuitest_coverline("build/yui/yui.js", 1112); -len = missing.length; - } - - - // dynamic load - _yuitest_coverline("build/yui/yui.js", 1117); -if (boot && len && Y.Loader) { - _yuitest_coverline("build/yui/yui.js", 1118); -Y._loading = true; - _yuitest_coverline("build/yui/yui.js", 1119); -loader = getLoader(Y); - _yuitest_coverline("build/yui/yui.js", 1120); -loader.onEnd = handleLoader; - _yuitest_coverline("build/yui/yui.js", 1121); -loader.context = Y; - _yuitest_coverline("build/yui/yui.js", 1122); -loader.data = args; - _yuitest_coverline("build/yui/yui.js", 1123); -loader.ignoreRegistered = false; - _yuitest_coverline("build/yui/yui.js", 1124); -loader.require(args); - _yuitest_coverline("build/yui/yui.js", 1125); -loader.insert(null, (fetchCSS) ? null : 'js'); - - } else {_yuitest_coverline("build/yui/yui.js", 1127); -if (boot && len && Y.Get && !Env.bootstrapped) { - - _yuitest_coverline("build/yui/yui.js", 1129); -Y._loading = true; - - _yuitest_coverline("build/yui/yui.js", 1131); -handleBoot = function() { - _yuitest_coverfunc("build/yui/yui.js", "handleBoot", 1131); -_yuitest_coverline("build/yui/yui.js", 1132); -Y._loading = false; - _yuitest_coverline("build/yui/yui.js", 1133); -queue.running = false; - _yuitest_coverline("build/yui/yui.js", 1134); -Env.bootstrapped = true; - _yuitest_coverline("build/yui/yui.js", 1135); -G_ENV._bootstrapping = false; - _yuitest_coverline("build/yui/yui.js", 1136); -if (Y._attach(['loader'])) { - _yuitest_coverline("build/yui/yui.js", 1137); -Y._use(args, callback); - } - }; - - _yuitest_coverline("build/yui/yui.js", 1141); -if (G_ENV._bootstrapping) { - _yuitest_coverline("build/yui/yui.js", 1142); -queue.add(handleBoot); - } else { - _yuitest_coverline("build/yui/yui.js", 1144); -G_ENV._bootstrapping = true; - _yuitest_coverline("build/yui/yui.js", 1145); -Y.Get.script(config.base + config.loaderPath, { - onEnd: handleBoot - }); - } - - } else { - _yuitest_coverline("build/yui/yui.js", 1151); -ret = Y._attach(args); - _yuitest_coverline("build/yui/yui.js", 1152); -if (ret) { - _yuitest_coverline("build/yui/yui.js", 1153); -handleLoader(); - } - }} - - _yuitest_coverline("build/yui/yui.js", 1157); -return Y; - }, - - - /** - Adds a namespace object onto the YUI global if called statically. - - // creates YUI.your.namespace.here as nested objects - YUI.namespace("your.namespace.here"); - - If called as a method on a YUI instance, it creates the - namespace on the instance. - - // creates Y.property.package - Y.namespace("property.package"); - - Dots in the input string cause `namespace` to create nested objects for - each token. If any part of the requested namespace already exists, the - current object will be left in place. This allows multiple calls to - `namespace` to preserve existing namespaced properties. - - If the first token in the namespace string is "YAHOO", the token is - discarded. - - Be careful with namespace tokens. Reserved words may work in some browsers - and not others. For instance, the following will fail in some browsers - because the supported version of JavaScript reserves the word "long": - - Y.namespace("really.long.nested.namespace"); - - Note: If you pass multiple arguments to create multiple namespaces, only - the last one created is returned from this function. - - @method namespace - @param {String} namespace* namespaces to create. - @return {Object} A reference to the last namespace object created. - **/ - namespace: function() { - _yuitest_coverfunc("build/yui/yui.js", "namespace", 1194); -_yuitest_coverline("build/yui/yui.js", 1195); -var a = arguments, o, i = 0, j, d, arg; - - _yuitest_coverline("build/yui/yui.js", 1197); -for (; i < a.length; i++) { - _yuitest_coverline("build/yui/yui.js", 1198); -o = this; //Reset base object per argument or it will get reused from the last - _yuitest_coverline("build/yui/yui.js", 1199); -arg = a[i]; - _yuitest_coverline("build/yui/yui.js", 1200); -if (arg.indexOf(PERIOD) > -1) { //Skip this if no "." is present - _yuitest_coverline("build/yui/yui.js", 1201); -d = arg.split(PERIOD); - _yuitest_coverline("build/yui/yui.js", 1202); -for (j = (d[0] == 'YAHOO') ? 1 : 0; j < d.length; j++) { - _yuitest_coverline("build/yui/yui.js", 1203); -o[d[j]] = o[d[j]] || {}; - _yuitest_coverline("build/yui/yui.js", 1204); -o = o[d[j]]; - } - } else { - _yuitest_coverline("build/yui/yui.js", 1207); -o[arg] = o[arg] || {}; - _yuitest_coverline("build/yui/yui.js", 1208); -o = o[arg]; //Reset base object to the new object so it's returned - } - } - _yuitest_coverline("build/yui/yui.js", 1211); -return o; - }, - - // this is replaced if the log module is included - log: NOOP, - message: NOOP, - // this is replaced if the dump module is included - dump: function (o) { _yuitest_coverfunc("build/yui/yui.js", "dump", 1218); -_yuitest_coverline("build/yui/yui.js", 1218); -return ''+o; }, - - /** - * Report an error. The reporting mechanism is controlled by - * the `throwFail` configuration attribute. If throwFail is - * not specified, the message is written to the Logger, otherwise - * a JS error is thrown. If an `errorFn` is specified in the config - * it must return `true` to keep the error from being thrown. - * @method error - * @param msg {String} the error message. - * @param e {Error|String} Optional JS error that was caught, or an error string. - * @param src Optional additional info (passed to `Y.config.errorFn` and `Y.message`) - * and `throwFail` is specified, this error will be re-thrown. - * @return {YUI} this YUI instance. - */ - error: function(msg, e, src) { - //TODO Add check for window.onerror here - - _yuitest_coverfunc("build/yui/yui.js", "error", 1233); -_yuitest_coverline("build/yui/yui.js", 1236); -var Y = this, ret; - - _yuitest_coverline("build/yui/yui.js", 1238); -if (Y.config.errorFn) { - _yuitest_coverline("build/yui/yui.js", 1239); -ret = Y.config.errorFn.apply(Y, arguments); - } - - _yuitest_coverline("build/yui/yui.js", 1242); -if (!ret) { - _yuitest_coverline("build/yui/yui.js", 1243); -throw (e || new Error(msg)); - } else { - _yuitest_coverline("build/yui/yui.js", 1245); -Y.message(msg, 'error', ''+src); // don't scrub this one - } - - _yuitest_coverline("build/yui/yui.js", 1248); -return Y; - }, - - /** - * Generate an id that is unique among all YUI instances - * @method guid - * @param pre {String} optional guid prefix. - * @return {String} the guid. - */ - guid: function(pre) { - _yuitest_coverfunc("build/yui/yui.js", "guid", 1257); -_yuitest_coverline("build/yui/yui.js", 1258); -var id = this.Env._guidp + '_' + (++this.Env._uidx); - _yuitest_coverline("build/yui/yui.js", 1259); -return (pre) ? (pre + id) : id; - }, - - /** - * Returns a `guid` associated with an object. If the object - * does not have one, a new one is created unless `readOnly` - * is specified. - * @method stamp - * @param o {Object} The object to stamp. - * @param readOnly {Boolean} if `true`, a valid guid will only - * be returned if the object has one assigned to it. - * @return {String} The object's guid or null. - */ - stamp: function(o, readOnly) { - _yuitest_coverfunc("build/yui/yui.js", "stamp", 1272); -_yuitest_coverline("build/yui/yui.js", 1273); -var uid; - _yuitest_coverline("build/yui/yui.js", 1274); -if (!o) { - _yuitest_coverline("build/yui/yui.js", 1275); -return o; - } - - // IE generates its own unique ID for dom nodes - // The uniqueID property of a document node returns a new ID - _yuitest_coverline("build/yui/yui.js", 1280); -if (o.uniqueID && o.nodeType && o.nodeType !== 9) { - _yuitest_coverline("build/yui/yui.js", 1281); -uid = o.uniqueID; - } else { - _yuitest_coverline("build/yui/yui.js", 1283); -uid = (typeof o === 'string') ? o : o._yuid; - } - - _yuitest_coverline("build/yui/yui.js", 1286); -if (!uid) { - _yuitest_coverline("build/yui/yui.js", 1287); -uid = this.guid(); - _yuitest_coverline("build/yui/yui.js", 1288); -if (!readOnly) { - _yuitest_coverline("build/yui/yui.js", 1289); -try { - _yuitest_coverline("build/yui/yui.js", 1290); -o._yuid = uid; - } catch (e) { - _yuitest_coverline("build/yui/yui.js", 1292); -uid = null; - } - } - } - _yuitest_coverline("build/yui/yui.js", 1296); -return uid; - }, - - /** - * Destroys the YUI instance - * @method destroy - * @since 3.3.0 - */ - destroy: function() { - _yuitest_coverfunc("build/yui/yui.js", "destroy", 1304); -_yuitest_coverline("build/yui/yui.js", 1305); -var Y = this; - _yuitest_coverline("build/yui/yui.js", 1306); -if (Y.Event) { - _yuitest_coverline("build/yui/yui.js", 1307); -Y.Event._unload(); - } - _yuitest_coverline("build/yui/yui.js", 1309); -delete instances[Y.id]; - _yuitest_coverline("build/yui/yui.js", 1310); -delete Y.Env; - _yuitest_coverline("build/yui/yui.js", 1311); -delete Y.config; - } - - /** - * instanceof check for objects that works around - * memory leak in IE when the item tested is - * window/document - * @method instanceOf - * @param o {Object} The object to check. - * @param type {Object} The class to check against. - * @since 3.3.0 - */ -}; - - _yuitest_coverline("build/yui/yui.js", 1325); -YUI.prototype = proto; - - // inheritance utilities are not available yet - _yuitest_coverline("build/yui/yui.js", 1328); -for (prop in proto) { - _yuitest_coverline("build/yui/yui.js", 1329); -if (proto.hasOwnProperty(prop)) { - _yuitest_coverline("build/yui/yui.js", 1330); -YUI[prop] = proto[prop]; - } - } - - /** -Static method on the Global YUI object to apply a config to all YUI instances. -It's main use case is "mashups" where several third party scripts are trying to write to -a global YUI config at the same time. This way they can all call `YUI.applyConfig({})` instead of -overwriting other scripts configs. -@static -@since 3.5.0 -@method applyConfig -@param {Object} o the configuration object. -@example - - YUI.applyConfig({ - modules: { - davglass: { - fullpath: './davglass.js' - } - } - }); - - YUI.applyConfig({ - modules: { - foo: { - fullpath: './foo.js' - } - } - }); - - YUI().use('davglass', function(Y) { - //Module davglass will be available here.. - }); - - */ - _yuitest_coverline("build/yui/yui.js", 1366); -YUI.applyConfig = function(o) { - _yuitest_coverfunc("build/yui/yui.js", "applyConfig", 1366); -_yuitest_coverline("build/yui/yui.js", 1367); -if (!o) { - _yuitest_coverline("build/yui/yui.js", 1368); -return; - } - //If there is a GlobalConfig, apply it first to set the defaults - _yuitest_coverline("build/yui/yui.js", 1371); -if (YUI.GlobalConfig) { - _yuitest_coverline("build/yui/yui.js", 1372); -this.prototype.applyConfig.call(this, YUI.GlobalConfig); - } - //Apply this config to it - _yuitest_coverline("build/yui/yui.js", 1375); -this.prototype.applyConfig.call(this, o); - //Reset GlobalConfig to the combined config - _yuitest_coverline("build/yui/yui.js", 1377); -YUI.GlobalConfig = this.config; - }; - - // set up the environment - _yuitest_coverline("build/yui/yui.js", 1381); -YUI._init(); - - _yuitest_coverline("build/yui/yui.js", 1383); -if (hasWin) { - // add a window load event at load time so we can capture - // the case where it fires before dynamic loading is - // complete. - _yuitest_coverline("build/yui/yui.js", 1387); -add(window, 'load', handleLoad); - } else { - _yuitest_coverline("build/yui/yui.js", 1389); -handleLoad(); - } - - _yuitest_coverline("build/yui/yui.js", 1392); -YUI.Env.add = add; - _yuitest_coverline("build/yui/yui.js", 1393); -YUI.Env.remove = remove; - - /*global exports*/ - // Support the CommonJS method for exporting our single global - _yuitest_coverline("build/yui/yui.js", 1397); -if (typeof exports == 'object') { - _yuitest_coverline("build/yui/yui.js", 1398); -exports.YUI = YUI; - } - -}()); - - -/** - * The config object contains all of the configuration options for - * the `YUI` instance. This object is supplied by the implementer - * when instantiating a `YUI` instance. Some properties have default - * values if they are not supplied by the implementer. This should - * not be updated directly because some values are cached. Use - * `applyConfig()` to update the config object on a YUI instance that - * has already been configured. - * - * @class config - * @static - */ - -/** - * Allows the YUI seed file to fetch the loader component and library - * metadata to dynamically load additional dependencies. - * - * @property bootstrap - * @type boolean - * @default true - */ - -/** - * Turns on writing Ylog messages to the browser console. - * - * @property debug - * @type boolean - * @default true - */ - -/** - * Log to the browser console if debug is on and the browser has a - * supported console. - * - * @property useBrowserConsole - * @type boolean - * @default true - */ - -/** - * A hash of log sources that should be logged. If specified, only - * log messages from these sources will be logged. - * - * @property logInclude - * @type object - */ - -/** - * A hash of log sources that should be not be logged. If specified, - * all sources are logged if not on this list. - * - * @property logExclude - * @type object - */ - -/** - * Set to true if the yui seed file was dynamically loaded in - * order to bootstrap components relying on the window load event - * and the `domready` custom event. - * - * @property injected - * @type boolean - * @default false - */ - -/** - * If `throwFail` is set, `Y.error` will generate or re-throw a JS Error. - * Otherwise the failure is logged. - * - * @property throwFail - * @type boolean - * @default true - */ - -/** - * The window/frame that this instance should operate in. - * - * @property win - * @type Window - * @default the window hosting YUI - */ - -/** - * The document associated with the 'win' configuration. - * - * @property doc - * @type Document - * @default the document hosting YUI - */ - -/** - * A list of modules that defines the YUI core (overrides the default list). - * - * @property core - * @type Array - * @default [ get,features,intl-base,yui-log,yui-later,loader-base, loader-rollup, loader-yui3 ] - */ - -/** - * A list of languages in order of preference. This list is matched against - * the list of available languages in modules that the YUI instance uses to - * determine the best possible localization of language sensitive modules. - * Languages are represented using BCP 47 language tags, such as "en-GB" for - * English as used in the United Kingdom, or "zh-Hans-CN" for simplified - * Chinese as used in China. The list can be provided as a comma-separated - * list or as an array. - * - * @property lang - * @type string|string[] - */ - -/** - * The default date format - * @property dateFormat - * @type string - * @deprecated use configuration in `DataType.Date.format()` instead. - */ - -/** - * The default locale - * @property locale - * @type string - * @deprecated use `config.lang` instead. - */ - -/** - * The default interval when polling in milliseconds. - * @property pollInterval - * @type int - * @default 20 - */ - -/** - * The number of dynamic nodes to insert by default before - * automatically removing them. This applies to script nodes - * because removing the node will not make the evaluated script - * unavailable. Dynamic CSS is not auto purged, because removing - * a linked style sheet will also remove the style definitions. - * @property purgethreshold - * @type int - * @default 20 - */ - -/** - * The default interval when polling in milliseconds. - * @property windowResizeDelay - * @type int - * @default 40 - */ - -/** - * Base directory for dynamic loading - * @property base - * @type string - */ - -/* - * The secure base dir (not implemented) - * For dynamic loading. - * @property secureBase - * @type string - */ - -/** - * The YUI combo service base dir. Ex: `http://yui.yahooapis.com/combo?` - * For dynamic loading. - * @property comboBase - * @type string - */ - -/** - * The root path to prepend to module path for the combo service. - * Ex: 3.0.0b1/build/ - * For dynamic loading. - * @property root - * @type string - */ - -/** - * A filter to apply to result urls. This filter will modify the default - * path for all modules. The default path for the YUI library is the - * minified version of the files (e.g., event-min.js). The filter property - * can be a predefined filter or a custom filter. The valid predefined - * filters are: - *
          - *
          DEBUG
          - *
          Selects the debug versions of the library (e.g., event-debug.js). - * This option will automatically include the Logger widget
          - *
          RAW
          - *
          Selects the non-minified version of the library (e.g., event.js).
          - *
          - * You can also define a custom filter, which must be an object literal - * containing a search expression and a replace string: - * - * myFilter: { - * 'searchExp': "-min\\.js", - * 'replaceStr': "-debug.js" - * } - * - * For dynamic loading. - * - * @property filter - * @type string|object - */ - -/** - * The `skin` config let's you configure application level skin - * customizations. It contains the following attributes which - * can be specified to override the defaults: - * - * // The default skin, which is automatically applied if not - * // overriden by a component-specific skin definition. - * // Change this in to apply a different skin globally - * defaultSkin: 'sam', - * - * // This is combined with the loader base property to get - * // the default root directory for a skin. - * base: 'assets/skins/', - * - * // Any component-specific overrides can be specified here, - * // making it possible to load different skins for different - * // components. It is possible to load more than one skin - * // for a given component as well. - * overrides: { - * slider: ['capsule', 'round'] - * } - * - * For dynamic loading. - * - * @property skin - */ - -/** - * Hash of per-component filter specification. If specified for a given - * component, this overrides the filter config. - * - * For dynamic loading. - * - * @property filters - */ - -/** - * Use the YUI combo service to reduce the number of http connections - * required to load your dependencies. Turning this off will - * disable combo handling for YUI and all module groups configured - * with a combo service. - * - * For dynamic loading. - * - * @property combine - * @type boolean - * @default true if 'base' is not supplied, false if it is. - */ - -/** - * A list of modules that should never be dynamically loaded - * - * @property ignore - * @type string[] - */ - -/** - * A list of modules that should always be loaded when required, even if already - * present on the page. - * - * @property force - * @type string[] - */ - -/** - * Node or id for a node that should be used as the insertion point for new - * nodes. For dynamic loading. - * - * @property insertBefore - * @type string - */ - -/** - * Object literal containing attributes to add to dynamically loaded script - * nodes. - * @property jsAttributes - * @type string - */ - -/** - * Object literal containing attributes to add to dynamically loaded link - * nodes. - * @property cssAttributes - * @type string - */ - -/** - * Number of milliseconds before a timeout occurs when dynamically - * loading nodes. If not set, there is no timeout. - * @property timeout - * @type int - */ - -/** - * Callback for the 'CSSComplete' event. When dynamically loading YUI - * components with CSS, this property fires when the CSS is finished - * loading but script loading is still ongoing. This provides an - * opportunity to enhance the presentation of a loading page a little - * bit before the entire loading process is done. - * - * @property onCSS - * @type function - */ - -/** - * A hash of module definitions to add to the list of YUI components. - * These components can then be dynamically loaded side by side with - * YUI via the `use()` method. This is a hash, the key is the module - * name, and the value is an object literal specifying the metdata - * for the module. See `Loader.addModule` for the supported module - * metadata fields. Also see groups, which provides a way to - * configure the base and combo spec for a set of modules. - * - * modules: { - * mymod1: { - * requires: ['node'], - * fullpath: '/mymod1/mymod1.js' - * }, - * mymod2: { - * requires: ['mymod1'], - * fullpath: '/mymod2/mymod2.js' - * }, - * mymod3: '/js/mymod3.js', - * mycssmod: '/css/mycssmod.css' - * } - * - * - * @property modules - * @type object - */ - -/** - * Aliases are dynamic groups of modules that can be used as - * shortcuts. - * - * YUI({ - * aliases: { - * davglass: [ 'node', 'yql', 'dd' ], - * mine: [ 'davglass', 'autocomplete'] - * } - * }).use('mine', function(Y) { - * //Node, YQL, DD & AutoComplete available here.. - * }); - * - * @property aliases - * @type object - */ - -/** - * A hash of module group definitions. It for each group you - * can specify a list of modules and the base path and - * combo spec to use when dynamically loading the modules. - * - * groups: { - * yui2: { - * // specify whether or not this group has a combo service - * combine: true, - * - * // The comboSeperator to use with this group's combo handler - * comboSep: ';', - * - * // The maxURLLength for this server - * maxURLLength: 500, - * - * // the base path for non-combo paths - * base: 'http://yui.yahooapis.com/2.8.0r4/build/', - * - * // the path to the combo service - * comboBase: 'http://yui.yahooapis.com/combo?', - * - * // a fragment to prepend to the path attribute when - * // when building combo urls - * root: '2.8.0r4/build/', - * - * // the module definitions - * modules: { - * yui2_yde: { - * path: "yahoo-dom-event/yahoo-dom-event.js" - * }, - * yui2_anim: { - * path: "animation/animation.js", - * requires: ['yui2_yde'] - * } - * } - * } - * } - * - * @property groups - * @type object - */ - -/** - * The loader 'path' attribute to the loader itself. This is combined - * with the 'base' attribute to dynamically load the loader component - * when boostrapping with the get utility alone. - * - * @property loaderPath - * @type string - * @default loader/loader-min.js - */ - -/** - * Specifies whether or not YUI().use(...) will attempt to load CSS - * resources at all. Any truthy value will cause CSS dependencies - * to load when fetching script. The special value 'force' will - * cause CSS dependencies to be loaded even if no script is needed. - * - * @property fetchCSS - * @type boolean|string - * @default true - */ - -/** - * The default gallery version to build gallery module urls - * @property gallery - * @type string - * @since 3.1.0 - */ - -/** - * The default YUI 2 version to build yui2 module urls. This is for - * intrinsic YUI 2 support via the 2in3 project. Also see the '2in3' - * config for pulling different revisions of the wrapped YUI 2 - * modules. - * @since 3.1.0 - * @property yui2 - * @type string - * @default 2.9.0 - */ - -/** - * The 2in3 project is a deployment of the various versions of YUI 2 - * deployed as first-class YUI 3 modules. Eventually, the wrapper - * for the modules will change (but the underlying YUI 2 code will - * be the same), and you can select a particular version of - * the wrapper modules via this config. - * @since 3.1.0 - * @property 2in3 - * @type string - * @default 4 - */ - -/** - * Alternative console log function for use in environments without - * a supported native console. The function is executed in the - * YUI instance context. - * @since 3.1.0 - * @property logFn - * @type Function - */ - -/** - * A callback to execute when Y.error is called. It receives the - * error message and an javascript error object if Y.error was - * executed because a javascript error was caught. The function - * is executed in the YUI instance context. Returning `true` from this - * function will stop the Error from being thrown. - * - * @since 3.2.0 - * @property errorFn - * @type Function - */ - -/** - * A callback to execute when the loader fails to load one or - * more resource. This could be because of a script load - * failure. It can also fail if a javascript module fails - * to register itself, but only when the 'requireRegistration' - * is true. If this function is defined, the use() callback will - * only be called when the loader succeeds, otherwise it always - * executes unless there was a javascript error when attaching - * a module. - * - * @since 3.3.0 - * @property loadErrorFn - * @type Function - */ - -/** - * When set to true, the YUI loader will expect that all modules - * it is responsible for loading will be first-class YUI modules - * that register themselves with the YUI global. If this is - * set to true, loader will fail if the module registration fails - * to happen after the script is loaded. - * - * @since 3.3.0 - * @property requireRegistration - * @type boolean - * @default false - */ - -/** - * Cache serviced use() requests. - * @since 3.3.0 - * @property cacheUse - * @type boolean - * @default true - * @deprecated no longer used - */ - -/** - * Whether or not YUI should use native ES5 functionality when available for - * features like `Y.Array.each()`, `Y.Object()`, etc. When `false`, YUI will - * always use its own fallback implementations instead of relying on ES5 - * functionality, even when it's available. - * - * @property useNativeES5 - * @type Boolean - * @default true - * @since 3.5.0 - */ - -/** -Delay the `use` callback until a specific event has passed (`load`, `domready`, `contentready` or `available`) -@property delayUntil -@type String|Object -@since 3.6.0 -@example - -You can use `load` or `domready` strings by default: - - YUI({ - delayUntil: 'domready' - }, function(Y) { - //This will not fire until 'domeready' - }); - -Or you can delay until a node is available (with `available` or `contentready`): - - YUI({ - delayUntil: { - event: 'available', - args: '#foo' - } - }, function(Y) { - //This will not fire until '#foo' is - // available in the DOM - }); - - -*/ -_yuitest_coverline("build/yui/yui.js", 1950); -YUI.add('yui-base', function (Y, NAME) { - -/* - * YUI stub - * @module yui - * @submodule yui-base - */ -/** - * The YUI module contains the components required for building the YUI - * seed file. This includes the script loading mechanism, a simple queue, - * and the core utilities for the library. - * @module yui - * @submodule yui-base - */ - -/** - * Provides core language utilites and extensions used throughout YUI. - * - * @class Lang - * @static - */ - -_yuitest_coverfunc("build/yui/yui.js", "(anonymous 8)", 1950); -_yuitest_coverline("build/yui/yui.js", 1972); -var L = Y.Lang || (Y.Lang = {}), - -STRING_PROTO = String.prototype, -TOSTRING = Object.prototype.toString, - -TYPES = { - 'undefined' : 'undefined', - 'number' : 'number', - 'boolean' : 'boolean', - 'string' : 'string', - '[object Function]': 'function', - '[object RegExp]' : 'regexp', - '[object Array]' : 'array', - '[object Date]' : 'date', - '[object Error]' : 'error' -}, - -SUBREGEX = /\{\s*([^|}]+?)\s*(?:\|([^}]*))?\s*\}/g, -TRIMREGEX = /^\s+|\s+$/g, -NATIVE_FN_REGEX = /\{\s*\[(?:native code|function)\]\s*\}/i; - -// -- Protected Methods -------------------------------------------------------- - -/** -Returns `true` if the given function appears to be implemented in native code, -`false` otherwise. Will always return `false` -- even in ES5-capable browsers -- -if the `useNativeES5` YUI config option is set to `false`. - -This isn't guaranteed to be 100% accurate and won't work for anything other than -functions, but it can be useful for determining whether a function like -`Array.prototype.forEach` is native or a JS shim provided by another library. - -There's a great article by @kangax discussing certain flaws with this technique: - - -While his points are valid, it's still possible to benefit from this function -as long as it's used carefully and sparingly, and in such a way that false -negatives have minimal consequences. It's used internally to avoid using -potentially broken non-native ES5 shims that have been added to the page by -other libraries. - -@method _isNative -@param {Function} fn Function to test. -@return {Boolean} `true` if _fn_ appears to be native, `false` otherwise. -@static -@protected -@since 3.5.0 -**/ -_yuitest_coverline("build/yui/yui.js", 2020); -L._isNative = function (fn) { - _yuitest_coverfunc("build/yui/yui.js", "_isNative", 2020); -_yuitest_coverline("build/yui/yui.js", 2021); -return !!(Y.config.useNativeES5 && fn && NATIVE_FN_REGEX.test(fn)); -}; - -// -- Public Methods ----------------------------------------------------------- - -/** - * Determines whether or not the provided item is an array. - * - * Returns `false` for array-like collections such as the function `arguments` - * collection or `HTMLElement` collections. Use `Y.Array.test()` if you want to - * test for an array-like collection. - * - * @method isArray - * @param o The object to test. - * @return {boolean} true if o is an array. - * @static - */ -_yuitest_coverline("build/yui/yui.js", 2038); -L.isArray = L._isNative(Array.isArray) ? Array.isArray : function (o) { - _yuitest_coverfunc("build/yui/yui.js", "isArray", 2038); -_yuitest_coverline("build/yui/yui.js", 2039); -return L.type(o) === 'array'; -}; - -/** - * Determines whether or not the provided item is a boolean. - * @method isBoolean - * @static - * @param o The object to test. - * @return {boolean} true if o is a boolean. - */ -_yuitest_coverline("build/yui/yui.js", 2049); -L.isBoolean = function(o) { - _yuitest_coverfunc("build/yui/yui.js", "isBoolean", 2049); -_yuitest_coverline("build/yui/yui.js", 2050); -return typeof o === 'boolean'; -}; - -/** - * Determines whether or not the supplied item is a date instance. - * @method isDate - * @static - * @param o The object to test. - * @return {boolean} true if o is a date. - */ -_yuitest_coverline("build/yui/yui.js", 2060); -L.isDate = function(o) { - _yuitest_coverfunc("build/yui/yui.js", "isDate", 2060); -_yuitest_coverline("build/yui/yui.js", 2061); -return L.type(o) === 'date' && o.toString() !== 'Invalid Date' && !isNaN(o); -}; - -/** - *

          - * Determines whether or not the provided item is a function. - * Note: Internet Explorer thinks certain functions are objects: - *

          - * - *
          - * var obj = document.createElement("object");
          - * Y.Lang.isFunction(obj.getAttribute) // reports false in IE
          - *  
          - * var input = document.createElement("input"); // append to body
          - * Y.Lang.isFunction(input.focus) // reports false in IE
          - * 
          - * - *

          - * You will have to implement additional tests if these functions - * matter to you. - *

          - * - * @method isFunction - * @static - * @param o The object to test. - * @return {boolean} true if o is a function. - */ -_yuitest_coverline("build/yui/yui.js", 2088); -L.isFunction = function(o) { - _yuitest_coverfunc("build/yui/yui.js", "isFunction", 2088); -_yuitest_coverline("build/yui/yui.js", 2089); -return L.type(o) === 'function'; -}; - -/** - * Determines whether or not the provided item is null. - * @method isNull - * @static - * @param o The object to test. - * @return {boolean} true if o is null. - */ -_yuitest_coverline("build/yui/yui.js", 2099); -L.isNull = function(o) { - _yuitest_coverfunc("build/yui/yui.js", "isNull", 2099); -_yuitest_coverline("build/yui/yui.js", 2100); -return o === null; -}; - -/** - * Determines whether or not the provided item is a legal number. - * @method isNumber - * @static - * @param o The object to test. - * @return {boolean} true if o is a number. - */ -_yuitest_coverline("build/yui/yui.js", 2110); -L.isNumber = function(o) { - _yuitest_coverfunc("build/yui/yui.js", "isNumber", 2110); -_yuitest_coverline("build/yui/yui.js", 2111); -return typeof o === 'number' && isFinite(o); -}; - -/** - * Determines whether or not the provided item is of type object - * or function. Note that arrays are also objects, so - * Y.Lang.isObject([]) === true. - * @method isObject - * @static - * @param o The object to test. - * @param failfn {boolean} fail if the input is a function. - * @return {boolean} true if o is an object. - * @see isPlainObject - */ -_yuitest_coverline("build/yui/yui.js", 2125); -L.isObject = function(o, failfn) { - _yuitest_coverfunc("build/yui/yui.js", "isObject", 2125); -_yuitest_coverline("build/yui/yui.js", 2126); -var t = typeof o; - _yuitest_coverline("build/yui/yui.js", 2127); -return (o && (t === 'object' || - (!failfn && (t === 'function' || L.isFunction(o))))) || false; -}; - -/** - * Determines whether or not the provided item is a string. - * @method isString - * @static - * @param o The object to test. - * @return {boolean} true if o is a string. - */ -_yuitest_coverline("build/yui/yui.js", 2138); -L.isString = function(o) { - _yuitest_coverfunc("build/yui/yui.js", "isString", 2138); -_yuitest_coverline("build/yui/yui.js", 2139); -return typeof o === 'string'; -}; - -/** - * Determines whether or not the provided item is undefined. - * @method isUndefined - * @static - * @param o The object to test. - * @return {boolean} true if o is undefined. - */ -_yuitest_coverline("build/yui/yui.js", 2149); -L.isUndefined = function(o) { - _yuitest_coverfunc("build/yui/yui.js", "isUndefined", 2149); -_yuitest_coverline("build/yui/yui.js", 2150); -return typeof o === 'undefined'; -}; - -/** - * A convenience method for detecting a legitimate non-null value. - * Returns false for null/undefined/NaN, true for other values, - * including 0/false/'' - * @method isValue - * @static - * @param o The item to test. - * @return {boolean} true if it is not null/undefined/NaN || false. - */ -_yuitest_coverline("build/yui/yui.js", 2162); -L.isValue = function(o) { - _yuitest_coverfunc("build/yui/yui.js", "isValue", 2162); -_yuitest_coverline("build/yui/yui.js", 2163); -var t = L.type(o); - - _yuitest_coverline("build/yui/yui.js", 2165); -switch (t) { - case 'number': - _yuitest_coverline("build/yui/yui.js", 2167); -return isFinite(o); - - case 'null': // fallthru - case 'undefined': - _yuitest_coverline("build/yui/yui.js", 2171); -return false; - - default: - _yuitest_coverline("build/yui/yui.js", 2174); -return !!t; - } -}; - -/** - * Returns the current time in milliseconds. - * - * @method now - * @return {Number} Current time in milliseconds. - * @static - * @since 3.3.0 - */ -_yuitest_coverline("build/yui/yui.js", 2186); -L.now = Date.now || function () { - _yuitest_coverfunc("build/yui/yui.js", "(anonymous 9)", 2186); -_yuitest_coverline("build/yui/yui.js", 2187); -return new Date().getTime(); -}; - -/** - * Lightweight version of Y.substitute. Uses the same template - * structure as Y.substitute, but doesn't support recursion, - * auto-object coersion, or formats. - * @method sub - * @param {string} s String to be modified. - * @param {object} o Object containing replacement values. - * @return {string} the substitute result. - * @static - * @since 3.2.0 - */ -_yuitest_coverline("build/yui/yui.js", 2201); -L.sub = function(s, o) { - _yuitest_coverfunc("build/yui/yui.js", "sub", 2201); -_yuitest_coverline("build/yui/yui.js", 2202); -return s.replace ? s.replace(SUBREGEX, function (match, key) { - _yuitest_coverfunc("build/yui/yui.js", "(anonymous 10)", 2202); -_yuitest_coverline("build/yui/yui.js", 2203); -return L.isUndefined(o[key]) ? match : o[key]; - }) : s; -}; - -/** - * Returns a string without any leading or trailing whitespace. If - * the input is not a string, the input will be returned untouched. - * @method trim - * @static - * @param s {string} the string to trim. - * @return {string} the trimmed string. - */ -_yuitest_coverline("build/yui/yui.js", 2215); -L.trim = STRING_PROTO.trim ? function(s) { - _yuitest_coverfunc("build/yui/yui.js", "(anonymous 11)", 2215); -_yuitest_coverline("build/yui/yui.js", 2216); -return s && s.trim ? s.trim() : s; -} : function (s) { - _yuitest_coverfunc("build/yui/yui.js", "}", 2217); -_yuitest_coverline("build/yui/yui.js", 2218); -try { - _yuitest_coverline("build/yui/yui.js", 2219); -return s.replace(TRIMREGEX, ''); - } catch (e) { - _yuitest_coverline("build/yui/yui.js", 2221); -return s; - } -}; - -/** - * Returns a string without any leading whitespace. - * @method trimLeft - * @static - * @param s {string} the string to trim. - * @return {string} the trimmed string. - */ -_yuitest_coverline("build/yui/yui.js", 2232); -L.trimLeft = STRING_PROTO.trimLeft ? function (s) { - _yuitest_coverfunc("build/yui/yui.js", "(anonymous 12)", 2232); -_yuitest_coverline("build/yui/yui.js", 2233); -return s.trimLeft(); -} : function (s) { - _yuitest_coverfunc("build/yui/yui.js", "}", 2234); -_yuitest_coverline("build/yui/yui.js", 2235); -return s.replace(/^\s+/, ''); -}; - -/** - * Returns a string without any trailing whitespace. - * @method trimRight - * @static - * @param s {string} the string to trim. - * @return {string} the trimmed string. - */ -_yuitest_coverline("build/yui/yui.js", 2245); -L.trimRight = STRING_PROTO.trimRight ? function (s) { - _yuitest_coverfunc("build/yui/yui.js", "(anonymous 13)", 2245); -_yuitest_coverline("build/yui/yui.js", 2246); -return s.trimRight(); -} : function (s) { - _yuitest_coverfunc("build/yui/yui.js", "}", 2247); -_yuitest_coverline("build/yui/yui.js", 2248); -return s.replace(/\s+$/, ''); -}; - -/** -Returns one of the following strings, representing the type of the item passed -in: - - * "array" - * "boolean" - * "date" - * "error" - * "function" - * "null" - * "number" - * "object" - * "regexp" - * "string" - * "undefined" - -Known issues: - - * `typeof HTMLElementCollection` returns function in Safari, but - `Y.Lang.type()` reports "object", which could be a good thing -- - but it actually caused the logic in Y.Lang.isObject to fail. - -@method type -@param o the item to test. -@return {string} the detected type. -@static -**/ -_yuitest_coverline("build/yui/yui.js", 2278); -L.type = function(o) { - _yuitest_coverfunc("build/yui/yui.js", "type", 2278); -_yuitest_coverline("build/yui/yui.js", 2279); -return TYPES[typeof o] || TYPES[TOSTRING.call(o)] || (o ? 'object' : 'null'); -}; -/** -@module yui -@submodule yui-base -*/ - -_yuitest_coverline("build/yui/yui.js", 2286); -var Lang = Y.Lang, - Native = Array.prototype, - - hasOwn = Object.prototype.hasOwnProperty; - -/** -Provides utility methods for working with arrays. Additional array helpers can -be found in the `collection` and `array-extras` modules. - -`Y.Array(thing)` returns a native array created from _thing_. Depending on -_thing_'s type, one of the following will happen: - - * Arrays are returned unmodified unless a non-zero _startIndex_ is - specified. - * Array-like collections (see `Array.test()`) are converted to arrays. - * For everything else, a new array is created with _thing_ as the sole - item. - -Note: elements that are also collections, such as `` and ``, to be array-like. - -@method test -@param {Object} obj Object to test. -@return {Number} A number indicating the results of the test: - - * 0: Neither an array nor an array-like collection. - * 1: Real array. - * 2: Array-like collection. - -@static -**/ -_yuitest_coverline("build/yui/yui.js", 2550); -YArray.test = function (obj) { - _yuitest_coverfunc("build/yui/yui.js", "test", 2550); -_yuitest_coverline("build/yui/yui.js", 2551); -var result = 0; - - _yuitest_coverline("build/yui/yui.js", 2553); -if (Lang.isArray(obj)) { - _yuitest_coverline("build/yui/yui.js", 2554); -result = 1; - } else {_yuitest_coverline("build/yui/yui.js", 2555); -if (Lang.isObject(obj)) { - _yuitest_coverline("build/yui/yui.js", 2556); -try { - // indexed, but no tagName (element) or scrollTo/document (window. From DOM.isWindow test which we can't use here), - // or functions without apply/call (Safari - // HTMLElementCollection bug). - _yuitest_coverline("build/yui/yui.js", 2560); -if ('length' in obj && !obj.tagName && !(obj.scrollTo && obj.document) && !obj.apply) { - _yuitest_coverline("build/yui/yui.js", 2561); -result = 2; - } - } catch (ex) {} - }} - - _yuitest_coverline("build/yui/yui.js", 2566); -return result; -}; -/** - * The YUI module contains the components required for building the YUI - * seed file. This includes the script loading mechanism, a simple queue, - * and the core utilities for the library. - * @module yui - * @submodule yui-base - */ - -/** - * A simple FIFO queue. Items are added to the Queue with add(1..n items) and - * removed using next(). - * - * @class Queue - * @constructor - * @param {MIXED} item* 0..n items to seed the queue. - */ -_yuitest_coverline("build/yui/yui.js", 2584); -function Queue() { - _yuitest_coverfunc("build/yui/yui.js", "Queue", 2584); -_yuitest_coverline("build/yui/yui.js", 2585); -this._init(); - _yuitest_coverline("build/yui/yui.js", 2586); -this.add.apply(this, arguments); -} - -_yuitest_coverline("build/yui/yui.js", 2589); -Queue.prototype = { - /** - * Initialize the queue - * - * @method _init - * @protected - */ - _init: function() { - /** - * The collection of enqueued items - * - * @property _q - * @type Array - * @protected - */ - _yuitest_coverfunc("build/yui/yui.js", "_init", 2596); -_yuitest_coverline("build/yui/yui.js", 2604); -this._q = []; - }, - - /** - * Get the next item in the queue. FIFO support - * - * @method next - * @return {MIXED} the next item in the queue. - */ - next: function() { - _yuitest_coverfunc("build/yui/yui.js", "next", 2613); -_yuitest_coverline("build/yui/yui.js", 2614); -return this._q.shift(); - }, - - /** - * Get the last in the queue. LIFO support. - * - * @method last - * @return {MIXED} the last item in the queue. - */ - last: function() { - _yuitest_coverfunc("build/yui/yui.js", "last", 2623); -_yuitest_coverline("build/yui/yui.js", 2624); -return this._q.pop(); - }, - - /** - * Add 0..n items to the end of the queue. - * - * @method add - * @param {MIXED} item* 0..n items. - * @return {object} this queue. - */ - add: function() { - _yuitest_coverfunc("build/yui/yui.js", "add", 2634); -_yuitest_coverline("build/yui/yui.js", 2635); -this._q.push.apply(this._q, arguments); - - _yuitest_coverline("build/yui/yui.js", 2637); -return this; - }, - - /** - * Returns the current number of queued items. - * - * @method size - * @return {Number} The size. - */ - size: function() { - _yuitest_coverfunc("build/yui/yui.js", "size", 2646); -_yuitest_coverline("build/yui/yui.js", 2647); -return this._q.length; - } -}; - -_yuitest_coverline("build/yui/yui.js", 2651); -Y.Queue = Queue; - -_yuitest_coverline("build/yui/yui.js", 2653); -YUI.Env._loaderQueue = YUI.Env._loaderQueue || new Queue(); - -/** -The YUI module contains the components required for building the YUI seed file. -This includes the script loading mechanism, a simple queue, and the core -utilities for the library. - -@module yui -@submodule yui-base -**/ - -_yuitest_coverline("build/yui/yui.js", 2664); -var CACHED_DELIMITER = '__', - - hasOwn = Object.prototype.hasOwnProperty, - isObject = Y.Lang.isObject; - -/** -Returns a wrapper for a function which caches the return value of that function, -keyed off of the combined string representation of the argument values provided -when the wrapper is called. - -Calling this function again with the same arguments will return the cached value -rather than executing the wrapped function. - -Note that since the cache is keyed off of the string representation of arguments -passed to the wrapper function, arguments that aren't strings and don't provide -a meaningful `toString()` method may result in unexpected caching behavior. For -example, the objects `{}` and `{foo: 'bar'}` would both be converted to the -string `[object Object]` when used as a cache key. - -@method cached -@param {Function} source The function to memoize. -@param {Object} [cache={}] Object in which to store cached values. You may seed - this object with pre-existing cached values if desired. -@param {any} [refetch] If supplied, this value is compared with the cached value - using a `==` comparison. If the values are equal, the wrapped function is - executed again even though a cached value exists. -@return {Function} Wrapped function. -@for YUI -**/ -_yuitest_coverline("build/yui/yui.js", 2693); -Y.cached = function (source, cache, refetch) { - _yuitest_coverfunc("build/yui/yui.js", "cached", 2693); -_yuitest_coverline("build/yui/yui.js", 2694); -cache || (cache = {}); - - _yuitest_coverline("build/yui/yui.js", 2696); -return function (arg) { - _yuitest_coverfunc("build/yui/yui.js", "(anonymous 17)", 2696); -_yuitest_coverline("build/yui/yui.js", 2697); -var key = arguments.length > 1 ? - Array.prototype.join.call(arguments, CACHED_DELIMITER) : - String(arg); - - _yuitest_coverline("build/yui/yui.js", 2701); -if (!(key in cache) || (refetch && cache[key] == refetch)) { - _yuitest_coverline("build/yui/yui.js", 2702); -cache[key] = source.apply(source, arguments); - } - - _yuitest_coverline("build/yui/yui.js", 2705); -return cache[key]; - }; -}; - -/** -Returns the `location` object from the window/frame in which this YUI instance -operates, or `undefined` when executing in a non-browser environment -(e.g. Node.js). - -It is _not_ recommended to hold references to the `window.location` object -outside of the scope of a function in which its properties are being accessed or -its methods are being called. This is because of a nasty bug/issue that exists -in both Safari and MobileSafari browsers: -[WebKit Bug 34679](https://bugs.webkit.org/show_bug.cgi?id=34679). - -@method getLocation -@return {location} The `location` object from the window/frame in which this YUI - instance operates. -@since 3.5.0 -**/ -_yuitest_coverline("build/yui/yui.js", 2725); -Y.getLocation = function () { - // It is safer to look this up every time because yui-base is attached to a - // YUI instance before a user's config is applied; i.e. `Y.config.win` does - // not point the correct window object when this file is loaded. - _yuitest_coverfunc("build/yui/yui.js", "getLocation", 2725); -_yuitest_coverline("build/yui/yui.js", 2729); -var win = Y.config.win; - - // It is not safe to hold a reference to the `location` object outside the - // scope in which it is being used. The WebKit engine used in Safari and - // MobileSafari will "disconnect" the `location` object from the `window` - // when a page is restored from back/forward history cache. - _yuitest_coverline("build/yui/yui.js", 2735); -return win && win.location; -}; - -/** -Returns a new object containing all of the properties of all the supplied -objects. The properties from later objects will overwrite those in earlier -objects. - -Passing in a single object will create a shallow copy of it. For a deep copy, -use `clone()`. - -@method merge -@param {Object} objects* One or more objects to merge. -@return {Object} A new merged object. -**/ -_yuitest_coverline("build/yui/yui.js", 2750); -Y.merge = function () { - _yuitest_coverfunc("build/yui/yui.js", "merge", 2750); -_yuitest_coverline("build/yui/yui.js", 2751); -var i = 0, - len = arguments.length, - result = {}, - key, - obj; - - _yuitest_coverline("build/yui/yui.js", 2757); -for (; i < len; ++i) { - _yuitest_coverline("build/yui/yui.js", 2758); -obj = arguments[i]; - - _yuitest_coverline("build/yui/yui.js", 2760); -for (key in obj) { - _yuitest_coverline("build/yui/yui.js", 2761); -if (hasOwn.call(obj, key)) { - _yuitest_coverline("build/yui/yui.js", 2762); -result[key] = obj[key]; - } - } - } - - _yuitest_coverline("build/yui/yui.js", 2767); -return result; -}; - -/** -Mixes _supplier_'s properties into _receiver_. - -Properties on _receiver_ or _receiver_'s prototype will not be overwritten or -shadowed unless the _overwrite_ parameter is `true`, and will not be merged -unless the _merge_ parameter is `true`. - -In the default mode (0), only properties the supplier owns are copied (prototype -properties are not copied). The following copying modes are available: - - * `0`: _Default_. Object to object. - * `1`: Prototype to prototype. - * `2`: Prototype to prototype and object to object. - * `3`: Prototype to object. - * `4`: Object to prototype. - -@method mix -@param {Function|Object} receiver The object or function to receive the mixed - properties. -@param {Function|Object} supplier The object or function supplying the - properties to be mixed. -@param {Boolean} [overwrite=false] If `true`, properties that already exist - on the receiver will be overwritten with properties from the supplier. -@param {String[]} [whitelist] An array of property names to copy. If - specified, only the whitelisted properties will be copied, and all others - will be ignored. -@param {Number} [mode=0] Mix mode to use. See above for available modes. -@param {Boolean} [merge=false] If `true`, objects and arrays that already - exist on the receiver will have the corresponding object/array from the - supplier merged into them, rather than being skipped or overwritten. When - both _overwrite_ and _merge_ are `true`, _merge_ takes precedence. -@return {Function|Object|YUI} The receiver, or the YUI instance if the - specified receiver is falsy. -**/ -_yuitest_coverline("build/yui/yui.js", 2804); -Y.mix = function(receiver, supplier, overwrite, whitelist, mode, merge) { - _yuitest_coverfunc("build/yui/yui.js", "mix", 2804); -_yuitest_coverline("build/yui/yui.js", 2805); -var alwaysOverwrite, exists, from, i, key, len, to; - - // If no supplier is given, we return the receiver. If no receiver is given, - // we return Y. Returning Y doesn't make much sense to me, but it's - // grandfathered in for backcompat reasons. - _yuitest_coverline("build/yui/yui.js", 2810); -if (!receiver || !supplier) { - _yuitest_coverline("build/yui/yui.js", 2811); -return receiver || Y; - } - - _yuitest_coverline("build/yui/yui.js", 2814); -if (mode) { - // In mode 2 (prototype to prototype and object to object), we recurse - // once to do the proto to proto mix. The object to object mix will be - // handled later on. - _yuitest_coverline("build/yui/yui.js", 2818); -if (mode === 2) { - _yuitest_coverline("build/yui/yui.js", 2819); -Y.mix(receiver.prototype, supplier.prototype, overwrite, - whitelist, 0, merge); - } - - // Depending on which mode is specified, we may be copying from or to - // the prototypes of the supplier and receiver. - _yuitest_coverline("build/yui/yui.js", 2825); -from = mode === 1 || mode === 3 ? supplier.prototype : supplier; - _yuitest_coverline("build/yui/yui.js", 2826); -to = mode === 1 || mode === 4 ? receiver.prototype : receiver; - - // If either the supplier or receiver doesn't actually have a - // prototype property, then we could end up with an undefined `from` - // or `to`. If that happens, we abort and return the receiver. - _yuitest_coverline("build/yui/yui.js", 2831); -if (!from || !to) { - _yuitest_coverline("build/yui/yui.js", 2832); -return receiver; - } - } else { - _yuitest_coverline("build/yui/yui.js", 2835); -from = supplier; - _yuitest_coverline("build/yui/yui.js", 2836); -to = receiver; - } - - // If `overwrite` is truthy and `merge` is falsy, then we can skip a - // property existence check on each iteration and save some time. - _yuitest_coverline("build/yui/yui.js", 2841); -alwaysOverwrite = overwrite && !merge; - - _yuitest_coverline("build/yui/yui.js", 2843); -if (whitelist) { - _yuitest_coverline("build/yui/yui.js", 2844); -for (i = 0, len = whitelist.length; i < len; ++i) { - _yuitest_coverline("build/yui/yui.js", 2845); -key = whitelist[i]; - - // We call `Object.prototype.hasOwnProperty` instead of calling - // `hasOwnProperty` on the object itself, since the object's - // `hasOwnProperty` method may have been overridden or removed. - // Also, some native objects don't implement a `hasOwnProperty` - // method. - _yuitest_coverline("build/yui/yui.js", 2852); -if (!hasOwn.call(from, key)) { - _yuitest_coverline("build/yui/yui.js", 2853); -continue; - } - - // The `key in to` check here is (sadly) intentional for backwards - // compatibility reasons. It prevents undesired shadowing of - // prototype members on `to`. - _yuitest_coverline("build/yui/yui.js", 2859); -exists = alwaysOverwrite ? false : key in to; - - _yuitest_coverline("build/yui/yui.js", 2861); -if (merge && exists && isObject(to[key], true) - && isObject(from[key], true)) { - // If we're in merge mode, and the key is present on both - // objects, and the value on both objects is either an object or - // an array (but not a function), then we recurse to merge the - // `from` value into the `to` value instead of overwriting it. - // - // Note: It's intentional that the whitelist isn't passed to the - // recursive call here. This is legacy behavior that lots of - // code still depends on. - _yuitest_coverline("build/yui/yui.js", 2871); -Y.mix(to[key], from[key], overwrite, null, 0, merge); - } else {_yuitest_coverline("build/yui/yui.js", 2872); -if (overwrite || !exists) { - // We're not in merge mode, so we'll only copy the `from` value - // to the `to` value if we're in overwrite mode or if the - // current key doesn't exist on the `to` object. - _yuitest_coverline("build/yui/yui.js", 2876); -to[key] = from[key]; - }} - } - } else { - _yuitest_coverline("build/yui/yui.js", 2880); -for (key in from) { - // The code duplication here is for runtime performance reasons. - // Combining whitelist and non-whitelist operations into a single - // loop or breaking the shared logic out into a function both result - // in worse performance, and Y.mix is critical enough that the byte - // tradeoff is worth it. - _yuitest_coverline("build/yui/yui.js", 2886); -if (!hasOwn.call(from, key)) { - _yuitest_coverline("build/yui/yui.js", 2887); -continue; - } - - // The `key in to` check here is (sadly) intentional for backwards - // compatibility reasons. It prevents undesired shadowing of - // prototype members on `to`. - _yuitest_coverline("build/yui/yui.js", 2893); -exists = alwaysOverwrite ? false : key in to; - - _yuitest_coverline("build/yui/yui.js", 2895); -if (merge && exists && isObject(to[key], true) - && isObject(from[key], true)) { - _yuitest_coverline("build/yui/yui.js", 2897); -Y.mix(to[key], from[key], overwrite, null, 0, merge); - } else {_yuitest_coverline("build/yui/yui.js", 2898); -if (overwrite || !exists) { - _yuitest_coverline("build/yui/yui.js", 2899); -to[key] = from[key]; - }} - } - - // If this is an IE browser with the JScript enumeration bug, force - // enumeration of the buggy properties by making a recursive call with - // the buggy properties as the whitelist. - _yuitest_coverline("build/yui/yui.js", 2906); -if (Y.Object._hasEnumBug) { - _yuitest_coverline("build/yui/yui.js", 2907); -Y.mix(to, from, overwrite, Y.Object._forceEnum, mode, merge); - } - } - - _yuitest_coverline("build/yui/yui.js", 2911); -return receiver; -}; -/** - * The YUI module contains the components required for building the YUI - * seed file. This includes the script loading mechanism, a simple queue, - * and the core utilities for the library. - * @module yui - * @submodule yui-base - */ - -/** - * Adds utilities to the YUI instance for working with objects. - * - * @class Object - */ - -_yuitest_coverline("build/yui/yui.js", 2927); -var Lang = Y.Lang, - hasOwn = Object.prototype.hasOwnProperty, - - UNDEFINED, // <-- Note the comma. We're still declaring vars. - -/** - * Returns a new object that uses _obj_ as its prototype. This method wraps the - * native ES5 `Object.create()` method if available, but doesn't currently - * pass through `Object.create()`'s second argument (properties) in order to - * ensure compatibility with older browsers. - * - * @method () - * @param {Object} obj Prototype object. - * @return {Object} New object using _obj_ as its prototype. - * @static - */ -O = Y.Object = Lang._isNative(Object.create) ? function (obj) { - // We currently wrap the native Object.create instead of simply aliasing it - // to ensure consistency with our fallback shim, which currently doesn't - // support Object.create()'s second argument (properties). Once we have a - // safe fallback for the properties arg, we can stop wrapping - // Object.create(). - _yuitest_coverfunc("build/yui/yui.js", "(anonymous 18)", 2943); -_yuitest_coverline("build/yui/yui.js", 2949); -return Object.create(obj); -} : (function () { - // Reusable constructor function for the Object.create() shim. - _yuitest_coverfunc("build/yui/yui.js", "(anonymous 19)", 2950); -_yuitest_coverline("build/yui/yui.js", 2952); -function F() {} - - // The actual shim. - _yuitest_coverline("build/yui/yui.js", 2955); -return function (obj) { - _yuitest_coverfunc("build/yui/yui.js", "(anonymous 20)", 2955); -_yuitest_coverline("build/yui/yui.js", 2956); -F.prototype = obj; - _yuitest_coverline("build/yui/yui.js", 2957); -return new F(); - }; -}()), - -/** - * Property names that IE doesn't enumerate in for..in loops, even when they - * should be enumerable. When `_hasEnumBug` is `true`, it's necessary to - * manually enumerate these properties. - * - * @property _forceEnum - * @type String[] - * @protected - * @static - */ -forceEnum = O._forceEnum = [ - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toString', - 'toLocaleString', - 'valueOf' -], - -/** - * `true` if this browser has the JScript enumeration bug that prevents - * enumeration of the properties named in the `_forceEnum` array, `false` - * otherwise. - * - * See: - * - - * - - * - * @property _hasEnumBug - * @type Boolean - * @protected - * @static - */ -hasEnumBug = O._hasEnumBug = !{valueOf: 0}.propertyIsEnumerable('valueOf'), - -/** - * `true` if this browser incorrectly considers the `prototype` property of - * functions to be enumerable. Currently known to affect Opera 11.50. - * - * @property _hasProtoEnumBug - * @type Boolean - * @protected - * @static - */ -hasProtoEnumBug = O._hasProtoEnumBug = (function () {}).propertyIsEnumerable('prototype'), - -/** - * Returns `true` if _key_ exists on _obj_, `false` if _key_ doesn't exist or - * exists only on _obj_'s prototype. This is essentially a safer version of - * `obj.hasOwnProperty()`. - * - * @method owns - * @param {Object} obj Object to test. - * @param {String} key Property name to look for. - * @return {Boolean} `true` if _key_ exists on _obj_, `false` otherwise. - * @static - */ -owns = O.owns = function (obj, key) { - _yuitest_coverfunc("build/yui/yui.js", "owns", 3018); -_yuitest_coverline("build/yui/yui.js", 3019); -return !!obj && hasOwn.call(obj, key); -}; // <-- End of var declarations. - -/** - * Alias for `owns()`. - * - * @method hasKey - * @param {Object} obj Object to test. - * @param {String} key Property name to look for. - * @return {Boolean} `true` if _key_ exists on _obj_, `false` otherwise. - * @static - */ -_yuitest_coverline("build/yui/yui.js", 3031); -O.hasKey = owns; - -/** - * Returns an array containing the object's enumerable keys. Does not include - * prototype keys or non-enumerable keys. - * - * Note that keys are returned in enumeration order (that is, in the same order - * that they would be enumerated by a `for-in` loop), which may not be the same - * as the order in which they were defined. - * - * This method is an alias for the native ES5 `Object.keys()` method if - * available. - * - * @example - * - * Y.Object.keys({a: 'foo', b: 'bar', c: 'baz'}); - * // => ['a', 'b', 'c'] - * - * @method keys - * @param {Object} obj An object. - * @return {String[]} Array of keys. - * @static - */ -_yuitest_coverline("build/yui/yui.js", 3054); -O.keys = Lang._isNative(Object.keys) ? Object.keys : function (obj) { - _yuitest_coverfunc("build/yui/yui.js", "keys", 3054); -_yuitest_coverline("build/yui/yui.js", 3055); -if (!Lang.isObject(obj)) { - _yuitest_coverline("build/yui/yui.js", 3056); -throw new TypeError('Object.keys called on a non-object'); - } - - _yuitest_coverline("build/yui/yui.js", 3059); -var keys = [], - i, key, len; - - _yuitest_coverline("build/yui/yui.js", 3062); -if (hasProtoEnumBug && typeof obj === 'function') { - _yuitest_coverline("build/yui/yui.js", 3063); -for (key in obj) { - _yuitest_coverline("build/yui/yui.js", 3064); -if (owns(obj, key) && key !== 'prototype') { - _yuitest_coverline("build/yui/yui.js", 3065); -keys.push(key); - } - } - } else { - _yuitest_coverline("build/yui/yui.js", 3069); -for (key in obj) { - _yuitest_coverline("build/yui/yui.js", 3070); -if (owns(obj, key)) { - _yuitest_coverline("build/yui/yui.js", 3071); -keys.push(key); - } - } - } - - _yuitest_coverline("build/yui/yui.js", 3076); -if (hasEnumBug) { - _yuitest_coverline("build/yui/yui.js", 3077); -for (i = 0, len = forceEnum.length; i < len; ++i) { - _yuitest_coverline("build/yui/yui.js", 3078); -key = forceEnum[i]; - - _yuitest_coverline("build/yui/yui.js", 3080); -if (owns(obj, key)) { - _yuitest_coverline("build/yui/yui.js", 3081); -keys.push(key); - } - } - } - - _yuitest_coverline("build/yui/yui.js", 3086); -return keys; -}; - -/** - * Returns an array containing the values of the object's enumerable keys. - * - * Note that values are returned in enumeration order (that is, in the same - * order that they would be enumerated by a `for-in` loop), which may not be the - * same as the order in which they were defined. - * - * @example - * - * Y.Object.values({a: 'foo', b: 'bar', c: 'baz'}); - * // => ['foo', 'bar', 'baz'] - * - * @method values - * @param {Object} obj An object. - * @return {Array} Array of values. - * @static - */ -_yuitest_coverline("build/yui/yui.js", 3106); -O.values = function (obj) { - _yuitest_coverfunc("build/yui/yui.js", "values", 3106); -_yuitest_coverline("build/yui/yui.js", 3107); -var keys = O.keys(obj), - i = 0, - len = keys.length, - values = []; - - _yuitest_coverline("build/yui/yui.js", 3112); -for (; i < len; ++i) { - _yuitest_coverline("build/yui/yui.js", 3113); -values.push(obj[keys[i]]); - } - - _yuitest_coverline("build/yui/yui.js", 3116); -return values; -}; - -/** - * Returns the number of enumerable keys owned by an object. - * - * @method size - * @param {Object} obj An object. - * @return {Number} The object's size. - * @static - */ -_yuitest_coverline("build/yui/yui.js", 3127); -O.size = function (obj) { - _yuitest_coverfunc("build/yui/yui.js", "size", 3127); -_yuitest_coverline("build/yui/yui.js", 3128); -try { - _yuitest_coverline("build/yui/yui.js", 3129); -return O.keys(obj).length; - } catch (ex) { - _yuitest_coverline("build/yui/yui.js", 3131); -return 0; // Legacy behavior for non-objects. - } -}; - -/** - * Returns `true` if the object owns an enumerable property with the specified - * value. - * - * @method hasValue - * @param {Object} obj An object. - * @param {any} value The value to search for. - * @return {Boolean} `true` if _obj_ contains _value_, `false` otherwise. - * @static - */ -_yuitest_coverline("build/yui/yui.js", 3145); -O.hasValue = function (obj, value) { - _yuitest_coverfunc("build/yui/yui.js", "hasValue", 3145); -_yuitest_coverline("build/yui/yui.js", 3146); -return Y.Array.indexOf(O.values(obj), value) > -1; -}; - -/** - * Executes a function on each enumerable property in _obj_. The function - * receives the value, the key, and the object itself as parameters (in that - * order). - * - * By default, only properties owned by _obj_ are enumerated. To include - * prototype properties, set the _proto_ parameter to `true`. - * - * @method each - * @param {Object} obj Object to enumerate. - * @param {Function} fn Function to execute on each enumerable property. - * @param {mixed} fn.value Value of the current property. - * @param {String} fn.key Key of the current property. - * @param {Object} fn.obj Object being enumerated. - * @param {Object} [thisObj] `this` object to use when calling _fn_. - * @param {Boolean} [proto=false] Include prototype properties. - * @return {YUI} the YUI instance. - * @chainable - * @static - */ -_yuitest_coverline("build/yui/yui.js", 3169); -O.each = function (obj, fn, thisObj, proto) { - _yuitest_coverfunc("build/yui/yui.js", "each", 3169); -_yuitest_coverline("build/yui/yui.js", 3170); -var key; - - _yuitest_coverline("build/yui/yui.js", 3172); -for (key in obj) { - _yuitest_coverline("build/yui/yui.js", 3173); -if (proto || owns(obj, key)) { - _yuitest_coverline("build/yui/yui.js", 3174); -fn.call(thisObj || Y, obj[key], key, obj); - } - } - - _yuitest_coverline("build/yui/yui.js", 3178); -return Y; -}; - -/** - * Executes a function on each enumerable property in _obj_, but halts if the - * function returns a truthy value. The function receives the value, the key, - * and the object itself as paramters (in that order). - * - * By default, only properties owned by _obj_ are enumerated. To include - * prototype properties, set the _proto_ parameter to `true`. - * - * @method some - * @param {Object} obj Object to enumerate. - * @param {Function} fn Function to execute on each enumerable property. - * @param {mixed} fn.value Value of the current property. - * @param {String} fn.key Key of the current property. - * @param {Object} fn.obj Object being enumerated. - * @param {Object} [thisObj] `this` object to use when calling _fn_. - * @param {Boolean} [proto=false] Include prototype properties. - * @return {Boolean} `true` if any execution of _fn_ returns a truthy value, - * `false` otherwise. - * @static - */ -_yuitest_coverline("build/yui/yui.js", 3201); -O.some = function (obj, fn, thisObj, proto) { - _yuitest_coverfunc("build/yui/yui.js", "some", 3201); -_yuitest_coverline("build/yui/yui.js", 3202); -var key; - - _yuitest_coverline("build/yui/yui.js", 3204); -for (key in obj) { - _yuitest_coverline("build/yui/yui.js", 3205); -if (proto || owns(obj, key)) { - _yuitest_coverline("build/yui/yui.js", 3206); -if (fn.call(thisObj || Y, obj[key], key, obj)) { - _yuitest_coverline("build/yui/yui.js", 3207); -return true; - } - } - } - - _yuitest_coverline("build/yui/yui.js", 3212); -return false; -}; - -/** - * Retrieves the sub value at the provided path, - * from the value object provided. - * - * @method getValue - * @static - * @param o The object from which to extract the property value. - * @param path {Array} A path array, specifying the object traversal path - * from which to obtain the sub value. - * @return {Any} The value stored in the path, undefined if not found, - * undefined if the source is not an object. Returns the source object - * if an empty path is provided. - */ -_yuitest_coverline("build/yui/yui.js", 3228); -O.getValue = function(o, path) { - _yuitest_coverfunc("build/yui/yui.js", "getValue", 3228); -_yuitest_coverline("build/yui/yui.js", 3229); -if (!Lang.isObject(o)) { - _yuitest_coverline("build/yui/yui.js", 3230); -return UNDEFINED; - } - - _yuitest_coverline("build/yui/yui.js", 3233); -var i, - p = Y.Array(path), - l = p.length; - - _yuitest_coverline("build/yui/yui.js", 3237); -for (i = 0; o !== UNDEFINED && i < l; i++) { - _yuitest_coverline("build/yui/yui.js", 3238); -o = o[p[i]]; - } - - _yuitest_coverline("build/yui/yui.js", 3241); -return o; -}; - -/** - * Sets the sub-attribute value at the provided path on the - * value object. Returns the modified value object, or - * undefined if the path is invalid. - * - * @method setValue - * @static - * @param o The object on which to set the sub value. - * @param path {Array} A path array, specifying the object traversal path - * at which to set the sub value. - * @param val {Any} The new value for the sub-attribute. - * @return {Object} The modified object, with the new sub value set, or - * undefined, if the path was invalid. - */ -_yuitest_coverline("build/yui/yui.js", 3258); -O.setValue = function(o, path, val) { - _yuitest_coverfunc("build/yui/yui.js", "setValue", 3258); -_yuitest_coverline("build/yui/yui.js", 3259); -var i, - p = Y.Array(path), - leafIdx = p.length - 1, - ref = o; - - _yuitest_coverline("build/yui/yui.js", 3264); -if (leafIdx >= 0) { - _yuitest_coverline("build/yui/yui.js", 3265); -for (i = 0; ref !== UNDEFINED && i < leafIdx; i++) { - _yuitest_coverline("build/yui/yui.js", 3266); -ref = ref[p[i]]; - } - - _yuitest_coverline("build/yui/yui.js", 3269); -if (ref !== UNDEFINED) { - _yuitest_coverline("build/yui/yui.js", 3270); -ref[p[i]] = val; - } else { - _yuitest_coverline("build/yui/yui.js", 3272); -return UNDEFINED; - } - } - - _yuitest_coverline("build/yui/yui.js", 3276); -return o; -}; - -/** - * Returns `true` if the object has no enumerable properties of its own. - * - * @method isEmpty - * @param {Object} obj An object. - * @return {Boolean} `true` if the object is empty. - * @static - * @since 3.2.0 - */ -_yuitest_coverline("build/yui/yui.js", 3288); -O.isEmpty = function (obj) { - _yuitest_coverfunc("build/yui/yui.js", "isEmpty", 3288); -_yuitest_coverline("build/yui/yui.js", 3289); -return !O.keys(Object(obj)).length; -}; -/** - * The YUI module contains the components required for building the YUI seed - * file. This includes the script loading mechanism, a simple queue, and the - * core utilities for the library. - * @module yui - * @submodule yui-base - */ - -/** - * YUI user agent detection. - * Do not fork for a browser if it can be avoided. Use feature detection when - * you can. Use the user agent as a last resort. For all fields listed - * as @type float, UA stores a version number for the browser engine, - * 0 otherwise. This value may or may not map to the version number of - * the browser using the engine. The value is presented as a float so - * that it can easily be used for boolean evaluation as well as for - * looking for a particular range of versions. Because of this, - * some of the granularity of the version info may be lost. The fields that - * are @type string default to null. The API docs list the values that - * these fields can have. - * @class UA - * @static - */ - -/** -* Static method on `YUI.Env` for parsing a UA string. Called at instantiation -* to populate `Y.UA`. -* -* @static -* @method parseUA -* @param {String} [subUA=navigator.userAgent] UA string to parse -* @return {Object} The Y.UA object -*/ -_yuitest_coverline("build/yui/yui.js", 3324); -YUI.Env.parseUA = function(subUA) { - - _yuitest_coverfunc("build/yui/yui.js", "parseUA", 3324); -_yuitest_coverline("build/yui/yui.js", 3326); -var numberify = function(s) { - _yuitest_coverfunc("build/yui/yui.js", "numberify", 3326); -_yuitest_coverline("build/yui/yui.js", 3327); -var c = 0; - _yuitest_coverline("build/yui/yui.js", 3328); -return parseFloat(s.replace(/\./g, function() { - _yuitest_coverfunc("build/yui/yui.js", "(anonymous 22)", 3328); -_yuitest_coverline("build/yui/yui.js", 3329); -return (c++ === 1) ? '' : '.'; - })); - }, - - win = Y.config.win, - - nav = win && win.navigator, - - o = { - - /** - * Internet Explorer version number or 0. Example: 6 - * @property ie - * @type float - * @static - */ - ie: 0, - - /** - * Opera version number or 0. Example: 9.2 - * @property opera - * @type float - * @static - */ - opera: 0, - - /** - * Gecko engine revision number. Will evaluate to 1 if Gecko - * is detected but the revision could not be found. Other browsers - * will be 0. Example: 1.8 - *
          -         * Firefox 1.0.0.4: 1.7.8   <-- Reports 1.7
          -         * Firefox 1.5.0.9: 1.8.0.9 <-- 1.8
          -         * Firefox 2.0.0.3: 1.8.1.3 <-- 1.81
          -         * Firefox 3.0   <-- 1.9
          -         * Firefox 3.5   <-- 1.91
          -         * 
          - * @property gecko - * @type float - * @static - */ - gecko: 0, - - /** - * AppleWebKit version. KHTML browsers that are not WebKit browsers - * will evaluate to 1, other browsers 0. Example: 418.9 - *
          -         * Safari 1.3.2 (312.6): 312.8.1 <-- Reports 312.8 -- currently the
          -         *                                   latest available for Mac OSX 10.3.
          -         * Safari 2.0.2:         416     <-- hasOwnProperty introduced
          -         * Safari 2.0.4:         418     <-- preventDefault fixed
          -         * Safari 2.0.4 (419.3): 418.9.1 <-- One version of Safari may run
          -         *                                   different versions of webkit
          -         * Safari 2.0.4 (419.3): 419     <-- Tiger installations that have been
          -         *                                   updated, but not updated
          -         *                                   to the latest patch.
          -         * Webkit 212 nightly:   522+    <-- Safari 3.0 precursor (with native
          -         * SVG and many major issues fixed).
          -         * Safari 3.0.4 (523.12) 523.12  <-- First Tiger release - automatic
          -         * update from 2.x via the 10.4.11 OS patch.
          -         * Webkit nightly 1/2008:525+    <-- Supports DOMContentLoaded event.
          -         *                                   yahoo.com user agent hack removed.
          -         * 
          - * http://en.wikipedia.org/wiki/Safari_version_history - * @property webkit - * @type float - * @static - */ - webkit: 0, - - /** - * Safari will be detected as webkit, but this property will also - * be populated with the Safari version number - * @property safari - * @type float - * @static - */ - safari: 0, - - /** - * Chrome will be detected as webkit, but this property will also - * be populated with the Chrome version number - * @property chrome - * @type float - * @static - */ - chrome: 0, - - /** - * The mobile property will be set to a string containing any relevant - * user agent information when a modern mobile browser is detected. - * Currently limited to Safari on the iPhone/iPod Touch, Nokia N-series - * devices with the WebKit-based browser, and Opera Mini. - * @property mobile - * @type string - * @default null - * @static - */ - mobile: null, - - /** - * Adobe AIR version number or 0. Only populated if webkit is detected. - * Example: 1.0 - * @property air - * @type float - */ - air: 0, - /** - * PhantomJS version number or 0. Only populated if webkit is detected. - * Example: 1.0 - * @property phantomjs - * @type float - */ - phantomjs: 0, - /** - * Detects Apple iPad's OS version - * @property ipad - * @type float - * @static - */ - ipad: 0, - /** - * Detects Apple iPhone's OS version - * @property iphone - * @type float - * @static - */ - iphone: 0, - /** - * Detects Apples iPod's OS version - * @property ipod - * @type float - * @static - */ - ipod: 0, - /** - * General truthy check for iPad, iPhone or iPod - * @property ios - * @type Boolean - * @default null - * @static - */ - ios: null, - /** - * Detects Googles Android OS version - * @property android - * @type float - * @static - */ - android: 0, - /** - * Detects Kindle Silk - * @property silk - * @type float - * @static - */ - silk: 0, - /** - * Detects Kindle Silk Acceleration - * @property accel - * @type Boolean - * @static - */ - accel: false, - /** - * Detects Palms WebOS version - * @property webos - * @type float - * @static - */ - webos: 0, - - /** - * Google Caja version number or 0. - * @property caja - * @type float - */ - caja: nav && nav.cajaVersion, - - /** - * Set to true if the page appears to be in SSL - * @property secure - * @type boolean - * @static - */ - secure: false, - - /** - * The operating system. Currently only detecting windows or macintosh - * @property os - * @type string - * @default null - * @static - */ - os: null, - - /** - * The Nodejs Version - * @property nodejs - * @type float - * @default 0 - * @static - */ - nodejs: 0, - /* - * Window8/IE10 Application host environment - * @property winjs - * @type Boolean - * @static - */ - winjs: !!((typeof Windows !== "undefined") && Windows.System), - /** - * Are touch/msPointer events available on this device - * @property touchEnabled - * @type Boolean - * @static - */ - touchEnabled: false - }, - - ua = subUA || nav && nav.userAgent, - - loc = win && win.location, - - href = loc && loc.href, - - m; - - /** - * The User Agent string that was parsed - * @property userAgent - * @type String - * @static - */ - _yuitest_coverline("build/yui/yui.js", 3563); -o.userAgent = ua; - - - _yuitest_coverline("build/yui/yui.js", 3566); -o.secure = href && (href.toLowerCase().indexOf('https') === 0); - - _yuitest_coverline("build/yui/yui.js", 3568); -if (ua) { - - _yuitest_coverline("build/yui/yui.js", 3570); -if ((/windows|win32/i).test(ua)) { - _yuitest_coverline("build/yui/yui.js", 3571); -o.os = 'windows'; - } else {_yuitest_coverline("build/yui/yui.js", 3572); -if ((/macintosh|mac_powerpc/i).test(ua)) { - _yuitest_coverline("build/yui/yui.js", 3573); -o.os = 'macintosh'; - } else {_yuitest_coverline("build/yui/yui.js", 3574); -if ((/android/i).test(ua)) { - _yuitest_coverline("build/yui/yui.js", 3575); -o.os = 'android'; - } else {_yuitest_coverline("build/yui/yui.js", 3576); -if ((/symbos/i).test(ua)) { - _yuitest_coverline("build/yui/yui.js", 3577); -o.os = 'symbos'; - } else {_yuitest_coverline("build/yui/yui.js", 3578); -if ((/linux/i).test(ua)) { - _yuitest_coverline("build/yui/yui.js", 3579); -o.os = 'linux'; - } else {_yuitest_coverline("build/yui/yui.js", 3580); -if ((/rhino/i).test(ua)) { - _yuitest_coverline("build/yui/yui.js", 3581); -o.os = 'rhino'; - }}}}}} - - // Modern KHTML browsers should qualify as Safari X-Grade - _yuitest_coverline("build/yui/yui.js", 3585); -if ((/KHTML/).test(ua)) { - _yuitest_coverline("build/yui/yui.js", 3586); -o.webkit = 1; - } - _yuitest_coverline("build/yui/yui.js", 3588); -if ((/IEMobile|XBLWP7/).test(ua)) { - _yuitest_coverline("build/yui/yui.js", 3589); -o.mobile = 'windows'; - } - _yuitest_coverline("build/yui/yui.js", 3591); -if ((/Fennec/).test(ua)) { - _yuitest_coverline("build/yui/yui.js", 3592); -o.mobile = 'gecko'; - } - // Modern WebKit browsers are at least X-Grade - _yuitest_coverline("build/yui/yui.js", 3595); -m = ua.match(/AppleWebKit\/([^\s]*)/); - _yuitest_coverline("build/yui/yui.js", 3596); -if (m && m[1]) { - _yuitest_coverline("build/yui/yui.js", 3597); -o.webkit = numberify(m[1]); - _yuitest_coverline("build/yui/yui.js", 3598); -o.safari = o.webkit; - - _yuitest_coverline("build/yui/yui.js", 3600); -if (/PhantomJS/.test(ua)) { - _yuitest_coverline("build/yui/yui.js", 3601); -m = ua.match(/PhantomJS\/([^\s]*)/); - _yuitest_coverline("build/yui/yui.js", 3602); -if (m && m[1]) { - _yuitest_coverline("build/yui/yui.js", 3603); -o.phantomjs = numberify(m[1]); - } - } - - // Mobile browser check - _yuitest_coverline("build/yui/yui.js", 3608); -if (/ Mobile\//.test(ua) || (/iPad|iPod|iPhone/).test(ua)) { - _yuitest_coverline("build/yui/yui.js", 3609); -o.mobile = 'Apple'; // iPhone or iPod Touch - - _yuitest_coverline("build/yui/yui.js", 3611); -m = ua.match(/OS ([^\s]*)/); - _yuitest_coverline("build/yui/yui.js", 3612); -if (m && m[1]) { - _yuitest_coverline("build/yui/yui.js", 3613); -m = numberify(m[1].replace('_', '.')); - } - _yuitest_coverline("build/yui/yui.js", 3615); -o.ios = m; - _yuitest_coverline("build/yui/yui.js", 3616); -o.os = 'ios'; - _yuitest_coverline("build/yui/yui.js", 3617); -o.ipad = o.ipod = o.iphone = 0; - - _yuitest_coverline("build/yui/yui.js", 3619); -m = ua.match(/iPad|iPod|iPhone/); - _yuitest_coverline("build/yui/yui.js", 3620); -if (m && m[0]) { - _yuitest_coverline("build/yui/yui.js", 3621); -o[m[0].toLowerCase()] = o.ios; - } - } else { - _yuitest_coverline("build/yui/yui.js", 3624); -m = ua.match(/NokiaN[^\/]*|webOS\/\d\.\d/); - _yuitest_coverline("build/yui/yui.js", 3625); -if (m) { - // Nokia N-series, webOS, ex: NokiaN95 - _yuitest_coverline("build/yui/yui.js", 3627); -o.mobile = m[0]; - } - _yuitest_coverline("build/yui/yui.js", 3629); -if (/webOS/.test(ua)) { - _yuitest_coverline("build/yui/yui.js", 3630); -o.mobile = 'WebOS'; - _yuitest_coverline("build/yui/yui.js", 3631); -m = ua.match(/webOS\/([^\s]*);/); - _yuitest_coverline("build/yui/yui.js", 3632); -if (m && m[1]) { - _yuitest_coverline("build/yui/yui.js", 3633); -o.webos = numberify(m[1]); - } - } - _yuitest_coverline("build/yui/yui.js", 3636); -if (/ Android/.test(ua)) { - _yuitest_coverline("build/yui/yui.js", 3637); -if (/Mobile/.test(ua)) { - _yuitest_coverline("build/yui/yui.js", 3638); -o.mobile = 'Android'; - } - _yuitest_coverline("build/yui/yui.js", 3640); -m = ua.match(/Android ([^\s]*);/); - _yuitest_coverline("build/yui/yui.js", 3641); -if (m && m[1]) { - _yuitest_coverline("build/yui/yui.js", 3642); -o.android = numberify(m[1]); - } - - } - _yuitest_coverline("build/yui/yui.js", 3646); -if (/Silk/.test(ua)) { - _yuitest_coverline("build/yui/yui.js", 3647); -m = ua.match(/Silk\/([^\s]*)\)/); - _yuitest_coverline("build/yui/yui.js", 3648); -if (m && m[1]) { - _yuitest_coverline("build/yui/yui.js", 3649); -o.silk = numberify(m[1]); - } - _yuitest_coverline("build/yui/yui.js", 3651); -if (!o.android) { - _yuitest_coverline("build/yui/yui.js", 3652); -o.android = 2.34; //Hack for desktop mode in Kindle - _yuitest_coverline("build/yui/yui.js", 3653); -o.os = 'Android'; - } - _yuitest_coverline("build/yui/yui.js", 3655); -if (/Accelerated=true/.test(ua)) { - _yuitest_coverline("build/yui/yui.js", 3656); -o.accel = true; - } - } - } - - _yuitest_coverline("build/yui/yui.js", 3661); -m = ua.match(/(Chrome|CrMo|CriOS)\/([^\s]*)/); - _yuitest_coverline("build/yui/yui.js", 3662); -if (m && m[1] && m[2]) { - _yuitest_coverline("build/yui/yui.js", 3663); -o.chrome = numberify(m[2]); // Chrome - _yuitest_coverline("build/yui/yui.js", 3664); -o.safari = 0; //Reset safari back to 0 - _yuitest_coverline("build/yui/yui.js", 3665); -if (m[1] === 'CrMo') { - _yuitest_coverline("build/yui/yui.js", 3666); -o.mobile = 'chrome'; - } - } else { - _yuitest_coverline("build/yui/yui.js", 3669); -m = ua.match(/AdobeAIR\/([^\s]*)/); - _yuitest_coverline("build/yui/yui.js", 3670); -if (m) { - _yuitest_coverline("build/yui/yui.js", 3671); -o.air = m[0]; // Adobe AIR 1.0 or better - } - } - } - - _yuitest_coverline("build/yui/yui.js", 3676); -if (!o.webkit) { // not webkit -// @todo check Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1316; fi; U; ssr) - _yuitest_coverline("build/yui/yui.js", 3678); -if (/Opera/.test(ua)) { - _yuitest_coverline("build/yui/yui.js", 3679); -m = ua.match(/Opera[\s\/]([^\s]*)/); - _yuitest_coverline("build/yui/yui.js", 3680); -if (m && m[1]) { - _yuitest_coverline("build/yui/yui.js", 3681); -o.opera = numberify(m[1]); - } - _yuitest_coverline("build/yui/yui.js", 3683); -m = ua.match(/Version\/([^\s]*)/); - _yuitest_coverline("build/yui/yui.js", 3684); -if (m && m[1]) { - _yuitest_coverline("build/yui/yui.js", 3685); -o.opera = numberify(m[1]); // opera 10+ - } - - _yuitest_coverline("build/yui/yui.js", 3688); -if (/Opera Mobi/.test(ua)) { - _yuitest_coverline("build/yui/yui.js", 3689); -o.mobile = 'opera'; - _yuitest_coverline("build/yui/yui.js", 3690); -m = ua.replace('Opera Mobi', '').match(/Opera ([^\s]*)/); - _yuitest_coverline("build/yui/yui.js", 3691); -if (m && m[1]) { - _yuitest_coverline("build/yui/yui.js", 3692); -o.opera = numberify(m[1]); - } - } - _yuitest_coverline("build/yui/yui.js", 3695); -m = ua.match(/Opera Mini[^;]*/); - - _yuitest_coverline("build/yui/yui.js", 3697); -if (m) { - _yuitest_coverline("build/yui/yui.js", 3698); -o.mobile = m[0]; // ex: Opera Mini/2.0.4509/1316 - } - } else { // not opera or webkit - _yuitest_coverline("build/yui/yui.js", 3701); -m = ua.match(/MSIE\s([^;]*)/); - _yuitest_coverline("build/yui/yui.js", 3702); -if (m && m[1]) { - _yuitest_coverline("build/yui/yui.js", 3703); -o.ie = numberify(m[1]); - } else { // not opera, webkit, or ie - _yuitest_coverline("build/yui/yui.js", 3705); -m = ua.match(/Gecko\/([^\s]*)/); - _yuitest_coverline("build/yui/yui.js", 3706); -if (m) { - _yuitest_coverline("build/yui/yui.js", 3707); -o.gecko = 1; // Gecko detected, look for revision - _yuitest_coverline("build/yui/yui.js", 3708); -m = ua.match(/rv:([^\s\)]*)/); - _yuitest_coverline("build/yui/yui.js", 3709); -if (m && m[1]) { - _yuitest_coverline("build/yui/yui.js", 3710); -o.gecko = numberify(m[1]); - } - } - } - } - } - } - - //Check for known properties to tell if touch events are enabled on this device or if - //the number of MSPointer touchpoints on this device is greater than 0. - _yuitest_coverline("build/yui/yui.js", 3720); -if (win && nav && !(o.chrome && o.chrome < 6)) { - _yuitest_coverline("build/yui/yui.js", 3721); -o.touchEnabled = (("ontouchstart" in win) || (("msMaxTouchPoints" in nav) && (nav.msMaxTouchPoints > 0))); - } - - //It was a parsed UA, do not assign the global value. - _yuitest_coverline("build/yui/yui.js", 3725); -if (!subUA) { - - _yuitest_coverline("build/yui/yui.js", 3727); -if (typeof process === 'object') { - - _yuitest_coverline("build/yui/yui.js", 3729); -if (process.versions && process.versions.node) { - //NodeJS - _yuitest_coverline("build/yui/yui.js", 3731); -o.os = process.platform; - _yuitest_coverline("build/yui/yui.js", 3732); -o.nodejs = numberify(process.versions.node); - } - } - - _yuitest_coverline("build/yui/yui.js", 3736); -YUI.Env.UA = o; - - } - - _yuitest_coverline("build/yui/yui.js", 3740); -return o; -}; - - -_yuitest_coverline("build/yui/yui.js", 3744); -Y.UA = YUI.Env.UA || YUI.Env.parseUA(); - -/** -Performs a simple comparison between two version numbers, accounting for -standard versioning logic such as the fact that "535.8" is a lower version than -"535.24", even though a simple numerical comparison would indicate that it's -greater. Also accounts for cases such as "1.1" vs. "1.1.0", which are -considered equivalent. - -Returns -1 if version _a_ is lower than version _b_, 0 if they're equivalent, -1 if _a_ is higher than _b_. - -Versions may be numbers or strings containing numbers and dots. For example, -both `535` and `"535.8.10"` are acceptable. A version string containing -non-numeric characters, like `"535.8.beta"`, may produce unexpected results. - -@method compareVersions -@param {Number|String} a First version number to compare. -@param {Number|String} b Second version number to compare. -@return -1 if _a_ is lower than _b_, 0 if they're equivalent, 1 if _a_ is - higher than _b_. -**/ -_yuitest_coverline("build/yui/yui.js", 3766); -Y.UA.compareVersions = function (a, b) { - _yuitest_coverfunc("build/yui/yui.js", "compareVersions", 3766); -_yuitest_coverline("build/yui/yui.js", 3767); -var aPart, aParts, bPart, bParts, i, len; - - _yuitest_coverline("build/yui/yui.js", 3769); -if (a === b) { - _yuitest_coverline("build/yui/yui.js", 3770); -return 0; - } - - _yuitest_coverline("build/yui/yui.js", 3773); -aParts = (a + '').split('.'); - _yuitest_coverline("build/yui/yui.js", 3774); -bParts = (b + '').split('.'); - - _yuitest_coverline("build/yui/yui.js", 3776); -for (i = 0, len = Math.max(aParts.length, bParts.length); i < len; ++i) { - _yuitest_coverline("build/yui/yui.js", 3777); -aPart = parseInt(aParts[i], 10); - _yuitest_coverline("build/yui/yui.js", 3778); -bPart = parseInt(bParts[i], 10); - - _yuitest_coverline("build/yui/yui.js", 3780); -isNaN(aPart) && (aPart = 0); - _yuitest_coverline("build/yui/yui.js", 3781); -isNaN(bPart) && (bPart = 0); - - _yuitest_coverline("build/yui/yui.js", 3783); -if (aPart < bPart) { - _yuitest_coverline("build/yui/yui.js", 3784); -return -1; - } - - _yuitest_coverline("build/yui/yui.js", 3787); -if (aPart > bPart) { - _yuitest_coverline("build/yui/yui.js", 3788); -return 1; - } - } - - _yuitest_coverline("build/yui/yui.js", 3792); -return 0; -}; -_yuitest_coverline("build/yui/yui.js", 3794); -YUI.Env.aliases = { - "anim": ["anim-base","anim-color","anim-curve","anim-easing","anim-node-plugin","anim-scroll","anim-xy"], - "anim-shape-transform": ["anim-shape"], - "app": ["app-base","app-content","app-transitions","lazy-model-list","model","model-list","model-sync-rest","router","view","view-node-map"], - "attribute": ["attribute-base","attribute-complex"], - "autocomplete": ["autocomplete-base","autocomplete-sources","autocomplete-list","autocomplete-plugin"], - "base": ["base-base","base-pluginhost","base-build"], - "cache": ["cache-base","cache-offline","cache-plugin"], - "collection": ["array-extras","arraylist","arraylist-add","arraylist-filter","array-invoke"], - "controller": ["router"], - "dataschema": ["dataschema-base","dataschema-json","dataschema-xml","dataschema-array","dataschema-text"], - "datasource": ["datasource-local","datasource-io","datasource-get","datasource-function","datasource-cache","datasource-jsonschema","datasource-xmlschema","datasource-arrayschema","datasource-textschema","datasource-polling"], - "datatable": ["datatable-core","datatable-table","datatable-head","datatable-body","datatable-base","datatable-column-widths","datatable-message","datatable-mutable","datatable-sort","datatable-datasource"], - "datatable-deprecated": ["datatable-base-deprecated","datatable-datasource-deprecated","datatable-sort-deprecated","datatable-scroll-deprecated"], - "datatype": ["datatype-date","datatype-number","datatype-xml"], - "datatype-date": ["datatype-date-parse","datatype-date-format","datatype-date-math"], - "datatype-number": ["datatype-number-parse","datatype-number-format"], - "datatype-xml": ["datatype-xml-parse","datatype-xml-format"], - "dd": ["dd-ddm-base","dd-ddm","dd-ddm-drop","dd-drag","dd-proxy","dd-constrain","dd-drop","dd-scroll","dd-delegate"], - "dom": ["dom-base","dom-screen","dom-style","selector-native","selector"], - "editor": ["frame","editor-selection","exec-command","editor-base","editor-para","editor-br","editor-bidi","editor-tab","createlink-base"], - "event": ["event-base","event-delegate","event-synthetic","event-mousewheel","event-mouseenter","event-key","event-focus","event-resize","event-hover","event-outside","event-touch","event-move","event-flick","event-valuechange","event-tap"], - "event-custom": ["event-custom-base","event-custom-complex"], - "event-gestures": ["event-flick","event-move"], - "handlebars": ["handlebars-compiler"], - "highlight": ["highlight-base","highlight-accentfold"], - "history": ["history-base","history-hash","history-hash-ie","history-html5"], - "io": ["io-base","io-xdr","io-form","io-upload-iframe","io-queue"], - "json": ["json-parse","json-stringify"], - "loader": ["loader-base","loader-rollup","loader-yui3"], - "node": ["node-base","node-event-delegate","node-pluginhost","node-screen","node-style"], - "pluginhost": ["pluginhost-base","pluginhost-config"], - "querystring": ["querystring-parse","querystring-stringify"], - "recordset": ["recordset-base","recordset-sort","recordset-filter","recordset-indexer"], - "resize": ["resize-base","resize-proxy","resize-constrain"], - "slider": ["slider-base","slider-value-range","clickable-rail","range-slider"], - "text": ["text-accentfold","text-wordbreak"], - "widget": ["widget-base","widget-htmlparser","widget-skin","widget-uievents"] -}; - - -}, '3.7.3', {"use": ["yui-base", "get", "features", "intl-base", "yui-log", "yui-later", "loader-base", "loader-rollup", "loader-yui3"]}); diff --git a/lib/yuilib/3.7.3/build/yui/yui-min.js b/lib/yuilib/3.7.3/build/yui/yui-min.js deleted file mode 100644 index 0dd31f8c8c5..00000000000 --- a/lib/yuilib/3.7.3/build/yui/yui-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -YUI 3.7.3 (build 5687) -Copyright 2012 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -http://yuilibrary.com/license/ -*/ -typeof YUI!="undefined"&&(YUI._YUI=YUI);var YUI=function(){var e=0,t=this,n=arguments,r=n.length,i=function(e,t){return e&&e.hasOwnProperty&&e instanceof t},s=typeof YUI_config!="undefined"&&YUI_config;i(t,YUI)?(t._init(),YUI.GlobalConfig&&t.applyConfig(YUI.GlobalConfig),s&&t.applyConfig(s),r||t._setup()):t=new YUI;if(r){for(;e-1&&(n="3.5.0"),e={applyConfig:function(e){e=e||u;var t,n,r=this.config,i=r.modules,s=r.groups,o=r.aliases,a=this.Env._loader;for(n in e)e.hasOwnProperty(n)&&(t=e[n],i&&n=="modules"?E(i,t):o&&n=="aliases"?E(o,t):s&&n=="groups"?E(s,t):n=="win"?(r[n]=t&&t.contentWindow||t,r.doc=r[n]?r[n].document:null):n!="_yuid"&&(r[n]=t));a&&a._config(e)},_config:function(e){this.applyConfig(e)},_init:function(){var e,t,r=this,s=YUI.Env,u=r.Env,a;r.version=n;if(!u){r.Env={core:["get","features","intl-base","yui-log","yui-later","loader-base","loader-rollup","loader-yui3"],loaderExtras:["loader-rollup","loader-yui3"],mods:{},versions:{},base:i,cdn:i+n+"/build/",_idx:0,_used:{},_attached:{},_missed:[],_yidx:0,_uidx:0,_guidp:"y",_loaded:{},_BASE_RE:/(?:\?(?:[^&]*&)*([^&]*))?\b(simpleyui|yui(?:-\w+)?)\/\2(?:-(min|debug))?\.js/,parseBasePath:function(e,t){var n=e.match(t),r,i;return n&&(r=RegExp.leftContext||e.slice(0,e.indexOf(n[0])),i=n[3],n[1]&&(r+="?"+n[1]),r={filter:i,path:r}),r},getBase:s&&s.getBase||function(t){var n=h&&h.getElementsByTagName("script")||[],i=u.cdn,s,o,a,f;for(o=0,a=n.length;o',YUI.Env.cssStampEl=t.firstChild,h.body?h.body.appendChild(YUI.Env.cssStampEl):p.insertBefore(YUI.Env.cssStampEl,p.firstChild)),r.config.lang=r.config.lang||"en-US",r.config.base=YUI.config.base||r.Env.getBase(r.Env._BASE_RE);if(!e||!"mindebug".indexOf(e))e="min";e=e?"-"+e:e,r.config.loaderPath=YUI.config.loaderPath||"loader/loader"+e+".js"},_setup:function(e){var t,n=this,r=[],i=YUI.Env.mods,s=n.config.core||[].concat(YUI.Env.core);for(t=0;t-1){s=o.split(r);for(i=s[0]=="YAHOO"?1:0;ii&&i in t?t[i]:!0);return n},h.indexOf=f._isNative(l.indexOf)?function(e,t,n){return l.indexOf.call(e,t,n)}:function(e,t,n){var r=e.length;n=+n||0,n=(n>0||-1)*Math.floor(Math.abs(n)),n<0&&(n+=r,n<0&&(n=0));for(;n1?Array.prototype.join.call(arguments,d):String(r);if(!(i in t)||n&&t[i]==n)t[i]=e.apply(e,arguments);return t[i]}},e.getLocation=function(){var t=e.config.win;return t&&t.location},e.merge=function(){var e=0,t=arguments.length,n={},r,i;for(;e-1},g.each=function(t,n,r,i){var s;for(s in t)(i||E(t,s))&&n.call(r||e,t[s],s,t);return e},g.some=function(t,n,r,i){var s;for(s in t)if(i||E(t,s))if(n.call(r||e,t[s],s,t))return!0;return!1},g.getValue=function(t,n){if(!f.isObject(t))return m;var r,i=e.Array(n),s=i.length;for(r=0;t!==m&&r=0){for(i=0;u!==m&&i0),t||(typeof process=="object"&&process.versions&&process.versions.node&&(s.os=process.platform,s.nodejs=n(process.versions.node)),YUI.Env.UA=s),s},e.UA=YUI.Env.UA||YUI.Env.parseUA(),e.UA.compareVersions=function(e,t){var n,r,i,s,o,u;if(e===t)return 0;r=(e+"").split("."),s=(t+"").split(".");for(o=0,u=Math.max(r.length,s.length);oi)return 1}return 0},YUI.Env.aliases={anim:["anim-base","anim-color","anim-curve","anim-easing","anim-node-plugin","anim-scroll","anim-xy"],"anim-shape-transform":["anim-shape"],app:["app-base","app-content","app-transitions","lazy-model-list","model","model-list","model-sync-rest","router","view","view-node-map"],attribute:["attribute-base","attribute-complex"],autocomplete:["autocomplete-base","autocomplete-sources","autocomplete-list","autocomplete-plugin"],base:["base-base","base-pluginhost","base-build"],cache:["cache-base","cache-offline","cache-plugin"],collection:["array-extras","arraylist","arraylist-add","arraylist-filter","array-invoke"],controller:["router"],dataschema:["dataschema-base","dataschema-json","dataschema-xml","dataschema-array","dataschema-text"],datasource:["datasource-local","datasource-io","datasource-get","datasource-function","datasource-cache","datasource-jsonschema","datasource-xmlschema","datasource-arrayschema","datasource-textschema","datasource-polling"],datatable:["datatable-core","datatable-table","datatable-head","datatable-body","datatable-base","datatable-column-widths","datatable-message","datatable-mutable","datatable-sort","datatable-datasource"],"datatable-deprecated":["datatable-base-deprecated","datatable-datasource-deprecated","datatable-sort-deprecated","datatable-scroll-deprecated"],datatype:["datatype-date","datatype-number","datatype-xml"],"datatype-date":["datatype-date-parse","datatype-date-format","datatype-date-math"],"datatype-number":["datatype-number-parse","datatype-number-format"],"datatype-xml":["datatype-xml-parse","datatype-xml-format"],dd:["dd-ddm-base","dd-ddm","dd-ddm-drop","dd-drag","dd-proxy","dd-constrain","dd-drop","dd-scroll","dd-delegate"],dom:["dom-base","dom-screen","dom-style","selector-native","selector"],editor:["frame","editor-selection","exec-command","editor-base","editor-para","editor-br","editor-bidi","editor-tab","createlink-base"],event:["event-base","event-delegate","event-synthetic","event-mousewheel","event-mouseenter","event-key","event-focus","event-resize","event-hover","event-outside","event-touch","event-move","event-flick","event-valuechange","event-tap"],"event-custom":["event-custom-base","event-custom-complex"],"event-gestures":["event-flick","event-move"],handlebars:["handlebars-compiler"],highlight:["highlight-base","highlight-accentfold"],history:["history-base","history-hash","history-hash-ie","history-html5"],io:["io-base","io-xdr","io-form","io-upload-iframe","io-queue"],json:["json-parse","json-stringify"],loader:["loader-base","loader-rollup","loader-yui3"],node:["node-base","node-event-delegate","node-pluginhost","node-screen","node-style"],pluginhost:["pluginhost-base","pluginhost-config"],querystring:["querystring-parse","querystring-stringify"],recordset:["recordset-base","recordset-sort","recordset-filter","recordset-indexer"],resize:["resize-base","resize-proxy","resize-constrain"],slider:["slider-base","slider-value-range","clickable-rail","range-slider"],text:["text-accentfold","text-wordbreak"],widget:["widget-base","widget-htmlparser","widget-skin","widget-uievents"]}},"3.7.3",{use:["yui-base","get","features","intl-base","yui-log","yui-later","loader-base","loader-rollup","loader-yui3"]}),YUI.add("get",function(e,t){var n=e.Lang,r,i,s;e.Get=i={cssOptions:{attributes:{rel:"stylesheet"},doc:e.config.linkDoc||e.config.doc,pollInterval:50},jsOptions:{autopurge:!0,doc:e.config.scriptDoc||e.config.doc},options:{attributes:{charset:"utf-8"},purgethreshold:20},REGEX_CSS:/\.css(?:[?;].*)?$/i,REGEX_JS:/\.js(?:[?;].*)?$/i,_insertCache:{},_pending:null,_purgeNodes:[],_queue:[],abort:function(e){var t,n,r,i,s;if(!e.abort){n=e,s=this._pending,e=null;if(s&&s.transaction.id===n)e=s.transaction,this._pending=null;else for(t=0,i=this._queue.length;t=e&&this._purge(this._purgeNodes)},_getEnv:function(){var t=e.config.doc,n=e.UA;return this._env={async:t&&t.createElement("script").async===!0||n.ie>=10,cssFail:n.gecko>=9||n.compareVersions(n.webkit,535.24)>=0,cssLoad:(!n.gecko&&!n.webkit||n.gecko>=9||n.compareVersions(n.webkit,535.24)>=0)&&!(n.chrome&&n.chrome<=18),preservesScriptOrder:!!(n.gecko||n.opera||n.ie&&n.ie>=10)}},_getTransaction:function(t,r){var i=[],o,u,a,f;n.isArray(t)||(t=[t]),r=e.merge(this.options,r),r.attributes=e.merge(this.options.attributes,r.attributes);for(o=0,u=t.length;o-1&&n.splice(i,1))}}},i.script=i.js,i.Transaction=s=function(t,n){var r=this;r.id=s._lastId+=1,r.data=n.data,r.errors=[],r.nodes=[],r.options=n,r.requests=t,r._callbacks=[],r._queue=[],r._reqsWaiting=0,r.tId=r.id,r.win=n.win||e.config.win},s._lastId=0,s.prototype={_state:"new",abort:function(e){this._pending=null,this._pendingCSS=null,this._pollTimer=clearTimeout(this._pollTimer),this._queue=[],this._reqsWaiting=0,this.errors.push({error:e||"Aborted"}),this._finish()},execute:function(e){var t=this,n=t.requests,r=t._state,i,s,o,u;if(r==="done"){e&&e(t.errors.length?t.errors:null,t);return}e&&t._callbacks.push(e);if(r==="executing")return;t._state="executing",t._queue=o=[],t.options.timeout&&(t._timeout=setTimeout(function(){t.abort("Timeout")},t.options.timeout)),t._reqsWaiting=n.length;for(i=0,s=n.length;i=10?(o.onerror=function(){setTimeout(c,0)},o.onload=function(){setTimeout(h,0)}):(o.onerror=c,o.onload=h),!n.cssFail&&!s&&(f=setTimeout(c,t.timeout||3e3))),this.nodes.push(o),r.parentNode.insertBefore(o,r)},_next:function(){if(this._pending)return;this._queue.length?this._insert(this._queue.shift()):this._reqsWaiting||this._finish()},_poll:function(t){var n=this,r=n._pendingCSS,i=e.UA.webkit,s,o,u,a,f,l;if(t){r||(r=n._pendingCSS=[]),r.push(t);if(n._pollTimer)return}n._pollTimer=null;for(s=0;s=0)if(l[u].href===a){r.splice(s,1),s-=1,n._progress(null,f);break}}else try{o=!!f.node.sheet.cssRules,r.splice(s,1),s-=1,n._progress(null,f)}catch(c){}}r.length&&(n._pollTimer=setTimeout(function(){n._poll.call(n)},n.options.pollInterval))},_progress:function(e,t){var n=this.options;e&&(t.error=e,this.errors.push({error:e,request:t})),t.node._yuiget_finished=t.finished=!0,n.onProgress&&n.onProgress.call(n.context||this,this._getEventData(t)),t.autopurge&&(i._autoPurge(this.options.purgethreshold),i._purgeNodes.push(t.node)),this._pending===t&&(this._pending=null),this._reqsWaiting-=1,this._next()}}},"3.7.3",{requires:["yui-base"]}),YUI.add("features",function(e,t){var n={};e.mix(e.namespace("Features"),{tests:n,add:function(e,t,r){n[e]=n[e]||{},n[e][t]=r},all:function(t,r){var i=n[t],s=[];return i&&e.Object.each(i,function(n,i){s.push(i+":"+(e.Features.test(t,i,r)?1:0))}),s.length?s.join(";"):""},test:function(t,r,i){i=i||[];var s,o,u,a=n[t],f=a&&a[r];return!f||(s=f.result,e.Lang.isUndefined(s)&&(o=f.ua,o&&(s=e.UA[o]),u=f.test,u&&(!o||s)&&(s=u.apply(e,i)),f.result=s)),s}});var r=e.Features.add;r("load","0",{name:"app-transitions-native",test:function(e){var t=e.config.doc,n=t?t.documentElement:null;return n&&n.style?"MozTransition"in n.style||"WebkitTransition"in n.style||"transition"in n.style:!1},trigger:"app-transitions"}),r("load","1",{name:"autocomplete-list-keys",test:function(e){return!e.UA.ios&&!e.UA.android},trigger:"autocomplete-list"}),r("load","2",{name:"dd-gestures",trigger:"dd-drag",ua:"touchEnabled"}),r("load","3",{name:"dom-style-ie",test:function(e){var t=e.Features.test,n=e.Features.add,r=e.config.win,i=e.config.doc,s="documentElement",o=!1;return n("style","computedStyle",{test:function(){return r&&"getComputedStyle"in r}}),n("style","opacity",{test:function(){return i&&"opacity"in i[s].style}}),o=!t("style","opacity")&&!t("style","computedStyle"),o},trigger:"dom-style"}),r("load","4",{name:"editor-para-ie",trigger:"editor-para",ua:"ie",when:"instead"}),r("load","5",{name:"event-base-ie",test:function(e){var t=e.config.doc&&e.config.doc.implementation;return t&&!t.hasFeature("Events","2.0")},trigger:"node-base"}),r("load","6",{name:"graphics-canvas",test:function(e){var t=e.config.doc,n=e.config.defaultGraphicEngine&&e.config.defaultGraphicEngine=="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return(!i||n)&&r&&r.getContext&&r.getContext("2d")},trigger:"graphics"}),r("load","7",{name:"graphics-canvas-default",test:function(e){var t=e.config.doc,n=e.config.defaultGraphicEngine&&e.config.defaultGraphicEngine=="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return(!i||n)&&r&&r.getContext&&r.getContext("2d")},trigger:"graphics"}),r("load","8",{name:"graphics-svg",test:function(e){var t=e.config.doc,n=!e.config.defaultGraphicEngine||e.config.defaultGraphicEngine!="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return i&&(n||!r)},trigger:"graphics"}),r("load","9",{name:"graphics-svg-default",test:function(e){var t=e.config.doc,n=!e.config.defaultGraphicEngine||e.config.defaultGraphicEngine!="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return i&&(n||!r)},trigger:"graphics"}),r("load","10",{name:"graphics-vml",test:function(e){var t=e.config.doc,n=t&&t.createElement("canvas");return t&&!t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")&&(!n||!n.getContext||!n.getContext("2d"))},trigger:"graphics"}),r("load","11",{name:"graphics-vml-default",test:function(e){var t=e.config.doc,n=t&&t.createElement("canvas");return t&&!t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")&&(!n||!n.getContext||!n.getContext("2d"))},trigger:"graphics"}),r("load","12",{name:"history-hash-ie",test:function(e){var t=e.config.doc&&e.config.doc.documentMode;return e.UA.ie&&(!("onhashchange"in e.config.win)||!t||t<8)},trigger:"history-hash"}),r("load","13",{name:"io-nodejs",trigger:"io-base",ua:"nodejs"}),r("load","14",{name:"scrollview-base-ie",trigger:"scrollview-base",ua:"ie"}),r("load","15",{name:"selector-css2",test:function(e){var t=e.config.doc,n=t&&!("querySelectorAll"in t);return n},trigger:"selector"}),r("load","16",{name:"transition-timer",test:function(e){var t=e.config.doc,n=t?t.documentElement:null,r=!0;return n&&n.style&&(r=!("MozTransition"in n.style||"WebkitTransition"in n.style||"transition"in n.style)),r},trigger:"transition"}),r("load","17",{name:"widget-base-ie",trigger:"widget-base",ua:"ie"}),r("load","18",{name:"yql-nodejs",trigger:"yql",ua:"nodejs",when:"after"}),r("load","19",{name:"yql-winjs",trigger:"yql",ua:"winjs",when:"after"})},"3.7.3",{requires:["yui-base"]}),YUI.add("intl-base",function(e,t){var n=/[, ]/;e.mix(e.namespace("Intl"),{lookupBestLang:function(t,r){function a(e){var t;for(t=0;t0){o=a(s);if(o)return o;u=s.lastIndexOf("-");if(!(u>=0))break;s=s.substring(0,u),u>=2&&s.charAt(u-2)==="-"&&(s=s.substring(0,u-2))}}return""}})},"3.7.3",{requires:["yui-base"]}),YUI.add("yui-log",function(e,t){var n=e,r="yui:log",i="undefined",s={debug:1,info:1,warn:1,error:1};n.log=function(e,t,o,u){var a,f,l,c,h,p=n,d=p.config,v=p.fire?p:YUI.Env.globalEvents;return d.debug&&(o=o||"",typeof o!="undefined"&&(f=d.logExclude,l=d.logInclude,!l||o in l?l&&o in l?a=!l[o]:f&&o in f&&(a=f[o]):a=1),a||(d.useBrowserConsole&&(c=o?o+": "+e:e,p.Lang.isFunction(d.logFn)?d.logFn.call(p,e,t,o):typeof console!=i&&console.log?(h=t&&console[t]&&t in s?t:"log",console[h](c)):typeof opera!=i&&opera.postError(c)),v&&!u&&(v==p&&!v.getEvent(r)&&v.publish(r,{broadcast:2}),v.fire(r,{msg:e,cat:t,src:o})))),p},n.message=function(){return n.log.apply(n,arguments)}},"3.7.3",{requires:["yui-base"]}),YUI.add("yui-later",function(e,t){var n=[];e.later=function(t,r,i,s,o){t=t||0,s=e.Lang.isUndefined(s)?n:e.Array(s),r=r||e.config.win||e;var u=!1,a=r&&e.Lang.isString(i)?r[i]:i,f=function(){u||(a.apply?a.apply(r,s||n):a(s[0],s[1],s[2],s[3]))},l=o?setInterval(f,t):setTimeout(f,t);return{id:l,interval:o,cancel:function(){u=!0,this.interval?clearInterval(l):clearTimeout(l)}}},e.Lang.later=e.later},"3.7.3",{requires:["yui-base"]}),YUI.add("loader-base",function(e,t){YUI.Env[e.version]||function(){var t=e.version,n="/build/",r=t+n,i=e.Env.base,s="gallery-2012.10.10-19-59",o="2in3",u="4",a="2.9.0",f=i+"combo?",l={version:t,root:r,base:e.Env.base,comboBase:f,skin:{defaultSkin:"sam",base:"assets/skins/",path:"skin.css",after:["cssreset","cssfonts","cssgrids","cssbase","cssreset-context","cssfonts-context"]},groups:{},patterns:{}},c=l.groups,h=function(e,t,r){var s=o+"."+(e||u)+"/"+(t||a)+n,l=r&&r.base?r.base:i,h=r&&r.comboBase?r.comboBase:f;c.yui2.base=l+s,c.yui2.root=s,c.yui2.comboBase=h},p=function(e,t){var r=(e||s)+n,o=t&&t.base?t.base:i,u=t&&t.comboBase?t.comboBase:f;c.gallery.base=o+r,c.gallery.root=r,c.gallery.comboBase=u};c[t]={},c.gallery={ext:!1,combine:!0,comboBase:f,update:p,patterns:{"gallery-":{},"lang/gallery-":{},"gallerycss-":{type:"css"}}},c.yui2={combine:!0,ext:!1,comboBase:f,update:h,patterns:{"yui2-":{configFn:function(e){/-skin|reset|fonts|grids|base/.test(e.name)&&(e.type="css",e.path=e.path.replace(/\.js/,".css"),e.path=e.path.replace(/\/yui2-skin/,"/assets/skins/sam/yui2-skin"))}}}},p(),h(),YUI.Env[t]=l}();var n={},r=[],i=1024,s=YUI.Env,o=s._loaded,u="css",a="js",f="intl",l="sam",c=e.version,h="",p=e.Object,d=p.each,v=e.Array,m=s._loaderQueue,g=s[c],y="skin-",b=e.Lang,w=s.mods,E,S=function(e,t,n,r){var i=e+"/"+t;return r||(i+="-min"),i+="."+(n||u),i};YUI.Env._cssLoaded||(YUI.Env._cssLoaded={}),e.Env.meta=g,e.Loader=function(t){var n=this;t=t||{},E=g.md5,n.context=e,n.base=e.Env.meta.base+e.Env.meta.root,n.comboBase=e.Env.meta.comboBase,n.combine=t.base&&t.base.indexOf(n.comboBase.substr(0,20))>-1,n.comboSep="&",n.maxURLLength=i,n.ignoreRegistered=t.ignoreRegistered,n.root=e.Env.meta.root,n.timeout=0,n.forceMap={},n.allowRollup=!1,n.filters={},n.required={},n.patterns={},n.moduleInfo={},n.groups=e.merge(e.Env.meta.groups),n.skin=e.merge(e.Env.meta.skin),n.conditions={},n.config=t,n._internal=!0,n._populateCache(),n.loaded=o[c],n.async=!0,n._inspectPage(),n._internal=!1,n._config(t),n.forceMap=n.force?e.Array.hash(n.force):{},n.testresults=null,e.config.tests&&(n.testresults=e.config.tests),n.sorted=[],n.dirty=!0,n.inserted={},n.skipped={},n.tested={},n.ignoreRegistered&&n._resetModules()},e.Loader.prototype={_populateCache:function(){var t=this,n=g.modules,r=s._renderedMods,i;if(r&&!t.ignoreRegistered){for(i in r)r.hasOwnProperty(i)&&(t.moduleInfo[i]=e.merge(r[i]));r=s._conditions;for(i in r)r.hasOwnProperty(i)&&(t.conditions[i]=e.merge(r[i]))}else for(i in n)n.hasOwnProperty(i)&&t.addModule(n[i],i)},_resetModules:function(){var e=this,t,n,r,i,s;for(t in e.moduleInfo)if(e.moduleInfo.hasOwnProperty(t)){r=e.moduleInfo[t],i=r.name,s=YUI.Env.mods[i]?YUI.Env.mods[i].details:null,s&&(e.moduleInfo[i]._reset=!0,e.moduleInfo[i].requires=s.requires||[],e.moduleInfo[i].optional=s.optional||[],e.moduleInfo[i].supersedes=s.supercedes||[]);if(r.defaults)for(n in r.defaults)r.defaults.hasOwnProperty(n)&&r[n]&&(r[n]=r.defaults[n]);delete r.langCache,delete r.skinCache,r.skinnable&&e._addSkin(e.skin.defaultSkin,r.name)}},REGEX_CSS:/\.css(?:[?;].*)?$/i,FILTER_DEFS:{RAW:{searchExp:"-min\\.js",replaceStr:".js"},DEBUG:{searchExp:"-min\\.js",replaceStr:"-debug.js"},COVERAGE:{searchExp:"-min\\.js",replaceStr:"-coverage.js"}},_inspectPage:function(){var e=this,t,n,r,i,s;for(s in e.moduleInfo)e.moduleInfo.hasOwnProperty(s)&&(t=e.moduleInfo[s],t.type&&t.type===u&&e.isCSSLoaded(t.name)&&(e.loaded[s]=!0));for(s in w)w.hasOwnProperty(s)&&(t=w[s],t.details&&(n=e.moduleInfo[t.name],r=t.details.requires,i=n&&n.requires,n?!n._inspected&&r&&i.length!==r.length&&delete n.expanded:n=e.addModule(t.details,s),n._inspected=!0))},_requires:function(e,t){var n,r,i,s,o=this.moduleInfo,a=o[e],f=o[t];if(!a||!f)return!1;r=a.expanded_map,i=a.after_map;if(i&&t in i)return!0;i=f.after_map;if(i&&e in i)return!1;s=o[t]&&o[t].supersedes;if(s)for(n=0;n-1&&(k=n);if(C&&(C[c]||k&&C[k])){L=c,C[k]&&(L=k);for(n=0;n-1},getModule:function(t){if(!t)return null;var n,r,i,s=this.moduleInfo[t],o=this.patterns;if(!s||s&&s.ext)for(i in o)if(o.hasOwnProperty(i)){n=o[i],n.test||(n.test=this._patternTest);if(n.test(t,i)){r=n;break}}return s?r&&s&&r.configFn&&!s.configFn&&(s.configFn=r.configFn,s.configFn(s)):r&&(n.action?n.action.call(this,t,i):(s=this.addModule(e.merge(r),t),r.configFn&&(s.configFn=r.configFn),s.temp=!0)),s},_rollup:function(){},_reduce:function(e){e=e||this.required;var t,n,r,i,s=this.loadType,o=this.ignore?v.hash(this.ignore):!1;for(t in e)if(e.hasOwnProperty(t)){i=this.getModule(t),((this.loaded[t]||w[t])&&!this.forceMap[t]&&!this.ignoreRegistered||s&&i&&i.type!==s)&&delete e[t],o&&o[t]&&delete e[t],r=i&&i.supersedes;if(r)for(n=0;n0&&(m.running=!0,m.next()())},insert:function(t,n,r){var i=this,s=e.merge(this);delete s.require,delete s.dirty,m.add(function(){i._insert(s,t,n,r)}),this._continue()},loadNext:function(){return},_filter:function(e,t,n){var r=this.filter,i=t&&t in this.filters,s=i&&this.filters[t],o=n||(this.moduleInfo[t]?this.moduleInfo[t].group:null);return o&&this.groups[o]&&this.groups[o].filter&&(s=this.groups[o].filter,i=!0),e&&(i&&(r=b.isString(s)?this.FILTER_DEFS[s.toUpperCase()]||null:s),r&&(e=e.replace(new RegExp(r.searchExp,"g"),r.replaceStr))),e},_url:function(e,t,n){return this._filter((n||this.base||"")+e,t)},resolve:function(e,t){var r,s,o,f,c,h,p,d,v,m,g,y,w,E,S=[],x,T,N={},C=this,k,A,O=C.ignoreRegistered?{}:C.inserted,M={js:[],jsMods:[],css:[],cssMods:[]},_=C.loadType||"js",D;(C.skin.overrides||C.skin.defaultSkin!==l||C.ignoreRegistered)&&C._resetModules(),e&&C.calculate(),t=t||C.sorted,D=function(e){if(e){c=e.group&&C.groups[e.group]||n,c.async===!1&&(e.async=c.async),f=e.fullpath?C._filter(e.fullpath,t[s]):C._url(e.path,t[s],c.base||e.base);if(e.attributes||e.async===!1)f={url:f,async:e.async},e.attributes&&(f.attributes=e.attributes);M[e.type].push(f),M[e.type+"Mods"].push(e)}},r=t.length,y=C.comboBase,f=y,m={};for(s=0;sA){S=[];for(t=0;tA&&(o=S.pop(),x=w+S.join(k),M[_].push(C._filter(x,null,N[w].group)),S=[],o&&S.push(o));S.length&&(x=w+S.join(k),M[_].push(C._filter(x,null,N[w].group)))}else M[_].push(C._filter(x,null,N[w].group));M[_+"Mods"]=M[_+"Mods"].concat(g)}}return N=null,M},load:function(e){if(!e)return;var t=this,n=t.resolve(!0);t.data=n,t.onEnd=function(){e.apply(t.context||t,arguments)},t.insert()}}},"3.7.3",{requires:["get","features"]}),YUI.add("loader-rollup",function(e,t){e.Loader.prototype._rollup=function(){var e,t,n,r,i=this.required,s,o=this.moduleInfo,u,a,f;if(this.dirty||!this.rollups){this.rollups={};for(e in o)o.hasOwnProperty(e)&&(n=this.getModule(e),n&&n.rollup&&(this.rollups[e]=n))}for(;;){u=!1;for(e in this.rollups)if(this.rollups.hasOwnProperty(e)&&!i[e]&&(!this.loaded[e]||this.forceMap[e])){n=this.getModule(e),r=n.supersedes||[],s=!1;if(!n.rollup)continue;a=0;for(t=0;t=n.rollup;if(s)break}}s&&(i[e]=!0,u=!0,this.getRequires(n))}if(!u)break}}},"3.7.3",{requires:["loader-base"]}),YUI.add("loader-yui3",function(e,t){YUI.Env[e.version].modules=YUI.Env[e.version].modules||{"align-plugin":{requires:["node-screen","node-pluginhost"]},anim:{use:["anim-base","anim-color","anim-curve","anim-easing","anim-node-plugin","anim-scroll","anim-xy"]},"anim-base":{requires:["base-base","node-style"]},"anim-color":{requires:["anim-base"]},"anim-curve":{requires:["anim-xy"]},"anim-easing":{requires:["anim-base"]},"anim-node-plugin":{requires:["node-pluginhost","anim-base"]},"anim-scroll":{requires:["anim-base"]},"anim-shape":{requires:["anim-base","anim-easing","anim-color","matrix"]},"anim-shape-transform":{use:["anim-shape"]},"anim-xy":{requires:["anim-base","node-screen"]},app:{use:["app-base","app-content","app-transitions","lazy-model-list","model","model-list","model-sync-rest","router","view","view-node-map"]},"app-base":{requires:["classnamemanager","pjax-base","router","view"]},"app-content":{requires:["app-base","pjax-content"]},"app-transitions":{requires:["app-base"]},"app-transitions-css":{type:"css"},"app-transitions-native":{condition:{name:"app-transitions-native",test:function(e){var t=e.config.doc,n=t?t.documentElement:null;return n&&n.style?"MozTransition"in n.style||"WebkitTransition"in n.style||"transition"in n.style:!1},trigger:"app-transitions"},requires:["app-transitions","app-transitions-css","parallel","transition"]},"array-extras":{requires:["yui-base"]},"array-invoke":{requires:["yui-base"]},arraylist:{requires:["yui-base"]},"arraylist-add":{requires:["arraylist"]},"arraylist-filter":{requires:["arraylist"]},arraysort:{requires:["yui-base"]},"async-queue":{requires:["event-custom"]},attribute:{use:["attribute-base","attribute-complex"]},"attribute-base":{requires:["attribute-core","attribute-events","attribute-extras"]},"attribute-complex":{requires:["attribute-base"]},"attribute-core":{requires:["oop"]},"attribute-events":{requires:["event-custom"]},"attribute-extras":{requires:["oop"]},autocomplete:{use:["autocomplete-base","autocomplete-sources","autocomplete-list","autocomplete-plugin"]},"autocomplete-base":{optional:["autocomplete-sources"],requires:["array-extras","base-build","escape","event-valuechange","node-base"]},"autocomplete-filters":{requires:["array-extras","text-wordbreak"]},"autocomplete-filters-accentfold":{requires:["array-extras","text-accentfold","text-wordbreak"]},"autocomplete-highlighters":{requires:["array-extras","highlight-base"]},"autocomplete-highlighters-accentfold":{requires:["array-extras","highlight-accentfold"]},"autocomplete-list":{after:["autocomplete-sources"],lang:["en"],requires:["autocomplete-base","event-resize","node-screen","selector-css3","shim-plugin","widget","widget-position","widget-position-align"],skinnable:!0},"autocomplete-list-keys":{condition:{name:"autocomplete-list-keys",test:function(e){return!e.UA.ios&&!e.UA.android},trigger:"autocomplete-list"},requires:["autocomplete-list","base-build"]},"autocomplete-plugin":{requires:["autocomplete-list","node-pluginhost"]},"autocomplete-sources":{optional:["io-base","json-parse","jsonp","yql"],requires:["autocomplete-base"]},base:{use:["base-base","base-pluginhost","base-build"]},"base-base":{after:["attribute-complex"],requires:["base-core","attribute-base"]},"base-build":{requires:["base-base"]},"base-core":{requires:["attribute-core"]},"base-pluginhost":{requires:["base-base","pluginhost"]},button:{requires:["button-core","cssbutton","widget"]},"button-core":{requires:["attribute-core","classnamemanager","node-base"]},"button-group":{requires:["button-plugin","cssbutton","widget"]},"button-plugin":{requires:["button-core","cssbutton","node-pluginhost"]},cache:{use:["cache-base","cache-offline","cache-plugin"]},"cache-base":{requires:["base"]},"cache-offline":{requires:["cache-base","json"]},"cache-plugin":{requires:["plugin","cache-base"]},calendar:{lang:["de","en","fr","ja","nb-NO","pt-BR","ru","zh-HANT-TW"],requires:["calendar-base","calendarnavigator"],skinnable:!0},"calendar-base":{lang:["de","en","fr","ja","nb-NO","pt-BR","ru","zh-HANT-TW"],requires:["widget","substitute","datatype-date","datatype-date-math","cssgrids"],skinnable:!0},calendarnavigator:{requires:["plugin","classnamemanager","datatype-date","node","substitute"],skinnable:!0},charts:{requires:["charts-base"]},"charts-base":{requires:["dom","datatype-number","datatype-date","event-custom","event-mouseenter","event-touch","widget","widget-position","widget-stack","graphics"]},"charts-legend":{requires:["charts-base"]},classnamemanager:{requires:["yui-base"]},"clickable-rail":{requires:["slider-base"]},collection:{use:["array-extras","arraylist","arraylist-add","arraylist-filter","array-invoke"]},console:{lang:["en","es","ja"],requires:["yui-log","widget"],skinnable:!0},"console-filters":{requires:["plugin","console"],skinnable:!0},controller:{use:["router"]},cookie:{requires:["yui-base"]},"createlink-base":{requires:["editor-base"]},cssbase:{after:["cssreset","cssfonts","cssgrids","cssreset-context","cssfonts-context","cssgrids-context"],type:"css"},"cssbase-context":{after:["cssreset","cssfonts","cssgrids","cssreset-context","cssfonts-context","cssgrids-context"],type:"css"},cssbutton:{type:"css"},cssfonts:{type:"css"},"cssfonts-context":{type:"css"},cssgrids:{optional:["cssreset","cssfonts"],type:"css"},"cssgrids-base":{optional:["cssreset","cssfonts"],type:"css"},"cssgrids-units":{optional:["cssreset","cssfonts"],requires:["cssgrids-base"],type:"css"},cssreset:{type:"css"},"cssreset-context":{type:"css"},dataschema:{use:["dataschema-base","dataschema-json","dataschema-xml","dataschema-array","dataschema-text"]},"dataschema-array":{requires:["dataschema-base"]},"dataschema-base":{requires:["base"]},"dataschema-json":{requires:["dataschema-base","json"]},"dataschema-text":{requires:["dataschema-base"]},"dataschema-xml":{requires:["dataschema-base"]},datasource:{use:["datasource-local","datasource-io","datasource-get","datasource-function","datasource-cache","datasource-jsonschema","datasource-xmlschema","datasource-arrayschema","datasource-textschema","datasource-polling"]},"datasource-arrayschema":{requires:["datasource-local","plugin","dataschema-array"]},"datasource-cache":{requires:["datasource-local","plugin","cache-base"]},"datasource-function":{requires:["datasource-local"]},"datasource-get":{requires:["datasource-local","get"]},"datasource-io":{requires:["datasource-local","io-base"]},"datasource-jsonschema":{requires:["datasource-local","plugin","dataschema-json"]},"datasource-local":{requires:["base"]},"datasource-polling":{requires:["datasource-local"]},"datasource-textschema":{requires:["datasource-local","plugin","dataschema-text"]},"datasource-xmlschema":{requires:["datasource-local","plugin","datatype-xml","dataschema-xml"]},datatable:{use:["datatable-core","datatable-table","datatable-head","datatable-body","datatable-base","datatable-column-widths","datatable-message","datatable-mutable","datatable-sort","datatable-datasource"]},"datatable-base":{requires:["datatable-core","datatable-table","datatable-head","datatable-body","base-build","widget"],skinnable:!0},"datatable-base-deprecated":{requires:["recordset-base","widget","substitute","event-mouseenter"],skinnable:!0},"datatable-body":{requires:["datatable-core","view","classnamemanager"]},"datatable-column-widths":{requires:["datatable-base"]},"datatable-core":{requires:["escape","model-list","node-event-delegate"]},"datatable-datasource":{requires:["datatable-base","plugin","datasource-local"]},"datatable-datasource-deprecated":{requires:["datatable-base-deprecated","plugin","datasource-local"]},"datatable-deprecated":{use:["datatable-base-deprecated","datatable-datasource-deprecated","datatable-sort-deprecated","datatable-scroll-deprecated"]},"datatable-head":{requires:["datatable-core","view","classnamemanager"]},"datatable-message":{lang:["en"],requires:["datatable-base"],skinnable:!0},"datatable-mutable":{requires:["datatable-base"]},"datatable-scroll":{requires:["datatable-base","datatable-column-widths","dom-screen"],skinnable:!0},"datatable-scroll-deprecated":{requires:["datatable-base-deprecated","plugin"]},"datatable-sort":{lang:["en"],requires:["datatable-base"],skinnable:!0},"datatable-sort-deprecated":{lang:["en"],requires:["datatable-base-deprecated","plugin","recordset-sort"]},"datatable-table":{requires:["datatable-core","datatable-head","datatable-body","view","classnamemanager"]},datatype:{use:["datatype-date","datatype-number","datatype-xml"]},"datatype-date":{use:["datatype-date-parse","datatype-date-format","datatype-date-math"]},"datatype-date-format":{lang:["ar","ar-JO","ca","ca-ES","da","da-DK","de","de-AT","de-DE","el","el-GR","en","en-AU","en-CA","en-GB","en-IE","en-IN","en-JO","en-MY","en-NZ","en-PH","en-SG","en-US","es","es-AR","es-BO","es-CL","es-CO","es-EC","es-ES","es-MX","es-PE","es-PY","es-US","es-UY","es-VE","fi","fi-FI","fr","fr-BE","fr-CA","fr-FR","hi","hi-IN","id","id-ID","it","it-IT","ja","ja-JP","ko","ko-KR","ms","ms-MY","nb","nb-NO","nl","nl-BE","nl-NL","pl","pl-PL","pt","pt-BR","ro","ro-RO","ru","ru-RU","sv","sv-SE","th","th-TH","tr","tr-TR","vi","vi-VN","zh-Hans","zh-Hans-CN","zh-Hant","zh-Hant-HK","zh-Hant-TW"]},"datatype-date-math":{requires:["yui-base"]},"datatype-date-parse":{},"datatype-number":{use:["datatype-number-parse","datatype-number-format"]},"datatype-number-format":{},"datatype-number-parse":{},"datatype-xml":{use:["datatype-xml-parse","datatype-xml-format"]},"datatype-xml-format":{},"datatype-xml-parse":{},dd:{use:["dd-ddm-base","dd-ddm","dd-ddm-drop","dd-drag","dd-proxy","dd-constrain","dd-drop","dd-scroll","dd-delegate"]},"dd-constrain":{requires:["dd-drag"]},"dd-ddm":{requires:["dd-ddm-base","event-resize"]},"dd-ddm-base":{requires:["node","base","yui-throttle","classnamemanager"]},"dd-ddm-drop":{requires:["dd-ddm"]},"dd-delegate":{requires:["dd-drag","dd-drop-plugin","event-mouseenter"]},"dd-drag":{requires:["dd-ddm-base"]},"dd-drop":{requires:["dd-drag","dd-ddm-drop"]},"dd-drop-plugin":{requires:["dd-drop"]},"dd-gestures":{condition:{name:"dd-gestures",trigger:"dd-drag",ua:"touchEnabled"},requires:["dd-drag","event-synthetic","event-gestures"]},"dd-plugin":{optional:["dd-constrain","dd-proxy"],requires:["dd-drag"]},"dd-proxy":{requires:["dd-drag"]},"dd-scroll":{requires:["dd-drag"]},dial:{lang:["en","es"],requires:["widget","dd-drag","event-mouseenter","event-move","event-key","transition","intl"],skinnable:!0},dom:{use:["dom-base","dom-screen","dom-style","selector-native","selector"]},"dom-base":{requires:["dom-core"]},"dom-core":{requires:["oop","features"]},"dom-deprecated":{requires:["dom-base"]},"dom-screen":{requires:["dom-base","dom-style"]},"dom-style":{requires:["dom-base"]},"dom-style-ie":{condition:{name:"dom-style-ie",test:function(e){var t=e.Features.test,n=e.Features.add,r=e.config.win,i=e.config.doc,s="documentElement",o=!1;return n("style","computedStyle",{test:function(){return r&&"getComputedStyle"in r}}),n("style","opacity",{test:function(){return i&&"opacity"in i[s].style}}),o=!t("style","opacity")&&!t("style","computedStyle"),o},trigger:"dom-style"},requires:["dom-style"]},dump:{requires:["yui-base"]},editor:{use:["frame","editor-selection","exec-command","editor-base","editor-para","editor-br","editor-bidi","editor-tab","createlink-base"]},"editor-base":{requires:["base","frame","node","exec-command","editor-selection"]},"editor-bidi":{requires:["editor-base"]},"editor-br":{requires:["editor-base"]},"editor-lists":{requires:["editor-base"]},"editor-para":{requires:["editor-para-base"]},"editor-para-base":{requires:["editor-base"]},"editor-para-ie":{condition:{name:"editor-para-ie",trigger:"editor-para",ua:"ie",when:"instead"},requires:["editor-para-base"]},"editor-selection":{requires:["node"]},"editor-tab":{requires:["editor-base"]},escape:{requires:["yui-base"]},event:{after:["node-base"],use:["event-base","event-delegate","event-synthetic","event-mousewheel","event-mouseenter","event-key","event-focus","event-resize","event-hover","event-outside","event-touch","event-move","event-flick","event-valuechange","event-tap"]},"event-base":{after:["node-base"],requires:["event-custom-base"]},"event-base-ie":{after:["event-base"],condition:{name:"event-base-ie",test:function(e){var t=e.config.doc&&e.config.doc.implementation;return t&&!t.hasFeature("Events","2.0")},trigger:"node-base"},requires:["node-base"]},"event-contextmenu":{requires:["event-synthetic","dom-screen"]},"event-custom":{use:["event-custom-base","event-custom-complex"]},"event-custom-base":{requires:["oop"]},"event-custom-complex":{requires:["event-custom-base"]},"event-delegate":{requires:["node-base"]},"event-flick":{requires:["node-base","event-touch","event-synthetic"]},"event-focus":{requires:["event-synthetic"]},"event-gestures":{use:["event-flick","event-move"]},"event-hover":{requires:["event-mouseenter"]},"event-key":{requires:["event-synthetic"]},"event-mouseenter":{requires:["event-synthetic"]},"event-mousewheel":{requires:["node-base"]},"event-move":{requires:["node-base","event-touch","event-synthetic"]},"event-outside":{requires:["event-synthetic"]},"event-resize":{requires:["node-base","event-synthetic"]},"event-simulate":{requires:["event-base"]},"event-synthetic":{requires:["node-base","event-custom-complex"]},"event-tap":{requires:["node-base","event-base","event-touch","event-synthetic"]},"event-touch":{requires:["node-base"]},"event-valuechange":{requires:["event-focus","event-synthetic"]},"exec-command":{requires:["frame"]},features:{requires:["yui-base"]},file:{requires:["file-flash","file-html5"]},"file-flash":{requires:["base"]},"file-html5":{requires:["base"]},frame:{requires:["base","node","selector-css3","yui-throttle"]},"gesture-simulate":{requires:["async-queue","event-simulate","node-screen"]},get:{requires:["yui-base"]},graphics:{requires:["node","event-custom","pluginhost","matrix","classnamemanager"]},"graphics-canvas":{condition:{name:"graphics-canvas",test:function(e){var t=e.config.doc,n=e.config.defaultGraphicEngine&&e.config.defaultGraphicEngine=="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return(!i||n)&&r&&r.getContext&&r.getContext("2d")},trigger:"graphics"},requires:["graphics"]},"graphics-canvas-default":{condition:{name:"graphics-canvas-default",test:function(e){var t=e.config.doc,n=e.config.defaultGraphicEngine&&e.config.defaultGraphicEngine=="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return(!i||n)&&r&&r.getContext&&r.getContext("2d")},trigger:"graphics"}},"graphics-svg":{condition:{name:"graphics-svg",test:function(e){var t=e.config.doc,n=!e.config.defaultGraphicEngine||e.config.defaultGraphicEngine!="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return i&&(n||!r)},trigger:"graphics"},requires:["graphics"]},"graphics-svg-default":{condition:{name:"graphics-svg-default",test:function(e){var t=e.config.doc,n=!e.config.defaultGraphicEngine||e.config.defaultGraphicEngine!="canvas",r=t&&t.createElement("canvas"),i=t&&t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");return i&&(n||!r)},trigger:"graphics"}},"graphics-vml":{condition:{name:"graphics-vml",test:function(e){var t=e.config.doc,n=t&&t.createElement("canvas");return t&&!t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")&&(!n||!n.getContext||!n.getContext("2d"))},trigger:"graphics"},requires:["graphics"]},"graphics-vml-default":{condition:{name:"graphics-vml-default",test:function(e){var t=e.config.doc,n=t&&t.createElement("canvas");return t&&!t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")&&(!n||!n.getContext||!n.getContext("2d"))},trigger:"graphics"}},handlebars:{use:["handlebars-compiler"]},"handlebars-base":{requires:["escape"]},"handlebars-compiler":{requires:["handlebars-base"]},highlight:{use:["highlight-base","highlight-accentfold"]},"highlight-accentfold":{requires:["highlight-base","text-accentfold"]},"highlight-base":{requires:["array-extras","classnamemanager","escape","text-wordbreak"]},history:{use:["history-base","history-hash","history-hash-ie","history-html5"]},"history-base":{requires:["event-custom-complex"]},"history-hash":{after:["history-html5"],requires:["event-synthetic","history-base","yui-later"]},"history-hash-ie":{condition:{name:"history-hash-ie",test:function(e){var t=e.config.doc&&e.config.doc.documentMode;return e.UA.ie&&(!("onhashchange"in e.config.win)||!t||t<8)},trigger:"history-hash"},requires:["history-hash","node-base"]},"history-html5":{optional:["json"],requires:["event-base","history-base","node-base"]},imageloader:{requires:["base-base","node-style","node-screen"]},intl:{requires:["intl-base","event-custom"]},"intl-base":{requires:["yui-base"]},io:{use:["io-base","io-xdr","io-form","io-upload-iframe","io-queue"]},"io-base":{requires:["event-custom-base","querystring-stringify-simple"]},"io-form":{requires:["io-base","node-base"]},"io-nodejs":{condition:{name:"io-nodejs",trigger:"io-base",ua:"nodejs"},requires:["io-base"]},"io-queue":{requires:["io-base","queue-promote"]},"io-upload-iframe":{requires:["io-base","node-base"]},"io-xdr":{requires:["io-base","datatype-xml-parse"]},json:{use:["json-parse","json-stringify"]},"json-parse":{requires:["yui-base"]},"json-stringify":{requires:["yui-base"]},jsonp:{requires:["get","oop"]},"jsonp-url":{requires:["jsonp"]},"lazy-model-list":{requires:["model-list"]},loader:{use:["loader-base","loader-rollup","loader-yui3"]},"loader-base":{requires:["get","features"]},"loader-rollup":{requires:["loader-base"]},"loader-yui3":{requires:["loader-base"]},matrix:{requires:["yui-base"]},model:{requires:["base-build","escape","json-parse"]},"model-list":{requires:["array-extras","array-invoke","arraylist","base-build","escape","json-parse","model"]},"model-sync-rest":{requires:["model","io-base","json-stringify"]},node:{use:["node-base","node-event-delegate","node-pluginhost","node-screen","node-style"]},"node-base":{requires:["event-base","node-core","dom-base"]},"node-core":{requires:["dom-core","selector"]},"node-deprecated":{requires:["node-base"]},"node-event-delegate":{requires:["node-base","event-delegate"]},"node-event-html5":{requires:["node-base"]},"node-event-simulate":{requires:["node-base","event-simulate","gesture-simulate"]},"node-flick":{requires:["classnamemanager","transition","event-flick","plugin"],skinnable:!0},"node-focusmanager":{requires:["attribute","node","plugin","node-event-simulate","event-key","event-focus"]},"node-load":{requires:["node-base","io-base"]},"node-menunav":{requires:["node","classnamemanager","plugin","node-focusmanager"],skinnable:!0},"node-pluginhost":{requires:["node-base","pluginhost"]},"node-screen":{requires:["dom-screen","node-base"]},"node-scroll-info":{requires:["base-build","dom-screen","event-resize","node-pluginhost","plugin"]},"node-style":{requires:["dom-style","node-base"]},oop:{requires:["yui-base"]},overlay:{requires:["widget","widget-stdmod","widget-position","widget-position-align","widget-stack","widget-position-constrain"],skinnable:!0},panel:{requires:["widget","widget-autohide","widget-buttons","widget-modality","widget-position","widget-position-align","widget-position-constrain","widget-stack","widget-stdmod"],skinnable:!0},parallel:{requires:["yui-base"]},pjax:{requires:["pjax-base","pjax-content"]},"pjax-base":{requires:["classnamemanager","node-event-delegate","router"]},"pjax-content":{requires:["io-base","node-base","router"]},"pjax-plugin":{requires:["node-pluginhost","pjax","plugin"]},plugin:{requires:["base-base"]},pluginhost:{use:["pluginhost-base","pluginhost-config"]},"pluginhost-base":{requires:["yui-base"]},"pluginhost-config":{requires:["pluginhost-base"]},profiler:{requires:["yui-base"]},querystring:{use:["querystring-parse","querystring-stringify"]},"querystring-parse":{requires:["yui-base","array-extras"]},"querystring-parse-simple":{requires:["yui-base"]},"querystring-stringify":{requires:["yui-base"]},"querystring-stringify-simple":{requires:["yui-base"]},"queue-promote":{requires:["yui-base"]},"range-slider":{requires:["slider-base","slider-value-range","clickable-rail"]},recordset:{use:["recordset-base","recordset-sort","recordset-filter","recordset-indexer"]},"recordset-base":{requires:["base","arraylist"]},"recordset-filter":{requires:["recordset-base","array-extras","plugin"]},"recordset-indexer":{requires:["recordset-base","plugin"]},"recordset-sort":{requires:["arraysort","recordset-base","plugin"]},resize:{use:["resize-base","resize-proxy","resize-constrain"]},"resize-base":{requires:["base","widget","event","oop","dd-drag","dd-delegate","dd-drop"],skinnable:!0},"resize-constrain":{requires:["plugin","resize-base"]},"resize-plugin":{optional:["resize-constrain"],requires:["resize-base","plugin"]},"resize-proxy":{requires:["plugin","resize-base"]},router:{optional:["querystring-parse"],requires:["array-extras","base-build","history"]},scrollview:{requires:["scrollview-base","scrollview-scrollbars"]},"scrollview-base":{requires:["widget","event-gestures","event-mousewheel","transition"],skinnable:!0},"scrollview-base-ie":{condition:{name:"scrollview-base-ie",trigger:"scrollview-base",ua:"ie"},requires:["scrollview-base"]},"scrollview-list":{requires:["plugin","classnamemanager"],skinnable:!0},"scrollview-paginator":{requires:["plugin","classnamemanager"]},"scrollview-scrollbars":{requires:["classnamemanager","transition","plugin"],skinnable:!0},selector:{requires:["selector-native"]},"selector-css2":{condition:{name:"selector-css2",test:function(e){var t=e.config.doc,n=t&&!("querySelectorAll"in t);return n},trigger:"selector"},requires:["selector-native"]},"selector-css3":{requires:["selector-native","selector-css2"]},"selector-native":{requires:["dom-base"]},"shim-plugin":{requires:["node-style","node-pluginhost"]},slider:{use:["slider-base","slider-value-range","clickable-rail","range-slider"]},"slider-base":{requires:["widget","dd-constrain","event-key"],skinnable:!0},"slider-value-range":{requires:["slider-base"]},sortable:{requires:["dd-delegate","dd-drop-plugin","dd-proxy"]},"sortable-scroll":{requires:["dd-scroll","sortable"]},stylesheet:{requires:["yui-base"]},substitute:{optional:["dump"],requires:["yui-base"]},swf:{requires:["event-custom","node","swfdetect","escape"]},swfdetect:{requires:["yui-base"]},tabview:{requires:["widget","widget-parent","widget-child","tabview-base","node-pluginhost","node-focusmanager"],skinnable:!0},"tabview-base":{requires:["node-event-delegate","classnamemanager","skin-sam-tabview"]},"tabview-plugin":{requires:["tabview-base"]},test:{requires:["event-simulate","event-custom","json-stringify"]},"test-console":{requires:["console-filters","test","array-extras"],skinnable:!0},text:{use:["text-accentfold","text-wordbreak"]},"text-accentfold":{requires:["array-extras","text-data-accentfold"]},"text-data-accentfold":{requires:["yui-base"]},"text-data-wordbreak":{requires:["yui-base"]},"text-wordbreak":{requires:["array-extras","text-data-wordbreak"]},transition:{requires:["node-style"]},"transition-timer":{condition:{name:"transition-timer",test:function(e){var t=e.config.doc,n=t?t.documentElement:null,r=!0;return n&&n.style&&(r=!("MozTransition"in n.style||"WebkitTransition"in n.style||"transition"in n.style)),r},trigger:"transition"},requires:["transition"]},uploader:{requires:["uploader-html5","uploader-flash"]},"uploader-deprecated":{requires:["event-custom","node","base","swf"]},"uploader-flash":{requires:["swf","widget","substitute","base","cssbutton","node","event-custom","file-flash","uploader-queue"]},"uploader-html5":{requires:["widget","node-event-simulate","substitute","file-html5","uploader-queue"]},"uploader-queue":{requires:["base"]},view:{requires:["base-build","node-event-delegate"]},"view-node-map":{requires:["view"]},widget:{use:["widget-base","widget-htmlparser","widget-skin","widget-uievents"]},"widget-anim":{requires:["anim-base","plugin","widget"]},"widget-autohide":{requires:["base-build","event-key","event-outside","widget"]},"widget-base":{requires:["attribute","base-base","base-pluginhost","classnamemanager","event-focus","node-base","node-style"],skinnable:!0},"widget-base-ie":{condition:{name:"widget-base-ie",trigger:"widget-base",ua:"ie"},requires:["widget-base"]},"widget-buttons":{requires:["button-plugin","cssbutton","widget-stdmod"]},"widget-child":{requires:["base-build","widget"]},"widget-htmlparser":{requires:["widget-base"]},"widget-locale":{requires:["widget-base"]},"widget-modality":{requires:["base-build","event-outside","widget"],skinnable:!0},"widget-parent":{requires:["arraylist","base-build","widget"]},"widget-position":{requires:["base-build","node-screen","widget"]},"widget-position-align":{requires:["widget-position"]},"widget-position-constrain":{requires:["widget-position"]},"widget-skin":{requires:["widget-base"]},"widget-stack":{requires:["base-build","widget"],skinnable:!0},"widget-stdmod":{requires:["base-build","widget"]},"widget-uievents":{requires:["node-event-delegate","widget-base"]},yql:{requires:["jsonp","jsonp-url"]},"yql-nodejs":{condition:{name:"yql-nodejs",trigger:"yql",ua:"nodejs",when:"after"}},"yql-winjs":{condition:{name:"yql-winjs",trigger:"yql",ua:"winjs",when:"after"}},yui:{},"yui-base":{},"yui-later":{requires:["yui-base"]},"yui-log":{requires:["yui-base"]},"yui-throttle":{requires:["yui-base"]}},YUI.Env[e.version].md5="a28e022ad022130f7a4fb4ac77a2f1df"},"3.7.3",{requires:["loader-base"]}),YUI.add("yui",function(e,t){},"3.7.3",{use:["yui-base","get","features","intl-base","yui-log","yui-later","loader-base","loader-rollup","loader-yui3"]}); diff --git a/lib/yuilib/3.7.3/build/align-plugin/align-plugin-coverage.js b/lib/yuilib/3.8.0/build/align-plugin/align-plugin-coverage.js similarity index 99% rename from lib/yuilib/3.7.3/build/align-plugin/align-plugin-coverage.js rename to lib/yuilib/3.8.0/build/align-plugin/align-plugin-coverage.js index f5e7d002bc5..42dc259f621 100644 --- a/lib/yuilib/3.7.3/build/align-plugin/align-plugin-coverage.js +++ b/lib/yuilib/3.8.0/build/align-plugin/align-plugin-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,7 +32,7 @@ _yuitest_coverage["build/align-plugin/align-plugin.js"] = { path: "build/align-plugin/align-plugin.js", code: [] }; -_yuitest_coverage["build/align-plugin/align-plugin.js"].code=["YUI.add('align-plugin', function (Y, NAME) {",""," /**"," * Provides advanced positioning support for Node via a Plugin"," * for centering and alignment. "," * @module align-plugin"," */",""," var OFFSET_WIDTH = 'offsetWidth',"," OFFSET_HEIGHT = 'offsetHeight',"," undefined = undefined;",""," /**"," * Node plugin which can be used to align a node with another node,"," * region, or the viewport."," *"," * @class Plugin.Align"," * @param {Object} User configuration object"," */"," function Align(config) {"," if (config.host) {"," this._host = config.host;"," }"," }"," "," Align.prototype = {"," /**"," * Aligns node with a point on another node or region."," * Possible alignment points are:"," *
          "," *
          tl
          "," *
          top left
          "," *
          tr
          "," *
          top right
          "," *
          bl
          "," *
          bottom left
          "," *
          br
          "," *
          bottom right
          "," *
          tc
          "," *
          top center
          "," *
          bc
          "," *
          bottom center
          "," *
          rc
          "," *
          right center
          "," *
          lc
          "," *
          left center
          "," *
          cc
          "," *
          center center
          "," *
          "," * @method to "," * @param region {String || Node || HTMLElement || Object} The node or"," * region to align with. Defaults to the viewport region."," * @param regionPoint {String} The point of the region to align with."," * @param point {String} The point of the node aligned to the region. "," * @param resize {Boolean} Whether or not the node should re-align when"," * the window is resized. Defaults to false."," */"," to: function(region, regionPoint, point, syncOnResize) {"," // cache original args for syncing"," this._syncArgs = Y.Array(arguments);",""," if (region.top === undefined) {"," region = Y.one(region).get('region');"," }",""," if (region) {"," var xy = [region.left, region.top],"," offxy = [region.width, region.height],"," points = Align.points,"," node = this._host,"," NULL = null,"," size = node.getAttrs([OFFSET_HEIGHT, OFFSET_WIDTH]),"," nodeoff = [0 - size[OFFSET_WIDTH], 0 - size[OFFSET_HEIGHT]], // reverse offsets"," regionFn0 = regionPoint ? points[regionPoint.charAt(0)]: NULL,"," regionFn1 = (regionPoint && regionPoint !== 'cc') ? points[regionPoint.charAt(1)] : NULL,"," nodeFn0 = point ? points[point.charAt(0)] : NULL,"," nodeFn1 = (point && point !== 'cc') ? points[point.charAt(1)] : NULL;",""," if (regionFn0) {"," xy = regionFn0(xy, offxy, regionPoint);"," }"," if (regionFn1) {"," xy = regionFn1(xy, offxy, regionPoint);"," }",""," if (nodeFn0) {"," xy = nodeFn0(xy, nodeoff, point);"," }"," if (nodeFn1) {"," xy = nodeFn1(xy, nodeoff, point);"," }",""," if (xy && node) {"," node.setXY(xy);"," }"," "," this._resize(syncOnResize);",""," }"," return this;"," },",""," sync: function() {"," this.to.apply(this, this._syncArgs);"," return this;"," },",""," _resize: function(add) {"," var handle = this._handle;"," if (add && !handle) {"," this._handle = Y.on('resize', this._onresize, window, this);"," } else if (!add && handle) {"," handle.detach();"," }",""," },",""," _onresize: function() {"," var self = this;"," setTimeout(function() { // for performance"," self.sync();"," });"," },"," "," /**"," * Aligns the center of a node to the center of another node or region."," * @method center "," * @param region {Node || HTMLElement || Object} optional The node or"," * region to align with. Defaults to the viewport region."," * the window is resized. If centering to viewport, this defaults"," * to true, otherwise default is false."," */"," center: function(region, resize) {"," this.to(region, 'cc', 'cc', resize); "," return this;"," },",""," /**"," * Removes the resize handler, if any. This is called automatically"," * when unplugged from the host node."," * @method destroy "," */"," destroy: function() {"," var handle = this._handle;"," if (handle) {"," handle.detach();"," }"," }"," };",""," Align.points = {"," 't': function(xy, off) {"," return xy;"," },",""," 'r': function(xy, off) {"," return [xy[0] + off[0], xy[1]];"," },",""," 'b': function(xy, off) {"," return [xy[0], xy[1] + off[1]];"," },",""," 'l': function(xy, off) {"," return xy;"," },",""," 'c': function(xy, off, point) {"," var axis = (point[0] === 't' || point[0] === 'b') ? 0 : 1,"," ret, val;",""," if (point === 'cc') {"," ret = [xy[0] + off[0] / 2, xy[1] + off[1] / 2];"," } else {"," val = xy[axis] + off[axis] / 2;"," ret = (axis) ? [xy[0], val] : [val, xy[1]];"," }",""," return ret;"," }"," };",""," Align.NAME = 'Align';"," Align.NS = 'align';",""," Align.prototype.constructor = Align;",""," Y.namespace('Plugin');"," Y.Plugin.Align = Align;","","","","}, '3.7.3', {\"requires\": [\"node-screen\", \"node-pluginhost\"]});"]; +_yuitest_coverage["build/align-plugin/align-plugin.js"].code=["YUI.add('align-plugin', function (Y, NAME) {",""," /**"," * Provides advanced positioning support for Node via a Plugin"," * for centering and alignment. "," * @module align-plugin"," */",""," var OFFSET_WIDTH = 'offsetWidth',"," OFFSET_HEIGHT = 'offsetHeight',"," undefined = undefined;",""," /**"," * Node plugin which can be used to align a node with another node,"," * region, or the viewport."," *"," * @class Plugin.Align"," * @param {Object} User configuration object"," */"," function Align(config) {"," if (config.host) {"," this._host = config.host;"," }"," }"," "," Align.prototype = {"," /**"," * Aligns node with a point on another node or region."," * Possible alignment points are:"," *
          "," *
          tl
          "," *
          top left
          "," *
          tr
          "," *
          top right
          "," *
          bl
          "," *
          bottom left
          "," *
          br
          "," *
          bottom right
          "," *
          tc
          "," *
          top center
          "," *
          bc
          "," *
          bottom center
          "," *
          rc
          "," *
          right center
          "," *
          lc
          "," *
          left center
          "," *
          cc
          "," *
          center center
          "," *
          "," * @method to "," * @param region {String || Node || HTMLElement || Object} The node or"," * region to align with. Defaults to the viewport region."," * @param regionPoint {String} The point of the region to align with."," * @param point {String} The point of the node aligned to the region. "," * @param resize {Boolean} Whether or not the node should re-align when"," * the window is resized. Defaults to false."," */"," to: function(region, regionPoint, point, syncOnResize) {"," // cache original args for syncing"," this._syncArgs = Y.Array(arguments);",""," if (region.top === undefined) {"," region = Y.one(region).get('region');"," }",""," if (region) {"," var xy = [region.left, region.top],"," offxy = [region.width, region.height],"," points = Align.points,"," node = this._host,"," NULL = null,"," size = node.getAttrs([OFFSET_HEIGHT, OFFSET_WIDTH]),"," nodeoff = [0 - size[OFFSET_WIDTH], 0 - size[OFFSET_HEIGHT]], // reverse offsets"," regionFn0 = regionPoint ? points[regionPoint.charAt(0)]: NULL,"," regionFn1 = (regionPoint && regionPoint !== 'cc') ? points[regionPoint.charAt(1)] : NULL,"," nodeFn0 = point ? points[point.charAt(0)] : NULL,"," nodeFn1 = (point && point !== 'cc') ? points[point.charAt(1)] : NULL;",""," if (regionFn0) {"," xy = regionFn0(xy, offxy, regionPoint);"," }"," if (regionFn1) {"," xy = regionFn1(xy, offxy, regionPoint);"," }",""," if (nodeFn0) {"," xy = nodeFn0(xy, nodeoff, point);"," }"," if (nodeFn1) {"," xy = nodeFn1(xy, nodeoff, point);"," }",""," if (xy && node) {"," node.setXY(xy);"," }"," "," this._resize(syncOnResize);",""," }"," return this;"," },",""," sync: function() {"," this.to.apply(this, this._syncArgs);"," return this;"," },",""," _resize: function(add) {"," var handle = this._handle;"," if (add && !handle) {"," this._handle = Y.on('resize', this._onresize, window, this);"," } else if (!add && handle) {"," handle.detach();"," }",""," },",""," _onresize: function() {"," var self = this;"," setTimeout(function() { // for performance"," self.sync();"," });"," },"," "," /**"," * Aligns the center of a node to the center of another node or region."," * @method center "," * @param region {Node || HTMLElement || Object} optional The node or"," * region to align with. Defaults to the viewport region."," * the window is resized. If centering to viewport, this defaults"," * to true, otherwise default is false."," */"," center: function(region, resize) {"," this.to(region, 'cc', 'cc', resize); "," return this;"," },",""," /**"," * Removes the resize handler, if any. This is called automatically"," * when unplugged from the host node."," * @method destroy "," */"," destroy: function() {"," var handle = this._handle;"," if (handle) {"," handle.detach();"," }"," }"," };",""," Align.points = {"," 't': function(xy, off) {"," return xy;"," },",""," 'r': function(xy, off) {"," return [xy[0] + off[0], xy[1]];"," },",""," 'b': function(xy, off) {"," return [xy[0], xy[1] + off[1]];"," },",""," 'l': function(xy, off) {"," return xy;"," },",""," 'c': function(xy, off, point) {"," var axis = (point[0] === 't' || point[0] === 'b') ? 0 : 1,"," ret, val;",""," if (point === 'cc') {"," ret = [xy[0] + off[0] / 2, xy[1] + off[1] / 2];"," } else {"," val = xy[axis] + off[axis] / 2;"," ret = (axis) ? [xy[0], val] : [val, xy[1]];"," }",""," return ret;"," }"," };",""," Align.NAME = 'Align';"," Align.NS = 'align';",""," Align.prototype.constructor = Align;",""," Y.namespace('Plugin');"," Y.Plugin.Align = Align;","","","","}, '3.8.0', {\"requires\": [\"node-screen\", \"node-pluginhost\"]});"]; _yuitest_coverage["build/align-plugin/align-plugin.js"].lines = {"1":0,"9":0,"20":0,"21":0,"22":0,"26":0,"60":0,"62":0,"63":0,"66":0,"67":0,"79":0,"80":0,"82":0,"83":0,"86":0,"87":0,"89":0,"90":0,"93":0,"94":0,"97":0,"100":0,"104":0,"105":0,"109":0,"110":0,"111":0,"112":0,"113":0,"119":0,"120":0,"121":0,"134":0,"135":0,"144":0,"145":0,"146":0,"151":0,"153":0,"157":0,"161":0,"165":0,"169":0,"172":0,"173":0,"175":0,"176":0,"179":0,"183":0,"184":0,"186":0,"188":0,"189":0}; _yuitest_coverage["build/align-plugin/align-plugin.js"].functions = {"Align:20":0,"to:58":0,"sync:103":0,"_resize:108":0,"(anonymous 2):120":0,"_onresize:118":0,"center:133":0,"destroy:143":0,"\'t\':152":0,"\'r\':156":0,"\'b\':160":0,"\'l\':164":0,"\'c\':168":0,"(anonymous 1):1":0}; _yuitest_coverage["build/align-plugin/align-plugin.js"].coveredLines = 54; @@ -297,4 +297,4 @@ Y.Plugin.Align = Align; -}, '3.7.3', {"requires": ["node-screen", "node-pluginhost"]}); +}, '3.8.0', {"requires": ["node-screen", "node-pluginhost"]}); diff --git a/lib/yuilib/3.7.3/build/align-plugin/align-plugin-debug.js b/lib/yuilib/3.8.0/build/align-plugin/align-plugin-debug.js similarity index 98% rename from lib/yuilib/3.7.3/build/align-plugin/align-plugin-debug.js rename to lib/yuilib/3.8.0/build/align-plugin/align-plugin-debug.js index 5df28b0875b..720bc048f76 100644 --- a/lib/yuilib/3.7.3/build/align-plugin/align-plugin-debug.js +++ b/lib/yuilib/3.8.0/build/align-plugin/align-plugin-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -196,4 +196,4 @@ YUI.add('align-plugin', function (Y, NAME) { -}, '3.7.3', {"requires": ["node-screen", "node-pluginhost"]}); +}, '3.8.0', {"requires": ["node-screen", "node-pluginhost"]}); diff --git a/lib/yuilib/3.7.3/build/align-plugin/align-plugin-min.js b/lib/yuilib/3.8.0/build/align-plugin/align-plugin-min.js similarity index 94% rename from lib/yuilib/3.7.3/build/align-plugin/align-plugin-min.js rename to lib/yuilib/3.8.0/build/align-plugin/align-plugin-min.js index f71a3b0e6e1..ca6416dd2aa 100644 --- a/lib/yuilib/3.7.3/build/align-plugin/align-plugin-min.js +++ b/lib/yuilib/3.8.0/build/align-plugin/align-plugin-min.js @@ -1,7 +1,7 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ -YUI.add("align-plugin",function(e,t){function s(e){e.host&&(this._host=e.host)}var n="offsetWidth",r="offsetHeight",i=i;s.prototype={to:function(t,o,u,a){this._syncArgs=e.Array(arguments),t.top===i&&(t=e.one(t).get("region"));if(t){var f=[t.left,t.top],l=[t.width,t.height],c=s.points,h=this._host,p=null,d=h.getAttrs([r,n]),v=[0-d[n],0-d[r]],m=o?c[o.charAt(0)]:p,g=o&&o!=="cc"?c[o.charAt(1)]:p,y=u?c[u.charAt(0)]:p,b=u&&u!=="cc"?c[u.charAt(1)]:p;m&&(f=m(f,l,o)),g&&(f=g(f,l,o)),y&&(f=y(f,v,u)),b&&(f=b(f,v,u)),f&&h&&h.setXY(f),this._resize(a)}return this},sync:function(){return this.to.apply(this,this._syncArgs),this},_resize:function(t){var n=this._handle;t&&!n?this._handle=e.on("resize",this._onresize,window,this):!t&&n&&n.detach()},_onresize:function(){var e=this;setTimeout(function(){e.sync()})},center:function(e,t){return this.to(e,"cc","cc",t),this},destroy:function(){var e=this._handle;e&&e.detach()}},s.points={t:function(e,t){return e},r:function(e,t){return[e[0]+t[0],e[1]]},b:function(e,t){return[e[0],e[1]+t[1]]},l:function(e,t){return e},c:function(e,t,n){var r=n[0]==="t"||n[0]==="b"?0:1,i,s;return n==="cc"?i=[e[0]+t[0]/2,e[1]+t[1]/2]:(s=e[r]+t[r]/2,i=r?[e[0],s]:[s,e[1]]),i}},s.NAME="Align",s.NS="align",s.prototype.constructor=s,e.namespace("Plugin"),e.Plugin.Align=s},"3.7.3",{requires:["node-screen","node-pluginhost"]}); +YUI.add("align-plugin",function(e,t){function s(e){e.host&&(this._host=e.host)}var n="offsetWidth",r="offsetHeight",i=i;s.prototype={to:function(t,o,u,a){this._syncArgs=e.Array(arguments),t.top===i&&(t=e.one(t).get("region"));if(t){var f=[t.left,t.top],l=[t.width,t.height],c=s.points,h=this._host,p=null,d=h.getAttrs([r,n]),v=[0-d[n],0-d[r]],m=o?c[o.charAt(0)]:p,g=o&&o!=="cc"?c[o.charAt(1)]:p,y=u?c[u.charAt(0)]:p,b=u&&u!=="cc"?c[u.charAt(1)]:p;m&&(f=m(f,l,o)),g&&(f=g(f,l,o)),y&&(f=y(f,v,u)),b&&(f=b(f,v,u)),f&&h&&h.setXY(f),this._resize(a)}return this},sync:function(){return this.to.apply(this,this._syncArgs),this},_resize:function(t){var n=this._handle;t&&!n?this._handle=e.on("resize",this._onresize,window,this):!t&&n&&n.detach()},_onresize:function(){var e=this;setTimeout(function(){e.sync()})},center:function(e,t){return this.to(e,"cc","cc",t),this},destroy:function(){var e=this._handle;e&&e.detach()}},s.points={t:function(e,t){return e},r:function(e,t){return[e[0]+t[0],e[1]]},b:function(e,t){return[e[0],e[1]+t[1]]},l:function(e,t){return e},c:function(e,t,n){var r=n[0]==="t"||n[0]==="b"?0:1,i,s;return n==="cc"?i=[e[0]+t[0]/2,e[1]+t[1]/2]:(s=e[r]+t[r]/2,i=r?[e[0],s]:[s,e[1]]),i}},s.NAME="Align",s.NS="align",s.prototype.constructor=s,e.namespace("Plugin"),e.Plugin.Align=s},"3.8.0",{requires:["node-screen","node-pluginhost"]}); diff --git a/lib/yuilib/3.7.3/build/align-plugin/align-plugin.js b/lib/yuilib/3.8.0/build/align-plugin/align-plugin.js similarity index 98% rename from lib/yuilib/3.7.3/build/align-plugin/align-plugin.js rename to lib/yuilib/3.8.0/build/align-plugin/align-plugin.js index 5df28b0875b..720bc048f76 100644 --- a/lib/yuilib/3.7.3/build/align-plugin/align-plugin.js +++ b/lib/yuilib/3.8.0/build/align-plugin/align-plugin.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -196,4 +196,4 @@ YUI.add('align-plugin', function (Y, NAME) { -}, '3.7.3', {"requires": ["node-screen", "node-pluginhost"]}); +}, '3.8.0', {"requires": ["node-screen", "node-pluginhost"]}); diff --git a/lib/yuilib/3.7.3/build/anim-base/anim-base-coverage.js b/lib/yuilib/3.8.0/build/anim-base/anim-base-coverage.js similarity index 60% rename from lib/yuilib/3.7.3/build/anim-base/anim-base-coverage.js rename to lib/yuilib/3.8.0/build/anim-base/anim-base-coverage.js index c05a40879df..c0a202fc7a7 100644 --- a/lib/yuilib/3.7.3/build/anim-base/anim-base-coverage.js +++ b/lib/yuilib/3.8.0/build/anim-base/anim-base-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,10 +32,10 @@ _yuitest_coverage["build/anim-base/anim-base.js"] = { path: "build/anim-base/anim-base.js", code: [] }; -_yuitest_coverage["build/anim-base/anim-base.js"].code=["YUI.add('anim-base', function (Y, NAME) {","","/**","* The Animation Utility provides an API for creating advanced transitions.","* @module anim","*/","","/**","* Provides the base Anim class, for animating numeric properties.","*","* @module anim","* @submodule anim-base","*/",""," /**"," * A class for constructing animation instances."," * @class Anim"," * @for Anim"," * @constructor"," * @extends Base"," */",""," var RUNNING = 'running',"," START_TIME = 'startTime',"," ELAPSED_TIME = 'elapsedTime',"," /**"," * @for Anim"," * @event start"," * @description fires when an animation begins."," * @param {Event} ev The start event."," * @type Event.Custom"," */"," START = 'start',",""," /**"," * @event tween"," * @description fires every frame of the animation."," * @param {Event} ev The tween event."," * @type Event.Custom"," */"," TWEEN = 'tween',",""," /**"," * @event end"," * @description fires after the animation completes."," * @param {Event} ev The end event."," * @type Event.Custom"," */"," END = 'end',"," NODE = 'node',"," PAUSED = 'paused',"," REVERSE = 'reverse', // TODO: cleanup"," ITERATION_COUNT = 'iterationCount',",""," NUM = Number;",""," var _running = {},"," _timer;",""," Y.Anim = function() {"," Y.Anim.superclass.constructor.apply(this, arguments);"," Y.Anim._instances[Y.stamp(this)] = this;"," };",""," Y.Anim.NAME = 'anim';",""," Y.Anim._instances = {};",""," /**"," * Regex of properties that should use the default unit."," *"," * @property RE_DEFAULT_UNIT"," * @static"," */"," Y.Anim.RE_DEFAULT_UNIT = /^width|height|top|right|bottom|left|margin.*|padding.*|border.*$/i;",""," /**"," * The default unit to use with properties that pass the RE_DEFAULT_UNIT test."," *"," * @property DEFAULT_UNIT"," * @static"," */"," Y.Anim.DEFAULT_UNIT = 'px';",""," Y.Anim.DEFAULT_EASING = function (t, b, c, d) {"," return c * t / d + b; // linear easing"," };",""," /**"," * Time in milliseconds passed to setInterval for frame processing "," *"," * @property intervalTime"," * @default 20"," * @static"," */"," Y.Anim._intervalTime = 20;",""," /**"," * Bucket for custom getters and setters"," *"," * @property behaviors"," * @static"," */"," Y.Anim.behaviors = {"," left: {"," get: function(anim, attr) {"," return anim._getOffset(attr);"," }"," }"," };",""," Y.Anim.behaviors.top = Y.Anim.behaviors.left;",""," /**"," * The default setter to use when setting object properties."," *"," * @property DEFAULT_SETTER"," * @static"," */"," Y.Anim.DEFAULT_SETTER = function(anim, att, from, to, elapsed, duration, fn, unit) {"," var node = anim._node,"," domNode = node._node,"," val = fn(elapsed, NUM(from), NUM(to) - NUM(from), duration);",""," if (domNode) {"," if ('style' in domNode && (att in domNode.style || att in Y.DOM.CUSTOM_STYLES)) {"," unit = unit || '';"," node.setStyle(att, val + unit);"," } else if ('attributes' in domNode && att in domNode.attributes) {"," node.setAttribute(att, val);"," } else if (att in domNode) {"," domNode[att] = val;"," }"," } else if (node.set) {"," node.set(att, val);"," } else if (att in node) {"," node[att] = val;"," }"," };",""," /**"," * The default getter to use when getting object properties."," *"," * @property DEFAULT_GETTER"," * @static"," */"," Y.Anim.DEFAULT_GETTER = function(anim, att) {"," var node = anim._node,"," domNode = node._node,"," val = '';",""," if (domNode) {"," if ('style' in domNode && (att in domNode.style || att in Y.DOM.CUSTOM_STYLES)) {"," val = node.getComputedStyle(att);"," } else if ('attributes' in domNode && att in domNode.attributes) {"," val = node.getAttribute(att);"," } else if (att in domNode) {"," val = domNode[att];"," }"," } else if (node.get) {"," val = node.get(att);"," } else if (att in node) {"," val = node[att];"," }",""," return val;"," };",""," Y.Anim.ATTRS = {"," /**"," * The object to be animated."," * @attribute node"," * @type Node"," */"," node: {"," setter: function(node) {"," if (node) {"," if (typeof node == 'string' || node.nodeType) {"," node = Y.one(node);"," }"," }",""," this._node = node;"," if (!node) {"," }"," return node;"," }"," },",""," /**"," * The length of the animation. Defaults to \"1\" (second)."," * @attribute duration"," * @type NUM"," */"," duration: {"," value: 1"," },",""," /**"," * The method that will provide values to the attribute(s) during the animation. "," * Defaults to \"Easing.easeNone\"."," * @attribute easing"," * @type Function"," */"," easing: {"," value: Y.Anim.DEFAULT_EASING,",""," setter: function(val) {"," if (typeof val === 'string' && Y.Easing) {"," return Y.Easing[val];"," }"," }"," },",""," /**"," * The starting values for the animated properties."," *"," * Fields may be strings, numbers, or functions."," * If a function is used, the return value becomes the from value."," * If no from value is specified, the DEFAULT_GETTER will be used."," * Supports any unit, provided it matches the \"to\" (or default)"," * unit (e.g. `{width: '10em', color: 'rgb(0, 0, 0)', borderColor: '#ccc'}`)."," *"," * If using the default ('px' for length-based units), the unit may be omitted"," * (e.g. `{width: 100}, borderColor: 'ccc'}`, which defaults to pixels"," * and hex, respectively)."," *"," * @attribute from"," * @type Object"," */"," from: {},",""," /**"," * The ending values for the animated properties."," *"," * Fields may be strings, numbers, or functions."," * Supports any unit, provided it matches the \"from\" (or default)"," * unit (e.g. `{width: '50%', color: 'red', borderColor: '#ccc'}`)."," *"," * If using the default ('px' for length-based units), the unit may be omitted"," * (e.g. `{width: 100, borderColor: 'ccc'}`, which defaults to pixels"," * and hex, respectively)."," *"," * @attribute to"," * @type Object"," */"," to: {},",""," /**"," * Date stamp for the first frame of the animation."," * @attribute startTime"," * @type Int"," * @default 0 "," * @readOnly"," */"," startTime: {"," value: 0,"," readOnly: true"," },",""," /**"," * Current time the animation has been running."," * @attribute elapsedTime"," * @type Int"," * @default 0 "," * @readOnly"," */"," elapsedTime: {"," value: 0,"," readOnly: true"," },",""," /**"," * Whether or not the animation is currently running."," * @attribute running "," * @type Boolean"," * @default false "," * @readOnly"," */"," running: {"," getter: function() {"," return !!_running[Y.stamp(this)];"," },"," value: false,"," readOnly: true"," },",""," /**"," * The number of times the animation should run "," * @attribute iterations"," * @type Int"," * @default 1 "," */"," iterations: {"," value: 1"," },",""," /**"," * The number of iterations that have occurred."," * Resets when an animation ends (reaches iteration count or stop() called). "," * @attribute iterationCount"," * @type Int"," * @default 0"," * @readOnly"," */"," iterationCount: {"," value: 0,"," readOnly: true"," },",""," /**"," * How iterations of the animation should behave. "," * Possible values are \"normal\" and \"alternate\"."," * Normal will repeat the animation, alternate will reverse on every other pass."," *"," * @attribute direction"," * @type String"," * @default \"normal\""," */"," direction: {"," value: 'normal' // | alternate (fwd on odd, rev on even per spec)"," },",""," /**"," * Whether or not the animation is currently paused."," * @attribute paused "," * @type Boolean"," * @default false "," * @readOnly"," */"," paused: {"," readOnly: true,"," value: false"," },",""," /**"," * If true, animation begins from last frame"," * @attribute reverse"," * @type Boolean"," * @default false "," */"," reverse: {"," value: false"," }","",""," };",""," /**"," * Runs all animation instances."," * @method run"," * @static"," */ "," Y.Anim.run = function() {"," var instances = Y.Anim._instances;"," for (var i in instances) {"," if (instances[i].run) {"," instances[i].run();"," }"," }"," };",""," /**"," * Pauses all animation instances."," * @method pause"," * @static"," */ "," Y.Anim.pause = function() {"," for (var i in _running) { // stop timer if nothing running"," if (_running[i].pause) {"," _running[i].pause();"," }"," }",""," Y.Anim._stopTimer();"," };",""," /**"," * Stops all animation instances."," * @method stop"," * @static"," */ "," Y.Anim.stop = function() {"," for (var i in _running) { // stop timer if nothing running"," if (_running[i].stop) {"," _running[i].stop();"," }"," }"," Y.Anim._stopTimer();"," };"," "," Y.Anim._startTimer = function() {"," if (!_timer) {"," _timer = setInterval(Y.Anim._runFrame, Y.Anim._intervalTime);"," }"," };",""," Y.Anim._stopTimer = function() {"," clearInterval(_timer);"," _timer = 0;"," };",""," /**"," * Called per Interval to handle each animation frame."," * @method _runFrame"," * @private"," * @static"," */ "," Y.Anim._runFrame = function() {"," var done = true;"," for (var anim in _running) {"," if (_running[anim]._runFrame) {"," done = false;"," _running[anim]._runFrame();"," }"," }",""," if (done) {"," Y.Anim._stopTimer();"," }"," };",""," Y.Anim.RE_UNITS = /^(-?\\d*\\.?\\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/;",""," var proto = {"," /**"," * Starts or resumes an animation."," * @method run"," * @chainable"," */ "," run: function() {"," if (this.get(PAUSED)) {"," this._resume();"," } else if (!this.get(RUNNING)) {"," this._start();"," }"," return this;"," },",""," /**"," * Pauses the animation and"," * freezes it in its current state and time."," * Calling run() will continue where it left off."," * @method pause"," * @chainable"," */ "," pause: function() {"," if (this.get(RUNNING)) {"," this._pause();"," }"," return this;"," },",""," /**"," * Stops the animation and resets its time."," * @method stop"," * @param {Boolean} finish If true, the animation will move to the last frame"," * @chainable"," */ "," stop: function(finish) {"," if (this.get(RUNNING) || this.get(PAUSED)) {"," this._end(finish);"," }"," return this;"," },",""," _added: false,",""," _start: function() {"," this._set(START_TIME, new Date() - this.get(ELAPSED_TIME));"," this._actualFrames = 0;"," if (!this.get(PAUSED)) {"," this._initAnimAttr();"," }"," _running[Y.stamp(this)] = this;"," Y.Anim._startTimer();",""," this.fire(START);"," },",""," _pause: function() {"," this._set(START_TIME, null);"," this._set(PAUSED, true);"," delete _running[Y.stamp(this)];",""," /**"," * @event pause"," * @description fires when an animation is paused."," * @param {Event} ev The pause event."," * @type Event.Custom"," */"," this.fire('pause');"," },",""," _resume: function() {"," this._set(PAUSED, false);"," _running[Y.stamp(this)] = this;"," this._set(START_TIME, new Date() - this.get(ELAPSED_TIME));"," Y.Anim._startTimer();",""," /**"," * @event resume"," * @description fires when an animation is resumed (run from pause)."," * @param {Event} ev The pause event."," * @type Event.Custom"," */"," this.fire('resume');"," },",""," _end: function(finish) {"," var duration = this.get('duration') * 1000;"," if (finish) { // jump to last frame"," this._runAttrs(duration, duration, this.get(REVERSE));"," }",""," this._set(START_TIME, null);"," this._set(ELAPSED_TIME, 0);"," this._set(PAUSED, false);",""," delete _running[Y.stamp(this)];"," this.fire(END, {elapsed: this.get(ELAPSED_TIME)});"," },",""," _runFrame: function() {"," var d = this._runtimeAttr.duration,"," t = new Date() - this.get(START_TIME),"," reverse = this.get(REVERSE),"," done = (t >= d),"," attribute,"," setter;"," "," this._runAttrs(t, d, reverse);"," this._actualFrames += 1;"," this._set(ELAPSED_TIME, t);",""," this.fire(TWEEN);"," if (done) {"," this._lastFrame();"," }"," },",""," _runAttrs: function(t, d, reverse) {"," var attr = this._runtimeAttr,"," customAttr = Y.Anim.behaviors,"," easing = attr.easing,"," lastFrame = d,"," done = false,"," attribute,"," setter,"," i;",""," if (t >= d) {"," done = true;"," }",""," if (reverse) {"," t = d - t;"," lastFrame = 0;"," }",""," for (i in attr) {"," if (attr[i].to) {"," attribute = attr[i];"," setter = (i in customAttr && 'set' in customAttr[i]) ?"," customAttr[i].set : Y.Anim.DEFAULT_SETTER;",""," if (!done) {"," setter(this, i, attribute.from, attribute.to, t, d, easing, attribute.unit); "," } else {"," setter(this, i, attribute.from, attribute.to, lastFrame, d, easing, attribute.unit); "," }"," }"," }","",""," },",""," _lastFrame: function() {"," var iter = this.get('iterations'),"," iterCount = this.get(ITERATION_COUNT);",""," iterCount += 1;"," if (iter === 'infinite' || iterCount < iter) {"," if (this.get('direction') === 'alternate') {"," this.set(REVERSE, !this.get(REVERSE)); // flip it"," }"," /**"," * @event iteration"," * @description fires when an animation begins an iteration."," * @param {Event} ev The iteration event."," * @type Event.Custom"," */"," this.fire('iteration');"," } else {"," iterCount = 0;"," this._end();"," }",""," this._set(START_TIME, new Date());"," this._set(ITERATION_COUNT, iterCount);"," },",""," _initAnimAttr: function() {"," var from = this.get('from') || {},"," to = this.get('to') || {},"," attr = {"," duration: this.get('duration') * 1000,"," easing: this.get('easing')"," },"," customAttr = Y.Anim.behaviors,"," node = this.get(NODE), // implicit attr init"," unit, begin, end;",""," Y.each(to, function(val, name) {"," if (typeof val === 'function') {"," val = val.call(this, node);"," }",""," begin = from[name];"," if (begin === undefined) {"," begin = (name in customAttr && 'get' in customAttr[name]) ?"," customAttr[name].get(this, name) : Y.Anim.DEFAULT_GETTER(this, name);"," } else if (typeof begin === 'function') {"," begin = begin.call(this, node);"," }",""," var mFrom = Y.Anim.RE_UNITS.exec(begin);"," var mTo = Y.Anim.RE_UNITS.exec(val);",""," begin = mFrom ? mFrom[1] : begin;"," end = mTo ? mTo[1] : val;"," unit = mTo ? mTo[2] : mFrom ? mFrom[2] : ''; // one might be zero TODO: mixed units",""," if (!unit && Y.Anim.RE_DEFAULT_UNIT.test(name)) {"," unit = Y.Anim.DEFAULT_UNIT;"," }",""," if (!begin || !end) {"," Y.error('invalid \"from\" or \"to\" for \"' + name + '\"', 'Anim');"," return;"," }",""," attr[name] = {"," from: Y.Lang.isObject(begin) ? Y.clone(begin) : begin,"," to: end,"," unit: unit"," };",""," }, this);",""," this._runtimeAttr = attr;"," },","",""," // TODO: move to computedStyle? (browsers dont agree on default computed offsets)"," _getOffset: function(attr) {"," var node = this._node,"," val = node.getComputedStyle(attr),"," get = (attr === 'left') ? 'getX': 'getY',"," set = (attr === 'left') ? 'setX': 'setY';",""," if (val === 'auto') {"," var position = node.getStyle('position');"," if (position === 'absolute' || position === 'fixed') {"," val = node[get]();"," node[set](val);"," } else {"," val = 0;"," }"," }",""," return val;"," },",""," destructor: function() {"," delete Y.Anim._instances[Y.stamp(this)];"," }"," };",""," Y.extend(Y.Anim, Y.Base, proto);","","","}, '3.7.3', {\"requires\": [\"base-base\", \"node-style\"]});"]; -_yuitest_coverage["build/anim-base/anim-base.js"].lines = {"1":0,"23":0,"57":0,"60":0,"61":0,"62":0,"65":0,"67":0,"75":0,"83":0,"85":0,"86":0,"96":0,"104":0,"107":0,"112":0,"120":0,"121":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"134":0,"135":0,"136":0,"137":0,"147":0,"148":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"160":0,"161":0,"162":0,"163":0,"166":0,"169":0,"177":0,"178":0,"179":0,"183":0,"184":0,"186":0,"209":0,"210":0,"282":0,"354":0,"355":0,"356":0,"357":0,"358":0,"368":0,"369":0,"370":0,"371":0,"375":0,"383":0,"384":0,"385":0,"386":0,"389":0,"392":0,"393":0,"394":0,"398":0,"399":0,"400":0,"409":0,"410":0,"411":0,"412":0,"413":0,"414":0,"418":0,"419":0,"423":0,"425":0,"432":0,"433":0,"434":0,"435":0,"437":0,"448":0,"449":0,"451":0,"461":0,"462":0,"464":0,"470":0,"471":0,"472":0,"473":0,"475":0,"476":0,"478":0,"482":0,"483":0,"484":0,"492":0,"496":0,"497":0,"498":0,"499":0,"507":0,"511":0,"512":0,"513":0,"516":0,"517":0,"518":0,"520":0,"521":0,"525":0,"532":0,"533":0,"534":0,"536":0,"537":0,"538":0,"543":0,"552":0,"553":0,"556":0,"557":0,"558":0,"561":0,"562":0,"563":0,"564":0,"567":0,"568":0,"570":0,"579":0,"582":0,"583":0,"584":0,"585":0,"593":0,"595":0,"596":0,"599":0,"600":0,"604":0,"614":0,"615":0,"616":0,"619":0,"620":0,"621":0,"623":0,"624":0,"627":0,"628":0,"630":0,"631":0,"632":0,"634":0,"635":0,"638":0,"639":0,"640":0,"643":0,"651":0,"657":0,"662":0,"663":0,"664":0,"665":0,"666":0,"668":0,"672":0,"676":0,"680":0}; -_yuitest_coverage["build/anim-base/anim-base.js"].functions = {"Anim:60":0,"DEFAULT_EASING:85":0,"get:106":0,"DEFAULT_SETTER:120":0,"DEFAULT_GETTER:147":0,"setter:176":0,"setter:208":0,"getter:281":0,"run:354":0,"pause:368":0,"stop:383":0,"_startTimer:392":0,"_stopTimer:398":0,"_runFrame:409":0,"run:431":0,"pause:447":0,"stop:460":0,"_start:469":0,"_pause:481":0,"_resume:495":0,"_end:510":0,"_runFrame:524":0,"_runAttrs:542":0,"_lastFrame:578":0,"(anonymous 2):614":0,"_initAnimAttr:603":0,"_getOffset:656":0,"destructor:675":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/anim-base/anim-base.js"].coveredLines = 181; +_yuitest_coverage["build/anim-base/anim-base.js"].code=["YUI.add('anim-base', function (Y, NAME) {","","/**","* The Animation Utility provides an API for creating advanced transitions.","* @module anim","*/","","/**","* Provides the base Anim class, for animating numeric properties.","*","* @module anim","* @submodule anim-base","*/",""," /**"," * A class for constructing animation instances."," * @class Anim"," * @for Anim"," * @constructor"," * @extends Base"," */",""," var RUNNING = 'running',"," START_TIME = 'startTime',"," ELAPSED_TIME = 'elapsedTime',"," /**"," * @for Anim"," * @event start"," * @description fires when an animation begins."," * @param {Event} ev The start event."," * @type Event.Custom"," */"," START = 'start',",""," /**"," * @event tween"," * @description fires every frame of the animation."," * @param {Event} ev The tween event."," * @type Event.Custom"," */"," TWEEN = 'tween',",""," /**"," * @event end"," * @description fires after the animation completes."," * @param {Event} ev The end event."," * @type Event.Custom"," */"," END = 'end',"," NODE = 'node',"," PAUSED = 'paused',"," REVERSE = 'reverse', // TODO: cleanup"," ITERATION_COUNT = 'iterationCount',",""," NUM = Number;",""," var _running = {},"," _timer;",""," Y.Anim = function() {"," Y.Anim.superclass.constructor.apply(this, arguments);"," Y.Anim._instances[Y.stamp(this)] = this;"," };",""," Y.Anim.NAME = 'anim';",""," Y.Anim._instances = {};",""," /**"," * Regex of properties that should use the default unit."," *"," * @property RE_DEFAULT_UNIT"," * @static"," */"," Y.Anim.RE_DEFAULT_UNIT = /^width|height|top|right|bottom|left|margin.*|padding.*|border.*$/i;",""," /**"," * The default unit to use with properties that pass the RE_DEFAULT_UNIT test."," *"," * @property DEFAULT_UNIT"," * @static"," */"," Y.Anim.DEFAULT_UNIT = 'px';",""," Y.Anim.DEFAULT_EASING = function (t, b, c, d) {"," return c * t / d + b; // linear easing"," };",""," /**"," * Time in milliseconds passed to setInterval for frame processing"," *"," * @property intervalTime"," * @default 20"," * @static"," */"," Y.Anim._intervalTime = 20;",""," /**"," * Bucket for custom getters and setters"," *"," * @property behaviors"," * @static"," */"," Y.Anim.behaviors = {"," left: {"," get: function(anim, attr) {"," return anim._getOffset(attr);"," }"," }"," };",""," Y.Anim.behaviors.top = Y.Anim.behaviors.left;",""," /**"," * The default setter to use when setting object properties."," *"," * @property DEFAULT_SETTER"," * @static"," */"," Y.Anim.DEFAULT_SETTER = function(anim, att, from, to, elapsed, duration, fn, unit) {"," var node = anim._node,"," domNode = node._node,"," val = fn(elapsed, NUM(from), NUM(to) - NUM(from), duration);",""," if (domNode) {"," if ('style' in domNode && (att in domNode.style || att in Y.DOM.CUSTOM_STYLES)) {"," unit = unit || '';"," node.setStyle(att, val + unit);"," } else if ('attributes' in domNode && att in domNode.attributes) {"," node.setAttribute(att, val);"," } else if (att in domNode) {"," domNode[att] = val;"," }"," } else if (node.set) {"," node.set(att, val);"," } else if (att in node) {"," node[att] = val;"," }"," };",""," /**"," * The default getter to use when getting object properties."," *"," * @property DEFAULT_GETTER"," * @static"," */"," Y.Anim.DEFAULT_GETTER = function(anim, att) {"," var node = anim._node,"," domNode = node._node,"," val = '';",""," if (domNode) {"," if ('style' in domNode && (att in domNode.style || att in Y.DOM.CUSTOM_STYLES)) {"," val = node.getComputedStyle(att);"," } else if ('attributes' in domNode && att in domNode.attributes) {"," val = node.getAttribute(att);"," } else if (att in domNode) {"," val = domNode[att];"," }"," } else if (node.get) {"," val = node.get(att);"," } else if (att in node) {"," val = node[att];"," }",""," return val;"," };",""," Y.Anim.ATTRS = {"," /**"," * The object to be animated."," * @attribute node"," * @type Node"," */"," node: {"," setter: function(node) {"," if (node) {"," if (typeof node === 'string' || node.nodeType) {"," node = Y.one(node);"," }"," }",""," this._node = node;"," if (!node) {"," }"," return node;"," }"," },",""," /**"," * The length of the animation. Defaults to \"1\" (second)."," * @attribute duration"," * @type NUM"," */"," duration: {"," value: 1"," },",""," /**"," * The method that will provide values to the attribute(s) during the animation."," * Defaults to \"Easing.easeNone\"."," * @attribute easing"," * @type Function"," */"," easing: {"," value: Y.Anim.DEFAULT_EASING,",""," setter: function(val) {"," if (typeof val === 'string' && Y.Easing) {"," return Y.Easing[val];"," }"," }"," },",""," /**"," * The starting values for the animated properties."," *"," * Fields may be strings, numbers, or functions."," * If a function is used, the return value becomes the from value."," * If no from value is specified, the DEFAULT_GETTER will be used."," * Supports any unit, provided it matches the \"to\" (or default)"," * unit (e.g. `{width: '10em', color: 'rgb(0, 0, 0)', borderColor: '#ccc'}`)."," *"," * If using the default ('px' for length-based units), the unit may be omitted"," * (e.g. `{width: 100}, borderColor: 'ccc'}`, which defaults to pixels"," * and hex, respectively)."," *"," * @attribute from"," * @type Object"," */"," from: {},",""," /**"," * The ending values for the animated properties."," *"," * Fields may be strings, numbers, or functions."," * Supports any unit, provided it matches the \"from\" (or default)"," * unit (e.g. `{width: '50%', color: 'red', borderColor: '#ccc'}`)."," *"," * If using the default ('px' for length-based units), the unit may be omitted"," * (e.g. `{width: 100, borderColor: 'ccc'}`, which defaults to pixels"," * and hex, respectively)."," *"," * @attribute to"," * @type Object"," */"," to: {},",""," /**"," * Date stamp for the first frame of the animation."," * @attribute startTime"," * @type Int"," * @default 0"," * @readOnly"," */"," startTime: {"," value: 0,"," readOnly: true"," },",""," /**"," * Current time the animation has been running."," * @attribute elapsedTime"," * @type Int"," * @default 0"," * @readOnly"," */"," elapsedTime: {"," value: 0,"," readOnly: true"," },",""," /**"," * Whether or not the animation is currently running."," * @attribute running"," * @type Boolean"," * @default false"," * @readOnly"," */"," running: {"," getter: function() {"," return !!_running[Y.stamp(this)];"," },"," value: false,"," readOnly: true"," },",""," /**"," * The number of times the animation should run"," * @attribute iterations"," * @type Int"," * @default 1"," */"," iterations: {"," value: 1"," },",""," /**"," * The number of iterations that have occurred."," * Resets when an animation ends (reaches iteration count or stop() called)."," * @attribute iterationCount"," * @type Int"," * @default 0"," * @readOnly"," */"," iterationCount: {"," value: 0,"," readOnly: true"," },",""," /**"," * How iterations of the animation should behave."," * Possible values are \"normal\" and \"alternate\"."," * Normal will repeat the animation, alternate will reverse on every other pass."," *"," * @attribute direction"," * @type String"," * @default \"normal\""," */"," direction: {"," value: 'normal' // | alternate (fwd on odd, rev on even per spec)"," },",""," /**"," * Whether or not the animation is currently paused."," * @attribute paused"," * @type Boolean"," * @default false"," * @readOnly"," */"," paused: {"," readOnly: true,"," value: false"," },",""," /**"," * If true, animation begins from last frame"," * @attribute reverse"," * @type Boolean"," * @default false"," */"," reverse: {"," value: false"," }","",""," };",""," /**"," * Runs all animation instances."," * @method run"," * @static"," */"," Y.Anim.run = function() {"," var instances = Y.Anim._instances,"," i;"," for (i in instances) {"," if (instances[i].run) {"," instances[i].run();"," }"," }"," };",""," /**"," * Pauses all animation instances."," * @method pause"," * @static"," */"," Y.Anim.pause = function() {"," for (var i in _running) { // stop timer if nothing running"," if (_running[i].pause) {"," _running[i].pause();"," }"," }",""," Y.Anim._stopTimer();"," };",""," /**"," * Stops all animation instances."," * @method stop"," * @static"," */"," Y.Anim.stop = function() {"," for (var i in _running) { // stop timer if nothing running"," if (_running[i].stop) {"," _running[i].stop();"," }"," }"," Y.Anim._stopTimer();"," };",""," Y.Anim._startTimer = function() {"," if (!_timer) {"," _timer = setInterval(Y.Anim._runFrame, Y.Anim._intervalTime);"," }"," };",""," Y.Anim._stopTimer = function() {"," clearInterval(_timer);"," _timer = 0;"," };",""," /**"," * Called per Interval to handle each animation frame."," * @method _runFrame"," * @private"," * @static"," */"," Y.Anim._runFrame = function() {"," var done = true,"," anim;"," for (anim in _running) {"," if (_running[anim]._runFrame) {"," done = false;"," _running[anim]._runFrame();"," }"," }",""," if (done) {"," Y.Anim._stopTimer();"," }"," };",""," Y.Anim.RE_UNITS = /^(-?\\d*\\.?\\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/;",""," var proto = {"," /**"," * Starts or resumes an animation."," * @method run"," * @chainable"," */"," run: function() {"," if (this.get(PAUSED)) {"," this._resume();"," } else if (!this.get(RUNNING)) {"," this._start();"," }"," return this;"," },",""," /**"," * Pauses the animation and"," * freezes it in its current state and time."," * Calling run() will continue where it left off."," * @method pause"," * @chainable"," */"," pause: function() {"," if (this.get(RUNNING)) {"," this._pause();"," }"," return this;"," },",""," /**"," * Stops the animation and resets its time."," * @method stop"," * @param {Boolean} finish If true, the animation will move to the last frame"," * @chainable"," */"," stop: function(finish) {"," if (this.get(RUNNING) || this.get(PAUSED)) {"," this._end(finish);"," }"," return this;"," },",""," _added: false,",""," _start: function() {"," this._set(START_TIME, new Date() - this.get(ELAPSED_TIME));"," this._actualFrames = 0;"," if (!this.get(PAUSED)) {"," this._initAnimAttr();"," }"," _running[Y.stamp(this)] = this;"," Y.Anim._startTimer();",""," this.fire(START);"," },",""," _pause: function() {"," this._set(START_TIME, null);"," this._set(PAUSED, true);"," delete _running[Y.stamp(this)];",""," /**"," * @event pause"," * @description fires when an animation is paused."," * @param {Event} ev The pause event."," * @type Event.Custom"," */"," this.fire('pause');"," },",""," _resume: function() {"," this._set(PAUSED, false);"," _running[Y.stamp(this)] = this;"," this._set(START_TIME, new Date() - this.get(ELAPSED_TIME));"," Y.Anim._startTimer();",""," /**"," * @event resume"," * @description fires when an animation is resumed (run from pause)."," * @param {Event} ev The pause event."," * @type Event.Custom"," */"," this.fire('resume');"," },",""," _end: function(finish) {"," var duration = this.get('duration') * 1000;"," if (finish) { // jump to last frame"," this._runAttrs(duration, duration, this.get(REVERSE));"," }",""," this._set(START_TIME, null);"," this._set(ELAPSED_TIME, 0);"," this._set(PAUSED, false);",""," delete _running[Y.stamp(this)];"," this.fire(END, {elapsed: this.get(ELAPSED_TIME)});"," },",""," _runFrame: function() {"," var d = this._runtimeAttr.duration,"," t = new Date() - this.get(START_TIME),"," reverse = this.get(REVERSE),"," done = (t >= d);",""," this._runAttrs(t, d, reverse);"," this._actualFrames += 1;"," this._set(ELAPSED_TIME, t);",""," this.fire(TWEEN);"," if (done) {"," this._lastFrame();"," }"," },",""," _runAttrs: function(t, d, reverse) {"," var attr = this._runtimeAttr,"," customAttr = Y.Anim.behaviors,"," easing = attr.easing,"," lastFrame = d,"," done = false,"," attribute,"," setter,"," i;",""," if (t >= d) {"," done = true;"," }",""," if (reverse) {"," t = d - t;"," lastFrame = 0;"," }",""," for (i in attr) {"," if (attr[i].to) {"," attribute = attr[i];"," setter = (i in customAttr && 'set' in customAttr[i]) ?"," customAttr[i].set : Y.Anim.DEFAULT_SETTER;",""," if (!done) {"," setter(this, i, attribute.from, attribute.to, t, d, easing, attribute.unit);"," } else {"," setter(this, i, attribute.from, attribute.to, lastFrame, d, easing, attribute.unit);"," }"," }"," }","",""," },",""," _lastFrame: function() {"," var iter = this.get('iterations'),"," iterCount = this.get(ITERATION_COUNT);",""," iterCount += 1;"," if (iter === 'infinite' || iterCount < iter) {"," if (this.get('direction') === 'alternate') {"," this.set(REVERSE, !this.get(REVERSE)); // flip it"," }"," /**"," * @event iteration"," * @description fires when an animation begins an iteration."," * @param {Event} ev The iteration event."," * @type Event.Custom"," */"," this.fire('iteration');"," } else {"," iterCount = 0;"," this._end();"," }",""," this._set(START_TIME, new Date());"," this._set(ITERATION_COUNT, iterCount);"," },",""," _initAnimAttr: function() {"," var from = this.get('from') || {},"," to = this.get('to') || {},"," attr = {"," duration: this.get('duration') * 1000,"," easing: this.get('easing')"," },"," customAttr = Y.Anim.behaviors,"," node = this.get(NODE), // implicit attr init"," unit, begin, end;",""," Y.each(to, function(val, name) {"," if (typeof val === 'function') {"," val = val.call(this, node);"," }",""," begin = from[name];"," if (begin === undefined) {"," begin = (name in customAttr && 'get' in customAttr[name]) ?"," customAttr[name].get(this, name) : Y.Anim.DEFAULT_GETTER(this, name);"," } else if (typeof begin === 'function') {"," begin = begin.call(this, node);"," }",""," var mFrom = Y.Anim.RE_UNITS.exec(begin),"," mTo = Y.Anim.RE_UNITS.exec(val);",""," begin = mFrom ? mFrom[1] : begin;"," end = mTo ? mTo[1] : val;"," unit = mTo ? mTo[2] : mFrom ? mFrom[2] : ''; // one might be zero TODO: mixed units",""," if (!unit && Y.Anim.RE_DEFAULT_UNIT.test(name)) {"," unit = Y.Anim.DEFAULT_UNIT;"," }",""," if (!begin || !end) {"," Y.error('invalid \"from\" or \"to\" for \"' + name + '\"', 'Anim');"," return;"," }",""," attr[name] = {"," from: Y.Lang.isObject(begin) ? Y.clone(begin) : begin,"," to: end,"," unit: unit"," };",""," }, this);",""," this._runtimeAttr = attr;"," },","",""," // TODO: move to computedStyle? (browsers dont agree on default computed offsets)"," _getOffset: function(attr) {"," var node = this._node,"," val = node.getComputedStyle(attr),"," get = (attr === 'left') ? 'getX': 'getY',"," set = (attr === 'left') ? 'setX': 'setY',"," position;",""," if (val === 'auto') {"," position = node.getStyle('position');"," if (position === 'absolute' || position === 'fixed') {"," val = node[get]();"," node[set](val);"," } else {"," val = 0;"," }"," }",""," return val;"," },",""," destructor: function() {"," delete Y.Anim._instances[Y.stamp(this)];"," }"," };",""," Y.extend(Y.Anim, Y.Base, proto);","","","}, '3.8.0', {\"requires\": [\"base-base\", \"node-style\"]});"]; +_yuitest_coverage["build/anim-base/anim-base.js"].lines = {"1":0,"23":0,"57":0,"60":0,"61":0,"62":0,"65":0,"67":0,"75":0,"83":0,"85":0,"86":0,"96":0,"104":0,"107":0,"112":0,"120":0,"121":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"134":0,"135":0,"136":0,"137":0,"147":0,"148":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"160":0,"161":0,"162":0,"163":0,"166":0,"169":0,"177":0,"178":0,"179":0,"183":0,"184":0,"186":0,"209":0,"210":0,"282":0,"354":0,"355":0,"357":0,"358":0,"359":0,"369":0,"370":0,"371":0,"372":0,"376":0,"384":0,"385":0,"386":0,"387":0,"390":0,"393":0,"394":0,"395":0,"399":0,"400":0,"401":0,"410":0,"411":0,"413":0,"414":0,"415":0,"416":0,"420":0,"421":0,"425":0,"427":0,"434":0,"435":0,"436":0,"437":0,"439":0,"450":0,"451":0,"453":0,"463":0,"464":0,"466":0,"472":0,"473":0,"474":0,"475":0,"477":0,"478":0,"480":0,"484":0,"485":0,"486":0,"494":0,"498":0,"499":0,"500":0,"501":0,"509":0,"513":0,"514":0,"515":0,"518":0,"519":0,"520":0,"522":0,"523":0,"527":0,"532":0,"533":0,"534":0,"536":0,"537":0,"538":0,"543":0,"552":0,"553":0,"556":0,"557":0,"558":0,"561":0,"562":0,"563":0,"564":0,"567":0,"568":0,"570":0,"579":0,"582":0,"583":0,"584":0,"585":0,"593":0,"595":0,"596":0,"599":0,"600":0,"604":0,"614":0,"615":0,"616":0,"619":0,"620":0,"621":0,"623":0,"624":0,"627":0,"630":0,"631":0,"632":0,"634":0,"635":0,"638":0,"639":0,"640":0,"643":0,"651":0,"657":0,"663":0,"664":0,"665":0,"666":0,"667":0,"669":0,"673":0,"677":0,"681":0}; +_yuitest_coverage["build/anim-base/anim-base.js"].functions = {"Anim:60":0,"DEFAULT_EASING:85":0,"get:106":0,"DEFAULT_SETTER:120":0,"DEFAULT_GETTER:147":0,"setter:176":0,"setter:208":0,"getter:281":0,"run:354":0,"pause:369":0,"stop:384":0,"_startTimer:393":0,"_stopTimer:399":0,"_runFrame:410":0,"run:433":0,"pause:449":0,"stop:462":0,"_start:471":0,"_pause:483":0,"_resume:497":0,"_end:512":0,"_runFrame:526":0,"_runAttrs:542":0,"_lastFrame:578":0,"(anonymous 2):614":0,"_initAnimAttr:603":0,"_getOffset:656":0,"destructor:676":0,"(anonymous 1):1":0}; +_yuitest_coverage["build/anim-base/anim-base.js"].coveredLines = 180; _yuitest_coverage["build/anim-base/anim-base.js"].coveredFunctions = 29; _yuitest_coverline("build/anim-base/anim-base.js", 1); YUI.add('anim-base', function (Y, NAME) { @@ -141,7 +141,7 @@ return c * t / d + b; // linear easing }; /** - * Time in milliseconds passed to setInterval for frame processing + * Time in milliseconds passed to setInterval for frame processing * * @property intervalTime * @default 20 @@ -268,7 +268,7 @@ Y.Anim.ATTRS = { _yuitest_coverline("build/anim-base/anim-base.js", 177); if (node) { _yuitest_coverline("build/anim-base/anim-base.js", 178); -if (typeof node == 'string' || node.nodeType) { +if (typeof node === 'string' || node.nodeType) { _yuitest_coverline("build/anim-base/anim-base.js", 179); node = Y.one(node); } @@ -294,7 +294,7 @@ return node; }, /** - * The method that will provide values to the attribute(s) during the animation. + * The method that will provide values to the attribute(s) during the animation. * Defaults to "Easing.easeNone". * @attribute easing * @type Function @@ -350,7 +350,7 @@ return Y.Easing[val]; * Date stamp for the first frame of the animation. * @attribute startTime * @type Int - * @default 0 + * @default 0 * @readOnly */ startTime: { @@ -362,7 +362,7 @@ return Y.Easing[val]; * Current time the animation has been running. * @attribute elapsedTime * @type Int - * @default 0 + * @default 0 * @readOnly */ elapsedTime: { @@ -372,9 +372,9 @@ return Y.Easing[val]; /** * Whether or not the animation is currently running. - * @attribute running + * @attribute running * @type Boolean - * @default false + * @default false * @readOnly */ running: { @@ -388,10 +388,10 @@ return !!_running[Y.stamp(this)]; }, /** - * The number of times the animation should run + * The number of times the animation should run * @attribute iterations * @type Int - * @default 1 + * @default 1 */ iterations: { value: 1 @@ -399,7 +399,7 @@ return !!_running[Y.stamp(this)]; /** * The number of iterations that have occurred. - * Resets when an animation ends (reaches iteration count or stop() called). + * Resets when an animation ends (reaches iteration count or stop() called). * @attribute iterationCount * @type Int * @default 0 @@ -411,7 +411,7 @@ return !!_running[Y.stamp(this)]; }, /** - * How iterations of the animation should behave. + * How iterations of the animation should behave. * Possible values are "normal" and "alternate". * Normal will repeat the animation, alternate will reverse on every other pass. * @@ -425,9 +425,9 @@ return !!_running[Y.stamp(this)]; /** * Whether or not the animation is currently paused. - * @attribute paused + * @attribute paused * @type Boolean - * @default false + * @default false * @readOnly */ paused: { @@ -439,7 +439,7 @@ return !!_running[Y.stamp(this)]; * If true, animation begins from last frame * @attribute reverse * @type Boolean - * @default false + * @default false */ reverse: { value: false @@ -452,17 +452,18 @@ return !!_running[Y.stamp(this)]; * Runs all animation instances. * @method run * @static - */ + */ _yuitest_coverline("build/anim-base/anim-base.js", 354); Y.Anim.run = function() { _yuitest_coverfunc("build/anim-base/anim-base.js", "run", 354); _yuitest_coverline("build/anim-base/anim-base.js", 355); -var instances = Y.Anim._instances; - _yuitest_coverline("build/anim-base/anim-base.js", 356); -for (var i in instances) { - _yuitest_coverline("build/anim-base/anim-base.js", 357); +var instances = Y.Anim._instances, + i; + _yuitest_coverline("build/anim-base/anim-base.js", 357); +for (i in instances) { + _yuitest_coverline("build/anim-base/anim-base.js", 358); if (instances[i].run) { - _yuitest_coverline("build/anim-base/anim-base.js", 358); + _yuitest_coverline("build/anim-base/anim-base.js", 359); instances[i].run(); } } @@ -472,20 +473,20 @@ instances[i].run(); * Pauses all animation instances. * @method pause * @static - */ - _yuitest_coverline("build/anim-base/anim-base.js", 368); + */ + _yuitest_coverline("build/anim-base/anim-base.js", 369); Y.Anim.pause = function() { - _yuitest_coverfunc("build/anim-base/anim-base.js", "pause", 368); -_yuitest_coverline("build/anim-base/anim-base.js", 369); + _yuitest_coverfunc("build/anim-base/anim-base.js", "pause", 369); +_yuitest_coverline("build/anim-base/anim-base.js", 370); for (var i in _running) { // stop timer if nothing running - _yuitest_coverline("build/anim-base/anim-base.js", 370); + _yuitest_coverline("build/anim-base/anim-base.js", 371); if (_running[i].pause) { - _yuitest_coverline("build/anim-base/anim-base.js", 371); + _yuitest_coverline("build/anim-base/anim-base.js", 372); _running[i].pause(); } } - _yuitest_coverline("build/anim-base/anim-base.js", 375); + _yuitest_coverline("build/anim-base/anim-base.js", 376); Y.Anim._stopTimer(); }; @@ -493,38 +494,38 @@ Y.Anim._stopTimer(); * Stops all animation instances. * @method stop * @static - */ - _yuitest_coverline("build/anim-base/anim-base.js", 383); + */ + _yuitest_coverline("build/anim-base/anim-base.js", 384); Y.Anim.stop = function() { - _yuitest_coverfunc("build/anim-base/anim-base.js", "stop", 383); -_yuitest_coverline("build/anim-base/anim-base.js", 384); + _yuitest_coverfunc("build/anim-base/anim-base.js", "stop", 384); +_yuitest_coverline("build/anim-base/anim-base.js", 385); for (var i in _running) { // stop timer if nothing running - _yuitest_coverline("build/anim-base/anim-base.js", 385); + _yuitest_coverline("build/anim-base/anim-base.js", 386); if (_running[i].stop) { - _yuitest_coverline("build/anim-base/anim-base.js", 386); + _yuitest_coverline("build/anim-base/anim-base.js", 387); _running[i].stop(); } } - _yuitest_coverline("build/anim-base/anim-base.js", 389); + _yuitest_coverline("build/anim-base/anim-base.js", 390); Y.Anim._stopTimer(); }; - - _yuitest_coverline("build/anim-base/anim-base.js", 392); + + _yuitest_coverline("build/anim-base/anim-base.js", 393); Y.Anim._startTimer = function() { - _yuitest_coverfunc("build/anim-base/anim-base.js", "_startTimer", 392); -_yuitest_coverline("build/anim-base/anim-base.js", 393); + _yuitest_coverfunc("build/anim-base/anim-base.js", "_startTimer", 393); +_yuitest_coverline("build/anim-base/anim-base.js", 394); if (!_timer) { - _yuitest_coverline("build/anim-base/anim-base.js", 394); + _yuitest_coverline("build/anim-base/anim-base.js", 395); _timer = setInterval(Y.Anim._runFrame, Y.Anim._intervalTime); } }; - _yuitest_coverline("build/anim-base/anim-base.js", 398); + _yuitest_coverline("build/anim-base/anim-base.js", 399); Y.Anim._stopTimer = function() { - _yuitest_coverfunc("build/anim-base/anim-base.js", "_stopTimer", 398); -_yuitest_coverline("build/anim-base/anim-base.js", 399); + _yuitest_coverfunc("build/anim-base/anim-base.js", "_stopTimer", 399); +_yuitest_coverline("build/anim-base/anim-base.js", 400); clearInterval(_timer); - _yuitest_coverline("build/anim-base/anim-base.js", 400); + _yuitest_coverline("build/anim-base/anim-base.js", 401); _timer = 0; }; @@ -533,52 +534,53 @@ _timer = 0; * @method _runFrame * @private * @static - */ - _yuitest_coverline("build/anim-base/anim-base.js", 409); + */ + _yuitest_coverline("build/anim-base/anim-base.js", 410); Y.Anim._runFrame = function() { - _yuitest_coverfunc("build/anim-base/anim-base.js", "_runFrame", 409); -_yuitest_coverline("build/anim-base/anim-base.js", 410); -var done = true; - _yuitest_coverline("build/anim-base/anim-base.js", 411); -for (var anim in _running) { - _yuitest_coverline("build/anim-base/anim-base.js", 412); + _yuitest_coverfunc("build/anim-base/anim-base.js", "_runFrame", 410); +_yuitest_coverline("build/anim-base/anim-base.js", 411); +var done = true, + anim; + _yuitest_coverline("build/anim-base/anim-base.js", 413); +for (anim in _running) { + _yuitest_coverline("build/anim-base/anim-base.js", 414); if (_running[anim]._runFrame) { - _yuitest_coverline("build/anim-base/anim-base.js", 413); + _yuitest_coverline("build/anim-base/anim-base.js", 415); done = false; - _yuitest_coverline("build/anim-base/anim-base.js", 414); + _yuitest_coverline("build/anim-base/anim-base.js", 416); _running[anim]._runFrame(); } } - _yuitest_coverline("build/anim-base/anim-base.js", 418); + _yuitest_coverline("build/anim-base/anim-base.js", 420); if (done) { - _yuitest_coverline("build/anim-base/anim-base.js", 419); + _yuitest_coverline("build/anim-base/anim-base.js", 421); Y.Anim._stopTimer(); } }; - _yuitest_coverline("build/anim-base/anim-base.js", 423); + _yuitest_coverline("build/anim-base/anim-base.js", 425); Y.Anim.RE_UNITS = /^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/; - _yuitest_coverline("build/anim-base/anim-base.js", 425); + _yuitest_coverline("build/anim-base/anim-base.js", 427); var proto = { /** * Starts or resumes an animation. * @method run * @chainable - */ + */ run: function() { - _yuitest_coverfunc("build/anim-base/anim-base.js", "run", 431); -_yuitest_coverline("build/anim-base/anim-base.js", 432); + _yuitest_coverfunc("build/anim-base/anim-base.js", "run", 433); +_yuitest_coverline("build/anim-base/anim-base.js", 434); if (this.get(PAUSED)) { - _yuitest_coverline("build/anim-base/anim-base.js", 433); -this._resume(); - } else {_yuitest_coverline("build/anim-base/anim-base.js", 434); -if (!this.get(RUNNING)) { _yuitest_coverline("build/anim-base/anim-base.js", 435); +this._resume(); + } else {_yuitest_coverline("build/anim-base/anim-base.js", 436); +if (!this.get(RUNNING)) { + _yuitest_coverline("build/anim-base/anim-base.js", 437); this._start(); }} - _yuitest_coverline("build/anim-base/anim-base.js", 437); + _yuitest_coverline("build/anim-base/anim-base.js", 439); return this; }, @@ -588,15 +590,15 @@ return this; * Calling run() will continue where it left off. * @method pause * @chainable - */ + */ pause: function() { - _yuitest_coverfunc("build/anim-base/anim-base.js", "pause", 447); -_yuitest_coverline("build/anim-base/anim-base.js", 448); + _yuitest_coverfunc("build/anim-base/anim-base.js", "pause", 449); +_yuitest_coverline("build/anim-base/anim-base.js", 450); if (this.get(RUNNING)) { - _yuitest_coverline("build/anim-base/anim-base.js", 449); + _yuitest_coverline("build/anim-base/anim-base.js", 451); this._pause(); } - _yuitest_coverline("build/anim-base/anim-base.js", 451); + _yuitest_coverline("build/anim-base/anim-base.js", 453); return this; }, @@ -605,47 +607,47 @@ return this; * @method stop * @param {Boolean} finish If true, the animation will move to the last frame * @chainable - */ + */ stop: function(finish) { - _yuitest_coverfunc("build/anim-base/anim-base.js", "stop", 460); -_yuitest_coverline("build/anim-base/anim-base.js", 461); + _yuitest_coverfunc("build/anim-base/anim-base.js", "stop", 462); +_yuitest_coverline("build/anim-base/anim-base.js", 463); if (this.get(RUNNING) || this.get(PAUSED)) { - _yuitest_coverline("build/anim-base/anim-base.js", 462); + _yuitest_coverline("build/anim-base/anim-base.js", 464); this._end(finish); } - _yuitest_coverline("build/anim-base/anim-base.js", 464); + _yuitest_coverline("build/anim-base/anim-base.js", 466); return this; }, _added: false, _start: function() { - _yuitest_coverfunc("build/anim-base/anim-base.js", "_start", 469); -_yuitest_coverline("build/anim-base/anim-base.js", 470); + _yuitest_coverfunc("build/anim-base/anim-base.js", "_start", 471); +_yuitest_coverline("build/anim-base/anim-base.js", 472); this._set(START_TIME, new Date() - this.get(ELAPSED_TIME)); - _yuitest_coverline("build/anim-base/anim-base.js", 471); + _yuitest_coverline("build/anim-base/anim-base.js", 473); this._actualFrames = 0; - _yuitest_coverline("build/anim-base/anim-base.js", 472); + _yuitest_coverline("build/anim-base/anim-base.js", 474); if (!this.get(PAUSED)) { - _yuitest_coverline("build/anim-base/anim-base.js", 473); + _yuitest_coverline("build/anim-base/anim-base.js", 475); this._initAnimAttr(); } - _yuitest_coverline("build/anim-base/anim-base.js", 475); + _yuitest_coverline("build/anim-base/anim-base.js", 477); _running[Y.stamp(this)] = this; - _yuitest_coverline("build/anim-base/anim-base.js", 476); + _yuitest_coverline("build/anim-base/anim-base.js", 478); Y.Anim._startTimer(); - _yuitest_coverline("build/anim-base/anim-base.js", 478); + _yuitest_coverline("build/anim-base/anim-base.js", 480); this.fire(START); }, _pause: function() { - _yuitest_coverfunc("build/anim-base/anim-base.js", "_pause", 481); -_yuitest_coverline("build/anim-base/anim-base.js", 482); + _yuitest_coverfunc("build/anim-base/anim-base.js", "_pause", 483); +_yuitest_coverline("build/anim-base/anim-base.js", 484); this._set(START_TIME, null); - _yuitest_coverline("build/anim-base/anim-base.js", 483); + _yuitest_coverline("build/anim-base/anim-base.js", 485); this._set(PAUSED, true); - _yuitest_coverline("build/anim-base/anim-base.js", 484); + _yuitest_coverline("build/anim-base/anim-base.js", 486); delete _running[Y.stamp(this)]; /** @@ -654,19 +656,19 @@ delete _running[Y.stamp(this)]; * @param {Event} ev The pause event. * @type Event.Custom */ - _yuitest_coverline("build/anim-base/anim-base.js", 492); + _yuitest_coverline("build/anim-base/anim-base.js", 494); this.fire('pause'); }, _resume: function() { - _yuitest_coverfunc("build/anim-base/anim-base.js", "_resume", 495); -_yuitest_coverline("build/anim-base/anim-base.js", 496); + _yuitest_coverfunc("build/anim-base/anim-base.js", "_resume", 497); +_yuitest_coverline("build/anim-base/anim-base.js", 498); this._set(PAUSED, false); - _yuitest_coverline("build/anim-base/anim-base.js", 497); -_running[Y.stamp(this)] = this; - _yuitest_coverline("build/anim-base/anim-base.js", 498); -this._set(START_TIME, new Date() - this.get(ELAPSED_TIME)); _yuitest_coverline("build/anim-base/anim-base.js", 499); +_running[Y.stamp(this)] = this; + _yuitest_coverline("build/anim-base/anim-base.js", 500); +this._set(START_TIME, new Date() - this.get(ELAPSED_TIME)); + _yuitest_coverline("build/anim-base/anim-base.js", 501); Y.Anim._startTimer(); /** @@ -675,43 +677,41 @@ Y.Anim._startTimer(); * @param {Event} ev The pause event. * @type Event.Custom */ - _yuitest_coverline("build/anim-base/anim-base.js", 507); + _yuitest_coverline("build/anim-base/anim-base.js", 509); this.fire('resume'); }, _end: function(finish) { - _yuitest_coverfunc("build/anim-base/anim-base.js", "_end", 510); -_yuitest_coverline("build/anim-base/anim-base.js", 511); + _yuitest_coverfunc("build/anim-base/anim-base.js", "_end", 512); +_yuitest_coverline("build/anim-base/anim-base.js", 513); var duration = this.get('duration') * 1000; - _yuitest_coverline("build/anim-base/anim-base.js", 512); + _yuitest_coverline("build/anim-base/anim-base.js", 514); if (finish) { // jump to last frame - _yuitest_coverline("build/anim-base/anim-base.js", 513); + _yuitest_coverline("build/anim-base/anim-base.js", 515); this._runAttrs(duration, duration, this.get(REVERSE)); } - _yuitest_coverline("build/anim-base/anim-base.js", 516); -this._set(START_TIME, null); - _yuitest_coverline("build/anim-base/anim-base.js", 517); -this._set(ELAPSED_TIME, 0); _yuitest_coverline("build/anim-base/anim-base.js", 518); +this._set(START_TIME, null); + _yuitest_coverline("build/anim-base/anim-base.js", 519); +this._set(ELAPSED_TIME, 0); + _yuitest_coverline("build/anim-base/anim-base.js", 520); this._set(PAUSED, false); - _yuitest_coverline("build/anim-base/anim-base.js", 520); + _yuitest_coverline("build/anim-base/anim-base.js", 522); delete _running[Y.stamp(this)]; - _yuitest_coverline("build/anim-base/anim-base.js", 521); + _yuitest_coverline("build/anim-base/anim-base.js", 523); this.fire(END, {elapsed: this.get(ELAPSED_TIME)}); }, _runFrame: function() { - _yuitest_coverfunc("build/anim-base/anim-base.js", "_runFrame", 524); -_yuitest_coverline("build/anim-base/anim-base.js", 525); + _yuitest_coverfunc("build/anim-base/anim-base.js", "_runFrame", 526); +_yuitest_coverline("build/anim-base/anim-base.js", 527); var d = this._runtimeAttr.duration, t = new Date() - this.get(START_TIME), reverse = this.get(REVERSE), - done = (t >= d), - attribute, - setter; - + done = (t >= d); + _yuitest_coverline("build/anim-base/anim-base.js", 532); this._runAttrs(t, d, reverse); _yuitest_coverline("build/anim-base/anim-base.js", 533); @@ -767,10 +767,10 @@ setter = (i in customAttr && 'set' in customAttr[i]) ? _yuitest_coverline("build/anim-base/anim-base.js", 567); if (!done) { _yuitest_coverline("build/anim-base/anim-base.js", 568); -setter(this, i, attribute.from, attribute.to, t, d, easing, attribute.unit); +setter(this, i, attribute.from, attribute.to, t, d, easing, attribute.unit); } else { _yuitest_coverline("build/anim-base/anim-base.js", 570); -setter(this, i, attribute.from, attribute.to, lastFrame, d, easing, attribute.unit); +setter(this, i, attribute.from, attribute.to, lastFrame, d, easing, attribute.unit); } } } @@ -850,9 +850,8 @@ begin = begin.call(this, node); }} _yuitest_coverline("build/anim-base/anim-base.js", 627); -var mFrom = Y.Anim.RE_UNITS.exec(begin); - _yuitest_coverline("build/anim-base/anim-base.js", 628); -var mTo = Y.Anim.RE_UNITS.exec(val); +var mFrom = Y.Anim.RE_UNITS.exec(begin), + mTo = Y.Anim.RE_UNITS.exec(val); _yuitest_coverline("build/anim-base/anim-base.js", 630); begin = mFrom ? mFrom[1] : begin; @@ -896,37 +895,38 @@ _yuitest_coverline("build/anim-base/anim-base.js", 657); var node = this._node, val = node.getComputedStyle(attr), get = (attr === 'left') ? 'getX': 'getY', - set = (attr === 'left') ? 'setX': 'setY'; + set = (attr === 'left') ? 'setX': 'setY', + position; - _yuitest_coverline("build/anim-base/anim-base.js", 662); + _yuitest_coverline("build/anim-base/anim-base.js", 663); if (val === 'auto') { - _yuitest_coverline("build/anim-base/anim-base.js", 663); -var position = node.getStyle('position'); _yuitest_coverline("build/anim-base/anim-base.js", 664); +position = node.getStyle('position'); + _yuitest_coverline("build/anim-base/anim-base.js", 665); if (position === 'absolute' || position === 'fixed') { - _yuitest_coverline("build/anim-base/anim-base.js", 665); -val = node[get](); _yuitest_coverline("build/anim-base/anim-base.js", 666); +val = node[get](); + _yuitest_coverline("build/anim-base/anim-base.js", 667); node[set](val); } else { - _yuitest_coverline("build/anim-base/anim-base.js", 668); + _yuitest_coverline("build/anim-base/anim-base.js", 669); val = 0; } } - _yuitest_coverline("build/anim-base/anim-base.js", 672); + _yuitest_coverline("build/anim-base/anim-base.js", 673); return val; }, destructor: function() { - _yuitest_coverfunc("build/anim-base/anim-base.js", "destructor", 675); -_yuitest_coverline("build/anim-base/anim-base.js", 676); + _yuitest_coverfunc("build/anim-base/anim-base.js", "destructor", 676); +_yuitest_coverline("build/anim-base/anim-base.js", 677); delete Y.Anim._instances[Y.stamp(this)]; } }; - _yuitest_coverline("build/anim-base/anim-base.js", 680); + _yuitest_coverline("build/anim-base/anim-base.js", 681); Y.extend(Y.Anim, Y.Base, proto); -}, '3.7.3', {"requires": ["base-base", "node-style"]}); +}, '3.8.0', {"requires": ["base-base", "node-style"]}); diff --git a/lib/yuilib/3.7.3/build/anim-base/anim-base-debug.js b/lib/yuilib/3.8.0/build/anim-base/anim-base-debug.js similarity index 93% rename from lib/yuilib/3.7.3/build/anim-base/anim-base-debug.js rename to lib/yuilib/3.8.0/build/anim-base/anim-base-debug.js index 431f9494bf8..13e723c3847 100644 --- a/lib/yuilib/3.7.3/build/anim-base/anim-base-debug.js +++ b/lib/yuilib/3.8.0/build/anim-base/anim-base-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -93,7 +93,7 @@ YUI.add('anim-base', function (Y, NAME) { }; /** - * Time in milliseconds passed to setInterval for frame processing + * Time in milliseconds passed to setInterval for frame processing * * @property intervalTime * @default 20 @@ -181,7 +181,7 @@ YUI.add('anim-base', function (Y, NAME) { node: { setter: function(node) { if (node) { - if (typeof node == 'string' || node.nodeType) { + if (typeof node === 'string' || node.nodeType) { node = Y.one(node); } } @@ -204,7 +204,7 @@ YUI.add('anim-base', function (Y, NAME) { }, /** - * The method that will provide values to the attribute(s) during the animation. + * The method that will provide values to the attribute(s) during the animation. * Defaults to "Easing.easeNone". * @attribute easing * @type Function @@ -257,7 +257,7 @@ YUI.add('anim-base', function (Y, NAME) { * Date stamp for the first frame of the animation. * @attribute startTime * @type Int - * @default 0 + * @default 0 * @readOnly */ startTime: { @@ -269,7 +269,7 @@ YUI.add('anim-base', function (Y, NAME) { * Current time the animation has been running. * @attribute elapsedTime * @type Int - * @default 0 + * @default 0 * @readOnly */ elapsedTime: { @@ -279,9 +279,9 @@ YUI.add('anim-base', function (Y, NAME) { /** * Whether or not the animation is currently running. - * @attribute running + * @attribute running * @type Boolean - * @default false + * @default false * @readOnly */ running: { @@ -293,10 +293,10 @@ YUI.add('anim-base', function (Y, NAME) { }, /** - * The number of times the animation should run + * The number of times the animation should run * @attribute iterations * @type Int - * @default 1 + * @default 1 */ iterations: { value: 1 @@ -304,7 +304,7 @@ YUI.add('anim-base', function (Y, NAME) { /** * The number of iterations that have occurred. - * Resets when an animation ends (reaches iteration count or stop() called). + * Resets when an animation ends (reaches iteration count or stop() called). * @attribute iterationCount * @type Int * @default 0 @@ -316,7 +316,7 @@ YUI.add('anim-base', function (Y, NAME) { }, /** - * How iterations of the animation should behave. + * How iterations of the animation should behave. * Possible values are "normal" and "alternate". * Normal will repeat the animation, alternate will reverse on every other pass. * @@ -330,9 +330,9 @@ YUI.add('anim-base', function (Y, NAME) { /** * Whether or not the animation is currently paused. - * @attribute paused + * @attribute paused * @type Boolean - * @default false + * @default false * @readOnly */ paused: { @@ -344,7 +344,7 @@ YUI.add('anim-base', function (Y, NAME) { * If true, animation begins from last frame * @attribute reverse * @type Boolean - * @default false + * @default false */ reverse: { value: false @@ -357,10 +357,11 @@ YUI.add('anim-base', function (Y, NAME) { * Runs all animation instances. * @method run * @static - */ + */ Y.Anim.run = function() { - var instances = Y.Anim._instances; - for (var i in instances) { + var instances = Y.Anim._instances, + i; + for (i in instances) { if (instances[i].run) { instances[i].run(); } @@ -371,7 +372,7 @@ YUI.add('anim-base', function (Y, NAME) { * Pauses all animation instances. * @method pause * @static - */ + */ Y.Anim.pause = function() { for (var i in _running) { // stop timer if nothing running if (_running[i].pause) { @@ -386,7 +387,7 @@ YUI.add('anim-base', function (Y, NAME) { * Stops all animation instances. * @method stop * @static - */ + */ Y.Anim.stop = function() { for (var i in _running) { // stop timer if nothing running if (_running[i].stop) { @@ -395,7 +396,7 @@ YUI.add('anim-base', function (Y, NAME) { } Y.Anim._stopTimer(); }; - + Y.Anim._startTimer = function() { if (!_timer) { _timer = setInterval(Y.Anim._runFrame, Y.Anim._intervalTime); @@ -412,10 +413,11 @@ YUI.add('anim-base', function (Y, NAME) { * @method _runFrame * @private * @static - */ + */ Y.Anim._runFrame = function() { - var done = true; - for (var anim in _running) { + var done = true, + anim; + for (anim in _running) { if (_running[anim]._runFrame) { done = false; _running[anim]._runFrame(); @@ -434,7 +436,7 @@ YUI.add('anim-base', function (Y, NAME) { * Starts or resumes an animation. * @method run * @chainable - */ + */ run: function() { if (this.get(PAUSED)) { this._resume(); @@ -450,7 +452,7 @@ YUI.add('anim-base', function (Y, NAME) { * Calling run() will continue where it left off. * @method pause * @chainable - */ + */ pause: function() { if (this.get(RUNNING)) { this._pause(); @@ -463,7 +465,7 @@ YUI.add('anim-base', function (Y, NAME) { * @method stop * @param {Boolean} finish If true, the animation will move to the last frame * @chainable - */ + */ stop: function(finish) { if (this.get(RUNNING) || this.get(PAUSED)) { this._end(finish); @@ -532,10 +534,8 @@ YUI.add('anim-base', function (Y, NAME) { var d = this._runtimeAttr.duration, t = new Date() - this.get(START_TIME), reverse = this.get(REVERSE), - done = (t >= d), - attribute, - setter; - + done = (t >= d); + this._runAttrs(t, d, reverse); this._actualFrames += 1; this._set(ELAPSED_TIME, t); @@ -572,9 +572,9 @@ YUI.add('anim-base', function (Y, NAME) { customAttr[i].set : Y.Anim.DEFAULT_SETTER; if (!done) { - setter(this, i, attribute.from, attribute.to, t, d, easing, attribute.unit); + setter(this, i, attribute.from, attribute.to, t, d, easing, attribute.unit); } else { - setter(this, i, attribute.from, attribute.to, lastFrame, d, easing, attribute.unit); + setter(this, i, attribute.from, attribute.to, lastFrame, d, easing, attribute.unit); } } } @@ -631,8 +631,8 @@ YUI.add('anim-base', function (Y, NAME) { begin = begin.call(this, node); } - var mFrom = Y.Anim.RE_UNITS.exec(begin); - var mTo = Y.Anim.RE_UNITS.exec(val); + var mFrom = Y.Anim.RE_UNITS.exec(begin), + mTo = Y.Anim.RE_UNITS.exec(val); begin = mFrom ? mFrom[1] : begin; end = mTo ? mTo[1] : val; @@ -664,10 +664,11 @@ YUI.add('anim-base', function (Y, NAME) { var node = this._node, val = node.getComputedStyle(attr), get = (attr === 'left') ? 'getX': 'getY', - set = (attr === 'left') ? 'setX': 'setY'; + set = (attr === 'left') ? 'setX': 'setY', + position; if (val === 'auto') { - var position = node.getStyle('position'); + position = node.getStyle('position'); if (position === 'absolute' || position === 'fixed') { val = node[get](); node[set](val); @@ -687,4 +688,4 @@ YUI.add('anim-base', function (Y, NAME) { Y.extend(Y.Anim, Y.Base, proto); -}, '3.7.3', {"requires": ["base-base", "node-style"]}); +}, '3.8.0', {"requires": ["base-base", "node-style"]}); diff --git a/lib/yuilib/3.8.0/build/anim-base/anim-base-min.js b/lib/yuilib/3.8.0/build/anim-base/anim-base-min.js new file mode 100644 index 00000000000..c8fef482c3b --- /dev/null +++ b/lib/yuilib/3.8.0/build/anim-base/anim-base-min.js @@ -0,0 +1,7 @@ +/* +YUI 3.8.0 (build 5744) +Copyright 2012 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ +YUI.add("anim-base",function(e,t){var n="running",r="startTime",i="elapsedTime",s="start",o="tween",u="end",a="node",f="paused",l="reverse",c="iterationCount",h=Number,p={},d;e.Anim=function(){e.Anim.superclass.constructor.apply(this,arguments),e.Anim._instances[e.stamp(this)]=this},e.Anim.NAME="anim",e.Anim._instances={},e.Anim.RE_DEFAULT_UNIT=/^width|height|top|right|bottom|left|margin.*|padding.*|border.*$/i,e.Anim.DEFAULT_UNIT="px",e.Anim.DEFAULT_EASING=function(e,t,n,r){return n*e/r+t},e.Anim._intervalTime=20,e.Anim.behaviors={left:{get:function(e,t){return e._getOffset(t)}}},e.Anim.behaviors.top=e.Anim.behaviors.left,e.Anim.DEFAULT_SETTER=function(t,n,r,i,s,o,u,a){var f=t._node,l=f._node,c=u(s,h(r),h(i)-h(r),o);l?"style"in l&&(n in l.style||n in e.DOM.CUSTOM_STYLES)?(a=a||"",f.setStyle(n,c+a)):"attributes"in l&&n in l.attributes?f.setAttribute(n,c):n in l&&(l[n]=c):f.set?f.set(n,c):n in f&&(f[n]=c)},e.Anim.DEFAULT_GETTER=function(t,n){var r=t._node,i=r._node,s="";return i?"style"in i&&(n in i.style||n in e.DOM.CUSTOM_STYLES)?s=r.getComputedStyle(n):"attributes"in i&&n in i.attributes?s=r.getAttribute(n):n in i&&(s=i[n]):r.get?s=r.get(n):n in r&&(s=r[n]),s},e.Anim.ATTRS={node:{setter:function(t){return t&&(typeof t=="string"||t.nodeType)&&(t=e.one(t)),this._node=t,!t,t}},duration:{value:1},easing:{value:e.Anim.DEFAULT_EASING,setter:function(t){if(typeof t=="string"&&e.Easing)return e.Easing[t]}},from:{},to:{},startTime:{value:0,readOnly:!0},elapsedTime:{value:0,readOnly:!0},running:{getter:function(){return!!p[e.stamp(this)]},value:!1,readOnly:!0},iterations:{value:1},iterationCount:{value:0,readOnly:!0},direction:{value:"normal"},paused:{readOnly:!0,value:!1},reverse:{value:!1}},e.Anim.run=function(){var t=e.Anim._instances,n;for(n in t)t[n].run&&t[n].run()},e.Anim.pause=function(){for(var t in p)p[t].pause&&p[t].pause();e.Anim._stopTimer()},e.Anim.stop=function(){for(var t in p)p[t].stop&&p[t].stop();e.Anim._stopTimer()},e.Anim._startTimer=function(){d||(d=setInterval(e.Anim._runFrame,e.Anim._intervalTime))},e.Anim._stopTimer=function(){clearInterval(d),d=0},e.Anim._runFrame=function(){var t=!0,n;for(n in p)p[n]._runFrame&&(t=!1,p[n]._runFrame());t&&e.Anim._stopTimer()},e.Anim.RE_UNITS=/^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/;var v={run:function(){return this.get(f)?this._resume():this.get(n)||this._start(),this},pause:function(){return this.get(n)&&this._pause(),this},stop:function(e){return(this.get(n)||this.get(f))&&this._end(e),this},_added:!1,_start:function(){this._set(r,new Date-this.get(i)),this._actualFrames=0,this.get(f)||this._initAnimAttr(),p[e.stamp(this)]=this,e.Anim._startTimer(),this.fire(s)},_pause:function(){this._set(r,null),this._set(f,!0),delete p[e.stamp(this)],this.fire("pause")},_resume:function(){this._set(f,!1),p[e.stamp(this)]=this,this._set(r,new Date-this.get(i)),e.Anim._startTimer(),this.fire("resume")},_end:function(t){var n=this.get("duration")*1e3;t&&this._runAttrs(n,n,this.get(l)),this._set(r,null),this._set(i,0),this._set(f,!1),delete p[e.stamp(this)],this.fire(u,{elapsed:this.get(i)})},_runFrame:function(){var e=this._runtimeAttr.duration,t=new Date-this.get(r),n=this.get(l),s=t>=e;this._runAttrs(t,e,n),this._actualFrames+=1,this._set(i,t),this.fire(o),s&&this._lastFrame()},_runAttrs:function(t,n,r){var i=this._runtimeAttr,s=e.Anim.behaviors,o=i.easing,u=n,a=!1,f,l,c;t>=n&&(a=!0),r&&(t=n-t,u=0);for(c in i)i[c].to&&(f=i[c],l=c in s&&"set"in s[c]?s[c].set:e.Anim.DEFAULT_SETTER,a?l(this,c,f.from,f.to,u,n,o,f.unit):l(this,c,f.from,f.to,t,n,o,f.unit))},_lastFrame:function(){var e=this.get("iterations"),t=this.get(c);t+=1,e==="infinite"||t= d), - attribute, - setter; - + done = (t >= d); + this._runAttrs(t, d, reverse); this._actualFrames += 1; this._set(ELAPSED_TIME, t); @@ -571,9 +571,9 @@ YUI.add('anim-base', function (Y, NAME) { customAttr[i].set : Y.Anim.DEFAULT_SETTER; if (!done) { - setter(this, i, attribute.from, attribute.to, t, d, easing, attribute.unit); + setter(this, i, attribute.from, attribute.to, t, d, easing, attribute.unit); } else { - setter(this, i, attribute.from, attribute.to, lastFrame, d, easing, attribute.unit); + setter(this, i, attribute.from, attribute.to, lastFrame, d, easing, attribute.unit); } } } @@ -630,8 +630,8 @@ YUI.add('anim-base', function (Y, NAME) { begin = begin.call(this, node); } - var mFrom = Y.Anim.RE_UNITS.exec(begin); - var mTo = Y.Anim.RE_UNITS.exec(val); + var mFrom = Y.Anim.RE_UNITS.exec(begin), + mTo = Y.Anim.RE_UNITS.exec(val); begin = mFrom ? mFrom[1] : begin; end = mTo ? mTo[1] : val; @@ -663,10 +663,11 @@ YUI.add('anim-base', function (Y, NAME) { var node = this._node, val = node.getComputedStyle(attr), get = (attr === 'left') ? 'getX': 'getY', - set = (attr === 'left') ? 'setX': 'setY'; + set = (attr === 'left') ? 'setX': 'setY', + position; if (val === 'auto') { - var position = node.getStyle('position'); + position = node.getStyle('position'); if (position === 'absolute' || position === 'fixed') { val = node[get](); node[set](val); @@ -686,4 +687,4 @@ YUI.add('anim-base', function (Y, NAME) { Y.extend(Y.Anim, Y.Base, proto); -}, '3.7.3', {"requires": ["base-base", "node-style"]}); +}, '3.8.0', {"requires": ["base-base", "node-style"]}); diff --git a/lib/yuilib/3.7.3/build/anim-color/anim-color-coverage.js b/lib/yuilib/3.8.0/build/anim-color/anim-color-coverage.js similarity index 86% rename from lib/yuilib/3.7.3/build/anim-color/anim-color-coverage.js rename to lib/yuilib/3.8.0/build/anim-color/anim-color-coverage.js index 9346e3adde2..6fa354136f8 100644 --- a/lib/yuilib/3.7.3/build/anim-color/anim-color-coverage.js +++ b/lib/yuilib/3.8.0/build/anim-color/anim-color-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,7 +32,7 @@ _yuitest_coverage["build/anim-color/anim-color.js"] = { path: "build/anim-color/anim-color.js", code: [] }; -_yuitest_coverage["build/anim-color/anim-color.js"].code=["YUI.add('anim-color', function (Y, NAME) {","","/**"," * Adds support for color properties in to"," * and from attributes."," * @module anim"," * @submodule anim-color"," */","","var NUM = Number;","","Y.Anim.getUpdatedColorValue = function(fromColor, toColor, elapsed, duration, fn)","{"," fromColor = Y.Color.re_RGB.exec(Y.Color.toRGB(fromColor));"," toColor = Y.Color.re_RGB.exec(Y.Color.toRGB(toColor));",""," if (!fromColor || fromColor.length < 3 || !toColor || toColor.length < 3) {"," Y.error('invalid from or to passed to color behavior');"," }",""," return 'rgb(' + ["," Math.floor(fn(elapsed, NUM(fromColor[1]), NUM(toColor[1]) - NUM(fromColor[1]), duration)),"," Math.floor(fn(elapsed, NUM(fromColor[2]), NUM(toColor[2]) - NUM(fromColor[2]), duration)),"," Math.floor(fn(elapsed, NUM(fromColor[3]), NUM(toColor[3]) - NUM(fromColor[3]), duration))"," ].join(', ') + ')';","};","","Y.Anim.behaviors.color = {"," set: function(anim, att, from, to, elapsed, duration, fn) {"," anim._node.setStyle(att, Y.Anim.getUpdatedColorValue(from, to, elapsed, duration, fn)); "," },"," "," // TODO: default bgcolor const"," get: function(anim, att) {"," var val = anim._node.getComputedStyle(att);"," val = (val === 'transparent') ? 'rgb(255, 255, 255)' : val;"," return val;"," }","};","","Y.each(['backgroundColor',"," 'borderColor',"," 'borderTopColor',"," 'borderRightColor', "," 'borderBottomColor', "," 'borderLeftColor'],"," function(v, i) {"," Y.Anim.behaviors[v] = Y.Anim.behaviors.color;"," }",");","","","}, '3.7.3', {\"requires\": [\"anim-base\"]});"]; +_yuitest_coverage["build/anim-color/anim-color.js"].code=["YUI.add('anim-color', function (Y, NAME) {","","/**"," * Adds support for color properties in to"," * and from attributes."," * @module anim"," * @submodule anim-color"," */","","var NUM = Number;","","Y.Anim.getUpdatedColorValue = function(fromColor, toColor, elapsed, duration, fn)","{"," fromColor = Y.Color.re_RGB.exec(Y.Color.toRGB(fromColor));"," toColor = Y.Color.re_RGB.exec(Y.Color.toRGB(toColor));",""," if (!fromColor || fromColor.length < 3 || !toColor || toColor.length < 3) {"," Y.error('invalid from or to passed to color behavior');"," }",""," return 'rgb(' + ["," Math.floor(fn(elapsed, NUM(fromColor[1]), NUM(toColor[1]) - NUM(fromColor[1]), duration)),"," Math.floor(fn(elapsed, NUM(fromColor[2]), NUM(toColor[2]) - NUM(fromColor[2]), duration)),"," Math.floor(fn(elapsed, NUM(fromColor[3]), NUM(toColor[3]) - NUM(fromColor[3]), duration))"," ].join(', ') + ')';","};","","Y.Anim.behaviors.color = {"," set: function(anim, att, from, to, elapsed, duration, fn) {"," anim._node.setStyle(att, Y.Anim.getUpdatedColorValue(from, to, elapsed, duration, fn));"," },",""," // TODO: default bgcolor const"," get: function(anim, att) {"," var val = anim._node.getComputedStyle(att);"," val = (val === 'transparent') ? 'rgb(255, 255, 255)' : val;"," return val;"," }","};","","Y.each(['backgroundColor',"," 'borderColor',"," 'borderTopColor',"," 'borderRightColor',"," 'borderBottomColor',"," 'borderLeftColor'],"," function(v) {"," Y.Anim.behaviors[v] = Y.Anim.behaviors.color;"," }",");","","","}, '3.8.0', {\"requires\": [\"anim-base\"]});"]; _yuitest_coverage["build/anim-color/anim-color.js"].lines = {"1":0,"10":0,"12":0,"14":0,"15":0,"17":0,"18":0,"21":0,"28":0,"30":0,"35":0,"36":0,"37":0,"41":0,"48":0}; _yuitest_coverage["build/anim-color/anim-color.js"].functions = {"getUpdatedColorValue:12":0,"set:29":0,"get:34":0,"(anonymous 2):47":0,"(anonymous 1):1":0}; _yuitest_coverage["build/anim-color/anim-color.js"].coveredLines = 15; @@ -79,9 +79,9 @@ Y.Anim.behaviors.color = { set: function(anim, att, from, to, elapsed, duration, fn) { _yuitest_coverfunc("build/anim-color/anim-color.js", "set", 29); _yuitest_coverline("build/anim-color/anim-color.js", 30); -anim._node.setStyle(att, Y.Anim.getUpdatedColorValue(from, to, elapsed, duration, fn)); +anim._node.setStyle(att, Y.Anim.getUpdatedColorValue(from, to, elapsed, duration, fn)); }, - + // TODO: default bgcolor const get: function(anim, att) { _yuitest_coverfunc("build/anim-color/anim-color.js", "get", 34); @@ -98,10 +98,10 @@ _yuitest_coverline("build/anim-color/anim-color.js", 41); Y.each(['backgroundColor', 'borderColor', 'borderTopColor', - 'borderRightColor', - 'borderBottomColor', + 'borderRightColor', + 'borderBottomColor', 'borderLeftColor'], - function(v, i) { + function(v) { _yuitest_coverfunc("build/anim-color/anim-color.js", "(anonymous 2)", 47); _yuitest_coverline("build/anim-color/anim-color.js", 48); Y.Anim.behaviors[v] = Y.Anim.behaviors.color; @@ -109,4 +109,4 @@ Y.Anim.behaviors[v] = Y.Anim.behaviors.color; ); -}, '3.7.3', {"requires": ["anim-base"]}); +}, '3.8.0', {"requires": ["anim-base"]}); diff --git a/lib/yuilib/3.7.3/build/anim-color/anim-color-debug.js b/lib/yuilib/3.8.0/build/anim-color/anim-color-debug.js similarity index 89% rename from lib/yuilib/3.7.3/build/anim-color/anim-color-debug.js rename to lib/yuilib/3.8.0/build/anim-color/anim-color-debug.js index fe614a480de..1eafc1c7624 100644 --- a/lib/yuilib/3.7.3/build/anim-color/anim-color-debug.js +++ b/lib/yuilib/3.8.0/build/anim-color/anim-color-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -33,9 +33,9 @@ Y.Anim.getUpdatedColorValue = function(fromColor, toColor, elapsed, duration, f Y.Anim.behaviors.color = { set: function(anim, att, from, to, elapsed, duration, fn) { - anim._node.setStyle(att, Y.Anim.getUpdatedColorValue(from, to, elapsed, duration, fn)); + anim._node.setStyle(att, Y.Anim.getUpdatedColorValue(from, to, elapsed, duration, fn)); }, - + // TODO: default bgcolor const get: function(anim, att) { var val = anim._node.getComputedStyle(att); @@ -47,13 +47,13 @@ Y.Anim.behaviors.color = { Y.each(['backgroundColor', 'borderColor', 'borderTopColor', - 'borderRightColor', - 'borderBottomColor', + 'borderRightColor', + 'borderBottomColor', 'borderLeftColor'], - function(v, i) { + function(v) { Y.Anim.behaviors[v] = Y.Anim.behaviors.color; } ); -}, '3.7.3', {"requires": ["anim-base"]}); +}, '3.8.0', {"requires": ["anim-base"]}); diff --git a/lib/yuilib/3.7.3/build/anim-color/anim-color-min.js b/lib/yuilib/3.8.0/build/anim-color/anim-color-min.js similarity index 89% rename from lib/yuilib/3.7.3/build/anim-color/anim-color-min.js rename to lib/yuilib/3.8.0/build/anim-color/anim-color-min.js index 27d2942860d..b616769d40c 100644 --- a/lib/yuilib/3.7.3/build/anim-color/anim-color-min.js +++ b/lib/yuilib/3.8.0/build/anim-color/anim-color-min.js @@ -1,7 +1,7 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ -YUI.add("anim-color",function(e,t){var n=Number;e.Anim.getUpdatedColorValue=function(t,r,i,s,o){return t=e.Color.re_RGB.exec(e.Color.toRGB(t)),r=e.Color.re_RGB.exec(e.Color.toRGB(r)),(!t||t.length<3||!r||r.length<3)&&e.error("invalid from or to passed to color behavior"),"rgb("+[Math.floor(o(i,n(t[1]),n(r[1])-n(t[1]),s)),Math.floor(o(i,n(t[2]),n(r[2])-n(t[2]),s)),Math.floor(o(i,n(t[3]),n(r[3])-n(t[3]),s))].join(", ")+")"},e.Anim.behaviors.color={set:function(t,n,r,i,s,o,u){t._node.setStyle(n,e.Anim.getUpdatedColorValue(r,i,s,o,u))},get:function(e,t){var n=e._node.getComputedStyle(t);return n=n==="transparent"?"rgb(255, 255, 255)":n,n}},e.each(["backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],function(t,n){e.Anim.behaviors[t]=e.Anim.behaviors.color})},"3.7.3",{requires:["anim-base"]}); +YUI.add("anim-color",function(e,t){var n=Number;e.Anim.getUpdatedColorValue=function(t,r,i,s,o){return t=e.Color.re_RGB.exec(e.Color.toRGB(t)),r=e.Color.re_RGB.exec(e.Color.toRGB(r)),(!t||t.length<3||!r||r.length<3)&&e.error("invalid from or to passed to color behavior"),"rgb("+[Math.floor(o(i,n(t[1]),n(r[1])-n(t[1]),s)),Math.floor(o(i,n(t[2]),n(r[2])-n(t[2]),s)),Math.floor(o(i,n(t[3]),n(r[3])-n(t[3]),s))].join(", ")+")"},e.Anim.behaviors.color={set:function(t,n,r,i,s,o,u){t._node.setStyle(n,e.Anim.getUpdatedColorValue(r,i,s,o,u))},get:function(e,t){var n=e._node.getComputedStyle(t);return n=n==="transparent"?"rgb(255, 255, 255)":n,n}},e.each(["backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],function(t){e.Anim.behaviors[t]=e.Anim.behaviors.color})},"3.8.0",{requires:["anim-base"]}); diff --git a/lib/yuilib/3.7.3/build/anim-color/anim-color.js b/lib/yuilib/3.8.0/build/anim-color/anim-color.js similarity index 89% rename from lib/yuilib/3.7.3/build/anim-color/anim-color.js rename to lib/yuilib/3.8.0/build/anim-color/anim-color.js index fe614a480de..1eafc1c7624 100644 --- a/lib/yuilib/3.7.3/build/anim-color/anim-color.js +++ b/lib/yuilib/3.8.0/build/anim-color/anim-color.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -33,9 +33,9 @@ Y.Anim.getUpdatedColorValue = function(fromColor, toColor, elapsed, duration, f Y.Anim.behaviors.color = { set: function(anim, att, from, to, elapsed, duration, fn) { - anim._node.setStyle(att, Y.Anim.getUpdatedColorValue(from, to, elapsed, duration, fn)); + anim._node.setStyle(att, Y.Anim.getUpdatedColorValue(from, to, elapsed, duration, fn)); }, - + // TODO: default bgcolor const get: function(anim, att) { var val = anim._node.getComputedStyle(att); @@ -47,13 +47,13 @@ Y.Anim.behaviors.color = { Y.each(['backgroundColor', 'borderColor', 'borderTopColor', - 'borderRightColor', - 'borderBottomColor', + 'borderRightColor', + 'borderBottomColor', 'borderLeftColor'], - function(v, i) { + function(v) { Y.Anim.behaviors[v] = Y.Anim.behaviors.color; } ); -}, '3.7.3', {"requires": ["anim-base"]}); +}, '3.8.0', {"requires": ["anim-base"]}); diff --git a/lib/yuilib/3.7.3/build/anim-curve/anim-curve-coverage.js b/lib/yuilib/3.8.0/build/anim-curve/anim-curve-coverage.js similarity index 59% rename from lib/yuilib/3.7.3/build/anim-curve/anim-curve-coverage.js rename to lib/yuilib/3.8.0/build/anim-curve/anim-curve-coverage.js index b4622926f05..d761f74deab 100644 --- a/lib/yuilib/3.7.3/build/anim-curve/anim-curve-coverage.js +++ b/lib/yuilib/3.8.0/build/anim-curve/anim-curve-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,16 +32,16 @@ _yuitest_coverage["build/anim-curve/anim-curve.js"] = { path: "build/anim-curve/anim-curve.js", code: [] }; -_yuitest_coverage["build/anim-curve/anim-curve.js"].code=["YUI.add('anim-curve', function (Y, NAME) {","","/**"," * Adds support for the curve property for the to "," * attribute. A curve is zero or more control points and an end point."," * @module anim"," * @submodule anim-curve"," */","","Y.Anim.behaviors.curve = {"," set: function(anim, att, from, to, elapsed, duration, fn) {"," from = from.slice.call(from);"," to = to.slice.call(to);"," var t = fn(elapsed, 0, 100, duration) / 100;"," to.unshift(from);"," anim._node.setXY(Y.Anim.getBezier(to, t));"," },",""," get: function(anim, att) {"," return anim._node.getXY();"," }","};","","/**"," * Get the current position of the animated element based on t."," * Each point is an array of \"x\" and \"y\" values (0 = x, 1 = y)"," * At least 2 points are required (start and end)."," * First point is start. Last point is end."," * Additional control points are optional. "," * @for Anim"," * @method getBezier"," * @static"," * @param {Array} points An array containing Bezier points"," * @param {Number} t A number between 0 and 1 which is the basis for determining current position"," * @return {Array} An array containing int x and y member data"," */","Y.Anim.getBezier = function(points, t) { "," var n = points.length;"," var tmp = [];",""," for (var i = 0; i < n; ++i){"," tmp[i] = [points[i][0], points[i][1]]; // save input"," }"," "," for (var j = 1; j < n; ++j) {"," for (i = 0; i < n - j; ++i) {"," tmp[i][0] = (1 - t) * tmp[i][0] + t * tmp[parseInt(i + 1, 10)][0];"," tmp[i][1] = (1 - t) * tmp[i][1] + t * tmp[parseInt(i + 1, 10)][1]; "," }"," }",""," return [ tmp[0][0], tmp[0][1] ]; ","","};","","","}, '3.7.3', {\"requires\": [\"anim-xy\"]});"]; -_yuitest_coverage["build/anim-curve/anim-curve.js"].lines = {"1":0,"10":0,"12":0,"13":0,"14":0,"15":0,"16":0,"20":0,"37":0,"38":0,"39":0,"41":0,"42":0,"45":0,"46":0,"47":0,"48":0,"52":0}; +_yuitest_coverage["build/anim-curve/anim-curve.js"].code=["YUI.add('anim-curve', function (Y, NAME) {","","/**"," * Adds support for the curve property for the to"," * attribute. A curve is zero or more control points and an end point."," * @module anim"," * @submodule anim-curve"," */","","Y.Anim.behaviors.curve = {"," set: function(anim, att, from, to, elapsed, duration, fn) {"," from = from.slice.call(from);"," to = to.slice.call(to);"," var t = fn(elapsed, 0, 100, duration) / 100;"," to.unshift(from);"," anim._node.setXY(Y.Anim.getBezier(to, t));"," },",""," get: function(anim) {"," return anim._node.getXY();"," }","};","","/**"," * Get the current position of the animated element based on t."," * Each point is an array of \"x\" and \"y\" values (0 = x, 1 = y)"," * At least 2 points are required (start and end)."," * First point is start. Last point is end."," * Additional control points are optional."," * @for Anim"," * @method getBezier"," * @static"," * @param {Array} points An array containing Bezier points"," * @param {Number} t A number between 0 and 1 which is the basis for determining current position"," * @return {Array} An array containing int x and y member data"," */","Y.Anim.getBezier = function(points, t) {"," var n = points.length,"," tmp = [],"," i,"," j;",""," for (i = 0; i < n; ++i){"," tmp[i] = [points[i][0], points[i][1]]; // save input"," }",""," for (j = 1; j < n; ++j) {"," for (i = 0; i < n - j; ++i) {"," tmp[i][0] = (1 - t) * tmp[i][0] + t * tmp[parseInt(i + 1, 10)][0];"," tmp[i][1] = (1 - t) * tmp[i][1] + t * tmp[parseInt(i + 1, 10)][1];"," }"," }",""," return [ tmp[0][0], tmp[0][1] ];","","};","","","}, '3.8.0', {\"requires\": [\"anim-xy\"]});"]; +_yuitest_coverage["build/anim-curve/anim-curve.js"].lines = {"1":0,"10":0,"12":0,"13":0,"14":0,"15":0,"16":0,"20":0,"37":0,"38":0,"43":0,"44":0,"47":0,"48":0,"49":0,"50":0,"54":0}; _yuitest_coverage["build/anim-curve/anim-curve.js"].functions = {"set:11":0,"get:19":0,"getBezier:37":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/anim-curve/anim-curve.js"].coveredLines = 18; +_yuitest_coverage["build/anim-curve/anim-curve.js"].coveredLines = 17; _yuitest_coverage["build/anim-curve/anim-curve.js"].coveredFunctions = 4; _yuitest_coverline("build/anim-curve/anim-curve.js", 1); YUI.add('anim-curve', function (Y, NAME) { /** - * Adds support for the curve property for the to + * Adds support for the curve property for the to * attribute. A curve is zero or more control points and an end point. * @module anim * @submodule anim-curve @@ -64,7 +64,7 @@ to.unshift(from); anim._node.setXY(Y.Anim.getBezier(to, t)); }, - get: function(anim, att) { + get: function(anim) { _yuitest_coverfunc("build/anim-curve/anim-curve.js", "get", 19); _yuitest_coverline("build/anim-curve/anim-curve.js", 20); return anim._node.getXY(); @@ -76,7 +76,7 @@ return anim._node.getXY(); * Each point is an array of "x" and "y" values (0 = x, 1 = y) * At least 2 points are required (start and end). * First point is start. Last point is end. - * Additional control points are optional. + * Additional control points are optional. * @for Anim * @method getBezier * @static @@ -85,34 +85,35 @@ return anim._node.getXY(); * @return {Array} An array containing int x and y member data */ _yuitest_coverline("build/anim-curve/anim-curve.js", 37); -Y.Anim.getBezier = function(points, t) { +Y.Anim.getBezier = function(points, t) { _yuitest_coverfunc("build/anim-curve/anim-curve.js", "getBezier", 37); _yuitest_coverline("build/anim-curve/anim-curve.js", 38); -var n = points.length; - _yuitest_coverline("build/anim-curve/anim-curve.js", 39); -var tmp = []; +var n = points.length, + tmp = [], + i, + j; - _yuitest_coverline("build/anim-curve/anim-curve.js", 41); -for (var i = 0; i < n; ++i){ - _yuitest_coverline("build/anim-curve/anim-curve.js", 42); + _yuitest_coverline("build/anim-curve/anim-curve.js", 43); +for (i = 0; i < n; ++i){ + _yuitest_coverline("build/anim-curve/anim-curve.js", 44); tmp[i] = [points[i][0], points[i][1]]; // save input } - - _yuitest_coverline("build/anim-curve/anim-curve.js", 45); -for (var j = 1; j < n; ++j) { - _yuitest_coverline("build/anim-curve/anim-curve.js", 46); + + _yuitest_coverline("build/anim-curve/anim-curve.js", 47); +for (j = 1; j < n; ++j) { + _yuitest_coverline("build/anim-curve/anim-curve.js", 48); for (i = 0; i < n - j; ++i) { - _yuitest_coverline("build/anim-curve/anim-curve.js", 47); + _yuitest_coverline("build/anim-curve/anim-curve.js", 49); tmp[i][0] = (1 - t) * tmp[i][0] + t * tmp[parseInt(i + 1, 10)][0]; - _yuitest_coverline("build/anim-curve/anim-curve.js", 48); -tmp[i][1] = (1 - t) * tmp[i][1] + t * tmp[parseInt(i + 1, 10)][1]; + _yuitest_coverline("build/anim-curve/anim-curve.js", 50); +tmp[i][1] = (1 - t) * tmp[i][1] + t * tmp[parseInt(i + 1, 10)][1]; } } - _yuitest_coverline("build/anim-curve/anim-curve.js", 52); -return [ tmp[0][0], tmp[0][1] ]; + _yuitest_coverline("build/anim-curve/anim-curve.js", 54); +return [ tmp[0][0], tmp[0][1] ]; }; -}, '3.7.3', {"requires": ["anim-xy"]}); +}, '3.8.0', {"requires": ["anim-xy"]}); diff --git a/lib/yuilib/3.7.3/build/anim-curve/anim-curve-debug.js b/lib/yuilib/3.8.0/build/anim-curve/anim-curve-debug.js similarity index 79% rename from lib/yuilib/3.7.3/build/anim-curve/anim-curve-debug.js rename to lib/yuilib/3.8.0/build/anim-curve/anim-curve-debug.js index 69db3ef681c..06856fc2465 100644 --- a/lib/yuilib/3.7.3/build/anim-curve/anim-curve-debug.js +++ b/lib/yuilib/3.8.0/build/anim-curve/anim-curve-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -7,7 +7,7 @@ http://yuilibrary.com/license/ YUI.add('anim-curve', function (Y, NAME) { /** - * Adds support for the curve property for the to + * Adds support for the curve property for the to * attribute. A curve is zero or more control points and an end point. * @module anim * @submodule anim-curve @@ -22,7 +22,7 @@ Y.Anim.behaviors.curve = { anim._node.setXY(Y.Anim.getBezier(to, t)); }, - get: function(anim, att) { + get: function(anim) { return anim._node.getXY(); } }; @@ -32,7 +32,7 @@ Y.Anim.behaviors.curve = { * Each point is an array of "x" and "y" values (0 = x, 1 = y) * At least 2 points are required (start and end). * First point is start. Last point is end. - * Additional control points are optional. + * Additional control points are optional. * @for Anim * @method getBezier * @static @@ -40,24 +40,26 @@ Y.Anim.behaviors.curve = { * @param {Number} t A number between 0 and 1 which is the basis for determining current position * @return {Array} An array containing int x and y member data */ -Y.Anim.getBezier = function(points, t) { - var n = points.length; - var tmp = []; +Y.Anim.getBezier = function(points, t) { + var n = points.length, + tmp = [], + i, + j; - for (var i = 0; i < n; ++i){ + for (i = 0; i < n; ++i){ tmp[i] = [points[i][0], points[i][1]]; // save input } - - for (var j = 1; j < n; ++j) { + + for (j = 1; j < n; ++j) { for (i = 0; i < n - j; ++i) { tmp[i][0] = (1 - t) * tmp[i][0] + t * tmp[parseInt(i + 1, 10)][0]; - tmp[i][1] = (1 - t) * tmp[i][1] + t * tmp[parseInt(i + 1, 10)][1]; + tmp[i][1] = (1 - t) * tmp[i][1] + t * tmp[parseInt(i + 1, 10)][1]; } } - return [ tmp[0][0], tmp[0][1] ]; + return [ tmp[0][0], tmp[0][1] ]; }; -}, '3.7.3', {"requires": ["anim-xy"]}); +}, '3.8.0', {"requires": ["anim-xy"]}); diff --git a/lib/yuilib/3.8.0/build/anim-curve/anim-curve-min.js b/lib/yuilib/3.8.0/build/anim-curve/anim-curve-min.js new file mode 100644 index 00000000000..ee099777cec --- /dev/null +++ b/lib/yuilib/3.8.0/build/anim-curve/anim-curve-min.js @@ -0,0 +1,7 @@ +/* +YUI 3.8.0 (build 5744) +Copyright 2012 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ +YUI.add("anim-curve",function(e,t){e.Anim.behaviors.curve={set:function(t,n,r,i,s,o,u){r=r.slice.call(r),i=i.slice.call(i);var a=u(s,0,100,o)/100;i.unshift(r),t._node.setXY(e.Anim.getBezier(i,a))},get:function(e){return e._node.getXY()}},e.Anim.getBezier=function(e,t){var n=e.length,r=[],i,s;for(i=0;icurve property for the to + * Adds support for the curve property for the to * attribute. A curve is zero or more control points and an end point. * @module anim * @submodule anim-curve @@ -22,7 +22,7 @@ Y.Anim.behaviors.curve = { anim._node.setXY(Y.Anim.getBezier(to, t)); }, - get: function(anim, att) { + get: function(anim) { return anim._node.getXY(); } }; @@ -32,7 +32,7 @@ Y.Anim.behaviors.curve = { * Each point is an array of "x" and "y" values (0 = x, 1 = y) * At least 2 points are required (start and end). * First point is start. Last point is end. - * Additional control points are optional. + * Additional control points are optional. * @for Anim * @method getBezier * @static @@ -40,24 +40,26 @@ Y.Anim.behaviors.curve = { * @param {Number} t A number between 0 and 1 which is the basis for determining current position * @return {Array} An array containing int x and y member data */ -Y.Anim.getBezier = function(points, t) { - var n = points.length; - var tmp = []; +Y.Anim.getBezier = function(points, t) { + var n = points.length, + tmp = [], + i, + j; - for (var i = 0; i < n; ++i){ + for (i = 0; i < n; ++i){ tmp[i] = [points[i][0], points[i][1]]; // save input } - - for (var j = 1; j < n; ++j) { + + for (j = 1; j < n; ++j) { for (i = 0; i < n - j; ++i) { tmp[i][0] = (1 - t) * tmp[i][0] + t * tmp[parseInt(i + 1, 10)][0]; - tmp[i][1] = (1 - t) * tmp[i][1] + t * tmp[parseInt(i + 1, 10)][1]; + tmp[i][1] = (1 - t) * tmp[i][1] + t * tmp[parseInt(i + 1, 10)][1]; } } - return [ tmp[0][0], tmp[0][1] ]; + return [ tmp[0][0], tmp[0][1] ]; }; -}, '3.7.3', {"requires": ["anim-xy"]}); +}, '3.8.0', {"requires": ["anim-xy"]}); diff --git a/lib/yuilib/3.7.3/build/anim-easing/anim-easing-coverage.js b/lib/yuilib/3.8.0/build/anim-easing/anim-easing-coverage.js similarity index 50% rename from lib/yuilib/3.7.3/build/anim-easing/anim-easing-coverage.js rename to lib/yuilib/3.8.0/build/anim-easing/anim-easing-coverage.js index e359289423f..56c0b80e8f2 100644 --- a/lib/yuilib/3.7.3/build/anim-easing/anim-easing-coverage.js +++ b/lib/yuilib/3.8.0/build/anim-easing/anim-easing-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,9 +32,9 @@ _yuitest_coverage["build/anim-easing/anim-easing.js"] = { path: "build/anim-easing/anim-easing.js", code: [] }; -_yuitest_coverage["build/anim-easing/anim-easing.js"].code=["YUI.add('anim-easing', function (Y, NAME) {","","/*","TERMS OF USE - EASING EQUATIONS","Open source under the BSD License.","Copyright 2001 Robert Penner 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 the author nor the names of 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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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.","*/","","/**"," * The easing module provides methods for customizing"," * how an animation behaves during each run."," * @class Easing"," * @module anim"," * @submodule anim-easing"," */","","var Easing = {",""," /**"," * Uniform speed between points."," * @for Easing"," * @method easeNone"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," easeNone: function (t, b, c, d) {"," return c*t/d + b;"," },"," "," /**"," * Begins slowly and accelerates towards end. (quadratic)"," * @method easeIn"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," easeIn: function (t, b, c, d) {"," return c*(t/=d)*t + b;"," },",""," /**"," * Begins quickly and decelerates towards end. (quadratic)"," * @method easeOut"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," easeOut: function (t, b, c, d) {"," return -c *(t/=d)*(t-2) + b;"," },"," "," /**"," * Begins slowly and decelerates towards end. (quadratic)"," * @method easeBoth"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," easeBoth: function (t, b, c, d) {"," if ((t/=d/2) < 1) {"," return c/2*t*t + b;"," }"," "," return -c/2 * ((--t)*(t-2) - 1) + b;"," },"," "," /**"," * Begins slowly and accelerates towards end. (quartic)"," * @method easeInStrong"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," easeInStrong: function (t, b, c, d) {"," return c*(t/=d)*t*t*t + b;"," },"," "," /**"," * Begins quickly and decelerates towards end. (quartic)"," * @method easeOutStrong"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," easeOutStrong: function (t, b, c, d) {"," return -c * ((t=t/d-1)*t*t*t - 1) + b;"," },"," "," /**"," * Begins slowly and decelerates towards end. (quartic)"," * @method easeBothStrong"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," easeBothStrong: function (t, b, c, d) {"," if ((t/=d/2) < 1) {"," return c/2*t*t*t*t + b;"," }"," "," return -c/2 * ((t-=2)*t*t*t - 2) + b;"," },",""," /**"," * Snap in elastic effect."," * @method elasticIn"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @param {Number} a Amplitude (optional)"," * @param {Number} p Period (optional)"," * @return {Number} The computed value for the current animation frame"," */",""," elasticIn: function (t, b, c, d, a, p) {"," var s;"," if (t === 0) {"," return b;"," }"," if ( (t /= d) === 1 ) {"," return b+c;"," }"," if (!p) {"," p = d* 0.3;"," }"," "," if (!a || a < Math.abs(c)) {"," a = c; "," s = p/4;"," }"," else {"," s = p/(2*Math.PI) * Math.asin (c/a);"," }"," "," return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;"," },",""," /**"," * Snap out elastic effect."," * @method elasticOut"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @param {Number} a Amplitude (optional)"," * @param {Number} p Period (optional)"," * @return {Number} The computed value for the current animation frame"," */"," elasticOut: function (t, b, c, d, a, p) {"," var s;"," if (t === 0) {"," return b;"," }"," if ( (t /= d) === 1 ) {"," return b+c;"," }"," if (!p) {"," p=d * 0.3;"," }"," "," if (!a || a < Math.abs(c)) {"," a = c;"," s = p / 4;"," }"," else {"," s = p/(2*Math.PI) * Math.asin (c/a);"," }"," "," return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;"," },"," "," /**"," * Snap both elastic effect."," * @method elasticBoth"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @param {Number} a Amplitude (optional)"," * @param {Number} p Period (optional)"," * @return {Number} The computed value for the current animation frame"," */"," elasticBoth: function (t, b, c, d, a, p) {"," var s;"," if (t === 0) {"," return b;"," }"," "," if ( (t /= d/2) === 2 ) {"," return b+c;"," }"," "," if (!p) {"," p = d*(0.3*1.5);"," }"," "," if ( !a || a < Math.abs(c) ) {"," a = c; "," s = p/4;"," }"," else {"," s = p/(2*Math.PI) * Math.asin (c/a);"," }"," "," if (t < 1) {"," return -0.5*(a*Math.pow(2,10*(t-=1)) * "," Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;"," }"," return a*Math.pow(2,-10*(t-=1)) * "," Math.sin( (t*d-s)*(2*Math.PI)/p )*0.5 + c + b;"," },","",""," /**"," * Backtracks slightly, then reverses direction and moves to end."," * @method backIn"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @param {Number} s Overshoot (optional)"," * @return {Number} The computed value for the current animation frame"," */"," backIn: function (t, b, c, d, s) {"," if (s === undefined) {"," s = 1.70158;"," }"," if (t === d) {"," t -= 0.001;"," }"," return c*(t/=d)*t*((s+1)*t - s) + b;"," },",""," /**"," * Overshoots end, then reverses and comes back to end."," * @method backOut"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @param {Number} s Overshoot (optional)"," * @return {Number} The computed value for the current animation frame"," */"," backOut: function (t, b, c, d, s) {"," if (typeof s === 'undefined') {"," s = 1.70158;"," }"," return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;"," },"," "," /**"," * Backtracks slightly, then reverses direction, overshoots end, "," * then reverses and comes back to end."," * @method backBoth"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @param {Number} s Overshoot (optional)"," * @return {Number} The computed value for the current animation frame"," */"," backBoth: function (t, b, c, d, s) {"," if (typeof s === 'undefined') {"," s = 1.70158; "," }"," "," if ((t /= d/2 ) < 1) {"," return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;"," }"," return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;"," },",""," /**"," * Bounce off of start."," * @method bounceIn"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," bounceIn: function (t, b, c, d) {"," return c - Y.Easing.bounceOut(d-t, 0, c, d) + b;"," },"," "," /**"," * Bounces off end."," * @method bounceOut"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," bounceOut: function (t, b, c, d) {"," if ((t/=d) < (1/2.75)) {"," return c*(7.5625*t*t) + b;"," } else if (t < (2/2.75)) {"," return c*(7.5625*(t-=(1.5/2.75))*t + 0.75) + b;"," } else if (t < (2.5/2.75)) {"," return c*(7.5625*(t-=(2.25/2.75))*t + 0.9375) + b;"," }"," return c*(7.5625*(t-=(2.625/2.75))*t + 0.984375) + b;"," },"," "," /**"," * Bounces off start and end."," * @method bounceBoth"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," bounceBoth: function (t, b, c, d) {"," if (t < d/2) {"," return Y.Easing.bounceIn(t * 2, 0, c, d) * 0.5 + b;"," }"," return Y.Easing.bounceOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;"," }","};","","Y.Easing = Easing;","","","}, '3.7.3', {\"requires\": [\"anim-base\"]});"]; -_yuitest_coverage["build/anim-easing/anim-easing.js"].lines = {"1":0,"25":0,"38":0,"51":0,"64":0,"77":0,"78":0,"81":0,"94":0,"107":0,"120":0,"121":0,"124":0,"140":0,"141":0,"142":0,"144":0,"145":0,"147":0,"148":0,"151":0,"152":0,"153":0,"156":0,"159":0,"174":0,"175":0,"176":0,"178":0,"179":0,"181":0,"182":0,"185":0,"186":0,"187":0,"190":0,"193":0,"208":0,"209":0,"210":0,"213":0,"214":0,"217":0,"218":0,"221":0,"222":0,"223":0,"226":0,"229":0,"230":0,"233":0,"249":0,"250":0,"252":0,"253":0,"255":0,"269":0,"270":0,"272":0,"287":0,"288":0,"291":0,"292":0,"294":0,"307":0,"320":0,"321":0,"322":0,"323":0,"324":0,"325":0,"327":0,"340":0,"341":0,"343":0,"347":0}; -_yuitest_coverage["build/anim-easing/anim-easing.js"].functions = {"easeNone:37":0,"easeIn:50":0,"easeOut:63":0,"easeBoth:76":0,"easeInStrong:93":0,"easeOutStrong:106":0,"easeBothStrong:119":0,"elasticIn:139":0,"elasticOut:173":0,"elasticBoth:207":0,"backIn:248":0,"backOut:268":0,"backBoth:286":0,"bounceIn:306":0,"bounceOut:319":0,"bounceBoth:339":0,"(anonymous 1):1":0}; +_yuitest_coverage["build/anim-easing/anim-easing.js"].code=["YUI.add('anim-easing', function (Y, NAME) {","","/*","TERMS OF USE - EASING EQUATIONS","Open source under the BSD License.","Copyright 2001 Robert Penner 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 the author nor the names of 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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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.","*/","","/**"," * The easing module provides methods for customizing"," * how an animation behaves during each run."," * @class Easing"," * @module anim"," * @submodule anim-easing"," */","","var Easing = {",""," /**"," * Uniform speed between points."," * @for Easing"," * @method easeNone"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," easeNone: function (t, b, c, d) {"," return c*t/d + b;"," },",""," /**"," * Begins slowly and accelerates towards end. (quadratic)"," * @method easeIn"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," easeIn: function (t, b, c, d) {"," return c*(t/=d)*t + b;"," },",""," /**"," * Begins quickly and decelerates towards end. (quadratic)"," * @method easeOut"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," easeOut: function (t, b, c, d) {"," return -c *(t/=d)*(t-2) + b;"," },",""," /**"," * Begins slowly and decelerates towards end. (quadratic)"," * @method easeBoth"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," easeBoth: function (t, b, c, d) {"," if ((t /= d/2) < 1) {"," return c/2*t*t + b;"," }",""," return -c/2 * ((--t)*(t-2) - 1) + b;"," },",""," /**"," * Begins slowly and accelerates towards end. (quartic)"," * @method easeInStrong"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," easeInStrong: function (t, b, c, d) {"," return c*(t/=d)*t*t*t + b;"," },",""," /**"," * Begins quickly and decelerates towards end. (quartic)"," * @method easeOutStrong"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," easeOutStrong: function (t, b, c, d) {"," return -c * ((t=t/d-1)*t*t*t - 1) + b;"," },",""," /**"," * Begins slowly and decelerates towards end. (quartic)"," * @method easeBothStrong"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," easeBothStrong: function (t, b, c, d) {"," if ((t /= d/2) < 1) {"," return c/2*t*t*t*t + b;"," }",""," return -c/2 * ((t-=2)*t*t*t - 2) + b;"," },",""," /**"," * Snap in elastic effect."," * @method elasticIn"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @param {Number} a Amplitude (optional)"," * @param {Number} p Period (optional)"," * @return {Number} The computed value for the current animation frame"," */",""," elasticIn: function (t, b, c, d, a, p) {"," var s;"," if (t === 0) {"," return b;"," }"," if ( (t /= d) === 1 ) {"," return b+c;"," }"," if (!p) {"," p = d* 0.3;"," }",""," if (!a || a < Math.abs(c)) {"," a = c;"," s = p/4;"," }"," else {"," s = p/(2*Math.PI) * Math.asin (c/a);"," }",""," return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;"," },",""," /**"," * Snap out elastic effect."," * @method elasticOut"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @param {Number} a Amplitude (optional)"," * @param {Number} p Period (optional)"," * @return {Number} The computed value for the current animation frame"," */"," elasticOut: function (t, b, c, d, a, p) {"," var s;"," if (t === 0) {"," return b;"," }"," if ( (t /= d) === 1 ) {"," return b+c;"," }"," if (!p) {"," p=d * 0.3;"," }",""," if (!a || a < Math.abs(c)) {"," a = c;"," s = p / 4;"," }"," else {"," s = p/(2*Math.PI) * Math.asin (c/a);"," }",""," return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;"," },",""," /**"," * Snap both elastic effect."," * @method elasticBoth"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @param {Number} a Amplitude (optional)"," * @param {Number} p Period (optional)"," * @return {Number} The computed value for the current animation frame"," */"," elasticBoth: function (t, b, c, d, a, p) {"," var s;"," if (t === 0) {"," return b;"," }",""," if ( (t /= d/2) === 2 ) {"," return b+c;"," }",""," if (!p) {"," p = d*(0.3*1.5);"," }",""," if ( !a || a < Math.abs(c) ) {"," a = c;"," s = p/4;"," }"," else {"," s = p/(2*Math.PI) * Math.asin (c/a);"," }",""," if (t < 1) {"," return -0.5*(a*Math.pow(2,10*(t-=1)) *"," Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;"," }"," return a*Math.pow(2,-10*(t-=1)) *"," Math.sin( (t*d-s)*(2*Math.PI)/p )*0.5 + c + b;"," },","",""," /**"," * Backtracks slightly, then reverses direction and moves to end."," * @method backIn"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @param {Number} s Overshoot (optional)"," * @return {Number} The computed value for the current animation frame"," */"," backIn: function (t, b, c, d, s) {"," if (s === undefined) {"," s = 1.70158;"," }"," if (t === d) {"," t -= 0.001;"," }"," return c*(t/=d)*t*((s+1)*t - s) + b;"," },",""," /**"," * Overshoots end, then reverses and comes back to end."," * @method backOut"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @param {Number} s Overshoot (optional)"," * @return {Number} The computed value for the current animation frame"," */"," backOut: function (t, b, c, d, s) {"," if (typeof s === 'undefined') {"," s = 1.70158;"," }"," return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;"," },",""," /**"," * Backtracks slightly, then reverses direction, overshoots end,"," * then reverses and comes back to end."," * @method backBoth"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @param {Number} s Overshoot (optional)"," * @return {Number} The computed value for the current animation frame"," */"," backBoth: function (t, b, c, d, s) {"," if (typeof s === 'undefined') {"," s = 1.70158;"," }",""," if ((t /= d/2 ) < 1) {"," return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;"," }"," return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;"," },",""," /**"," * Bounce off of start."," * @method bounceIn"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," bounceIn: function (t, b, c, d) {"," return c - Y.Easing.bounceOut(d-t, 0, c, d) + b;"," },",""," /**"," * Bounces off end."," * @method bounceOut"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," bounceOut: function (t, b, c, d) {"," if ((t/=d) < (1/2.75)) {"," return c*(7.5625*t*t) + b;"," } else if (t < (2/2.75)) {"," return c*(7.5625*(t-=(1.5/2.75))*t + 0.75) + b;"," } else if (t < (2.5/2.75)) {"," return c*(7.5625*(t-=(2.25/2.75))*t + 0.9375) + b;"," }"," return c*(7.5625*(t-=(2.625/2.75))*t + 0.984375) + b;"," },",""," /**"," * Bounces off start and end."," * @method bounceBoth"," * @param {Number} t Time value used to compute current value"," * @param {Number} b Starting value"," * @param {Number} c Delta between start and end values"," * @param {Number} d Total length of animation"," * @return {Number} The computed value for the current animation frame"," */"," bounceBoth: function (t, b, c, d) {"," if (t < d/2) {"," return Y.Easing.bounceIn(t * 2, 0, c, d) * 0.5 + b;"," }"," return Y.Easing.bounceOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;"," }","};","","Y.Easing = Easing;","","","}, '3.8.0', {\"requires\": [\"anim-base\"]});"]; +_yuitest_coverage["build/anim-easing/anim-easing.js"].lines = {"1":0,"40":0,"53":0,"66":0,"79":0,"92":0,"93":0,"96":0,"109":0,"122":0,"135":0,"136":0,"139":0,"155":0,"156":0,"157":0,"159":0,"160":0,"162":0,"163":0,"166":0,"167":0,"168":0,"171":0,"174":0,"189":0,"190":0,"191":0,"193":0,"194":0,"196":0,"197":0,"200":0,"201":0,"202":0,"205":0,"208":0,"223":0,"224":0,"225":0,"228":0,"229":0,"232":0,"233":0,"236":0,"237":0,"238":0,"241":0,"244":0,"245":0,"248":0,"264":0,"265":0,"267":0,"268":0,"270":0,"284":0,"285":0,"287":0,"302":0,"303":0,"306":0,"307":0,"309":0,"322":0,"335":0,"336":0,"337":0,"338":0,"339":0,"340":0,"342":0,"355":0,"356":0,"358":0,"362":0}; +_yuitest_coverage["build/anim-easing/anim-easing.js"].functions = {"easeNone:52":0,"easeIn:65":0,"easeOut:78":0,"easeBoth:91":0,"easeInStrong:108":0,"easeOutStrong:121":0,"easeBothStrong:134":0,"elasticIn:154":0,"elasticOut:188":0,"elasticBoth:222":0,"backIn:263":0,"backOut:283":0,"backBoth:301":0,"bounceIn:321":0,"bounceOut:334":0,"bounceBoth:354":0,"(anonymous 1):1":0}; _yuitest_coverage["build/anim-easing/anim-easing.js"].coveredLines = 76; _yuitest_coverage["build/anim-easing/anim-easing.js"].coveredFunctions = 17; _yuitest_coverline("build/anim-easing/anim-easing.js", 1); @@ -45,13 +45,28 @@ TERMS OF USE - EASING EQUATIONS Open source under the BSD License. Copyright 2001 Robert Penner All rights reserved. -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +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 the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission. + * 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 the author nor the names of 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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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. +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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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. */ /** @@ -63,7 +78,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND */ _yuitest_coverfunc("build/anim-easing/anim-easing.js", "(anonymous 1)", 1); -_yuitest_coverline("build/anim-easing/anim-easing.js", 25); +_yuitest_coverline("build/anim-easing/anim-easing.js", 40); var Easing = { /** @@ -77,11 +92,11 @@ var Easing = { * @return {Number} The computed value for the current animation frame */ easeNone: function (t, b, c, d) { - _yuitest_coverfunc("build/anim-easing/anim-easing.js", "easeNone", 37); -_yuitest_coverline("build/anim-easing/anim-easing.js", 38); + _yuitest_coverfunc("build/anim-easing/anim-easing.js", "easeNone", 52); +_yuitest_coverline("build/anim-easing/anim-easing.js", 53); return c*t/d + b; }, - + /** * Begins slowly and accelerates towards end. (quadratic) * @method easeIn @@ -92,8 +107,8 @@ return c*t/d + b; * @return {Number} The computed value for the current animation frame */ easeIn: function (t, b, c, d) { - _yuitest_coverfunc("build/anim-easing/anim-easing.js", "easeIn", 50); -_yuitest_coverline("build/anim-easing/anim-easing.js", 51); + _yuitest_coverfunc("build/anim-easing/anim-easing.js", "easeIn", 65); +_yuitest_coverline("build/anim-easing/anim-easing.js", 66); return c*(t/=d)*t + b; }, @@ -107,11 +122,11 @@ return c*(t/=d)*t + b; * @return {Number} The computed value for the current animation frame */ easeOut: function (t, b, c, d) { - _yuitest_coverfunc("build/anim-easing/anim-easing.js", "easeOut", 63); -_yuitest_coverline("build/anim-easing/anim-easing.js", 64); + _yuitest_coverfunc("build/anim-easing/anim-easing.js", "easeOut", 78); +_yuitest_coverline("build/anim-easing/anim-easing.js", 79); return -c *(t/=d)*(t-2) + b; }, - + /** * Begins slowly and decelerates towards end. (quadratic) * @method easeBoth @@ -122,17 +137,17 @@ return -c *(t/=d)*(t-2) + b; * @return {Number} The computed value for the current animation frame */ easeBoth: function (t, b, c, d) { - _yuitest_coverfunc("build/anim-easing/anim-easing.js", "easeBoth", 76); -_yuitest_coverline("build/anim-easing/anim-easing.js", 77); -if ((t/=d/2) < 1) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 78); + _yuitest_coverfunc("build/anim-easing/anim-easing.js", "easeBoth", 91); +_yuitest_coverline("build/anim-easing/anim-easing.js", 92); +if ((t /= d/2) < 1) { + _yuitest_coverline("build/anim-easing/anim-easing.js", 93); return c/2*t*t + b; } - - _yuitest_coverline("build/anim-easing/anim-easing.js", 81); + + _yuitest_coverline("build/anim-easing/anim-easing.js", 96); return -c/2 * ((--t)*(t-2) - 1) + b; }, - + /** * Begins slowly and accelerates towards end. (quartic) * @method easeInStrong @@ -143,11 +158,11 @@ return -c/2 * ((--t)*(t-2) - 1) + b; * @return {Number} The computed value for the current animation frame */ easeInStrong: function (t, b, c, d) { - _yuitest_coverfunc("build/anim-easing/anim-easing.js", "easeInStrong", 93); -_yuitest_coverline("build/anim-easing/anim-easing.js", 94); + _yuitest_coverfunc("build/anim-easing/anim-easing.js", "easeInStrong", 108); +_yuitest_coverline("build/anim-easing/anim-easing.js", 109); return c*(t/=d)*t*t*t + b; }, - + /** * Begins quickly and decelerates towards end. (quartic) * @method easeOutStrong @@ -158,11 +173,11 @@ return c*(t/=d)*t*t*t + b; * @return {Number} The computed value for the current animation frame */ easeOutStrong: function (t, b, c, d) { - _yuitest_coverfunc("build/anim-easing/anim-easing.js", "easeOutStrong", 106); -_yuitest_coverline("build/anim-easing/anim-easing.js", 107); + _yuitest_coverfunc("build/anim-easing/anim-easing.js", "easeOutStrong", 121); +_yuitest_coverline("build/anim-easing/anim-easing.js", 122); return -c * ((t=t/d-1)*t*t*t - 1) + b; }, - + /** * Begins slowly and decelerates towards end. (quartic) * @method easeBothStrong @@ -173,14 +188,14 @@ return -c * ((t=t/d-1)*t*t*t - 1) + b; * @return {Number} The computed value for the current animation frame */ easeBothStrong: function (t, b, c, d) { - _yuitest_coverfunc("build/anim-easing/anim-easing.js", "easeBothStrong", 119); -_yuitest_coverline("build/anim-easing/anim-easing.js", 120); -if ((t/=d/2) < 1) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 121); + _yuitest_coverfunc("build/anim-easing/anim-easing.js", "easeBothStrong", 134); +_yuitest_coverline("build/anim-easing/anim-easing.js", 135); +if ((t /= d/2) < 1) { + _yuitest_coverline("build/anim-easing/anim-easing.js", 136); return c/2*t*t*t*t + b; } - - _yuitest_coverline("build/anim-easing/anim-easing.js", 124); + + _yuitest_coverline("build/anim-easing/anim-easing.js", 139); return -c/2 * ((t-=2)*t*t*t - 2) + b; }, @@ -197,38 +212,38 @@ return -c/2 * ((t-=2)*t*t*t - 2) + b; */ elasticIn: function (t, b, c, d, a, p) { - _yuitest_coverfunc("build/anim-easing/anim-easing.js", "elasticIn", 139); -_yuitest_coverline("build/anim-easing/anim-easing.js", 140); + _yuitest_coverfunc("build/anim-easing/anim-easing.js", "elasticIn", 154); +_yuitest_coverline("build/anim-easing/anim-easing.js", 155); var s; - _yuitest_coverline("build/anim-easing/anim-easing.js", 141); + _yuitest_coverline("build/anim-easing/anim-easing.js", 156); if (t === 0) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 142); + _yuitest_coverline("build/anim-easing/anim-easing.js", 157); return b; } - _yuitest_coverline("build/anim-easing/anim-easing.js", 144); + _yuitest_coverline("build/anim-easing/anim-easing.js", 159); if ( (t /= d) === 1 ) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 145); + _yuitest_coverline("build/anim-easing/anim-easing.js", 160); return b+c; } - _yuitest_coverline("build/anim-easing/anim-easing.js", 147); + _yuitest_coverline("build/anim-easing/anim-easing.js", 162); if (!p) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 148); + _yuitest_coverline("build/anim-easing/anim-easing.js", 163); p = d* 0.3; } - - _yuitest_coverline("build/anim-easing/anim-easing.js", 151); + + _yuitest_coverline("build/anim-easing/anim-easing.js", 166); if (!a || a < Math.abs(c)) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 152); -a = c; - _yuitest_coverline("build/anim-easing/anim-easing.js", 153); + _yuitest_coverline("build/anim-easing/anim-easing.js", 167); +a = c; + _yuitest_coverline("build/anim-easing/anim-easing.js", 168); s = p/4; } else { - _yuitest_coverline("build/anim-easing/anim-easing.js", 156); + _yuitest_coverline("build/anim-easing/anim-easing.js", 171); s = p/(2*Math.PI) * Math.asin (c/a); } - - _yuitest_coverline("build/anim-easing/anim-easing.js", 159); + + _yuitest_coverline("build/anim-easing/anim-easing.js", 174); return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; }, @@ -244,41 +259,41 @@ return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; * @return {Number} The computed value for the current animation frame */ elasticOut: function (t, b, c, d, a, p) { - _yuitest_coverfunc("build/anim-easing/anim-easing.js", "elasticOut", 173); -_yuitest_coverline("build/anim-easing/anim-easing.js", 174); + _yuitest_coverfunc("build/anim-easing/anim-easing.js", "elasticOut", 188); +_yuitest_coverline("build/anim-easing/anim-easing.js", 189); var s; - _yuitest_coverline("build/anim-easing/anim-easing.js", 175); + _yuitest_coverline("build/anim-easing/anim-easing.js", 190); if (t === 0) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 176); + _yuitest_coverline("build/anim-easing/anim-easing.js", 191); return b; } - _yuitest_coverline("build/anim-easing/anim-easing.js", 178); + _yuitest_coverline("build/anim-easing/anim-easing.js", 193); if ( (t /= d) === 1 ) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 179); + _yuitest_coverline("build/anim-easing/anim-easing.js", 194); return b+c; } - _yuitest_coverline("build/anim-easing/anim-easing.js", 181); + _yuitest_coverline("build/anim-easing/anim-easing.js", 196); if (!p) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 182); + _yuitest_coverline("build/anim-easing/anim-easing.js", 197); p=d * 0.3; } - - _yuitest_coverline("build/anim-easing/anim-easing.js", 185); + + _yuitest_coverline("build/anim-easing/anim-easing.js", 200); if (!a || a < Math.abs(c)) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 186); + _yuitest_coverline("build/anim-easing/anim-easing.js", 201); a = c; - _yuitest_coverline("build/anim-easing/anim-easing.js", 187); + _yuitest_coverline("build/anim-easing/anim-easing.js", 202); s = p / 4; } else { - _yuitest_coverline("build/anim-easing/anim-easing.js", 190); + _yuitest_coverline("build/anim-easing/anim-easing.js", 205); s = p/(2*Math.PI) * Math.asin (c/a); } - - _yuitest_coverline("build/anim-easing/anim-easing.js", 193); + + _yuitest_coverline("build/anim-easing/anim-easing.js", 208); return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; }, - + /** * Snap both elastic effect. * @method elasticBoth @@ -291,47 +306,47 @@ return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; * @return {Number} The computed value for the current animation frame */ elasticBoth: function (t, b, c, d, a, p) { - _yuitest_coverfunc("build/anim-easing/anim-easing.js", "elasticBoth", 207); -_yuitest_coverline("build/anim-easing/anim-easing.js", 208); + _yuitest_coverfunc("build/anim-easing/anim-easing.js", "elasticBoth", 222); +_yuitest_coverline("build/anim-easing/anim-easing.js", 223); var s; - _yuitest_coverline("build/anim-easing/anim-easing.js", 209); + _yuitest_coverline("build/anim-easing/anim-easing.js", 224); if (t === 0) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 210); + _yuitest_coverline("build/anim-easing/anim-easing.js", 225); return b; } - - _yuitest_coverline("build/anim-easing/anim-easing.js", 213); + + _yuitest_coverline("build/anim-easing/anim-easing.js", 228); if ( (t /= d/2) === 2 ) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 214); + _yuitest_coverline("build/anim-easing/anim-easing.js", 229); return b+c; } - - _yuitest_coverline("build/anim-easing/anim-easing.js", 217); + + _yuitest_coverline("build/anim-easing/anim-easing.js", 232); if (!p) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 218); + _yuitest_coverline("build/anim-easing/anim-easing.js", 233); p = d*(0.3*1.5); } - - _yuitest_coverline("build/anim-easing/anim-easing.js", 221); + + _yuitest_coverline("build/anim-easing/anim-easing.js", 236); if ( !a || a < Math.abs(c) ) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 222); -a = c; - _yuitest_coverline("build/anim-easing/anim-easing.js", 223); + _yuitest_coverline("build/anim-easing/anim-easing.js", 237); +a = c; + _yuitest_coverline("build/anim-easing/anim-easing.js", 238); s = p/4; } else { - _yuitest_coverline("build/anim-easing/anim-easing.js", 226); + _yuitest_coverline("build/anim-easing/anim-easing.js", 241); s = p/(2*Math.PI) * Math.asin (c/a); } - - _yuitest_coverline("build/anim-easing/anim-easing.js", 229); + + _yuitest_coverline("build/anim-easing/anim-easing.js", 244); if (t < 1) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 230); -return -0.5*(a*Math.pow(2,10*(t-=1)) * + _yuitest_coverline("build/anim-easing/anim-easing.js", 245); +return -0.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; } - _yuitest_coverline("build/anim-easing/anim-easing.js", 233); -return a*Math.pow(2,-10*(t-=1)) * + _yuitest_coverline("build/anim-easing/anim-easing.js", 248); +return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*0.5 + c + b; }, @@ -347,18 +362,18 @@ return a*Math.pow(2,-10*(t-=1)) * * @return {Number} The computed value for the current animation frame */ backIn: function (t, b, c, d, s) { - _yuitest_coverfunc("build/anim-easing/anim-easing.js", "backIn", 248); -_yuitest_coverline("build/anim-easing/anim-easing.js", 249); + _yuitest_coverfunc("build/anim-easing/anim-easing.js", "backIn", 263); +_yuitest_coverline("build/anim-easing/anim-easing.js", 264); if (s === undefined) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 250); + _yuitest_coverline("build/anim-easing/anim-easing.js", 265); s = 1.70158; } - _yuitest_coverline("build/anim-easing/anim-easing.js", 252); + _yuitest_coverline("build/anim-easing/anim-easing.js", 267); if (t === d) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 253); + _yuitest_coverline("build/anim-easing/anim-easing.js", 268); t -= 0.001; } - _yuitest_coverline("build/anim-easing/anim-easing.js", 255); + _yuitest_coverline("build/anim-easing/anim-easing.js", 270); return c*(t/=d)*t*((s+1)*t - s) + b; }, @@ -373,18 +388,18 @@ return c*(t/=d)*t*((s+1)*t - s) + b; * @return {Number} The computed value for the current animation frame */ backOut: function (t, b, c, d, s) { - _yuitest_coverfunc("build/anim-easing/anim-easing.js", "backOut", 268); -_yuitest_coverline("build/anim-easing/anim-easing.js", 269); + _yuitest_coverfunc("build/anim-easing/anim-easing.js", "backOut", 283); +_yuitest_coverline("build/anim-easing/anim-easing.js", 284); if (typeof s === 'undefined') { - _yuitest_coverline("build/anim-easing/anim-easing.js", 270); + _yuitest_coverline("build/anim-easing/anim-easing.js", 285); s = 1.70158; } - _yuitest_coverline("build/anim-easing/anim-easing.js", 272); + _yuitest_coverline("build/anim-easing/anim-easing.js", 287); return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; }, - + /** - * Backtracks slightly, then reverses direction, overshoots end, + * Backtracks slightly, then reverses direction, overshoots end, * then reverses and comes back to end. * @method backBoth * @param {Number} t Time value used to compute current value @@ -395,19 +410,19 @@ return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; * @return {Number} The computed value for the current animation frame */ backBoth: function (t, b, c, d, s) { - _yuitest_coverfunc("build/anim-easing/anim-easing.js", "backBoth", 286); -_yuitest_coverline("build/anim-easing/anim-easing.js", 287); + _yuitest_coverfunc("build/anim-easing/anim-easing.js", "backBoth", 301); +_yuitest_coverline("build/anim-easing/anim-easing.js", 302); if (typeof s === 'undefined') { - _yuitest_coverline("build/anim-easing/anim-easing.js", 288); -s = 1.70158; + _yuitest_coverline("build/anim-easing/anim-easing.js", 303); +s = 1.70158; } - - _yuitest_coverline("build/anim-easing/anim-easing.js", 291); + + _yuitest_coverline("build/anim-easing/anim-easing.js", 306); if ((t /= d/2 ) < 1) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 292); + _yuitest_coverline("build/anim-easing/anim-easing.js", 307); return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; } - _yuitest_coverline("build/anim-easing/anim-easing.js", 294); + _yuitest_coverline("build/anim-easing/anim-easing.js", 309); return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; }, @@ -421,11 +436,11 @@ return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; * @return {Number} The computed value for the current animation frame */ bounceIn: function (t, b, c, d) { - _yuitest_coverfunc("build/anim-easing/anim-easing.js", "bounceIn", 306); -_yuitest_coverline("build/anim-easing/anim-easing.js", 307); + _yuitest_coverfunc("build/anim-easing/anim-easing.js", "bounceIn", 321); +_yuitest_coverline("build/anim-easing/anim-easing.js", 322); return c - Y.Easing.bounceOut(d-t, 0, c, d) + b; }, - + /** * Bounces off end. * @method bounceOut @@ -436,24 +451,24 @@ return c - Y.Easing.bounceOut(d-t, 0, c, d) + b; * @return {Number} The computed value for the current animation frame */ bounceOut: function (t, b, c, d) { - _yuitest_coverfunc("build/anim-easing/anim-easing.js", "bounceOut", 319); -_yuitest_coverline("build/anim-easing/anim-easing.js", 320); + _yuitest_coverfunc("build/anim-easing/anim-easing.js", "bounceOut", 334); +_yuitest_coverline("build/anim-easing/anim-easing.js", 335); if ((t/=d) < (1/2.75)) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 321); + _yuitest_coverline("build/anim-easing/anim-easing.js", 336); return c*(7.5625*t*t) + b; - } else {_yuitest_coverline("build/anim-easing/anim-easing.js", 322); + } else {_yuitest_coverline("build/anim-easing/anim-easing.js", 337); if (t < (2/2.75)) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 323); + _yuitest_coverline("build/anim-easing/anim-easing.js", 338); return c*(7.5625*(t-=(1.5/2.75))*t + 0.75) + b; - } else {_yuitest_coverline("build/anim-easing/anim-easing.js", 324); + } else {_yuitest_coverline("build/anim-easing/anim-easing.js", 339); if (t < (2.5/2.75)) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 325); + _yuitest_coverline("build/anim-easing/anim-easing.js", 340); return c*(7.5625*(t-=(2.25/2.75))*t + 0.9375) + b; }}} - _yuitest_coverline("build/anim-easing/anim-easing.js", 327); + _yuitest_coverline("build/anim-easing/anim-easing.js", 342); return c*(7.5625*(t-=(2.625/2.75))*t + 0.984375) + b; }, - + /** * Bounces off start and end. * @method bounceBoth @@ -464,19 +479,19 @@ return c*(7.5625*(t-=(2.625/2.75))*t + 0.984375) + b; * @return {Number} The computed value for the current animation frame */ bounceBoth: function (t, b, c, d) { - _yuitest_coverfunc("build/anim-easing/anim-easing.js", "bounceBoth", 339); -_yuitest_coverline("build/anim-easing/anim-easing.js", 340); + _yuitest_coverfunc("build/anim-easing/anim-easing.js", "bounceBoth", 354); +_yuitest_coverline("build/anim-easing/anim-easing.js", 355); if (t < d/2) { - _yuitest_coverline("build/anim-easing/anim-easing.js", 341); + _yuitest_coverline("build/anim-easing/anim-easing.js", 356); return Y.Easing.bounceIn(t * 2, 0, c, d) * 0.5 + b; } - _yuitest_coverline("build/anim-easing/anim-easing.js", 343); + _yuitest_coverline("build/anim-easing/anim-easing.js", 358); return Y.Easing.bounceOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b; } }; -_yuitest_coverline("build/anim-easing/anim-easing.js", 347); +_yuitest_coverline("build/anim-easing/anim-easing.js", 362); Y.Easing = Easing; -}, '3.7.3', {"requires": ["anim-base"]}); +}, '3.8.0', {"requires": ["anim-base"]}); diff --git a/lib/yuilib/3.7.3/build/anim-easing/anim-easing-debug.js b/lib/yuilib/3.8.0/build/anim-easing/anim-easing-debug.js similarity index 87% rename from lib/yuilib/3.7.3/build/anim-easing/anim-easing-debug.js rename to lib/yuilib/3.8.0/build/anim-easing/anim-easing-debug.js index 50366620f3b..61864b180d9 100644 --- a/lib/yuilib/3.7.3/build/anim-easing/anim-easing-debug.js +++ b/lib/yuilib/3.8.0/build/anim-easing/anim-easing-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -11,13 +11,28 @@ TERMS OF USE - EASING EQUATIONS Open source under the BSD License. Copyright 2001 Robert Penner All rights reserved. -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +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 the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission. + * 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 the author nor the names of 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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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. +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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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. */ /** @@ -43,7 +58,7 @@ var Easing = { easeNone: function (t, b, c, d) { return c*t/d + b; }, - + /** * Begins slowly and accelerates towards end. (quadratic) * @method easeIn @@ -69,7 +84,7 @@ var Easing = { easeOut: function (t, b, c, d) { return -c *(t/=d)*(t-2) + b; }, - + /** * Begins slowly and decelerates towards end. (quadratic) * @method easeBoth @@ -80,13 +95,13 @@ var Easing = { * @return {Number} The computed value for the current animation frame */ easeBoth: function (t, b, c, d) { - if ((t/=d/2) < 1) { + if ((t /= d/2) < 1) { return c/2*t*t + b; } - + return -c/2 * ((--t)*(t-2) - 1) + b; }, - + /** * Begins slowly and accelerates towards end. (quartic) * @method easeInStrong @@ -99,7 +114,7 @@ var Easing = { easeInStrong: function (t, b, c, d) { return c*(t/=d)*t*t*t + b; }, - + /** * Begins quickly and decelerates towards end. (quartic) * @method easeOutStrong @@ -112,7 +127,7 @@ var Easing = { easeOutStrong: function (t, b, c, d) { return -c * ((t=t/d-1)*t*t*t - 1) + b; }, - + /** * Begins slowly and decelerates towards end. (quartic) * @method easeBothStrong @@ -123,10 +138,10 @@ var Easing = { * @return {Number} The computed value for the current animation frame */ easeBothStrong: function (t, b, c, d) { - if ((t/=d/2) < 1) { + if ((t /= d/2) < 1) { return c/2*t*t*t*t + b; } - + return -c/2 * ((t-=2)*t*t*t - 2) + b; }, @@ -153,15 +168,15 @@ var Easing = { if (!p) { p = d* 0.3; } - + if (!a || a < Math.abs(c)) { - a = c; + a = c; s = p/4; } else { s = p/(2*Math.PI) * Math.asin (c/a); } - + return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; }, @@ -187,7 +202,7 @@ var Easing = { if (!p) { p=d * 0.3; } - + if (!a || a < Math.abs(c)) { a = c; s = p / 4; @@ -195,10 +210,10 @@ var Easing = { else { s = p/(2*Math.PI) * Math.asin (c/a); } - + return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; }, - + /** * Snap both elastic effect. * @method elasticBoth @@ -215,28 +230,28 @@ var Easing = { if (t === 0) { return b; } - + if ( (t /= d/2) === 2 ) { return b+c; } - + if (!p) { p = d*(0.3*1.5); } - + if ( !a || a < Math.abs(c) ) { - a = c; + a = c; s = p/4; } else { s = p/(2*Math.PI) * Math.asin (c/a); } - + if (t < 1) { - return -0.5*(a*Math.pow(2,10*(t-=1)) * + return -0.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; } - return a*Math.pow(2,-10*(t-=1)) * + return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*0.5 + c + b; }, @@ -277,9 +292,9 @@ var Easing = { } return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; }, - + /** - * Backtracks slightly, then reverses direction, overshoots end, + * Backtracks slightly, then reverses direction, overshoots end, * then reverses and comes back to end. * @method backBoth * @param {Number} t Time value used to compute current value @@ -291,9 +306,9 @@ var Easing = { */ backBoth: function (t, b, c, d, s) { if (typeof s === 'undefined') { - s = 1.70158; + s = 1.70158; } - + if ((t /= d/2 ) < 1) { return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; } @@ -312,7 +327,7 @@ var Easing = { bounceIn: function (t, b, c, d) { return c - Y.Easing.bounceOut(d-t, 0, c, d) + b; }, - + /** * Bounces off end. * @method bounceOut @@ -332,7 +347,7 @@ var Easing = { } return c*(7.5625*(t-=(2.625/2.75))*t + 0.984375) + b; }, - + /** * Bounces off start and end. * @method bounceBoth @@ -353,4 +368,4 @@ var Easing = { Y.Easing = Easing; -}, '3.7.3', {"requires": ["anim-base"]}); +}, '3.8.0', {"requires": ["anim-base"]}); diff --git a/lib/yuilib/3.7.3/build/anim-easing/anim-easing-min.js b/lib/yuilib/3.8.0/build/anim-easing/anim-easing-min.js similarity index 95% rename from lib/yuilib/3.7.3/build/anim-easing/anim-easing-min.js rename to lib/yuilib/3.8.0/build/anim-easing/anim-easing-min.js index 62269bf53c2..85cb05db632 100644 --- a/lib/yuilib/3.7.3/build/anim-easing/anim-easing-min.js +++ b/lib/yuilib/3.8.0/build/anim-easing/anim-easing-min.js @@ -1,7 +1,7 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ -YUI.add("anim-easing",function(e,t){var n={easeNone:function(e,t,n,r){return n*e/r+t},easeIn:function(e,t,n,r){return n*(e/=r)*e+t},easeOut:function(e,t,n,r){return-n*(e/=r)*(e-2)+t},easeBoth:function(e,t,n,r){return(e/=r/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t},easeInStrong:function(e,t,n,r){return n*(e/=r)*e*e*e+t},easeOutStrong:function(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t},easeBothStrong:function(e,t,n,r){return(e/=r/2)<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t},elasticIn:function(e,t,n,r,i,s){var o;return e===0?t:(e/=r)===1?t+n:(s||(s=r*.3),!i||iscroll property in to"," * and from attributes."," * @module anim"," * @submodule anim-scroll"," */","","var NUM = Number;","","//TODO: deprecate for scrollTop/Left properties?","Y.Anim.behaviors.scroll = {"," set: function(anim, att, from, to, elapsed, duration, fn) {"," var"," node = anim._node, "," val = (["," fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration),"," fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)"," ]);",""," if (val[0]) {"," node.set('scrollLeft', val[0]);"," }",""," if (val[1]) {"," node.set('scrollTop', val[1]);"," }"," },"," get: function(anim) {"," var node = anim._node;"," return [node.get('scrollLeft'), node.get('scrollTop')];"," }","};","","","","}, '3.7.3', {\"requires\": [\"anim-base\"]});"]; +_yuitest_coverage["build/anim-scroll/anim-scroll.js"].code=["YUI.add('anim-scroll', function (Y, NAME) {","","/**"," * Adds support for the scroll property in to"," * and from attributes."," * @module anim"," * @submodule anim-scroll"," */","","var NUM = Number;","","//TODO: deprecate for scrollTop/Left properties?","Y.Anim.behaviors.scroll = {"," set: function(anim, att, from, to, elapsed, duration, fn) {"," var"," node = anim._node,"," val = (["," fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration),"," fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)"," ]);",""," if (val[0]) {"," node.set('scrollLeft', val[0]);"," }",""," if (val[1]) {"," node.set('scrollTop', val[1]);"," }"," },"," get: function(anim) {"," var node = anim._node;"," return [node.get('scrollLeft'), node.get('scrollTop')];"," }","};","","","","}, '3.8.0', {\"requires\": [\"anim-base\"]});"]; _yuitest_coverage["build/anim-scroll/anim-scroll.js"].lines = {"1":0,"10":0,"13":0,"15":0,"22":0,"23":0,"26":0,"27":0,"31":0,"32":0}; _yuitest_coverage["build/anim-scroll/anim-scroll.js"].functions = {"set:14":0,"get:30":0,"(anonymous 1):1":0}; _yuitest_coverage["build/anim-scroll/anim-scroll.js"].coveredLines = 10; @@ -58,7 +58,7 @@ Y.Anim.behaviors.scroll = { _yuitest_coverfunc("build/anim-scroll/anim-scroll.js", "set", 14); _yuitest_coverline("build/anim-scroll/anim-scroll.js", 15); var - node = anim._node, + node = anim._node, val = ([ fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration), fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration) @@ -87,4 +87,4 @@ return [node.get('scrollLeft'), node.get('scrollTop')]; -}, '3.7.3', {"requires": ["anim-base"]}); +}, '3.8.0', {"requires": ["anim-base"]}); diff --git a/lib/yuilib/3.7.3/build/anim-scroll/anim-scroll-debug.js b/lib/yuilib/3.8.0/build/anim-scroll/anim-scroll-debug.js similarity index 90% rename from lib/yuilib/3.7.3/build/anim-scroll/anim-scroll-debug.js rename to lib/yuilib/3.8.0/build/anim-scroll/anim-scroll-debug.js index 02759d701a8..a85a90e0610 100644 --- a/lib/yuilib/3.7.3/build/anim-scroll/anim-scroll-debug.js +++ b/lib/yuilib/3.8.0/build/anim-scroll/anim-scroll-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -19,7 +19,7 @@ var NUM = Number; Y.Anim.behaviors.scroll = { set: function(anim, att, from, to, elapsed, duration, fn) { var - node = anim._node, + node = anim._node, val = ([ fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration), fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration) @@ -41,4 +41,4 @@ Y.Anim.behaviors.scroll = { -}, '3.7.3', {"requires": ["anim-base"]}); +}, '3.8.0', {"requires": ["anim-base"]}); diff --git a/lib/yuilib/3.7.3/build/anim-scroll/anim-scroll-min.js b/lib/yuilib/3.8.0/build/anim-scroll/anim-scroll-min.js similarity index 87% rename from lib/yuilib/3.7.3/build/anim-scroll/anim-scroll-min.js rename to lib/yuilib/3.8.0/build/anim-scroll/anim-scroll-min.js index 5e8b6d22e1e..be0a7c3ca3c 100644 --- a/lib/yuilib/3.7.3/build/anim-scroll/anim-scroll-min.js +++ b/lib/yuilib/3.8.0/build/anim-scroll/anim-scroll-min.js @@ -1,7 +1,7 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ -YUI.add("anim-scroll",function(e,t){var n=Number;e.Anim.behaviors.scroll={set:function(e,t,r,i,s,o,u){var a=e._node,f=[u(s,n(r[0]),n(i[0])-n(r[0]),o),u(s,n(r[1]),n(i[1])-n(r[1]),o)];f[0]&&a.set("scrollLeft",f[0]),f[1]&&a.set("scrollTop",f[1])},get:function(e){var t=e._node;return[t.get("scrollLeft"),t.get("scrollTop")]}}},"3.7.3",{requires:["anim-base"]}); +YUI.add("anim-scroll",function(e,t){var n=Number;e.Anim.behaviors.scroll={set:function(e,t,r,i,s,o,u){var a=e._node,f=[u(s,n(r[0]),n(i[0])-n(r[0]),o),u(s,n(r[1]),n(i[1])-n(r[1]),o)];f[0]&&a.set("scrollLeft",f[0]),f[1]&&a.set("scrollTop",f[1])},get:function(e){var t=e._node;return[t.get("scrollLeft"),t.get("scrollTop")]}}},"3.8.0",{requires:["anim-base"]}); diff --git a/lib/yuilib/3.7.3/build/anim-scroll/anim-scroll.js b/lib/yuilib/3.8.0/build/anim-scroll/anim-scroll.js similarity index 90% rename from lib/yuilib/3.7.3/build/anim-scroll/anim-scroll.js rename to lib/yuilib/3.8.0/build/anim-scroll/anim-scroll.js index 02759d701a8..a85a90e0610 100644 --- a/lib/yuilib/3.7.3/build/anim-scroll/anim-scroll.js +++ b/lib/yuilib/3.8.0/build/anim-scroll/anim-scroll.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -19,7 +19,7 @@ var NUM = Number; Y.Anim.behaviors.scroll = { set: function(anim, att, from, to, elapsed, duration, fn) { var - node = anim._node, + node = anim._node, val = ([ fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration), fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration) @@ -41,4 +41,4 @@ Y.Anim.behaviors.scroll = { -}, '3.7.3', {"requires": ["anim-base"]}); +}, '3.8.0', {"requires": ["anim-base"]}); diff --git a/lib/yuilib/3.7.3/build/anim-shape-transform/anim-shape-transform-coverage.js b/lib/yuilib/3.8.0/build/anim-shape-transform/anim-shape-transform-coverage.js similarity index 98% rename from lib/yuilib/3.7.3/build/anim-shape-transform/anim-shape-transform-coverage.js rename to lib/yuilib/3.8.0/build/anim-shape-transform/anim-shape-transform-coverage.js index f3c7d02f6f8..88eb3c3da0b 100644 --- a/lib/yuilib/3.7.3/build/anim-shape-transform/anim-shape-transform-coverage.js +++ b/lib/yuilib/3.8.0/build/anim-shape-transform/anim-shape-transform-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,7 +32,7 @@ _yuitest_coverage["build/anim-shape-transform/anim-shape-transform.js"] = { path: "build/anim-shape-transform/anim-shape-transform.js", code: [] }; -_yuitest_coverage["build/anim-shape-transform/anim-shape-transform.js"].code=["YUI.add('anim-shape-transform', function (Y, NAME) {","","/**"," * Adds support for the transform attribute of Graphic"," * Shape instances."," * @module anim"," * @submodule anim-shape-transform"," */"," var NUM = Number,"," TO,"," TOSTRING;",""," Y.Anim.behaviors.transform = {"," set: function(anim, att, from, to, elapsed, duration, fn) {"," var node = anim._node,"," transform = \"\","," transformTo,"," transformFrom,"," toArgs,"," fromArgs,"," i = 0,"," j,"," argLen,"," len;"," to = TO;"," len = TO.length;"," for(; i < len; ++i)"," {"," toArgs = to[i].concat();"," fromArgs = from[i].concat();"," transformTo = toArgs.shift();"," transformFrom = fromArgs.shift();"," argLen = toArgs.length;"," transform += transformTo + \"(\";"," for(j = 0; j < argLen; ++j)"," {"," transform += fn(elapsed, NUM(fromArgs[j]), NUM(toArgs[j]) - NUM(fromArgs[j]), duration);"," if(j < argLen - 1)"," {"," transform += \", \";"," }"," }"," transform += \");\";"," }"," if(transform)"," {"," node.set('transform', transform);"," }"," node._transform = TOSTRING;"," },"," "," get: function(anim) {"," var node = anim._node,"," fromMatrix = node.matrix,"," toAttr = anim.get(\"to\") || {},"," toString = anim.get(\"to\").transform,"," fromString = node.get(\"transform\"),"," toArray = Y.MatrixUtil.getTransformArray(toString),"," fromArray = fromString ? Y.MatrixUtil.getTransformArray(fromString) : null,"," toMatrix,"," i,"," len,"," transformFunction,"," from;"," if(toArray)"," {"," if(!fromArray || fromArray.length < 1)"," {"," fromArray = [];"," len = toArray.length;"," for(i = 0; i < len; ++i)"," {"," transformFunction = toArray[i][0];"," fromArray[i] = Y.MatrixUtil.getTransformFunctionArray(transformFunction);"," }"," TO = toArray;"," from = fromArray;"," }"," else if(Y.MatrixUtil.compareTransformSequence(toArray, fromArray))"," {"," TO = toArray;"," from = fromArray;"," }"," else"," {"," toMatrix = new Y.Matrix();"," len = toArray.length;"," for(i = 0; i < len; ++i)"," {"," transformFunction = toArray[i].shift();"," transformFunction = transformFunction == \"matrix\" ? \"multiply\" : transformFunction;"," toMatrix[transformFunction].apply(toMatrix, toArray[i]); "," }",""," TO = toMatrix.decompose();"," from = fromMatrix.decompose();"," }"," }"," TOSTRING = toString;"," return from;"," }"," }; ","","","","}, '3.7.3', {\"requires\": [\"anim-base\", \"anim-easing\", \"matrix\"]});"]; +_yuitest_coverage["build/anim-shape-transform/anim-shape-transform.js"].code=["YUI.add('anim-shape-transform', function (Y, NAME) {","","/**"," * Adds support for the transform attribute of Graphic"," * Shape instances."," * @module anim"," * @submodule anim-shape-transform"," */"," var NUM = Number,"," TO,"," TOSTRING;",""," Y.Anim.behaviors.transform = {"," set: function(anim, att, from, to, elapsed, duration, fn) {"," var node = anim._node,"," transform = \"\","," transformTo,"," transformFrom,"," toArgs,"," fromArgs,"," i = 0,"," j,"," argLen,"," len;"," to = TO;"," len = TO.length;"," for(; i < len; ++i)"," {"," toArgs = to[i].concat();"," fromArgs = from[i].concat();"," transformTo = toArgs.shift();"," transformFrom = fromArgs.shift();"," argLen = toArgs.length;"," transform += transformTo + \"(\";"," for(j = 0; j < argLen; ++j)"," {"," transform += fn(elapsed, NUM(fromArgs[j]), NUM(toArgs[j]) - NUM(fromArgs[j]), duration);"," if(j < argLen - 1)"," {"," transform += \", \";"," }"," }"," transform += \");\";"," }"," if(transform)"," {"," node.set('transform', transform);"," }"," node._transform = TOSTRING;"," },"," "," get: function(anim) {"," var node = anim._node,"," fromMatrix = node.matrix,"," toAttr = anim.get(\"to\") || {},"," toString = anim.get(\"to\").transform,"," fromString = node.get(\"transform\"),"," toArray = Y.MatrixUtil.getTransformArray(toString),"," fromArray = fromString ? Y.MatrixUtil.getTransformArray(fromString) : null,"," toMatrix,"," i,"," len,"," transformFunction,"," from;"," if(toArray)"," {"," if(!fromArray || fromArray.length < 1)"," {"," fromArray = [];"," len = toArray.length;"," for(i = 0; i < len; ++i)"," {"," transformFunction = toArray[i][0];"," fromArray[i] = Y.MatrixUtil.getTransformFunctionArray(transformFunction);"," }"," TO = toArray;"," from = fromArray;"," }"," else if(Y.MatrixUtil.compareTransformSequence(toArray, fromArray))"," {"," TO = toArray;"," from = fromArray;"," }"," else"," {"," toMatrix = new Y.Matrix();"," len = toArray.length;"," for(i = 0; i < len; ++i)"," {"," transformFunction = toArray[i].shift();"," transformFunction = transformFunction == \"matrix\" ? \"multiply\" : transformFunction;"," toMatrix[transformFunction].apply(toMatrix, toArray[i]); "," }",""," TO = toMatrix.decompose();"," from = fromMatrix.decompose();"," }"," }"," TOSTRING = toString;"," return from;"," }"," }; ","","","","}, '3.8.0', {\"requires\": [\"anim-base\", \"anim-easing\", \"matrix\"]});"]; _yuitest_coverage["build/anim-shape-transform/anim-shape-transform.js"].lines = {"1":0,"9":0,"13":0,"15":0,"25":0,"26":0,"27":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"37":0,"38":0,"40":0,"43":0,"45":0,"47":0,"49":0,"53":0,"65":0,"67":0,"69":0,"70":0,"71":0,"73":0,"74":0,"76":0,"77":0,"79":0,"81":0,"82":0,"86":0,"87":0,"88":0,"90":0,"91":0,"92":0,"95":0,"96":0,"99":0,"100":0}; _yuitest_coverage["build/anim-shape-transform/anim-shape-transform.js"].functions = {"set:14":0,"get:52":0,"(anonymous 1):1":0}; _yuitest_coverage["build/anim-shape-transform/anim-shape-transform.js"].coveredLines = 44; @@ -189,4 +189,4 @@ return from; -}, '3.7.3', {"requires": ["anim-base", "anim-easing", "matrix"]}); +}, '3.8.0', {"requires": ["anim-base", "anim-easing", "matrix"]}); diff --git a/lib/yuilib/3.7.3/build/anim-shape/anim-shape-coverage.js b/lib/yuilib/3.8.0/build/anim-shape/anim-shape-coverage.js similarity index 55% rename from lib/yuilib/3.7.3/build/anim-shape/anim-shape-coverage.js rename to lib/yuilib/3.8.0/build/anim-shape/anim-shape-coverage.js index 57539b1e61d..c0456c0aa68 100644 --- a/lib/yuilib/3.7.3/build/anim-shape/anim-shape-coverage.js +++ b/lib/yuilib/3.8.0/build/anim-shape/anim-shape-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,9 +32,9 @@ _yuitest_coverage["build/anim-shape/anim-shape.js"] = { path: "build/anim-shape/anim-shape.js", code: [] }; -_yuitest_coverage["build/anim-shape/anim-shape.js"].code=["YUI.add('anim-shape', function (Y, NAME) {","","/**"," * Adds support for the transform attribute of Graphic"," * Shape instances."," * @module anim"," * @submodule anim-shape-transform"," * @deprecated Use anim-shape instead."," */","/**"," * Adds support for the transform, fill, and attributes of Graphic"," * Shape instances. The anim-shape submodule can be used for all animations involving"," * Graphic Shape attributes. "," * "," * @module anim"," * @submodule anim-shape"," */"," var NUM = Number,"," TO,"," TOSTRING,"," COLOR = \"color\","," STOPS = \"stops\","," TYPE = \"type\","," GETUPDATEDSTOPS = function(anim, from, to, elapsed, duration, fn)"," {"," var i = 0,"," getUpdatedColorValue = Y.Anim.getUpdatedColorValue,"," toStop,"," fromStop,"," prop,"," len = to.length,"," color,"," opacity,"," offset,"," rotation,"," r,"," fx,"," fy,"," cx,"," cy,"," stops = [],"," stop;"," for(; i < len; i = i + 1)"," {"," toStop = to[i];"," fromStop = from[i];"," stop = {};"," for(prop in toStop)"," {"," if(toStop.hasOwnProperty(prop))"," {"," if(prop == COLOR)"," {"," stop[prop] = Y.Color.toHex(getUpdatedColorValue(Y.Color.toHex(fromStop[prop]), Y.Color.toHex(toStop[prop]), elapsed, duration, fn));"," }"," else"," {"," stop[prop] = fn(elapsed, NUM(fromStop[prop]), NUM(toStop[prop]) - NUM(fromStop[prop]), duration);"," }"," }"," }"," stops.push(stop);"," }"," return stops;"," },"," FILLANDSTROKEBEHAVIOR = {"," set: function(anim, att, from, to, elapsed, duration, fn) {"," var i,"," updated = {},"," getUpdatedColorValue = Y.Anim.getUpdatedColorValue,"," getUpdatedStops = GETUPDATEDSTOPS;"," for(i in to)"," {"," if(to.hasOwnProperty(i) && i != TYPE)"," {"," switch(i)"," {"," case COLOR :"," updated[i] = getUpdatedColorValue(from[i], to[i], elapsed, duration, fn);"," break;"," case STOPS :"," updated[i] = getUpdatedStops(anim, from[i], to[i], elapsed, duration, fn);"," break;"," default :"," updated[i] = fn(elapsed, NUM(from[i]), NUM(to[i]) - NUM(from[i]), duration);"," break;"," }"," }"," }"," anim._node.set(att, updated);"," }"," };"," Y.Anim.behaviors.fill = FILLANDSTROKEBEHAVIOR;"," Y.Anim.behaviors.stroke = FILLANDSTROKEBEHAVIOR; ",""," Y.Anim.behaviors.transform = {"," set: function(anim, att, from, to, elapsed, duration, fn) {"," var node = anim._node,"," transform = \"\","," transformTo,"," transformFrom,"," toArgs,"," fromArgs,"," i = 0,"," j,"," argLen,"," len;"," to = TO;"," len = TO.length;"," for(; i < len; ++i)"," {"," toArgs = to[i].concat();"," fromArgs = from[i].concat();"," transformTo = toArgs.shift();"," transformFrom = fromArgs.shift();"," argLen = toArgs.length;"," transform += transformTo + \"(\";"," for(j = 0; j < argLen; ++j)"," {"," transform += fn(elapsed, NUM(fromArgs[j]), NUM(toArgs[j]) - NUM(fromArgs[j]), duration);"," if(j < argLen - 1)"," {"," transform += \", \";"," }"," }"," transform += \");\";"," }"," if(transform)"," {"," node.set('transform', transform);"," }"," node._transform = TOSTRING;"," },"," "," get: function(anim) {"," var node = anim._node,"," fromMatrix = node.matrix,"," toAttr = anim.get(\"to\") || {},"," toString = anim.get(\"to\").transform,"," fromString = node.get(\"transform\"),"," toArray = Y.MatrixUtil.getTransformArray(toString),"," fromArray = fromString ? Y.MatrixUtil.getTransformArray(fromString) : null,"," toMatrix,"," i,"," len,"," transformFunction,"," from;"," if(toArray)"," {"," if(!fromArray || fromArray.length < 1)"," {"," fromArray = [];"," len = toArray.length;"," for(i = 0; i < len; ++i)"," {"," transformFunction = toArray[i][0];"," fromArray[i] = Y.MatrixUtil.getTransformFunctionArray(transformFunction);"," }"," TO = toArray;"," from = fromArray;"," }"," else if(Y.MatrixUtil.compareTransformSequence(toArray, fromArray))"," {"," TO = toArray;"," from = fromArray;"," }"," else"," {"," toMatrix = new Y.Matrix();"," len = toArray.length;"," for(i = 0; i < len; ++i)"," {"," transformFunction = toArray[i].shift();"," transformFunction = transformFunction == \"matrix\" ? \"multiply\" : transformFunction;"," toMatrix[transformFunction].apply(toMatrix, toArray[i]); "," }",""," TO = toMatrix.decompose();"," from = fromMatrix.decompose();"," }"," }"," TOSTRING = toString;"," return from;"," }"," }; ","","","","}, '3.7.3', {\"requires\": [\"anim-base\", \"anim-easing\", \"anim-color\", \"matrix\"]});"]; -_yuitest_coverage["build/anim-shape/anim-shape.js"].lines = {"1":0,"18":0,"26":0,"43":0,"45":0,"46":0,"47":0,"48":0,"50":0,"52":0,"54":0,"58":0,"62":0,"64":0,"68":0,"72":0,"74":0,"76":0,"79":0,"80":0,"82":0,"83":0,"85":0,"86":0,"90":0,"93":0,"94":0,"96":0,"98":0,"108":0,"109":0,"110":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"120":0,"121":0,"123":0,"126":0,"128":0,"130":0,"132":0,"136":0,"148":0,"150":0,"152":0,"153":0,"154":0,"156":0,"157":0,"159":0,"160":0,"162":0,"164":0,"165":0,"169":0,"170":0,"171":0,"173":0,"174":0,"175":0,"178":0,"179":0,"182":0,"183":0}; -_yuitest_coverage["build/anim-shape/anim-shape.js"].functions = {"GETUPDATEDSTOPS:24":0,"set:67":0,"set:97":0,"get:135":0,"(anonymous 1):1":0}; +_yuitest_coverage["build/anim-shape/anim-shape.js"].code=["YUI.add('anim-shape', function (Y, NAME) {","","/**"," * Adds support for the transform attribute of Graphic"," * Shape instances."," * @module anim"," * @submodule anim-shape-transform"," * @deprecated Use anim-shape instead."," */","/**"," * Adds support for the transform, fill, and attributes of Graphic"," * Shape instances. The anim-shape submodule can be used for all animations involving"," * Graphic Shape attributes."," *"," * @module anim"," * @submodule anim-shape"," */"," var NUM = Number,"," TO,"," TOSTRING,"," COLOR = \"color\","," STOPS = \"stops\","," TYPE = \"type\","," GETUPDATEDSTOPS = function(anim, from, to, elapsed, duration, fn)"," {"," var i = 0,"," getUpdatedColorValue = Y.Anim.getUpdatedColorValue,"," toStop,"," fromStop,"," prop,"," len = to.length,"," stops = [],"," stop;"," for(; i < len; i = i + 1)"," {"," toStop = to[i];"," fromStop = from[i];"," stop = {};"," for(prop in toStop)"," {"," if(toStop.hasOwnProperty(prop))"," {"," if(prop === COLOR)"," {"," stop[prop] = Y.Color.toHex(getUpdatedColorValue("," Y.Color.toHex(fromStop[prop]),"," Y.Color.toHex(toStop[prop]),"," elapsed,"," duration,"," fn"," ));"," }"," else"," {"," stop[prop] = fn(elapsed, NUM(fromStop[prop]), NUM(toStop[prop]) - NUM(fromStop[prop]), duration);"," }"," }"," }"," stops.push(stop);"," }"," return stops;"," },"," FILLANDSTROKEBEHAVIOR = {"," set: function(anim, att, from, to, elapsed, duration, fn) {"," var i,"," updated = {},"," getUpdatedColorValue = Y.Anim.getUpdatedColorValue,"," getUpdatedStops = GETUPDATEDSTOPS;"," for(i in to)"," {"," if(to.hasOwnProperty(i) && i !== TYPE)"," {"," switch(i)"," {"," case COLOR :"," updated[i] = getUpdatedColorValue(from[i], to[i], elapsed, duration, fn);"," break;"," case STOPS :"," updated[i] = getUpdatedStops(anim, from[i], to[i], elapsed, duration, fn);"," break;"," default :"," updated[i] = fn(elapsed, NUM(from[i]), NUM(to[i]) - NUM(from[i]), duration);"," break;"," }"," }"," }"," anim._node.set(att, updated);"," }"," };"," Y.Anim.behaviors.fill = FILLANDSTROKEBEHAVIOR;"," Y.Anim.behaviors.stroke = FILLANDSTROKEBEHAVIOR;",""," Y.Anim.behaviors.transform = {"," set: function(anim, att, from, to, elapsed, duration, fn) {"," var node = anim._node,"," transform = \"\","," transformTo,"," transformFrom,"," toArgs,"," fromArgs,"," i = 0,"," j,"," argLen,"," len;"," to = TO;"," len = TO.length;"," for(; i < len; ++i)"," {"," toArgs = to[i].concat();"," fromArgs = from[i].concat();"," transformTo = toArgs.shift();"," transformFrom = fromArgs.shift();"," argLen = toArgs.length;"," transform += transformTo + \"(\";"," for(j = 0; j < argLen; ++j)"," {"," transform += fn(elapsed, NUM(fromArgs[j]), NUM(toArgs[j]) - NUM(fromArgs[j]), duration);"," if(j < argLen - 1)"," {"," transform += \", \";"," }"," }"," transform += \");\";"," }"," if(transform)"," {"," node.set('transform', transform);"," }"," node._transform = TOSTRING;"," },",""," get: function(anim) {"," var node = anim._node,"," fromMatrix = node.matrix,"," toString = anim.get(\"to\").transform,"," fromString = node.get(\"transform\"),"," toArray = Y.MatrixUtil.getTransformArray(toString),"," fromArray = fromString ? Y.MatrixUtil.getTransformArray(fromString) : null,"," toMatrix,"," i,"," len,"," transformFunction,"," from;"," if(toArray)"," {"," if(!fromArray || fromArray.length < 1)"," {"," fromArray = [];"," len = toArray.length;"," for(i = 0; i < len; ++i)"," {"," transformFunction = toArray[i][0];"," fromArray[i] = Y.MatrixUtil.getTransformFunctionArray(transformFunction);"," }"," TO = toArray;"," from = fromArray;"," }"," else if(Y.MatrixUtil.compareTransformSequence(toArray, fromArray))"," {"," TO = toArray;"," from = fromArray;"," }"," else"," {"," toMatrix = new Y.Matrix();"," len = toArray.length;"," for(i = 0; i < len; ++i)"," {"," transformFunction = toArray[i].shift();"," transformFunction = transformFunction === \"matrix\" ? \"multiply\" : transformFunction;"," toMatrix[transformFunction].apply(toMatrix, toArray[i]);"," }",""," TO = toMatrix.decompose();"," from = fromMatrix.decompose();"," }"," }"," TOSTRING = toString;"," return from;"," }"," };","","","","}, '3.8.0', {\"requires\": [\"anim-base\", \"anim-easing\", \"anim-color\", \"matrix\"]});"]; +_yuitest_coverage["build/anim-shape/anim-shape.js"].lines = {"1":0,"18":0,"26":0,"34":0,"36":0,"37":0,"38":0,"39":0,"41":0,"43":0,"45":0,"55":0,"59":0,"61":0,"65":0,"69":0,"71":0,"73":0,"76":0,"77":0,"79":0,"80":0,"82":0,"83":0,"87":0,"90":0,"91":0,"93":0,"95":0,"105":0,"106":0,"107":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"117":0,"118":0,"120":0,"123":0,"125":0,"127":0,"129":0,"133":0,"144":0,"146":0,"148":0,"149":0,"150":0,"152":0,"153":0,"155":0,"156":0,"158":0,"160":0,"161":0,"165":0,"166":0,"167":0,"169":0,"170":0,"171":0,"174":0,"175":0,"178":0,"179":0}; +_yuitest_coverage["build/anim-shape/anim-shape.js"].functions = {"GETUPDATEDSTOPS:24":0,"set:64":0,"set:94":0,"get:132":0,"(anonymous 1):1":0}; _yuitest_coverage["build/anim-shape/anim-shape.js"].coveredLines = 69; _yuitest_coverage["build/anim-shape/anim-shape.js"].coveredFunctions = 5; _yuitest_coverline("build/anim-shape/anim-shape.js", 1); @@ -50,8 +50,8 @@ YUI.add('anim-shape', function (Y, NAME) { /** * Adds support for the transform, fill, and attributes of Graphic * Shape instances. The anim-shape submodule can be used for all animations involving - * Graphic Shape attributes. - * + * Graphic Shape attributes. + * * @module anim * @submodule anim-shape */ @@ -73,100 +73,97 @@ var i = 0, fromStop, prop, len = to.length, - color, - opacity, - offset, - rotation, - r, - fx, - fy, - cx, - cy, stops = [], stop; - _yuitest_coverline("build/anim-shape/anim-shape.js", 43); + _yuitest_coverline("build/anim-shape/anim-shape.js", 34); for(; i < len; i = i + 1) { - _yuitest_coverline("build/anim-shape/anim-shape.js", 45); + _yuitest_coverline("build/anim-shape/anim-shape.js", 36); toStop = to[i]; - _yuitest_coverline("build/anim-shape/anim-shape.js", 46); + _yuitest_coverline("build/anim-shape/anim-shape.js", 37); fromStop = from[i]; - _yuitest_coverline("build/anim-shape/anim-shape.js", 47); + _yuitest_coverline("build/anim-shape/anim-shape.js", 38); stop = {}; - _yuitest_coverline("build/anim-shape/anim-shape.js", 48); + _yuitest_coverline("build/anim-shape/anim-shape.js", 39); for(prop in toStop) { - _yuitest_coverline("build/anim-shape/anim-shape.js", 50); + _yuitest_coverline("build/anim-shape/anim-shape.js", 41); if(toStop.hasOwnProperty(prop)) { - _yuitest_coverline("build/anim-shape/anim-shape.js", 52); -if(prop == COLOR) + _yuitest_coverline("build/anim-shape/anim-shape.js", 43); +if(prop === COLOR) { - _yuitest_coverline("build/anim-shape/anim-shape.js", 54); -stop[prop] = Y.Color.toHex(getUpdatedColorValue(Y.Color.toHex(fromStop[prop]), Y.Color.toHex(toStop[prop]), elapsed, duration, fn)); + _yuitest_coverline("build/anim-shape/anim-shape.js", 45); +stop[prop] = Y.Color.toHex(getUpdatedColorValue( + Y.Color.toHex(fromStop[prop]), + Y.Color.toHex(toStop[prop]), + elapsed, + duration, + fn + )); } else { - _yuitest_coverline("build/anim-shape/anim-shape.js", 58); + _yuitest_coverline("build/anim-shape/anim-shape.js", 55); stop[prop] = fn(elapsed, NUM(fromStop[prop]), NUM(toStop[prop]) - NUM(fromStop[prop]), duration); } } } - _yuitest_coverline("build/anim-shape/anim-shape.js", 62); + _yuitest_coverline("build/anim-shape/anim-shape.js", 59); stops.push(stop); } - _yuitest_coverline("build/anim-shape/anim-shape.js", 64); + _yuitest_coverline("build/anim-shape/anim-shape.js", 61); return stops; }, FILLANDSTROKEBEHAVIOR = { set: function(anim, att, from, to, elapsed, duration, fn) { - _yuitest_coverfunc("build/anim-shape/anim-shape.js", "set", 67); -_yuitest_coverline("build/anim-shape/anim-shape.js", 68); + _yuitest_coverfunc("build/anim-shape/anim-shape.js", "set", 64); +_yuitest_coverline("build/anim-shape/anim-shape.js", 65); var i, updated = {}, getUpdatedColorValue = Y.Anim.getUpdatedColorValue, getUpdatedStops = GETUPDATEDSTOPS; - _yuitest_coverline("build/anim-shape/anim-shape.js", 72); + _yuitest_coverline("build/anim-shape/anim-shape.js", 69); for(i in to) { - _yuitest_coverline("build/anim-shape/anim-shape.js", 74); -if(to.hasOwnProperty(i) && i != TYPE) + _yuitest_coverline("build/anim-shape/anim-shape.js", 71); +if(to.hasOwnProperty(i) && i !== TYPE) { - _yuitest_coverline("build/anim-shape/anim-shape.js", 76); + _yuitest_coverline("build/anim-shape/anim-shape.js", 73); switch(i) { case COLOR : - _yuitest_coverline("build/anim-shape/anim-shape.js", 79); + _yuitest_coverline("build/anim-shape/anim-shape.js", 76); updated[i] = getUpdatedColorValue(from[i], to[i], elapsed, duration, fn); - _yuitest_coverline("build/anim-shape/anim-shape.js", 80); + _yuitest_coverline("build/anim-shape/anim-shape.js", 77); break; case STOPS : - _yuitest_coverline("build/anim-shape/anim-shape.js", 82); + _yuitest_coverline("build/anim-shape/anim-shape.js", 79); updated[i] = getUpdatedStops(anim, from[i], to[i], elapsed, duration, fn); - _yuitest_coverline("build/anim-shape/anim-shape.js", 83); + _yuitest_coverline("build/anim-shape/anim-shape.js", 80); break; default : - _yuitest_coverline("build/anim-shape/anim-shape.js", 85); + _yuitest_coverline("build/anim-shape/anim-shape.js", 82); updated[i] = fn(elapsed, NUM(from[i]), NUM(to[i]) - NUM(from[i]), duration); - _yuitest_coverline("build/anim-shape/anim-shape.js", 86); + _yuitest_coverline("build/anim-shape/anim-shape.js", 83); break; } } } - _yuitest_coverline("build/anim-shape/anim-shape.js", 90); + _yuitest_coverline("build/anim-shape/anim-shape.js", 87); anim._node.set(att, updated); } }; - _yuitest_coverline("build/anim-shape/anim-shape.js", 93); + _yuitest_coverline("build/anim-shape/anim-shape.js", 90); Y.Anim.behaviors.fill = FILLANDSTROKEBEHAVIOR; - _yuitest_coverline("build/anim-shape/anim-shape.js", 94); -Y.Anim.behaviors.stroke = FILLANDSTROKEBEHAVIOR; + _yuitest_coverline("build/anim-shape/anim-shape.js", 91); +Y.Anim.behaviors.stroke = FILLANDSTROKEBEHAVIOR; - _yuitest_coverline("build/anim-shape/anim-shape.js", 96); + _yuitest_coverline("build/anim-shape/anim-shape.js", 93); Y.Anim.behaviors.transform = { set: function(anim, att, from, to, elapsed, duration, fn) { - _yuitest_coverfunc("build/anim-shape/anim-shape.js", "set", 97); -_yuitest_coverline("build/anim-shape/anim-shape.js", 98); + _yuitest_coverfunc("build/anim-shape/anim-shape.js", "set", 94); +_yuitest_coverline("build/anim-shape/anim-shape.js", 95); var node = anim._node, transform = "", transformTo, @@ -177,56 +174,55 @@ var node = anim._node, j, argLen, len; - _yuitest_coverline("build/anim-shape/anim-shape.js", 108); + _yuitest_coverline("build/anim-shape/anim-shape.js", 105); to = TO; - _yuitest_coverline("build/anim-shape/anim-shape.js", 109); + _yuitest_coverline("build/anim-shape/anim-shape.js", 106); len = TO.length; - _yuitest_coverline("build/anim-shape/anim-shape.js", 110); + _yuitest_coverline("build/anim-shape/anim-shape.js", 107); for(; i < len; ++i) { - _yuitest_coverline("build/anim-shape/anim-shape.js", 112); + _yuitest_coverline("build/anim-shape/anim-shape.js", 109); toArgs = to[i].concat(); - _yuitest_coverline("build/anim-shape/anim-shape.js", 113); + _yuitest_coverline("build/anim-shape/anim-shape.js", 110); fromArgs = from[i].concat(); - _yuitest_coverline("build/anim-shape/anim-shape.js", 114); + _yuitest_coverline("build/anim-shape/anim-shape.js", 111); transformTo = toArgs.shift(); - _yuitest_coverline("build/anim-shape/anim-shape.js", 115); + _yuitest_coverline("build/anim-shape/anim-shape.js", 112); transformFrom = fromArgs.shift(); - _yuitest_coverline("build/anim-shape/anim-shape.js", 116); + _yuitest_coverline("build/anim-shape/anim-shape.js", 113); argLen = toArgs.length; - _yuitest_coverline("build/anim-shape/anim-shape.js", 117); + _yuitest_coverline("build/anim-shape/anim-shape.js", 114); transform += transformTo + "("; - _yuitest_coverline("build/anim-shape/anim-shape.js", 118); + _yuitest_coverline("build/anim-shape/anim-shape.js", 115); for(j = 0; j < argLen; ++j) { - _yuitest_coverline("build/anim-shape/anim-shape.js", 120); + _yuitest_coverline("build/anim-shape/anim-shape.js", 117); transform += fn(elapsed, NUM(fromArgs[j]), NUM(toArgs[j]) - NUM(fromArgs[j]), duration); - _yuitest_coverline("build/anim-shape/anim-shape.js", 121); + _yuitest_coverline("build/anim-shape/anim-shape.js", 118); if(j < argLen - 1) { - _yuitest_coverline("build/anim-shape/anim-shape.js", 123); + _yuitest_coverline("build/anim-shape/anim-shape.js", 120); transform += ", "; } } - _yuitest_coverline("build/anim-shape/anim-shape.js", 126); + _yuitest_coverline("build/anim-shape/anim-shape.js", 123); transform += ");"; } - _yuitest_coverline("build/anim-shape/anim-shape.js", 128); + _yuitest_coverline("build/anim-shape/anim-shape.js", 125); if(transform) { - _yuitest_coverline("build/anim-shape/anim-shape.js", 130); + _yuitest_coverline("build/anim-shape/anim-shape.js", 127); node.set('transform', transform); } - _yuitest_coverline("build/anim-shape/anim-shape.js", 132); + _yuitest_coverline("build/anim-shape/anim-shape.js", 129); node._transform = TOSTRING; }, - + get: function(anim) { - _yuitest_coverfunc("build/anim-shape/anim-shape.js", "get", 135); -_yuitest_coverline("build/anim-shape/anim-shape.js", 136); + _yuitest_coverfunc("build/anim-shape/anim-shape.js", "get", 132); +_yuitest_coverline("build/anim-shape/anim-shape.js", 133); var node = anim._node, fromMatrix = node.matrix, - toAttr = anim.get("to") || {}, toString = anim.get("to").transform, fromString = node.get("transform"), toArray = Y.MatrixUtil.getTransformArray(toString), @@ -236,67 +232,67 @@ var node = anim._node, len, transformFunction, from; - _yuitest_coverline("build/anim-shape/anim-shape.js", 148); + _yuitest_coverline("build/anim-shape/anim-shape.js", 144); if(toArray) { - _yuitest_coverline("build/anim-shape/anim-shape.js", 150); + _yuitest_coverline("build/anim-shape/anim-shape.js", 146); if(!fromArray || fromArray.length < 1) { - _yuitest_coverline("build/anim-shape/anim-shape.js", 152); + _yuitest_coverline("build/anim-shape/anim-shape.js", 148); fromArray = []; - _yuitest_coverline("build/anim-shape/anim-shape.js", 153); + _yuitest_coverline("build/anim-shape/anim-shape.js", 149); len = toArray.length; - _yuitest_coverline("build/anim-shape/anim-shape.js", 154); + _yuitest_coverline("build/anim-shape/anim-shape.js", 150); for(i = 0; i < len; ++i) { - _yuitest_coverline("build/anim-shape/anim-shape.js", 156); + _yuitest_coverline("build/anim-shape/anim-shape.js", 152); transformFunction = toArray[i][0]; - _yuitest_coverline("build/anim-shape/anim-shape.js", 157); + _yuitest_coverline("build/anim-shape/anim-shape.js", 153); fromArray[i] = Y.MatrixUtil.getTransformFunctionArray(transformFunction); } - _yuitest_coverline("build/anim-shape/anim-shape.js", 159); + _yuitest_coverline("build/anim-shape/anim-shape.js", 155); TO = toArray; - _yuitest_coverline("build/anim-shape/anim-shape.js", 160); + _yuitest_coverline("build/anim-shape/anim-shape.js", 156); from = fromArray; } - else {_yuitest_coverline("build/anim-shape/anim-shape.js", 162); + else {_yuitest_coverline("build/anim-shape/anim-shape.js", 158); if(Y.MatrixUtil.compareTransformSequence(toArray, fromArray)) { - _yuitest_coverline("build/anim-shape/anim-shape.js", 164); + _yuitest_coverline("build/anim-shape/anim-shape.js", 160); TO = toArray; - _yuitest_coverline("build/anim-shape/anim-shape.js", 165); + _yuitest_coverline("build/anim-shape/anim-shape.js", 161); from = fromArray; } else { - _yuitest_coverline("build/anim-shape/anim-shape.js", 169); + _yuitest_coverline("build/anim-shape/anim-shape.js", 165); toMatrix = new Y.Matrix(); - _yuitest_coverline("build/anim-shape/anim-shape.js", 170); + _yuitest_coverline("build/anim-shape/anim-shape.js", 166); len = toArray.length; - _yuitest_coverline("build/anim-shape/anim-shape.js", 171); + _yuitest_coverline("build/anim-shape/anim-shape.js", 167); for(i = 0; i < len; ++i) { - _yuitest_coverline("build/anim-shape/anim-shape.js", 173); + _yuitest_coverline("build/anim-shape/anim-shape.js", 169); transformFunction = toArray[i].shift(); - _yuitest_coverline("build/anim-shape/anim-shape.js", 174); -transformFunction = transformFunction == "matrix" ? "multiply" : transformFunction; - _yuitest_coverline("build/anim-shape/anim-shape.js", 175); -toMatrix[transformFunction].apply(toMatrix, toArray[i]); + _yuitest_coverline("build/anim-shape/anim-shape.js", 170); +transformFunction = transformFunction === "matrix" ? "multiply" : transformFunction; + _yuitest_coverline("build/anim-shape/anim-shape.js", 171); +toMatrix[transformFunction].apply(toMatrix, toArray[i]); } - _yuitest_coverline("build/anim-shape/anim-shape.js", 178); + _yuitest_coverline("build/anim-shape/anim-shape.js", 174); TO = toMatrix.decompose(); - _yuitest_coverline("build/anim-shape/anim-shape.js", 179); + _yuitest_coverline("build/anim-shape/anim-shape.js", 175); from = fromMatrix.decompose(); }} } - _yuitest_coverline("build/anim-shape/anim-shape.js", 182); + _yuitest_coverline("build/anim-shape/anim-shape.js", 178); TOSTRING = toString; - _yuitest_coverline("build/anim-shape/anim-shape.js", 183); + _yuitest_coverline("build/anim-shape/anim-shape.js", 179); return from; } - }; + }; -}, '3.7.3', {"requires": ["anim-base", "anim-easing", "anim-color", "matrix"]}); +}, '3.8.0', {"requires": ["anim-base", "anim-easing", "anim-color", "matrix"]}); diff --git a/lib/yuilib/3.7.3/build/anim-shape/anim-shape-debug.js b/lib/yuilib/3.8.0/build/anim-shape/anim-shape-debug.js similarity index 89% rename from lib/yuilib/3.7.3/build/anim-shape/anim-shape-debug.js rename to lib/yuilib/3.8.0/build/anim-shape/anim-shape-debug.js index 5d64bed469d..5ca8310c299 100644 --- a/lib/yuilib/3.7.3/build/anim-shape/anim-shape-debug.js +++ b/lib/yuilib/3.8.0/build/anim-shape/anim-shape-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -16,8 +16,8 @@ YUI.add('anim-shape', function (Y, NAME) { /** * Adds support for the transform, fill, and attributes of Graphic * Shape instances. The anim-shape submodule can be used for all animations involving - * Graphic Shape attributes. - * + * Graphic Shape attributes. + * * @module anim * @submodule anim-shape */ @@ -35,15 +35,6 @@ YUI.add('anim-shape', function (Y, NAME) { fromStop, prop, len = to.length, - color, - opacity, - offset, - rotation, - r, - fx, - fy, - cx, - cy, stops = [], stop; for(; i < len; i = i + 1) @@ -55,9 +46,15 @@ YUI.add('anim-shape', function (Y, NAME) { { if(toStop.hasOwnProperty(prop)) { - if(prop == COLOR) + if(prop === COLOR) { - stop[prop] = Y.Color.toHex(getUpdatedColorValue(Y.Color.toHex(fromStop[prop]), Y.Color.toHex(toStop[prop]), elapsed, duration, fn)); + stop[prop] = Y.Color.toHex(getUpdatedColorValue( + Y.Color.toHex(fromStop[prop]), + Y.Color.toHex(toStop[prop]), + elapsed, + duration, + fn + )); } else { @@ -77,7 +74,7 @@ YUI.add('anim-shape', function (Y, NAME) { getUpdatedStops = GETUPDATEDSTOPS; for(i in to) { - if(to.hasOwnProperty(i) && i != TYPE) + if(to.hasOwnProperty(i) && i !== TYPE) { switch(i) { @@ -97,7 +94,7 @@ YUI.add('anim-shape', function (Y, NAME) { } }; Y.Anim.behaviors.fill = FILLANDSTROKEBEHAVIOR; - Y.Anim.behaviors.stroke = FILLANDSTROKEBEHAVIOR; + Y.Anim.behaviors.stroke = FILLANDSTROKEBEHAVIOR; Y.Anim.behaviors.transform = { set: function(anim, att, from, to, elapsed, duration, fn) { @@ -137,11 +134,10 @@ YUI.add('anim-shape', function (Y, NAME) { } node._transform = TOSTRING; }, - + get: function(anim) { var node = anim._node, fromMatrix = node.matrix, - toAttr = anim.get("to") || {}, toString = anim.get("to").transform, fromString = node.get("transform"), toArray = Y.MatrixUtil.getTransformArray(toString), @@ -177,8 +173,8 @@ YUI.add('anim-shape', function (Y, NAME) { for(i = 0; i < len; ++i) { transformFunction = toArray[i].shift(); - transformFunction = transformFunction == "matrix" ? "multiply" : transformFunction; - toMatrix[transformFunction].apply(toMatrix, toArray[i]); + transformFunction = transformFunction === "matrix" ? "multiply" : transformFunction; + toMatrix[transformFunction].apply(toMatrix, toArray[i]); } TO = toMatrix.decompose(); @@ -188,8 +184,8 @@ YUI.add('anim-shape', function (Y, NAME) { TOSTRING = toString; return from; } - }; + }; -}, '3.7.3', {"requires": ["anim-base", "anim-easing", "anim-color", "matrix"]}); +}, '3.8.0', {"requires": ["anim-base", "anim-easing", "anim-color", "matrix"]}); diff --git a/lib/yuilib/3.8.0/build/anim-shape/anim-shape-min.js b/lib/yuilib/3.8.0/build/anim-shape/anim-shape-min.js new file mode 100644 index 00000000000..dfd24999560 --- /dev/null +++ b/lib/yuilib/3.8.0/build/anim-shape/anim-shape-min.js @@ -0,0 +1,7 @@ +/* +YUI 3.8.0 (build 5744) +Copyright 2012 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ +YUI.add("anim-shape",function(e,t){var n=Number,r,i,s="color",o="stops",u="type",a=function(t,r,i,o,u,a){var f=0,l=e.Anim.getUpdatedColorValue,c,h,p,d=i.length,v=[],m;for(;ftransform, fill, and attributes of Graphic * Shape instances. The anim-shape submodule can be used for all animations involving - * Graphic Shape attributes. - * + * Graphic Shape attributes. + * * @module anim * @submodule anim-shape */ @@ -35,15 +35,6 @@ YUI.add('anim-shape', function (Y, NAME) { fromStop, prop, len = to.length, - color, - opacity, - offset, - rotation, - r, - fx, - fy, - cx, - cy, stops = [], stop; for(; i < len; i = i + 1) @@ -55,9 +46,15 @@ YUI.add('anim-shape', function (Y, NAME) { { if(toStop.hasOwnProperty(prop)) { - if(prop == COLOR) + if(prop === COLOR) { - stop[prop] = Y.Color.toHex(getUpdatedColorValue(Y.Color.toHex(fromStop[prop]), Y.Color.toHex(toStop[prop]), elapsed, duration, fn)); + stop[prop] = Y.Color.toHex(getUpdatedColorValue( + Y.Color.toHex(fromStop[prop]), + Y.Color.toHex(toStop[prop]), + elapsed, + duration, + fn + )); } else { @@ -77,7 +74,7 @@ YUI.add('anim-shape', function (Y, NAME) { getUpdatedStops = GETUPDATEDSTOPS; for(i in to) { - if(to.hasOwnProperty(i) && i != TYPE) + if(to.hasOwnProperty(i) && i !== TYPE) { switch(i) { @@ -97,7 +94,7 @@ YUI.add('anim-shape', function (Y, NAME) { } }; Y.Anim.behaviors.fill = FILLANDSTROKEBEHAVIOR; - Y.Anim.behaviors.stroke = FILLANDSTROKEBEHAVIOR; + Y.Anim.behaviors.stroke = FILLANDSTROKEBEHAVIOR; Y.Anim.behaviors.transform = { set: function(anim, att, from, to, elapsed, duration, fn) { @@ -137,11 +134,10 @@ YUI.add('anim-shape', function (Y, NAME) { } node._transform = TOSTRING; }, - + get: function(anim) { var node = anim._node, fromMatrix = node.matrix, - toAttr = anim.get("to") || {}, toString = anim.get("to").transform, fromString = node.get("transform"), toArray = Y.MatrixUtil.getTransformArray(toString), @@ -177,8 +173,8 @@ YUI.add('anim-shape', function (Y, NAME) { for(i = 0; i < len; ++i) { transformFunction = toArray[i].shift(); - transformFunction = transformFunction == "matrix" ? "multiply" : transformFunction; - toMatrix[transformFunction].apply(toMatrix, toArray[i]); + transformFunction = transformFunction === "matrix" ? "multiply" : transformFunction; + toMatrix[transformFunction].apply(toMatrix, toArray[i]); } TO = toMatrix.decompose(); @@ -188,8 +184,8 @@ YUI.add('anim-shape', function (Y, NAME) { TOSTRING = toString; return from; } - }; + }; -}, '3.7.3', {"requires": ["anim-base", "anim-easing", "anim-color", "matrix"]}); +}, '3.8.0', {"requires": ["anim-base", "anim-easing", "anim-color", "matrix"]}); diff --git a/lib/yuilib/3.7.3/build/anim-xy/anim-xy-coverage.js b/lib/yuilib/3.8.0/build/anim-xy/anim-xy-coverage.js similarity index 77% rename from lib/yuilib/3.7.3/build/anim-xy/anim-xy-coverage.js rename to lib/yuilib/3.8.0/build/anim-xy/anim-xy-coverage.js index 323d176141e..03e55b45af9 100644 --- a/lib/yuilib/3.7.3/build/anim-xy/anim-xy-coverage.js +++ b/lib/yuilib/3.8.0/build/anim-xy/anim-xy-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,7 +32,7 @@ _yuitest_coverage["build/anim-xy/anim-xy.js"] = { path: "build/anim-xy/anim-xy.js", code: [] }; -_yuitest_coverage["build/anim-xy/anim-xy.js"].code=["YUI.add('anim-xy', function (Y, NAME) {","","/**"," * Adds support for the xy property in from and "," * to attributes."," * @module anim"," * @submodule anim-xy"," */","","var NUM = Number;","","Y.Anim.behaviors.xy = {"," set: function(anim, att, from, to, elapsed, duration, fn) {"," anim._node.setXY(["," fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration),"," fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)"," ]);"," },"," get: function(anim) {"," return anim._node.getXY();"," }","};","","","","}, '3.7.3', {\"requires\": [\"anim-base\", \"node-screen\"]});"]; +_yuitest_coverage["build/anim-xy/anim-xy.js"].code=["YUI.add('anim-xy', function (Y, NAME) {","","/**"," * Adds support for the xy property in from and"," * to attributes."," * @module anim"," * @submodule anim-xy"," */","","var NUM = Number;","","Y.Anim.behaviors.xy = {"," set: function(anim, att, from, to, elapsed, duration, fn) {"," anim._node.setXY(["," fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration),"," fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)"," ]);"," },"," get: function(anim) {"," return anim._node.getXY();"," }","};","","","","}, '3.8.0', {\"requires\": [\"anim-base\", \"node-screen\"]});"]; _yuitest_coverage["build/anim-xy/anim-xy.js"].lines = {"1":0,"10":0,"12":0,"14":0,"20":0}; _yuitest_coverage["build/anim-xy/anim-xy.js"].functions = {"set:13":0,"get:19":0,"(anonymous 1):1":0}; _yuitest_coverage["build/anim-xy/anim-xy.js"].coveredLines = 5; @@ -41,7 +41,7 @@ _yuitest_coverline("build/anim-xy/anim-xy.js", 1); YUI.add('anim-xy', function (Y, NAME) { /** - * Adds support for the xy property in from and + * Adds support for the xy property in from and * to attributes. * @module anim * @submodule anim-xy @@ -70,4 +70,4 @@ return anim._node.getXY(); -}, '3.7.3', {"requires": ["anim-base", "node-screen"]}); +}, '3.8.0', {"requires": ["anim-base", "node-screen"]}); diff --git a/lib/yuilib/3.7.3/build/anim-xy/anim-xy-debug.js b/lib/yuilib/3.8.0/build/anim-xy/anim-xy-debug.js similarity index 88% rename from lib/yuilib/3.7.3/build/anim-xy/anim-xy-debug.js rename to lib/yuilib/3.8.0/build/anim-xy/anim-xy-debug.js index b319b0d702f..d826c603167 100644 --- a/lib/yuilib/3.7.3/build/anim-xy/anim-xy-debug.js +++ b/lib/yuilib/3.8.0/build/anim-xy/anim-xy-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -7,7 +7,7 @@ http://yuilibrary.com/license/ YUI.add('anim-xy', function (Y, NAME) { /** - * Adds support for the xy property in from and + * Adds support for the xy property in from and * to attributes. * @module anim * @submodule anim-xy @@ -29,4 +29,4 @@ Y.Anim.behaviors.xy = { -}, '3.7.3', {"requires": ["anim-base", "node-screen"]}); +}, '3.8.0', {"requires": ["anim-base", "node-screen"]}); diff --git a/lib/yuilib/3.7.3/build/anim-xy/anim-xy-min.js b/lib/yuilib/3.8.0/build/anim-xy/anim-xy-min.js similarity index 78% rename from lib/yuilib/3.7.3/build/anim-xy/anim-xy-min.js rename to lib/yuilib/3.8.0/build/anim-xy/anim-xy-min.js index d228889464e..aa07a221854 100644 --- a/lib/yuilib/3.7.3/build/anim-xy/anim-xy-min.js +++ b/lib/yuilib/3.8.0/build/anim-xy/anim-xy-min.js @@ -1,7 +1,7 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ -YUI.add("anim-xy",function(e,t){var n=Number;e.Anim.behaviors.xy={set:function(e,t,r,i,s,o,u){e._node.setXY([u(s,n(r[0]),n(i[0])-n(r[0]),o),u(s,n(r[1]),n(i[1])-n(r[1]),o)])},get:function(e){return e._node.getXY()}}},"3.7.3",{requires:["anim-base","node-screen"]}); +YUI.add("anim-xy",function(e,t){var n=Number;e.Anim.behaviors.xy={set:function(e,t,r,i,s,o,u){e._node.setXY([u(s,n(r[0]),n(i[0])-n(r[0]),o),u(s,n(r[1]),n(i[1])-n(r[1]),o)])},get:function(e){return e._node.getXY()}}},"3.8.0",{requires:["anim-base","node-screen"]}); diff --git a/lib/yuilib/3.7.3/build/anim-xy/anim-xy.js b/lib/yuilib/3.8.0/build/anim-xy/anim-xy.js similarity index 88% rename from lib/yuilib/3.7.3/build/anim-xy/anim-xy.js rename to lib/yuilib/3.8.0/build/anim-xy/anim-xy.js index b319b0d702f..d826c603167 100644 --- a/lib/yuilib/3.7.3/build/anim-xy/anim-xy.js +++ b/lib/yuilib/3.8.0/build/anim-xy/anim-xy.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -7,7 +7,7 @@ http://yuilibrary.com/license/ YUI.add('anim-xy', function (Y, NAME) { /** - * Adds support for the xy property in from and + * Adds support for the xy property in from and * to attributes. * @module anim * @submodule anim-xy @@ -29,4 +29,4 @@ Y.Anim.behaviors.xy = { -}, '3.7.3', {"requires": ["anim-base", "node-screen"]}); +}, '3.8.0', {"requires": ["anim-base", "node-screen"]}); diff --git a/lib/yuilib/3.7.3/build/app-base/app-base-coverage.js b/lib/yuilib/3.8.0/build/app-base/app-base-coverage.js similarity index 99% rename from lib/yuilib/3.7.3/build/app-base/app-base-coverage.js rename to lib/yuilib/3.8.0/build/app-base/app-base-coverage.js index cceac7d0a43..bd49506267b 100644 --- a/lib/yuilib/3.7.3/build/app-base/app-base-coverage.js +++ b/lib/yuilib/3.8.0/build/app-base/app-base-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,7 +32,7 @@ _yuitest_coverage["build/app-base/app-base.js"] = { path: "build/app-base/app-base.js", code: [] }; -_yuitest_coverage["build/app-base/app-base.js"].code=["YUI.add('app-base', function (Y, NAME) {","","/**","The App Framework provides simple MVC-like building blocks (models, model lists,","views, and URL-based routing) for writing single-page JavaScript applications.","","@main app","@module app","@since 3.4.0","**/","","/**","Provides a top-level application component which manages navigation and views.","","@module app","@submodule app-base","@since 3.5.0","**/","","// TODO: Better handling of lifecycle for registered views:","//","// * [!] Just redo basically everything with view management so there are no","// pre-`activeViewChange` side effects and handle the rest of these things:","//","// * Seems like any view created via `createView` should listen for the view's","// `destroy` event and use that to remove it from the `_viewsInfoMap`. I","// should look at what ModelList does for Models as a reference.","//","// * Should we have a companion `destroyView()` method? Maybe this wouldn't be","// needed if we have a `getView(name, create)` method, and already doing the","// above? We could do `app.getView('foo').destroy()` and it would be removed","// from the `_viewsInfoMap` as well.","//","// * Should we wait to call a view's `render()` method inside of the","// `_attachView()` method?","//","// * Should named views support a collection of instances instead of just one?","//","","var Lang = Y.Lang,"," YObject = Y.Object,",""," PjaxBase = Y.PjaxBase,"," Router = Y.Router,"," View = Y.View,",""," getClassName = Y.ClassNameManager.getClassName,",""," win = Y.config.win,",""," AppBase;","","/**","Provides a top-level application component which manages navigation and views.","","This gives you a foundation and structure on which to build your application; it","combines robust URL navigation with powerful routing and flexible view","management.","","@class App.Base","@param {Object} [config] The following are configuration properties that can be"," specified _in addition_ to default attribute values and the non-attribute"," properties provided by `Y.Base`:"," @param {Object} [config.views] Hash of view-name to metadata used to"," declaratively describe an application's views and their relationship with"," the app and other views. The views specified here will override any defaults"," provided by the `views` object on the `prototype`.","@constructor","@extends Base","@uses View","@uses Router","@uses PjaxBase","@since 3.5.0","**/","AppBase = Y.Base.create('app', Y.Base, [View, Router, PjaxBase], {"," // -- Public Properties ----------------------------------------------------",""," /**"," Hash of view-name to metadata used to declaratively describe an"," application's views and their relationship with the app and its other views.",""," The view metadata is composed of Objects keyed to a view-name that can have"," any or all of the following properties:",""," * `type`: Function or a string representing the view constructor to use to"," create view instances. If a string is used, the constructor function is"," assumed to be on the `Y` object; e.g. `\"SomeView\"` -> `Y.SomeView`.",""," * `preserve`: Boolean for whether the view instance should be retained. By"," default, the view instance will be destroyed when it is no longer the"," `activeView`. If `true` the view instance will simply be `removed()`"," from the DOM when it is no longer active. This is useful when the view"," is frequently used and may be expensive to re-create.",""," * `parent`: String to another named view in this hash that represents the"," parent view within the application's view hierarchy; e.g. a `\"photo\"`"," view could have `\"album\"` has its `parent` view. This parent/child"," relationship is a useful cue for things like transitions.",""," * `instance`: Used internally to manage the current instance of this named"," view. This can be used if your view instance is created up-front, or if"," you would rather manage the View lifecycle, but you probably should just"," let this be handled for you.",""," If `views` are specified at instantiation time, the metadata in the `views`"," Object here will be used as defaults when creating the instance's `views`.",""," Every `Y.App` instance gets its own copy of a `views` object so this Object"," on the prototype will not be polluted.",""," @example"," // Imagine that `Y.UsersView` and `Y.UserView` have been defined."," var app = new Y.App({"," views: {"," users: {"," type : Y.UsersView,"," preserve: true"," },",""," user: {"," type : Y.UserView,"," parent: 'users'"," }"," }"," });",""," @property views"," @type Object"," @default {}"," @since 3.5.0"," **/"," views: {},",""," // -- Protected Properties -------------------------------------------------",""," /**"," Map of view instance id (via `Y.stamp()`) to view-info object in `views`.",""," This mapping is used to tie a specific view instance back to its metadata by"," adding a reference to the the related view info on the `views` object.",""," @property _viewInfoMap"," @type Object"," @default {}"," @protected"," @since 3.5.0"," **/",""," // -- Lifecycle Methods ----------------------------------------------------"," initializer: function (config) {"," config || (config = {});",""," var views = {};",""," // Merges-in specified view metadata into local `views` object."," function mergeViewConfig(view, name) {"," views[name] = Y.merge(views[name], view);"," }",""," // First, each view in the `views` prototype object gets its metadata"," // merged-in, providing the defaults."," YObject.each(this.views, mergeViewConfig);",""," // Then, each view in the specified `config.views` object gets its"," // metadata merged-in."," YObject.each(config.views, mergeViewConfig);",""," // The resulting hodgepodge of metadata is then stored as the instance's"," // `views` object, and no one's objects were harmed in the making."," this.views = views;"," this._viewInfoMap = {};",""," // Using `bind()` to aid extensibility."," this.after('activeViewChange', Y.bind('_afterActiveViewChange', this));",""," // PjaxBase will bind click events when `html5` is `true`, so this just"," // forces the binding when `serverRouting` and `html5` are both falsy."," if (!this.get('serverRouting')) {"," this._pjaxBindUI();"," }"," },",""," // TODO: `destructor` to destroy the `activeView`?",""," // -- Public Methods -------------------------------------------------------",""," /**"," Creates and returns a new view instance using the provided `name` to look up"," the view info metadata defined in the `views` object. The passed-in `config`"," object is passed to the view constructor function.",""," This function also maps a view instance back to its view info metadata.",""," @method createView"," @param {String} name The name of a view defined on the `views` object."," @param {Object} [config] The configuration object passed to the view"," constructor function when creating the new view instance."," @return {View} The new view instance."," @since 3.5.0"," **/"," createView: function (name, config) {"," var viewInfo = this.getViewInfo(name),"," type = (viewInfo && viewInfo.type) || View,"," ViewConstructor, view;",""," // Looks for a namespaced constructor function on `Y`."," ViewConstructor = Lang.isString(type) ?"," YObject.getValue(Y, type.split('.')) : type;",""," // Create the view instance and map it with its metadata."," view = new ViewConstructor(config);"," this._viewInfoMap[Y.stamp(view, true)] = viewInfo;",""," return view;"," },",""," /**"," Returns the metadata associated with a view instance or view name defined on"," the `views` object.",""," @method getViewInfo"," @param {View|String} view View instance, or name of a view defined on the"," `views` object."," @return {Object} The metadata for the view, or `undefined` if the view is"," not registered."," @since 3.5.0"," **/"," getViewInfo: function (view) {"," if (Lang.isString(view)) {"," return this.views[view];"," }",""," return view && this._viewInfoMap[Y.stamp(view, true)];"," },",""," /**"," Navigates to the specified URL if there is a route handler that matches. In"," browsers capable of using HTML5 history or when `serverRouting` is falsy,"," the navigation will be enhanced by firing the `navigate` event and having"," the app handle the \"request\". When `serverRouting` is `true`, non-HTML5"," browsers will navigate to the new URL via a full page reload.",""," When there is a route handler for the specified URL and it is being"," navigated to, this method will return `true`, otherwise it will return"," `false`.",""," **Note:** The specified URL _must_ be of the same origin as the current URL,"," otherwise an error will be logged and navigation will not occur. This is"," intended as both a security constraint and a purposely imposed limitation as"," it does not make sense to tell the app to navigate to a URL on a"," different scheme, host, or port.",""," @method navigate"," @param {String} url The URL to navigate to. This must be of the same origin"," as the current URL."," @param {Object} [options] Additional options to configure the navigation."," These are mixed into the `navigate` event facade."," @param {Boolean} [options.replace] Whether or not the current history"," entry will be replaced, or a new entry will be created. Will default"," to `true` if the specified `url` is the same as the current URL."," @param {Boolean} [options.force] Whether the enhanced navigation"," should occur even in browsers without HTML5 history. Will default to"," `true` when `serverRouting` is falsy."," @see PjaxBase.navigate()"," **/"," // Does not override `navigate()` but does use extra `options`.",""," /**"," Renders this application by appending the `viewContainer` node to the"," `container` node if it isn't already a child of the container, and the"," `activeView` will be appended the view container, if it isn't already.",""," You should call this method at least once, usually after the initialization"," of your app instance so the proper DOM structure is setup and optionally"," append the container to the DOM if it's not there already.",""," You may override this method to customize the app's rendering, but you"," should expect that the `viewContainer`'s contents will be modified by the"," app for the purpose of rendering the `activeView` when it changes.",""," @method render"," @chainable"," @see View.render()"," **/"," render: function () {"," var CLASS_NAMES = Y.App.CLASS_NAMES,"," container = this.get('container'),"," viewContainer = this.get('viewContainer'),"," activeView = this.get('activeView'),"," activeViewContainer = activeView && activeView.get('container'),"," areSame = container.compareTo(viewContainer);",""," container.addClass(CLASS_NAMES.app);"," viewContainer.addClass(CLASS_NAMES.views);",""," // Prevents needless shuffling around of nodes and maintains DOM order."," if (activeView && !viewContainer.contains(activeViewContainer)) {"," viewContainer.appendChild(activeViewContainer);"," }",""," // Prevents needless shuffling around of nodes and maintains DOM order."," if (!container.contains(viewContainer) && !areSame) {"," container.appendChild(viewContainer);"," }",""," return this;"," },",""," /**"," Sets which view is active/visible for the application. This will set the"," app's `activeView` attribute to the specified `view`.",""," The `view` will be \"attached\" to this app, meaning it will be both rendered"," into this app's `viewContainer` node and all of its events will bubble to"," the app. The previous `activeView` will be \"detached\" from this app.",""," When a string-name is provided for a view which has been registered on this"," app's `views` object, the referenced metadata will be used and the"," `activeView` will be set to either a preserved view instance, or a new"," instance of the registered view will be created using the specified `config`"," object passed-into this method.",""," A callback function can be specified as either the third or fourth argument,"," and this function will be called after the new `view` becomes the"," `activeView`, is rendered to the `viewContainer`, and is ready to use.",""," @example"," var app = new Y.App({"," views: {"," usersView: {"," // Imagine that `Y.UsersView` has been defined."," type: Y.UsersView"," }"," },",""," users: new Y.ModelList()"," });",""," app.route('/users/', function () {"," this.showView('usersView', {users: this.get('users')});"," });",""," app.render();"," app.navigate('/uses/'); // => Creates a new `Y.UsersView` and shows it.",""," @method showView"," @param {String|View} view The name of a view defined in the `views` object,"," or a view instance which should become this app's `activeView`."," @param {Object} [config] Optional configuration to use when creating a new"," view instance. This config object can also be used to update an existing"," or preserved view's attributes when `options.update` is `true`."," @param {Object} [options] Optional object containing any of the following"," properties:"," @param {Function} [options.callback] Optional callback function to call"," after new `activeView` is ready to use, the function will be passed:"," @param {View} options.callback.view A reference to the new"," `activeView`."," @param {Boolean} [options.prepend=false] Whether the `view` should be"," prepended instead of appended to the `viewContainer`."," @param {Boolean} [options.render] Whether the `view` should be rendered."," **Note:** If no value is specified, a view instance will only be"," rendered if it's newly created by this method."," @param {Boolean} [options.update=false] Whether an existing view should"," have its attributes updated by passing the `config` object to its"," `setAttrs()` method. **Note:** This option does not have an effect if"," the `view` instance is created as a result of calling this method."," @param {Function} [callback] Optional callback Function to call after the"," new `activeView` is ready to use. **Note:** this will override"," `options.callback` and it can be specified as either the third or fourth"," argument. The function will be passed the following:"," @param {View} callback.view A reference to the new `activeView`."," @chainable"," @since 3.5.0"," **/"," showView: function (view, config, options, callback) {"," var viewInfo, created;",""," options || (options = {});",""," // Support the callback function being either the third or fourth arg."," if (callback) {"," options = Y.merge(options, {callback: callback});"," } else if (Lang.isFunction(options)) {"," options = {callback: options};"," }",""," if (Lang.isString(view)) {"," viewInfo = this.getViewInfo(view);",""," // Use the preserved view instance, or create a new view."," // TODO: Maybe we can remove the strict check for `preserve` and"," // assume we'll use a View instance if it is there, and just check"," // `preserve` when detaching?"," if (viewInfo && viewInfo.preserve && viewInfo.instance) {"," view = viewInfo.instance;",""," // Make sure there's a mapping back to the view metadata."," this._viewInfoMap[Y.stamp(view, true)] = viewInfo;"," } else {"," // TODO: Add the app as a bubble target during construction, but"," // make sure to check that it isn't already in `bubbleTargets`!"," // This will allow the app to be notified for about _all_ of the"," // view's events. **Note:** This should _only_ happen if the"," // view is created _after_ `activeViewChange`.",""," view = this.createView(view, config);"," created = true;"," }"," }",""," // Update the specified or preserved `view` when signaled to do so."," // There's no need to updated a view if it was _just_ created."," if (options.update && !created) {"," view.setAttrs(config);"," }",""," // TODO: Hold off on rendering the view until after it has been"," // \"attached\", and move the call to render into `_attachView()`.",""," // When a value is specified for `options.render`, prefer it because it"," // represents the developer's intent. When no value is specified, the"," // `view` will only be rendered if it was just created."," if ('render' in options) {"," if (options.render) {"," view.render();"," }"," } else if (created) {"," view.render();"," }",""," return this._set('activeView', view, {options: options});"," },",""," // -- Protected Methods ----------------------------------------------------",""," /**"," Helper method to attach the view instance to the application by making the"," app a bubble target of the view, append the view to the `viewContainer`, and"," assign it to the `instance` property of the associated view info metadata.",""," @method _attachView"," @param {View} view View to attach."," @param {Boolean} prepend=false Whether the view should be prepended instead"," of appended to the `viewContainer`."," @protected"," @since 3.5.0"," **/"," _attachView: function (view, prepend) {"," if (!view) {"," return;"," }",""," var viewInfo = this.getViewInfo(view),"," viewContainer = this.get('viewContainer');",""," // Bubble the view's events to this app."," view.addTarget(this);",""," // Save the view instance in the `views` registry."," if (viewInfo) {"," viewInfo.instance = view;"," }",""," // TODO: Attach events here for persevered Views?"," // See related TODO in `_detachView`.",""," // TODO: Actually render the view here so that it gets \"attached\" before"," // it gets rendered?",""," // Insert view into the DOM."," viewContainer[prepend ? 'prepend' : 'append'](view.get('container'));"," },",""," /**"," Overrides View's container destruction to deal with the `viewContainer` and"," checks to make sure not to remove and purge the ``.",""," @method _destroyContainer"," @protected"," @see View._destroyContainer()"," **/"," _destroyContainer: function () {"," var CLASS_NAMES = Y.App.CLASS_NAMES,"," container = this.get('container'),"," viewContainer = this.get('viewContainer'),"," areSame = container.compareTo(viewContainer);",""," // We do not want to remove or destroy the ``."," if (Y.one('body').compareTo(container)) {"," // Just clean-up our events listeners."," this.detachEvents();",""," // Clean-up `yui3-app` CSS class on the `container`."," container.removeClass(CLASS_NAMES.app);",""," if (areSame) {"," // Clean-up `yui3-app-views` CSS class on the `container`."," container.removeClass(CLASS_NAMES.views);"," } else {"," // Destroy and purge the `viewContainer`."," viewContainer.remove(true);"," }",""," return;"," }",""," // Remove and purge events from both containers.",""," viewContainer.remove(true);",""," if (!areSame) {"," container.remove(true);"," }"," },",""," /**"," Helper method to detach the view instance from the application by removing"," the application as a bubble target of the view, and either just removing the"," view if it is intended to be preserved, or destroying the instance"," completely.",""," @method _detachView"," @param {View} view View to detach."," @protected"," @since 3.5.0"," **/"," _detachView: function (view) {"," if (!view) {"," return;"," }",""," var viewInfo = this.getViewInfo(view) || {};",""," if (viewInfo.preserve) {"," view.remove();"," // TODO: Detach events here for preserved Views? It is possible that"," // some event subscriptions are made on elements other than the"," // View's `container`."," } else {"," view.destroy({remove: true});",""," // TODO: The following should probably happen automagically from"," // `destroy()` being called! Possibly `removeTarget()` as well.",""," // Remove from view to view-info map."," delete this._viewInfoMap[Y.stamp(view, true)];",""," // Remove from view-info instance property."," if (view === viewInfo.instance) {"," delete viewInfo.instance;"," }"," }",""," view.removeTarget(this);"," },",""," /**"," Getter for the `viewContainer` attribute.",""," @method _getViewContainer"," @param {Node|null} value Current attribute value."," @return {Node} View container node."," @protected"," @since 3.5.0"," **/"," _getViewContainer: function (value) {"," // This wackiness is necessary to enable fully lazy creation of the"," // container node both when no container is specified and when one is"," // specified via a valueFn.",""," if (!value && !this._viewContainer) {"," // Create a default container and set that as the new attribute"," // value. The `this._viewContainer` property prevents infinite"," // recursion."," value = this._viewContainer = this.create();"," this._set('viewContainer', value);"," }",""," return value;"," },",""," /**"," Provides the default value for the `html5` attribute.",""," The value returned is dependent on the value of the `serverRouting`"," attribute. When `serverRouting` is explicit set to `false` (not just falsy),"," the default value for `html5` will be set to `false` for *all* browsers.",""," When `serverRouting` is `true` or `undefined` the returned value will be"," dependent on the browser's capability of using HTML5 history.",""," @method _initHtml5"," @return {Boolean} Whether or not HTML5 history should be used."," @protected"," @since 3.5.0"," **/"," _initHtml5: function () {"," // When `serverRouting` is explicitly set to `false` (not just falsy),"," // forcing hash-based URLs in all browsers."," if (this.get('serverRouting') === false) {"," return false;"," }",""," // Defaults to whether or not the browser supports HTML5 history."," return Router.html5;"," },",""," /**"," Determines if the specified `view` is configured as a child of the specified"," `parent` view. This requires both views to be either named-views, or view"," instances created using configuration data that exists in the `views`"," object, e.g. created by the `createView()` or `showView()` method.",""," @method _isChildView"," @param {View|String} view The name of a view defined in the `views` object,"," or a view instance."," @param {View|String} parent The name of a view defined in the `views`"," object, or a view instance."," @return {Boolean} Whether the view is configured as a child of the parent."," @protected"," @since 3.5.0"," **/"," _isChildView: function (view, parent) {"," var viewInfo = this.getViewInfo(view),"," parentInfo = this.getViewInfo(parent);",""," if (viewInfo && parentInfo) {"," return this.getViewInfo(viewInfo.parent) === parentInfo;"," }",""," return false;"," },",""," /**"," Determines if the specified `view` is configured as the parent of the"," specified `child` view. This requires both views to be either named-views,"," or view instances created using configuration data that exists in the"," `views` object, e.g. created by the `createView()` or `showView()` method.",""," @method _isParentView"," @param {View|String} view The name of a view defined in the `views` object,"," or a view instance."," @param {View|String} parent The name of a view defined in the `views`"," object, or a view instance."," @return {Boolean} Whether the view is configured as the parent of the child."," @protected"," @since 3.5.0"," **/"," _isParentView: function (view, child) {"," var viewInfo = this.getViewInfo(view),"," childInfo = this.getViewInfo(child);",""," if (viewInfo && childInfo) {"," return this.getViewInfo(childInfo.parent) === viewInfo;"," }",""," return false;"," },",""," /**"," Underlying implementation for `navigate()`.",""," @method _navigate"," @param {String} url The fully-resolved URL that the app should dispatch to"," its route handlers to fulfill the enhanced navigation \"request\", or use to"," update `window.location` in non-HTML5 history capable browsers when"," `serverRouting` is `true`."," @param {Object} [options] Additional options to configure the navigation."," These are mixed into the `navigate` event facade."," @param {Boolean} [options.replace] Whether or not the current history"," entry will be replaced, or a new entry will be created. Will default"," to `true` if the specified `url` is the same as the current URL."," @param {Boolean} [options.force] Whether the enhanced navigation"," should occur even in browsers without HTML5 history. Will default to"," `true` when `serverRouting` is falsy."," @protected"," @see PjaxBase._navigate()"," **/"," _navigate: function (url, options) {"," if (!this.get('serverRouting')) {"," // Force navigation to be enhanced and handled by the app when"," // `serverRouting` is falsy because the server might not be able to"," // properly handle the request."," options = Y.merge({force: true}, options);"," }",""," return PjaxBase.prototype._navigate.call(this, url, options);"," },",""," /**"," Will either save a history entry using `pushState()` or the location hash,"," or gracefully-degrade to sending a request to the server causing a full-page"," reload.",""," Overrides Router's `_save()` method to preform graceful-degradation when the"," app's `serverRouting` is `true` and `html5` is `false` by updating the full"," URL via standard assignment to `window.location` or by calling"," `window.location.replace()`; both of which will cause a request to the"," server resulting in a full-page reload.",""," Otherwise this will just delegate off to Router's `_save()` method allowing"," the client-side enhanced routing to occur.",""," @method _save"," @param {String} [url] URL for the history entry."," @param {Boolean} [replace=false] If `true`, the current history entry will"," be replaced instead of a new one being added."," @chainable"," @protected"," @see Router._save()"," **/"," _save: function (url, replace) {"," var path;",""," // Forces full-path URLs to always be used by modifying"," // `window.location` in non-HTML5 history capable browsers."," if (this.get('serverRouting') && !this.get('html5')) {"," // Perform same-origin check on the specified URL."," if (!this._hasSameOrigin(url)) {"," Y.error('Security error: The new URL must be of the same origin as the current URL.');"," return this;"," }",""," // Either replace the current history entry or create a new one"," // while navigating to the `url`."," if (win) {"," // Results in the URL's full path starting with '/'."," path = this._joinURL(url || '');",""," if (replace) {"," win.location.replace(path);"," } else {"," win.location = path;"," }"," }",""," return this;"," }",""," return Router.prototype._save.apply(this, arguments);"," },",""," /**"," Performs the actual change of this app's `activeView` by attaching the"," `newView` to this app, and detaching the `oldView` from this app using any"," specified `options`.",""," The `newView` is attached to the app by rendering it to the `viewContainer`,"," and making this app a bubble target of its events.",""," The `oldView` is detached from the app by removing it from the"," `viewContainer`, and removing this app as a bubble target for its events."," The `oldView` will either be preserved or properly destroyed.",""," **Note:** The `activeView` attribute is read-only and can be changed by"," calling the `showView()` method.",""," @method _uiSetActiveView"," @param {View} newView The View which is now this app's `activeView`."," @param {View} [oldView] The View which was this app's `activeView`."," @param {Object} [options] Optional object containing any of the following"," properties:"," @param {Function} [options.callback] Optional callback function to call"," after new `activeView` is ready to use, the function will be passed:"," @param {View} options.callback.view A reference to the new"," `activeView`."," @param {Boolean} [options.prepend=false] Whether the `view` should be"," prepended instead of appended to the `viewContainer`."," @param {Boolean} [options.render] Whether the `view` should be rendered."," **Note:** If no value is specified, a view instance will only be"," rendered if it's newly created by this method."," @param {Boolean} [options.update=false] Whether an existing view should"," have its attributes updated by passing the `config` object to its"," `setAttrs()` method. **Note:** This option does not have an effect if"," the `view` instance is created as a result of calling this method."," @protected"," @since 3.5.0"," **/"," _uiSetActiveView: function (newView, oldView, options) {"," options || (options = {});",""," var callback = options.callback,"," isChild = this._isChildView(newView, oldView),"," isParent = !isChild && this._isParentView(newView, oldView),"," prepend = !!options.prepend || isParent;",""," // Prevent detaching (thus removing) the view we want to show. Also hard"," // to animate out and in, the same view."," if (newView === oldView) {"," return callback && callback.call(this, newView);"," }",""," this._attachView(newView, prepend);"," this._detachView(oldView);",""," if (callback) {"," callback.call(this, newView);"," }"," },",""," // -- Protected Event Handlers ---------------------------------------------",""," /**"," Handles the application's `activeViewChange` event (which is fired when the"," `activeView` attribute changes) by detaching the old view, attaching the new"," view.",""," The `activeView` attribute is read-only, so the public API to change its"," value is through the `showView()` method.",""," @method _afterActiveViewChange"," @param {EventFacade} e"," @protected"," @since 3.5.0"," **/"," _afterActiveViewChange: function (e) {"," this._uiSetActiveView(e.newVal, e.prevVal, e.options);"," }","}, {"," ATTRS: {"," /**"," The application's active/visible view.",""," This attribute is read-only, to set the `activeView` use the"," `showView()` method.",""," @attribute activeView"," @type View"," @default null"," @readOnly"," @see App.Base.showView()"," @since 3.5.0"," **/"," activeView: {"," value : null,"," readOnly: true"," },",""," /**"," Container node which represents the application's bounding-box, into"," which this app's content will be rendered.",""," The container node serves as the host for all DOM events attached by the"," app. Delegation is used to handle events on children of the container,"," allowing the container's contents to be re-rendered at any time without"," losing event subscriptions.",""," The default container is the `` Node, but you can override this in"," a subclass, or by passing in a custom `container` config value at"," instantiation time.",""," When `container` is overridden by a subclass or passed as a config"," option at instantiation time, it may be provided as a selector string, a"," DOM element, or a `Y.Node` instance. During initialization, this app's"," `create()` method will be called to convert the container into a"," `Y.Node` instance if it isn't one already and stamp it with the CSS"," class: `\"yui3-app\"`.",""," The container is not added to the page automatically. This allows you to"," have full control over how and when your app is actually rendered to"," the page.",""," @attribute container"," @type HTMLElement|Node|String"," @default Y.one('body')"," @initOnly"," **/"," container: {"," valueFn: function () {"," return Y.one('body');"," }"," },",""," /**"," Whether or not this browser is capable of using HTML5 history.",""," This value is dependent on the value of `serverRouting` and will default"," accordingly.",""," Setting this to `false` will force the use of hash-based history even on"," HTML5 browsers, but please don't do this unless you understand the"," consequences.",""," @attribute html5"," @type Boolean"," @initOnly"," @see serverRouting"," **/"," html5: {"," valueFn: '_initHtml5'"," },",""," /**"," CSS selector string used to filter link click events so that only the"," links which match it will have the enhanced-navigation behavior of pjax"," applied.",""," When a link is clicked and that link matches this selector, navigating"," to the link's `href` URL using the enhanced, pjax, behavior will be"," attempted; and the browser's default way to navigate to new pages will"," be the fallback.",""," By default this selector will match _all_ links on the page.",""," @attribute linkSelector"," @type String|Function"," @default \"a\""," **/"," linkSelector: {"," value: 'a'"," },",""," /**"," Whether or not this application's server is capable of properly routing"," all requests and rendering the initial state in the HTML responses.",""," This can have three different values, each having particular"," implications on how the app will handle routing and navigation:",""," * `undefined`: The best form of URLs will be chosen based on the"," capabilities of the browser. Given no information about the server"," environmentm a balanced approach to routing and navigation is"," chosen.",""," The server should be capable of handling full-path requests, since"," full-URLs will be generated by browsers using HTML5 history. If this"," is a client-side-only app the server could handle full-URL requests"," by sending a redirect back to the root with a hash-based URL, e.g:",""," Request: http://example.com/users/1"," Redirect to: http://example.com/#/users/1",""," * `true`: The server is *fully* capable of properly handling requests"," to all full-path URLs the app can produce.",""," This is the best option for progressive-enhancement because it will"," cause **all URLs to always have full-paths**, which means the server"," will be able to accurately handle all URLs this app produces. e.g.",""," http://example.com/users/1",""," To meet this strict full-URL requirement, browsers which are not"," capable of using HTML5 history will make requests to the server"," resulting in full-page reloads.",""," * `false`: The server is *not* capable of properly handling requests"," to all full-path URLs the app can produce, therefore all routing"," will be handled by this App instance.",""," Be aware that this will cause **all URLs to always be hash-based**,"," even in browsers that are capable of using HTML5 history. e.g.",""," http://example.com/#/users/1",""," A single-page or client-side-only app where the server sends a"," \"shell\" page with JavaScript to the client might have this"," restriction. If you're setting this to `false`, read the following:",""," **Note:** When this is set to `false`, the server will *never* receive"," the full URL because browsers do not send the fragment-part to the"," server, that is everything after and including the \"#\".",""," Consider the following example:",""," URL shown in browser: http://example.com/#/users/1"," URL sent to server: http://example.com/",""," You should feel bad about hurting our precious web if you forcefully set"," either `serverRouting` or `html5` to `false`, because you're basically"," punching the web in the face here with your lossy URLs! Please make sure"," you know what you're doing and that you understand the implications.",""," Ideally you should always prefer full-path URLs (not /#/foo/), and want"," full-page reloads when the client's browser is not capable of enhancing"," the experience using the HTML5 history APIs. Setting this to `true` is"," the best option for progressive-enhancement (and graceful-degradation).",""," @attribute serverRouting"," @type Boolean"," @default undefined"," @initOnly"," @since 3.5.0"," **/"," serverRouting: {"," valueFn : function () { return Y.App.serverRouting; },"," writeOnce: 'initOnly'"," },",""," /**"," The node into which this app's `views` will be rendered when they become"," the `activeView`.",""," The view container node serves as the container to hold the app's"," `activeView`. Each time the `activeView` is set via `showView()`, the"," previous view will be removed from this node, and the new active view's"," `container` node will be appended.",""," The default view container is a `
          ` Node, but you can override this"," in a subclass, or by passing in a custom `viewContainer` config value at"," instantiation time. The `viewContainer` may be provided as a selector"," string, DOM element, or a `Y.Node` instance (having the `viewContainer`"," and the `container` be the same node is also supported).",""," The app's `render()` method will stamp the view container with the CSS"," class `\"yui3-app-views\"` and append it to the app's `container` node if"," it isn't already, and any `activeView` will be appended to this node if"," it isn't already.",""," @attribute viewContainer"," @type HTMLElement|Node|String"," @default Y.Node.create(this.containerTemplate)"," @initOnly"," @since 3.5.0"," **/"," viewContainer: {"," getter : '_getViewContainer',"," setter : Y.one,"," writeOnce: true"," }"," },",""," /**"," Properties that shouldn't be turned into ad-hoc attributes when passed to"," App's constructor.",""," @property _NON_ATTRS_CFG"," @type Array"," @static"," @protected"," @since 3.5.0"," **/"," _NON_ATTRS_CFG: ['views']","});","","// -- Namespace ----------------------------------------------------------------","Y.namespace('App').Base = AppBase;","","/**","Provides a top-level application component which manages navigation and views.","","This gives you a foundation and structure on which to build your application; it","combines robust URL navigation with powerful routing and flexible view","management.","","`Y.App` is both a namespace and constructor function. The `Y.App` class is","special in that any `Y.App` class extensions that are included in the YUI","instance will be **auto-mixed** on to the `Y.App` class. Consider this example:",""," YUI().use('app-base', 'app-transitions', function (Y) {"," // This will create two YUI Apps, `basicApp` will not have transitions,"," // but `fancyApp` will have transitions support included and turn it on."," var basicApp = new Y.App.Base(),"," fancyApp = new Y.App({transitions: true});"," });","","@class App","@param {Object} [config] The following are configuration properties that can be"," specified _in addition_ to default attribute values and the non-attribute"," properties provided by `Y.Base`:"," @param {Object} [config.views] Hash of view-name to metadata used to"," declaratively describe an application's views and their relationship with"," the app and other views. The views specified here will override any defaults"," provided by the `views` object on the `prototype`.","@constructor","@extends App.Base","@uses App.Content","@uses App.Transitions","@uses PjaxContent","@since 3.5.0","**/","Y.App = Y.mix(Y.Base.create('app', AppBase, []), Y.App, true);","","/**","CSS classes used by `Y.App`.","","@property CLASS_NAMES","@type Object","@default {}","@static","@since 3.6.0","**/","Y.App.CLASS_NAMES = {"," app : getClassName('app'),"," views: getClassName('app', 'views')","};","","/**","Default `serverRouting` attribute value for all apps.","","@property serverRouting","@type Boolean","@default undefined","@static","@since 3.6.0","**/","","","}, '3.7.3', {\"requires\": [\"classnamemanager\", \"pjax-base\", \"router\", \"view\"]});"]; +_yuitest_coverage["build/app-base/app-base.js"].code=["YUI.add('app-base', function (Y, NAME) {","","/**","The App Framework provides simple MVC-like building blocks (models, model lists,","views, and URL-based routing) for writing single-page JavaScript applications.","","@main app","@module app","@since 3.4.0","**/","","/**","Provides a top-level application component which manages navigation and views.","","@module app","@submodule app-base","@since 3.5.0","**/","","// TODO: Better handling of lifecycle for registered views:","//","// * [!] Just redo basically everything with view management so there are no","// pre-`activeViewChange` side effects and handle the rest of these things:","//","// * Seems like any view created via `createView` should listen for the view's","// `destroy` event and use that to remove it from the `_viewsInfoMap`. I","// should look at what ModelList does for Models as a reference.","//","// * Should we have a companion `destroyView()` method? Maybe this wouldn't be","// needed if we have a `getView(name, create)` method, and already doing the","// above? We could do `app.getView('foo').destroy()` and it would be removed","// from the `_viewsInfoMap` as well.","//","// * Should we wait to call a view's `render()` method inside of the","// `_attachView()` method?","//","// * Should named views support a collection of instances instead of just one?","//","","var Lang = Y.Lang,"," YObject = Y.Object,",""," PjaxBase = Y.PjaxBase,"," Router = Y.Router,"," View = Y.View,",""," getClassName = Y.ClassNameManager.getClassName,",""," win = Y.config.win,",""," AppBase;","","/**","Provides a top-level application component which manages navigation and views.","","This gives you a foundation and structure on which to build your application; it","combines robust URL navigation with powerful routing and flexible view","management.","","@class App.Base","@param {Object} [config] The following are configuration properties that can be"," specified _in addition_ to default attribute values and the non-attribute"," properties provided by `Y.Base`:"," @param {Object} [config.views] Hash of view-name to metadata used to"," declaratively describe an application's views and their relationship with"," the app and other views. The views specified here will override any defaults"," provided by the `views` object on the `prototype`.","@constructor","@extends Base","@uses View","@uses Router","@uses PjaxBase","@since 3.5.0","**/","AppBase = Y.Base.create('app', Y.Base, [View, Router, PjaxBase], {"," // -- Public Properties ----------------------------------------------------",""," /**"," Hash of view-name to metadata used to declaratively describe an"," application's views and their relationship with the app and its other views.",""," The view metadata is composed of Objects keyed to a view-name that can have"," any or all of the following properties:",""," * `type`: Function or a string representing the view constructor to use to"," create view instances. If a string is used, the constructor function is"," assumed to be on the `Y` object; e.g. `\"SomeView\"` -> `Y.SomeView`.",""," * `preserve`: Boolean for whether the view instance should be retained. By"," default, the view instance will be destroyed when it is no longer the"," `activeView`. If `true` the view instance will simply be `removed()`"," from the DOM when it is no longer active. This is useful when the view"," is frequently used and may be expensive to re-create.",""," * `parent`: String to another named view in this hash that represents the"," parent view within the application's view hierarchy; e.g. a `\"photo\"`"," view could have `\"album\"` has its `parent` view. This parent/child"," relationship is a useful cue for things like transitions.",""," * `instance`: Used internally to manage the current instance of this named"," view. This can be used if your view instance is created up-front, or if"," you would rather manage the View lifecycle, but you probably should just"," let this be handled for you.",""," If `views` are specified at instantiation time, the metadata in the `views`"," Object here will be used as defaults when creating the instance's `views`.",""," Every `Y.App` instance gets its own copy of a `views` object so this Object"," on the prototype will not be polluted.",""," @example"," // Imagine that `Y.UsersView` and `Y.UserView` have been defined."," var app = new Y.App({"," views: {"," users: {"," type : Y.UsersView,"," preserve: true"," },",""," user: {"," type : Y.UserView,"," parent: 'users'"," }"," }"," });",""," @property views"," @type Object"," @default {}"," @since 3.5.0"," **/"," views: {},",""," // -- Protected Properties -------------------------------------------------",""," /**"," Map of view instance id (via `Y.stamp()`) to view-info object in `views`.",""," This mapping is used to tie a specific view instance back to its metadata by"," adding a reference to the the related view info on the `views` object.",""," @property _viewInfoMap"," @type Object"," @default {}"," @protected"," @since 3.5.0"," **/",""," // -- Lifecycle Methods ----------------------------------------------------"," initializer: function (config) {"," config || (config = {});",""," var views = {};",""," // Merges-in specified view metadata into local `views` object."," function mergeViewConfig(view, name) {"," views[name] = Y.merge(views[name], view);"," }",""," // First, each view in the `views` prototype object gets its metadata"," // merged-in, providing the defaults."," YObject.each(this.views, mergeViewConfig);",""," // Then, each view in the specified `config.views` object gets its"," // metadata merged-in."," YObject.each(config.views, mergeViewConfig);",""," // The resulting hodgepodge of metadata is then stored as the instance's"," // `views` object, and no one's objects were harmed in the making."," this.views = views;"," this._viewInfoMap = {};",""," // Using `bind()` to aid extensibility."," this.after('activeViewChange', Y.bind('_afterActiveViewChange', this));",""," // PjaxBase will bind click events when `html5` is `true`, so this just"," // forces the binding when `serverRouting` and `html5` are both falsy."," if (!this.get('serverRouting')) {"," this._pjaxBindUI();"," }"," },",""," // TODO: `destructor` to destroy the `activeView`?",""," // -- Public Methods -------------------------------------------------------",""," /**"," Creates and returns a new view instance using the provided `name` to look up"," the view info metadata defined in the `views` object. The passed-in `config`"," object is passed to the view constructor function.",""," This function also maps a view instance back to its view info metadata.",""," @method createView"," @param {String} name The name of a view defined on the `views` object."," @param {Object} [config] The configuration object passed to the view"," constructor function when creating the new view instance."," @return {View} The new view instance."," @since 3.5.0"," **/"," createView: function (name, config) {"," var viewInfo = this.getViewInfo(name),"," type = (viewInfo && viewInfo.type) || View,"," ViewConstructor, view;",""," // Looks for a namespaced constructor function on `Y`."," ViewConstructor = Lang.isString(type) ?"," YObject.getValue(Y, type.split('.')) : type;",""," // Create the view instance and map it with its metadata."," view = new ViewConstructor(config);"," this._viewInfoMap[Y.stamp(view, true)] = viewInfo;",""," return view;"," },",""," /**"," Returns the metadata associated with a view instance or view name defined on"," the `views` object.",""," @method getViewInfo"," @param {View|String} view View instance, or name of a view defined on the"," `views` object."," @return {Object} The metadata for the view, or `undefined` if the view is"," not registered."," @since 3.5.0"," **/"," getViewInfo: function (view) {"," if (Lang.isString(view)) {"," return this.views[view];"," }",""," return view && this._viewInfoMap[Y.stamp(view, true)];"," },",""," /**"," Navigates to the specified URL if there is a route handler that matches. In"," browsers capable of using HTML5 history or when `serverRouting` is falsy,"," the navigation will be enhanced by firing the `navigate` event and having"," the app handle the \"request\". When `serverRouting` is `true`, non-HTML5"," browsers will navigate to the new URL via a full page reload.",""," When there is a route handler for the specified URL and it is being"," navigated to, this method will return `true`, otherwise it will return"," `false`.",""," **Note:** The specified URL _must_ be of the same origin as the current URL,"," otherwise an error will be logged and navigation will not occur. This is"," intended as both a security constraint and a purposely imposed limitation as"," it does not make sense to tell the app to navigate to a URL on a"," different scheme, host, or port.",""," @method navigate"," @param {String} url The URL to navigate to. This must be of the same origin"," as the current URL."," @param {Object} [options] Additional options to configure the navigation."," These are mixed into the `navigate` event facade."," @param {Boolean} [options.replace] Whether or not the current history"," entry will be replaced, or a new entry will be created. Will default"," to `true` if the specified `url` is the same as the current URL."," @param {Boolean} [options.force] Whether the enhanced navigation"," should occur even in browsers without HTML5 history. Will default to"," `true` when `serverRouting` is falsy."," @see PjaxBase.navigate()"," **/"," // Does not override `navigate()` but does use extra `options`.",""," /**"," Renders this application by appending the `viewContainer` node to the"," `container` node if it isn't already a child of the container, and the"," `activeView` will be appended the view container, if it isn't already.",""," You should call this method at least once, usually after the initialization"," of your app instance so the proper DOM structure is setup and optionally"," append the container to the DOM if it's not there already.",""," You may override this method to customize the app's rendering, but you"," should expect that the `viewContainer`'s contents will be modified by the"," app for the purpose of rendering the `activeView` when it changes.",""," @method render"," @chainable"," @see View.render()"," **/"," render: function () {"," var CLASS_NAMES = Y.App.CLASS_NAMES,"," container = this.get('container'),"," viewContainer = this.get('viewContainer'),"," activeView = this.get('activeView'),"," activeViewContainer = activeView && activeView.get('container'),"," areSame = container.compareTo(viewContainer);",""," container.addClass(CLASS_NAMES.app);"," viewContainer.addClass(CLASS_NAMES.views);",""," // Prevents needless shuffling around of nodes and maintains DOM order."," if (activeView && !viewContainer.contains(activeViewContainer)) {"," viewContainer.appendChild(activeViewContainer);"," }",""," // Prevents needless shuffling around of nodes and maintains DOM order."," if (!container.contains(viewContainer) && !areSame) {"," container.appendChild(viewContainer);"," }",""," return this;"," },",""," /**"," Sets which view is active/visible for the application. This will set the"," app's `activeView` attribute to the specified `view`.",""," The `view` will be \"attached\" to this app, meaning it will be both rendered"," into this app's `viewContainer` node and all of its events will bubble to"," the app. The previous `activeView` will be \"detached\" from this app.",""," When a string-name is provided for a view which has been registered on this"," app's `views` object, the referenced metadata will be used and the"," `activeView` will be set to either a preserved view instance, or a new"," instance of the registered view will be created using the specified `config`"," object passed-into this method.",""," A callback function can be specified as either the third or fourth argument,"," and this function will be called after the new `view` becomes the"," `activeView`, is rendered to the `viewContainer`, and is ready to use.",""," @example"," var app = new Y.App({"," views: {"," usersView: {"," // Imagine that `Y.UsersView` has been defined."," type: Y.UsersView"," }"," },",""," users: new Y.ModelList()"," });",""," app.route('/users/', function () {"," this.showView('usersView', {users: this.get('users')});"," });",""," app.render();"," app.navigate('/uses/'); // => Creates a new `Y.UsersView` and shows it.",""," @method showView"," @param {String|View} view The name of a view defined in the `views` object,"," or a view instance which should become this app's `activeView`."," @param {Object} [config] Optional configuration to use when creating a new"," view instance. This config object can also be used to update an existing"," or preserved view's attributes when `options.update` is `true`."," @param {Object} [options] Optional object containing any of the following"," properties:"," @param {Function} [options.callback] Optional callback function to call"," after new `activeView` is ready to use, the function will be passed:"," @param {View} options.callback.view A reference to the new"," `activeView`."," @param {Boolean} [options.prepend=false] Whether the `view` should be"," prepended instead of appended to the `viewContainer`."," @param {Boolean} [options.render] Whether the `view` should be rendered."," **Note:** If no value is specified, a view instance will only be"," rendered if it's newly created by this method."," @param {Boolean} [options.update=false] Whether an existing view should"," have its attributes updated by passing the `config` object to its"," `setAttrs()` method. **Note:** This option does not have an effect if"," the `view` instance is created as a result of calling this method."," @param {Function} [callback] Optional callback Function to call after the"," new `activeView` is ready to use. **Note:** this will override"," `options.callback` and it can be specified as either the third or fourth"," argument. The function will be passed the following:"," @param {View} callback.view A reference to the new `activeView`."," @chainable"," @since 3.5.0"," **/"," showView: function (view, config, options, callback) {"," var viewInfo, created;",""," options || (options = {});",""," // Support the callback function being either the third or fourth arg."," if (callback) {"," options = Y.merge(options, {callback: callback});"," } else if (Lang.isFunction(options)) {"," options = {callback: options};"," }",""," if (Lang.isString(view)) {"," viewInfo = this.getViewInfo(view);",""," // Use the preserved view instance, or create a new view."," // TODO: Maybe we can remove the strict check for `preserve` and"," // assume we'll use a View instance if it is there, and just check"," // `preserve` when detaching?"," if (viewInfo && viewInfo.preserve && viewInfo.instance) {"," view = viewInfo.instance;",""," // Make sure there's a mapping back to the view metadata."," this._viewInfoMap[Y.stamp(view, true)] = viewInfo;"," } else {"," // TODO: Add the app as a bubble target during construction, but"," // make sure to check that it isn't already in `bubbleTargets`!"," // This will allow the app to be notified for about _all_ of the"," // view's events. **Note:** This should _only_ happen if the"," // view is created _after_ `activeViewChange`.",""," view = this.createView(view, config);"," created = true;"," }"," }",""," // Update the specified or preserved `view` when signaled to do so."," // There's no need to updated a view if it was _just_ created."," if (options.update && !created) {"," view.setAttrs(config);"," }",""," // TODO: Hold off on rendering the view until after it has been"," // \"attached\", and move the call to render into `_attachView()`.",""," // When a value is specified for `options.render`, prefer it because it"," // represents the developer's intent. When no value is specified, the"," // `view` will only be rendered if it was just created."," if ('render' in options) {"," if (options.render) {"," view.render();"," }"," } else if (created) {"," view.render();"," }",""," return this._set('activeView', view, {options: options});"," },",""," // -- Protected Methods ----------------------------------------------------",""," /**"," Helper method to attach the view instance to the application by making the"," app a bubble target of the view, append the view to the `viewContainer`, and"," assign it to the `instance` property of the associated view info metadata.",""," @method _attachView"," @param {View} view View to attach."," @param {Boolean} prepend=false Whether the view should be prepended instead"," of appended to the `viewContainer`."," @protected"," @since 3.5.0"," **/"," _attachView: function (view, prepend) {"," if (!view) {"," return;"," }",""," var viewInfo = this.getViewInfo(view),"," viewContainer = this.get('viewContainer');",""," // Bubble the view's events to this app."," view.addTarget(this);",""," // Save the view instance in the `views` registry."," if (viewInfo) {"," viewInfo.instance = view;"," }",""," // TODO: Attach events here for persevered Views?"," // See related TODO in `_detachView`.",""," // TODO: Actually render the view here so that it gets \"attached\" before"," // it gets rendered?",""," // Insert view into the DOM."," viewContainer[prepend ? 'prepend' : 'append'](view.get('container'));"," },",""," /**"," Overrides View's container destruction to deal with the `viewContainer` and"," checks to make sure not to remove and purge the ``.",""," @method _destroyContainer"," @protected"," @see View._destroyContainer()"," **/"," _destroyContainer: function () {"," var CLASS_NAMES = Y.App.CLASS_NAMES,"," container = this.get('container'),"," viewContainer = this.get('viewContainer'),"," areSame = container.compareTo(viewContainer);",""," // We do not want to remove or destroy the ``."," if (Y.one('body').compareTo(container)) {"," // Just clean-up our events listeners."," this.detachEvents();",""," // Clean-up `yui3-app` CSS class on the `container`."," container.removeClass(CLASS_NAMES.app);",""," if (areSame) {"," // Clean-up `yui3-app-views` CSS class on the `container`."," container.removeClass(CLASS_NAMES.views);"," } else {"," // Destroy and purge the `viewContainer`."," viewContainer.remove(true);"," }",""," return;"," }",""," // Remove and purge events from both containers.",""," viewContainer.remove(true);",""," if (!areSame) {"," container.remove(true);"," }"," },",""," /**"," Helper method to detach the view instance from the application by removing"," the application as a bubble target of the view, and either just removing the"," view if it is intended to be preserved, or destroying the instance"," completely.",""," @method _detachView"," @param {View} view View to detach."," @protected"," @since 3.5.0"," **/"," _detachView: function (view) {"," if (!view) {"," return;"," }",""," var viewInfo = this.getViewInfo(view) || {};",""," if (viewInfo.preserve) {"," view.remove();"," // TODO: Detach events here for preserved Views? It is possible that"," // some event subscriptions are made on elements other than the"," // View's `container`."," } else {"," view.destroy({remove: true});",""," // TODO: The following should probably happen automagically from"," // `destroy()` being called! Possibly `removeTarget()` as well.",""," // Remove from view to view-info map."," delete this._viewInfoMap[Y.stamp(view, true)];",""," // Remove from view-info instance property."," if (view === viewInfo.instance) {"," delete viewInfo.instance;"," }"," }",""," view.removeTarget(this);"," },",""," /**"," Getter for the `viewContainer` attribute.",""," @method _getViewContainer"," @param {Node|null} value Current attribute value."," @return {Node} View container node."," @protected"," @since 3.5.0"," **/"," _getViewContainer: function (value) {"," // This wackiness is necessary to enable fully lazy creation of the"," // container node both when no container is specified and when one is"," // specified via a valueFn.",""," if (!value && !this._viewContainer) {"," // Create a default container and set that as the new attribute"," // value. The `this._viewContainer` property prevents infinite"," // recursion."," value = this._viewContainer = this.create();"," this._set('viewContainer', value);"," }",""," return value;"," },",""," /**"," Provides the default value for the `html5` attribute.",""," The value returned is dependent on the value of the `serverRouting`"," attribute. When `serverRouting` is explicit set to `false` (not just falsy),"," the default value for `html5` will be set to `false` for *all* browsers.",""," When `serverRouting` is `true` or `undefined` the returned value will be"," dependent on the browser's capability of using HTML5 history.",""," @method _initHtml5"," @return {Boolean} Whether or not HTML5 history should be used."," @protected"," @since 3.5.0"," **/"," _initHtml5: function () {"," // When `serverRouting` is explicitly set to `false` (not just falsy),"," // forcing hash-based URLs in all browsers."," if (this.get('serverRouting') === false) {"," return false;"," }",""," // Defaults to whether or not the browser supports HTML5 history."," return Router.html5;"," },",""," /**"," Determines if the specified `view` is configured as a child of the specified"," `parent` view. This requires both views to be either named-views, or view"," instances created using configuration data that exists in the `views`"," object, e.g. created by the `createView()` or `showView()` method.",""," @method _isChildView"," @param {View|String} view The name of a view defined in the `views` object,"," or a view instance."," @param {View|String} parent The name of a view defined in the `views`"," object, or a view instance."," @return {Boolean} Whether the view is configured as a child of the parent."," @protected"," @since 3.5.0"," **/"," _isChildView: function (view, parent) {"," var viewInfo = this.getViewInfo(view),"," parentInfo = this.getViewInfo(parent);",""," if (viewInfo && parentInfo) {"," return this.getViewInfo(viewInfo.parent) === parentInfo;"," }",""," return false;"," },",""," /**"," Determines if the specified `view` is configured as the parent of the"," specified `child` view. This requires both views to be either named-views,"," or view instances created using configuration data that exists in the"," `views` object, e.g. created by the `createView()` or `showView()` method.",""," @method _isParentView"," @param {View|String} view The name of a view defined in the `views` object,"," or a view instance."," @param {View|String} parent The name of a view defined in the `views`"," object, or a view instance."," @return {Boolean} Whether the view is configured as the parent of the child."," @protected"," @since 3.5.0"," **/"," _isParentView: function (view, child) {"," var viewInfo = this.getViewInfo(view),"," childInfo = this.getViewInfo(child);",""," if (viewInfo && childInfo) {"," return this.getViewInfo(childInfo.parent) === viewInfo;"," }",""," return false;"," },",""," /**"," Underlying implementation for `navigate()`.",""," @method _navigate"," @param {String} url The fully-resolved URL that the app should dispatch to"," its route handlers to fulfill the enhanced navigation \"request\", or use to"," update `window.location` in non-HTML5 history capable browsers when"," `serverRouting` is `true`."," @param {Object} [options] Additional options to configure the navigation."," These are mixed into the `navigate` event facade."," @param {Boolean} [options.replace] Whether or not the current history"," entry will be replaced, or a new entry will be created. Will default"," to `true` if the specified `url` is the same as the current URL."," @param {Boolean} [options.force] Whether the enhanced navigation"," should occur even in browsers without HTML5 history. Will default to"," `true` when `serverRouting` is falsy."," @protected"," @see PjaxBase._navigate()"," **/"," _navigate: function (url, options) {"," if (!this.get('serverRouting')) {"," // Force navigation to be enhanced and handled by the app when"," // `serverRouting` is falsy because the server might not be able to"," // properly handle the request."," options = Y.merge({force: true}, options);"," }",""," return PjaxBase.prototype._navigate.call(this, url, options);"," },",""," /**"," Will either save a history entry using `pushState()` or the location hash,"," or gracefully-degrade to sending a request to the server causing a full-page"," reload.",""," Overrides Router's `_save()` method to preform graceful-degradation when the"," app's `serverRouting` is `true` and `html5` is `false` by updating the full"," URL via standard assignment to `window.location` or by calling"," `window.location.replace()`; both of which will cause a request to the"," server resulting in a full-page reload.",""," Otherwise this will just delegate off to Router's `_save()` method allowing"," the client-side enhanced routing to occur.",""," @method _save"," @param {String} [url] URL for the history entry."," @param {Boolean} [replace=false] If `true`, the current history entry will"," be replaced instead of a new one being added."," @chainable"," @protected"," @see Router._save()"," **/"," _save: function (url, replace) {"," var path;",""," // Forces full-path URLs to always be used by modifying"," // `window.location` in non-HTML5 history capable browsers."," if (this.get('serverRouting') && !this.get('html5')) {"," // Perform same-origin check on the specified URL."," if (!this._hasSameOrigin(url)) {"," Y.error('Security error: The new URL must be of the same origin as the current URL.');"," return this;"," }",""," // Either replace the current history entry or create a new one"," // while navigating to the `url`."," if (win) {"," // Results in the URL's full path starting with '/'."," path = this._joinURL(url || '');",""," if (replace) {"," win.location.replace(path);"," } else {"," win.location = path;"," }"," }",""," return this;"," }",""," return Router.prototype._save.apply(this, arguments);"," },",""," /**"," Performs the actual change of this app's `activeView` by attaching the"," `newView` to this app, and detaching the `oldView` from this app using any"," specified `options`.",""," The `newView` is attached to the app by rendering it to the `viewContainer`,"," and making this app a bubble target of its events.",""," The `oldView` is detached from the app by removing it from the"," `viewContainer`, and removing this app as a bubble target for its events."," The `oldView` will either be preserved or properly destroyed.",""," **Note:** The `activeView` attribute is read-only and can be changed by"," calling the `showView()` method.",""," @method _uiSetActiveView"," @param {View} newView The View which is now this app's `activeView`."," @param {View} [oldView] The View which was this app's `activeView`."," @param {Object} [options] Optional object containing any of the following"," properties:"," @param {Function} [options.callback] Optional callback function to call"," after new `activeView` is ready to use, the function will be passed:"," @param {View} options.callback.view A reference to the new"," `activeView`."," @param {Boolean} [options.prepend=false] Whether the `view` should be"," prepended instead of appended to the `viewContainer`."," @param {Boolean} [options.render] Whether the `view` should be rendered."," **Note:** If no value is specified, a view instance will only be"," rendered if it's newly created by this method."," @param {Boolean} [options.update=false] Whether an existing view should"," have its attributes updated by passing the `config` object to its"," `setAttrs()` method. **Note:** This option does not have an effect if"," the `view` instance is created as a result of calling this method."," @protected"," @since 3.5.0"," **/"," _uiSetActiveView: function (newView, oldView, options) {"," options || (options = {});",""," var callback = options.callback,"," isChild = this._isChildView(newView, oldView),"," isParent = !isChild && this._isParentView(newView, oldView),"," prepend = !!options.prepend || isParent;",""," // Prevent detaching (thus removing) the view we want to show. Also hard"," // to animate out and in, the same view."," if (newView === oldView) {"," return callback && callback.call(this, newView);"," }",""," this._attachView(newView, prepend);"," this._detachView(oldView);",""," if (callback) {"," callback.call(this, newView);"," }"," },",""," // -- Protected Event Handlers ---------------------------------------------",""," /**"," Handles the application's `activeViewChange` event (which is fired when the"," `activeView` attribute changes) by detaching the old view, attaching the new"," view.",""," The `activeView` attribute is read-only, so the public API to change its"," value is through the `showView()` method.",""," @method _afterActiveViewChange"," @param {EventFacade} e"," @protected"," @since 3.5.0"," **/"," _afterActiveViewChange: function (e) {"," this._uiSetActiveView(e.newVal, e.prevVal, e.options);"," }","}, {"," ATTRS: {"," /**"," The application's active/visible view.",""," This attribute is read-only, to set the `activeView` use the"," `showView()` method.",""," @attribute activeView"," @type View"," @default null"," @readOnly"," @see App.Base.showView()"," @since 3.5.0"," **/"," activeView: {"," value : null,"," readOnly: true"," },",""," /**"," Container node which represents the application's bounding-box, into"," which this app's content will be rendered.",""," The container node serves as the host for all DOM events attached by the"," app. Delegation is used to handle events on children of the container,"," allowing the container's contents to be re-rendered at any time without"," losing event subscriptions.",""," The default container is the `` Node, but you can override this in"," a subclass, or by passing in a custom `container` config value at"," instantiation time.",""," When `container` is overridden by a subclass or passed as a config"," option at instantiation time, it may be provided as a selector string, a"," DOM element, or a `Y.Node` instance. During initialization, this app's"," `create()` method will be called to convert the container into a"," `Y.Node` instance if it isn't one already and stamp it with the CSS"," class: `\"yui3-app\"`.",""," The container is not added to the page automatically. This allows you to"," have full control over how and when your app is actually rendered to"," the page.",""," @attribute container"," @type HTMLElement|Node|String"," @default Y.one('body')"," @initOnly"," **/"," container: {"," valueFn: function () {"," return Y.one('body');"," }"," },",""," /**"," Whether or not this browser is capable of using HTML5 history.",""," This value is dependent on the value of `serverRouting` and will default"," accordingly.",""," Setting this to `false` will force the use of hash-based history even on"," HTML5 browsers, but please don't do this unless you understand the"," consequences.",""," @attribute html5"," @type Boolean"," @initOnly"," @see serverRouting"," **/"," html5: {"," valueFn: '_initHtml5'"," },",""," /**"," CSS selector string used to filter link click events so that only the"," links which match it will have the enhanced-navigation behavior of pjax"," applied.",""," When a link is clicked and that link matches this selector, navigating"," to the link's `href` URL using the enhanced, pjax, behavior will be"," attempted; and the browser's default way to navigate to new pages will"," be the fallback.",""," By default this selector will match _all_ links on the page.",""," @attribute linkSelector"," @type String|Function"," @default \"a\""," **/"," linkSelector: {"," value: 'a'"," },",""," /**"," Whether or not this application's server is capable of properly routing"," all requests and rendering the initial state in the HTML responses.",""," This can have three different values, each having particular"," implications on how the app will handle routing and navigation:",""," * `undefined`: The best form of URLs will be chosen based on the"," capabilities of the browser. Given no information about the server"," environmentm a balanced approach to routing and navigation is"," chosen.",""," The server should be capable of handling full-path requests, since"," full-URLs will be generated by browsers using HTML5 history. If this"," is a client-side-only app the server could handle full-URL requests"," by sending a redirect back to the root with a hash-based URL, e.g:",""," Request: http://example.com/users/1"," Redirect to: http://example.com/#/users/1",""," * `true`: The server is *fully* capable of properly handling requests"," to all full-path URLs the app can produce.",""," This is the best option for progressive-enhancement because it will"," cause **all URLs to always have full-paths**, which means the server"," will be able to accurately handle all URLs this app produces. e.g.",""," http://example.com/users/1",""," To meet this strict full-URL requirement, browsers which are not"," capable of using HTML5 history will make requests to the server"," resulting in full-page reloads.",""," * `false`: The server is *not* capable of properly handling requests"," to all full-path URLs the app can produce, therefore all routing"," will be handled by this App instance.",""," Be aware that this will cause **all URLs to always be hash-based**,"," even in browsers that are capable of using HTML5 history. e.g.",""," http://example.com/#/users/1",""," A single-page or client-side-only app where the server sends a"," \"shell\" page with JavaScript to the client might have this"," restriction. If you're setting this to `false`, read the following:",""," **Note:** When this is set to `false`, the server will *never* receive"," the full URL because browsers do not send the fragment-part to the"," server, that is everything after and including the \"#\".",""," Consider the following example:",""," URL shown in browser: http://example.com/#/users/1"," URL sent to server: http://example.com/",""," You should feel bad about hurting our precious web if you forcefully set"," either `serverRouting` or `html5` to `false`, because you're basically"," punching the web in the face here with your lossy URLs! Please make sure"," you know what you're doing and that you understand the implications.",""," Ideally you should always prefer full-path URLs (not /#/foo/), and want"," full-page reloads when the client's browser is not capable of enhancing"," the experience using the HTML5 history APIs. Setting this to `true` is"," the best option for progressive-enhancement (and graceful-degradation).",""," @attribute serverRouting"," @type Boolean"," @default undefined"," @initOnly"," @since 3.5.0"," **/"," serverRouting: {"," valueFn : function () { return Y.App.serverRouting; },"," writeOnce: 'initOnly'"," },",""," /**"," The node into which this app's `views` will be rendered when they become"," the `activeView`.",""," The view container node serves as the container to hold the app's"," `activeView`. Each time the `activeView` is set via `showView()`, the"," previous view will be removed from this node, and the new active view's"," `container` node will be appended.",""," The default view container is a `
          ` Node, but you can override this"," in a subclass, or by passing in a custom `viewContainer` config value at"," instantiation time. The `viewContainer` may be provided as a selector"," string, DOM element, or a `Y.Node` instance (having the `viewContainer`"," and the `container` be the same node is also supported).",""," The app's `render()` method will stamp the view container with the CSS"," class `\"yui3-app-views\"` and append it to the app's `container` node if"," it isn't already, and any `activeView` will be appended to this node if"," it isn't already.",""," @attribute viewContainer"," @type HTMLElement|Node|String"," @default Y.Node.create(this.containerTemplate)"," @initOnly"," @since 3.5.0"," **/"," viewContainer: {"," getter : '_getViewContainer',"," setter : Y.one,"," writeOnce: true"," }"," },",""," /**"," Properties that shouldn't be turned into ad-hoc attributes when passed to"," App's constructor.",""," @property _NON_ATTRS_CFG"," @type Array"," @static"," @protected"," @since 3.5.0"," **/"," _NON_ATTRS_CFG: ['views']","});","","// -- Namespace ----------------------------------------------------------------","Y.namespace('App').Base = AppBase;","","/**","Provides a top-level application component which manages navigation and views.","","This gives you a foundation and structure on which to build your application; it","combines robust URL navigation with powerful routing and flexible view","management.","","`Y.App` is both a namespace and constructor function. The `Y.App` class is","special in that any `Y.App` class extensions that are included in the YUI","instance will be **auto-mixed** on to the `Y.App` class. Consider this example:",""," YUI().use('app-base', 'app-transitions', function (Y) {"," // This will create two YUI Apps, `basicApp` will not have transitions,"," // but `fancyApp` will have transitions support included and turn it on."," var basicApp = new Y.App.Base(),"," fancyApp = new Y.App({transitions: true});"," });","","@class App","@param {Object} [config] The following are configuration properties that can be"," specified _in addition_ to default attribute values and the non-attribute"," properties provided by `Y.Base`:"," @param {Object} [config.views] Hash of view-name to metadata used to"," declaratively describe an application's views and their relationship with"," the app and other views. The views specified here will override any defaults"," provided by the `views` object on the `prototype`.","@constructor","@extends App.Base","@uses App.Content","@uses App.Transitions","@uses PjaxContent","@since 3.5.0","**/","Y.App = Y.mix(Y.Base.create('app', AppBase, []), Y.App, true);","","/**","CSS classes used by `Y.App`.","","@property CLASS_NAMES","@type Object","@default {}","@static","@since 3.6.0","**/","Y.App.CLASS_NAMES = {"," app : getClassName('app'),"," views: getClassName('app', 'views')","};","","/**","Default `serverRouting` attribute value for all apps.","","@property serverRouting","@type Boolean","@default undefined","@static","@since 3.6.0","**/","","","}, '3.8.0', {\"requires\": [\"classnamemanager\", \"pjax-base\", \"router\", \"view\"]});"]; _yuitest_coverage["build/app-base/app-base.js"].lines = {"1":0,"40":0,"75":0,"151":0,"153":0,"156":0,"157":0,"162":0,"166":0,"170":0,"171":0,"174":0,"178":0,"179":0,"202":0,"207":0,"211":0,"212":0,"214":0,"229":0,"230":0,"233":0,"286":0,"293":0,"294":0,"297":0,"298":0,"302":0,"303":0,"306":0,"376":0,"378":0,"381":0,"382":0,"383":0,"384":0,"387":0,"388":0,"394":0,"395":0,"398":0,"406":0,"407":0,"413":0,"414":0,"423":0,"424":0,"425":0,"427":0,"428":0,"431":0,"449":0,"450":0,"453":0,"457":0,"460":0,"461":0,"471":0,"483":0,"489":0,"491":0,"494":0,"496":0,"498":0,"501":0,"504":0,"509":0,"511":0,"512":0,"528":0,"529":0,"532":0,"534":0,"535":0,"540":0,"546":0,"549":0,"550":0,"554":0,"571":0,"575":0,"576":0,"579":0,"600":0,"601":0,"605":0,"624":0,"627":0,"628":0,"631":0,"650":0,"653":0,"654":0,"657":0,"680":0,"684":0,"687":0,"713":0,"717":0,"719":0,"720":0,"721":0,"726":0,"728":0,"730":0,"731":0,"733":0,"737":0,"740":0,"780":0,"782":0,"789":0,"790":0,"793":0,"794":0,"796":0,"797":0,"817":0,"870":0,"985":0,"1036":0,"1071":0,"1082":0}; _yuitest_coverage["build/app-base/app-base.js"].functions = {"mergeViewConfig:156":0,"initializer:150":0,"createView:201":0,"getViewInfo:228":0,"render:285":0,"showView:375":0,"_attachView:448":0,"_destroyContainer:482":0,"_detachView:527":0,"_getViewContainer:566":0,"_initHtml5:597":0,"_isChildView:623":0,"_isParentView:649":0,"_navigate:679":0,"_save:712":0,"_uiSetActiveView:779":0,"_afterActiveViewChange:816":0,"valueFn:869":0,"valueFn:985":0,"(anonymous 1):1":0}; _yuitest_coverage["build/app-base/app-base.js"].coveredLines = 123; @@ -1277,4 +1277,4 @@ Default `serverRouting` attribute value for all apps. **/ -}, '3.7.3', {"requires": ["classnamemanager", "pjax-base", "router", "view"]}); +}, '3.8.0', {"requires": ["classnamemanager", "pjax-base", "router", "view"]}); diff --git a/lib/yuilib/3.7.3/build/app-base/app-base-debug.js b/lib/yuilib/3.8.0/build/app-base/app-base-debug.js similarity index 99% rename from lib/yuilib/3.7.3/build/app-base/app-base-debug.js rename to lib/yuilib/3.8.0/build/app-base/app-base-debug.js index 8c6631e55f8..743dcb9b9e6 100644 --- a/lib/yuilib/3.7.3/build/app-base/app-base-debug.js +++ b/lib/yuilib/3.8.0/build/app-base/app-base-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -1101,4 +1101,4 @@ Default `serverRouting` attribute value for all apps. **/ -}, '3.7.3', {"requires": ["classnamemanager", "pjax-base", "router", "view"]}); +}, '3.8.0', {"requires": ["classnamemanager", "pjax-base", "router", "view"]}); diff --git a/lib/yuilib/3.7.3/build/app-base/app-base-min.js b/lib/yuilib/3.8.0/build/app-base/app-base-min.js similarity index 97% rename from lib/yuilib/3.7.3/build/app-base/app-base-min.js rename to lib/yuilib/3.8.0/build/app-base/app-base-min.js index 4dea9673e6f..df8e38f6c1f 100644 --- a/lib/yuilib/3.7.3/build/app-base/app-base-min.js +++ b/lib/yuilib/3.8.0/build/app-base/app-base-min.js @@ -1,7 +1,7 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ -YUI.add("app-base",function(e,t){var n=e.Lang,r=e.Object,i=e.PjaxBase,s=e.Router,o=e.View,u=e.ClassNameManager.getClassName,a=e.config.win,f;f=e.Base.create("app",e.Base,[o,s,i],{views:{},initializer:function(t){function i(t,r){n[r]=e.merge(n[r],t)}t||(t={});var n={};r.each(this.views,i),r.each(t.views,i),this.views=n,this._viewInfoMap={},this.after("activeViewChange",e.bind("_afterActiveViewChange",this)),this.get("serverRouting")||this._pjaxBindUI()},createView:function(t,i){var s=this.getViewInfo(t),u=s&&s.type||o,a,f;return a=n.isString(u)?r.getValue(e,u.split(".")):u,f=new a(i),this._viewInfoMap[e.stamp(f,!0)]=s,f},getViewInfo:function(t){return n.isString(t)?this.views[t]:t&&this._viewInfoMap[e.stamp(t,!0)]},render:function(){var t=e.App.CLASS_NAMES,n=this.get("container"),r=this.get("viewContainer"),i=this.get("activeView"),s=i&&i.get("container"),o=n.compareTo(r);return n.addClass(t.app),r.addClass(t.views),i&&!r.contains(s)&&r.appendChild(s),!n.contains(r)&&!o&&n.appendChild(r),this},showView:function(t,r,i,s){var o,u;return i||(i={}),s?i=e.merge(i,{callback:s}):n.isFunction(i)&&(i={callback:i}),n.isString(t)&&(o=this.getViewInfo(t),o&&o.preserve&&o.instance?(t=o.instance,this._viewInfoMap[e.stamp(t,!0)]=o):(t=this.createView(t,r),u=!0)),i.update&&!u&&t.setAttrs(r),"render"in i?i.render&&t.render():u&&t.render(),this._set("activeView",t,{options:i})},_attachView:function(e,t){if(!e)return;var n=this.getViewInfo(e),r=this.get("viewContainer");e.addTarget(this),n&&(n.instance=e),r[t?"prepend":"append"](e.get("container"))},_destroyContainer:function(){var t=e.App.CLASS_NAMES,n=this.get("container"),r=this.get("viewContainer"),i=n.compareTo(r);if(e.one("body").compareTo(n)){this.detachEvents(),n.removeClass(t.app),i?n.removeClass(t.views):r.remove(!0);return}r.remove(!0),i||n.remove(!0)},_detachView:function(t){if(!t)return;var n=this.getViewInfo(t)||{};n.preserve?t.remove():(t.destroy({remove:!0}),delete this._viewInfoMap[e.stamp(t,!0)],t===n.instance&&delete n.instance),t.removeTarget(this)},_getViewContainer:function(e){return!e&&!this._viewContainer&&(e=this._viewContainer=this.create(),this._set("viewContainer",e)),e},_initHtml5:function(){return this.get("serverRouting")===!1?!1:s.html5},_isChildView:function(e,t){var n=this.getViewInfo(e),r=this.getViewInfo(t);return n&&r?this.getViewInfo(n.parent)===r:!1},_isParentView:function(e,t){var n=this.getViewInfo(e),r=this.getViewInfo(t);return n&&r?this.getViewInfo(r.parent)===n:!1},_navigate:function(t,n){return this.get("serverRouting")||(n=e.merge({force:!0},n)),i.prototype._navigate.call(this,t,n)},_save:function(t,n){var r;return this.get("serverRouting")&&!this.get("html5")?this._hasSameOrigin(t)?(a&&(r=this._joinURL(t||""),n?a.location.replace(r):a.location=r),this):(e.error("Security error: The new URL must be of the same origin as the current URL."),this):s.prototype._save.apply(this,arguments)},_uiSetActiveView:function(e,t,n){n||(n={});var r=n.callback,i=this._isChildView(e,t),s=!i&&this._isParentView(e,t),o=!!n.prepend||s;if(e===t)return r&&r.call(this,e);this._attachView(e,o),this._detachView(t),r&&r.call(this,e)},_afterActiveViewChange:function(e){this._uiSetActiveView(e.newVal,e.prevVal,e.options)}},{ATTRS:{activeView:{value:null,readOnly:!0},container:{valueFn:function(){return e.one("body")}},html5:{valueFn:"_initHtml5"},linkSelector:{value:"a"},serverRouting:{valueFn:function(){return e.App.serverRouting},writeOnce:"initOnly"},viewContainer:{getter:"_getViewContainer",setter:e.one,writeOnce:!0}},_NON_ATTRS_CFG:["views"]}),e.namespace("App").Base=f,e.App=e.mix(e.Base.create("app",f,[]),e.App,!0),e.App.CLASS_NAMES={app:u("app"),views:u("app","views")}},"3.7.3",{requires:["classnamemanager","pjax-base","router","view"]}); +YUI.add("app-base",function(e,t){var n=e.Lang,r=e.Object,i=e.PjaxBase,s=e.Router,o=e.View,u=e.ClassNameManager.getClassName,a=e.config.win,f;f=e.Base.create("app",e.Base,[o,s,i],{views:{},initializer:function(t){function i(t,r){n[r]=e.merge(n[r],t)}t||(t={});var n={};r.each(this.views,i),r.each(t.views,i),this.views=n,this._viewInfoMap={},this.after("activeViewChange",e.bind("_afterActiveViewChange",this)),this.get("serverRouting")||this._pjaxBindUI()},createView:function(t,i){var s=this.getViewInfo(t),u=s&&s.type||o,a,f;return a=n.isString(u)?r.getValue(e,u.split(".")):u,f=new a(i),this._viewInfoMap[e.stamp(f,!0)]=s,f},getViewInfo:function(t){return n.isString(t)?this.views[t]:t&&this._viewInfoMap[e.stamp(t,!0)]},render:function(){var t=e.App.CLASS_NAMES,n=this.get("container"),r=this.get("viewContainer"),i=this.get("activeView"),s=i&&i.get("container"),o=n.compareTo(r);return n.addClass(t.app),r.addClass(t.views),i&&!r.contains(s)&&r.appendChild(s),!n.contains(r)&&!o&&n.appendChild(r),this},showView:function(t,r,i,s){var o,u;return i||(i={}),s?i=e.merge(i,{callback:s}):n.isFunction(i)&&(i={callback:i}),n.isString(t)&&(o=this.getViewInfo(t),o&&o.preserve&&o.instance?(t=o.instance,this._viewInfoMap[e.stamp(t,!0)]=o):(t=this.createView(t,r),u=!0)),i.update&&!u&&t.setAttrs(r),"render"in i?i.render&&t.render():u&&t.render(),this._set("activeView",t,{options:i})},_attachView:function(e,t){if(!e)return;var n=this.getViewInfo(e),r=this.get("viewContainer");e.addTarget(this),n&&(n.instance=e),r[t?"prepend":"append"](e.get("container"))},_destroyContainer:function(){var t=e.App.CLASS_NAMES,n=this.get("container"),r=this.get("viewContainer"),i=n.compareTo(r);if(e.one("body").compareTo(n)){this.detachEvents(),n.removeClass(t.app),i?n.removeClass(t.views):r.remove(!0);return}r.remove(!0),i||n.remove(!0)},_detachView:function(t){if(!t)return;var n=this.getViewInfo(t)||{};n.preserve?t.remove():(t.destroy({remove:!0}),delete this._viewInfoMap[e.stamp(t,!0)],t===n.instance&&delete n.instance),t.removeTarget(this)},_getViewContainer:function(e){return!e&&!this._viewContainer&&(e=this._viewContainer=this.create(),this._set("viewContainer",e)),e},_initHtml5:function(){return this.get("serverRouting")===!1?!1:s.html5},_isChildView:function(e,t){var n=this.getViewInfo(e),r=this.getViewInfo(t);return n&&r?this.getViewInfo(n.parent)===r:!1},_isParentView:function(e,t){var n=this.getViewInfo(e),r=this.getViewInfo(t);return n&&r?this.getViewInfo(r.parent)===n:!1},_navigate:function(t,n){return this.get("serverRouting")||(n=e.merge({force:!0},n)),i.prototype._navigate.call(this,t,n)},_save:function(t,n){var r;return this.get("serverRouting")&&!this.get("html5")?this._hasSameOrigin(t)?(a&&(r=this._joinURL(t||""),n?a.location.replace(r):a.location=r),this):(e.error("Security error: The new URL must be of the same origin as the current URL."),this):s.prototype._save.apply(this,arguments)},_uiSetActiveView:function(e,t,n){n||(n={});var r=n.callback,i=this._isChildView(e,t),s=!i&&this._isParentView(e,t),o=!!n.prepend||s;if(e===t)return r&&r.call(this,e);this._attachView(e,o),this._detachView(t),r&&r.call(this,e)},_afterActiveViewChange:function(e){this._uiSetActiveView(e.newVal,e.prevVal,e.options)}},{ATTRS:{activeView:{value:null,readOnly:!0},container:{valueFn:function(){return e.one("body")}},html5:{valueFn:"_initHtml5"},linkSelector:{value:"a"},serverRouting:{valueFn:function(){return e.App.serverRouting},writeOnce:"initOnly"},viewContainer:{getter:"_getViewContainer",setter:e.one,writeOnce:!0}},_NON_ATTRS_CFG:["views"]}),e.namespace("App").Base=f,e.App=e.mix(e.Base.create("app",f,[]),e.App,!0),e.App.CLASS_NAMES={app:u("app"),views:u("app","views")}},"3.8.0",{requires:["classnamemanager","pjax-base","router","view"]}); diff --git a/lib/yuilib/3.7.3/build/app-base/app-base.js b/lib/yuilib/3.8.0/build/app-base/app-base.js similarity index 99% rename from lib/yuilib/3.7.3/build/app-base/app-base.js rename to lib/yuilib/3.8.0/build/app-base/app-base.js index 8c6631e55f8..743dcb9b9e6 100644 --- a/lib/yuilib/3.7.3/build/app-base/app-base.js +++ b/lib/yuilib/3.8.0/build/app-base/app-base.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -1101,4 +1101,4 @@ Default `serverRouting` attribute value for all apps. **/ -}, '3.7.3', {"requires": ["classnamemanager", "pjax-base", "router", "view"]}); +}, '3.8.0', {"requires": ["classnamemanager", "pjax-base", "router", "view"]}); diff --git a/lib/yuilib/3.7.3/build/app-content/app-content-coverage.js b/lib/yuilib/3.8.0/build/app-content/app-content-coverage.js similarity index 96% rename from lib/yuilib/3.7.3/build/app-content/app-content-coverage.js rename to lib/yuilib/3.8.0/build/app-content/app-content-coverage.js index 9bbff14ee97..6fa6595dc87 100644 --- a/lib/yuilib/3.7.3/build/app-content/app-content-coverage.js +++ b/lib/yuilib/3.8.0/build/app-content/app-content-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,8 +32,8 @@ _yuitest_coverage["build/app-content/app-content.js"] = { path: "build/app-content/app-content.js", code: [] }; -_yuitest_coverage["build/app-content/app-content.js"].code=["YUI.add('app-content', function (Y, NAME) {","","/**","`Y.App` extension that provides pjax-style content fetching and handling.","","@module app","@submodule app-content","@since 3.7.0","**/","","var PjaxContent = Y.PjaxContent;","","/**","`Y.App` extension that provides pjax-style content fetching and handling.","","This makes it easy to fetch server rendered content for URLs using Ajax. The","HTML content returned from the server will be view-ified and set as the app's","main content, making it seamless to use a mixture of server and client rendered","views.","","When the `\"app-content\"` module is used, it will automatically mix itself into","`Y.App`, and it provides three main features:",""," - **`Y.App.Content.route`**: A stack of middleware which forms a pjax-style"," content route.",""," - **`loadContent()`**: Route middleware which load content from a server. This"," makes an Ajax request for the requested URL, parses the returned content and"," puts it on the route's response object.",""," - **`showContent()`**: Method which provides an easy way to view-ify HTML"," content which should be shown as an app's active/visible view.","","The following is an example of how these features can be used:",""," // Creates a new app and registers the `\"post\"` view."," var app = new Y.App({"," views: {"," post: {type: Y.PostView}"," }"," });",""," // Uses a simple server rendered content route for the About page."," app.route('/about/', Y.App.Content.route);",""," // Uses the `loadContent()` middleware to fetch the contents of the post"," // from the server and shows that content in a `\"post\"` view."," app.route('/posts/:id/', 'loadContent', function (req, res, next) {"," this.showContent(res.content.node, {view: 'post'});"," });","","@class App.Content","@uses PjaxContent","@extensionfor App","@since 3.7.0","**/","function AppContent() {"," PjaxContent.apply(this, arguments);","}","","/**","A stack of middleware which forms a pjax-style content route.","","This route will load the rendered HTML content from the server, then create and","show a new view using those contents.","","@property route","@type Array","@static","@since 3.7.0","**/","AppContent.route = ['loadContent', '_contentRoute'];","","AppContent.prototype = {"," // -- Public Methods -------------------------------------------------------",""," /**"," Sets this app's `activeView` attribute using the specified `content`.",""," This provides an easy way to view-ify HTML content which should be shown as"," this app's active/visible view. This method will determine the appropriate"," view `container` node based on the specified `content`. By default, a new"," `Y.View` instance will be created unless `options.view` is specified.",""," Under the hood, this method calls the `showView()` method, so refer to its"," docs for more information.",""," @method showContent"," @param {HTMLElement|Node|String} content The content to show, it may be"," provided as a selector string, a DOM element, or a `Y.Node` instance."," @param {Object} [options] Optional objects containing any of the following"," properties in addition to any `showView()` options:",""," @param {Object|String} [options.view] The name of a view defined in this"," app's `views`, or an object with the following properties:",""," @param {String} options.view.name The name of a view defined in this"," app's `views`."," @param {Object} [options.view.config] Optional configuration to use when"," creating the new view instance. This config object can also be used"," to update an existing or preserved view's attributes when"," `options.update` is `true`. **Note:** If a `container` is specified,"," it will be overridden by the `content` specified in the first"," argument.",""," @param {Function} [callback] Optional callback function to call after the"," new `activeView` is ready to use. **Note:** this will override"," `options.callback` and it can be specified as either the second or third"," argument. The function will be passed the following:",""," @param {View} callback.view A reference to the new `activeView`.",""," @since 3.7.0"," @see App.showView()"," **/"," showContent: function (content, options, callback) {"," // Makes sure we have a node instance, and will query selector strings."," content = Y.one(content);",""," // Support the callback function being either the second or third arg."," if (typeof options === 'function') {"," options = {callback: options};"," callback = null;"," }",""," // Mix in default option to *not* render the view because presumably we"," // have pre-rendered content here. This also creates a copy so we can"," // modify the object."," options = Y.merge({render: false}, options);",""," var view = options.view || '',"," viewName = typeof view === 'string' ? view : view.name,"," viewConfig = typeof view !== 'string' ? view.config : {},"," viewInfo = this.getViewInfo(viewName),"," container, template, type, ViewConstructor;",""," // Remove `view` from the `options` which will be passed along to the"," // `showView()` method."," delete options.view;",""," // When the specified `content` is a document fragment, we want to see"," // if it only contains a single node, and use that as the content. This"," // checks `childNodes` which will include text nodes."," if (content && content.isFragment() &&"," content.get('childNodes').size() === 1) {",""," content = content.get('firstChild');"," }",""," // When the `content` is an element node (`nodeType` 1), we can use it"," // as-is for the `container`. Otherwise, we'll construct a new container"," // based on the `options.view`'s `containerTemplate`."," if (content && content.get('nodeType') === 1) {"," container = content;"," } else {"," type = (viewInfo && viewInfo.type) || Y.View;",""," // Looks for a namespaced constructor function on `Y`."," ViewConstructor = typeof type === 'string' ?"," Y.Object.getValue(Y, type.split('.')) : type;",""," // Find the correct node template for the view."," template = ViewConstructor.prototype.containerTemplate;"," container = Y.Node.create(template);",""," // Append the document fragment to the newly created `container`"," // node. This is the worst case where we have to create a wrapper"," // node around the `content`."," container.append(content);"," }",""," // Makes sure the view is created using _our_ `container` node."," viewConfig = Y.merge(viewConfig, {container: container});",""," // Finally switch to the new `activeView`. We want to make sure `view`"," // is a string if it's falsy, that way a new view will be created."," return this.showView(viewName, viewConfig, options, callback);"," },",""," // -- Protected Methods ----------------------------------------------------",""," /**"," Provides a default content route which will show a server rendered view.",""," **Note:** This route callback assumes that it's called after the"," `loadContent()` middleware.",""," @method _contentRoute"," @param {Object} req Request object."," @param {Object} res Response Object."," @param {Function} next Function to pass control to the next route callback."," @protected"," @since 3.7.0"," @see Y.App.Content.route"," **/"," _contentRoute: function (req, res, next) {"," var content = res.content,"," doc = Y.config.doc,"," activeViewHandle;",""," // We must have some content to work with."," if (!(content && content.node)) { return next(); }",""," if (content.title && doc) {"," // Make sure the `activeView` does actually change before we go"," // messing with the page title."," activeViewHandle = this.onceAfter('activeViewChange', function () {"," doc.title = content.title;"," });"," }",""," this.showContent(content.node);",""," // Detach the handle just in case."," if (activeViewHandle) {"," activeViewHandle.detach();"," }",""," next();"," }","};","","// Mix statics.","Y.mix(AppContent, PjaxContent);","// Mix prototype.","Y.mix(AppContent, PjaxContent, false, null, 1);","","// -- Namespace ----------------------------------------------------------------","Y.App.Content = AppContent;","Y.Base.mix(Y.App, [AppContent]);","","","}, '3.7.3', {\"requires\": [\"app-base\", \"pjax-content\"]});"]; -_yuitest_coverage["build/app-content/app-content.js"].lines = {"1":0,"11":0,"57":0,"58":0,"72":0,"74":0,"118":0,"121":0,"122":0,"123":0,"129":0,"131":0,"139":0,"144":0,"147":0,"153":0,"154":0,"156":0,"159":0,"163":0,"164":0,"169":0,"173":0,"177":0,"197":0,"202":0,"204":0,"207":0,"208":0,"212":0,"215":0,"216":0,"219":0,"224":0,"226":0,"229":0,"230":0}; +_yuitest_coverage["build/app-content/app-content.js"].code=["YUI.add('app-content', function (Y, NAME) {","","/**","`Y.App` extension that provides pjax-style content fetching and handling.","","@module app","@submodule app-content","@since 3.7.0","**/","","var PjaxContent = Y.PjaxContent;","","/**","`Y.App` extension that provides pjax-style content fetching and handling.","","This makes it easy to fetch server rendered content for URLs using Ajax. The","HTML content returned from the server will be view-ified and set as the app's","main content, making it seamless to use a mixture of server and client rendered","views.","","When the `\"app-content\"` module is used, it will automatically mix itself into","`Y.App`, and it provides three main features:",""," - **`Y.App.Content.route`**: A stack of middleware which forms a pjax-style"," content route.",""," - **`loadContent()`**: Route middleware which load content from a server. This"," makes an Ajax request for the requested URL, parses the returned content and"," puts it on the route's response object.",""," - **`showContent()`**: Method which provides an easy way to view-ify HTML"," content which should be shown as an app's active/visible view.","","The following is an example of how these features can be used:",""," // Creates a new app and registers the `\"post\"` view."," var app = new Y.App({"," views: {"," post: {type: Y.PostView}"," }"," });",""," // Uses a simple server rendered content route for the About page."," app.route('/about/', Y.App.Content.route);",""," // Uses the `loadContent()` middleware to fetch the contents of the post"," // from the server and shows that content in a `\"post\"` view."," app.route('/posts/:id/', 'loadContent', function (req, res, next) {"," this.showContent(res.content.node, {view: 'post'});"," });","","@class App.Content","@uses PjaxContent","@extensionfor App","@since 3.7.0","**/","function AppContent() {"," PjaxContent.apply(this, arguments);","}","","/**","A stack of middleware which forms a pjax-style content route.","","This route will load the rendered HTML content from the server, then create and","show a new view using those contents.","","@property route","@type Array","@static","@since 3.7.0","**/","AppContent.route = ['loadContent', '_contentRoute'];","","AppContent.prototype = {"," // -- Public Methods -------------------------------------------------------",""," /**"," Sets this app's `activeView` attribute using the specified `content`.",""," This provides an easy way to view-ify HTML content which should be shown as"," this app's active/visible view. This method will determine the appropriate"," view `container` node based on the specified `content`. By default, a new"," `Y.View` instance will be created unless `options.view` is specified.",""," Under the hood, this method calls the `showView()` method, so refer to its"," docs for more information.",""," @method showContent"," @param {HTMLElement|Node|String} content The content to show, it may be"," provided as a selector string, a DOM element, or a `Y.Node` instance."," @param {Object} [options] Optional objects containing any of the following"," properties in addition to any `showView()` options:",""," @param {Object|String} [options.view] The name of a view defined in this"," app's `views`, or an object with the following properties:",""," @param {String} options.view.name The name of a view defined in this"," app's `views`."," @param {Object} [options.view.config] Optional configuration to use when"," creating the new view instance. This config object can also be used"," to update an existing or preserved view's attributes when"," `options.update` is `true`. **Note:** If a `container` is specified,"," it will be overridden by the `content` specified in the first"," argument.",""," @param {Function} [callback] Optional callback function to call after the"," new `activeView` is ready to use. **Note:** this will override"," `options.callback` and it can be specified as either the second or third"," argument. The function will be passed the following:",""," @param {View} callback.view A reference to the new `activeView`.",""," @since 3.7.0"," @see App.showView()"," **/"," showContent: function (content, options, callback) {"," // Makes sure we have a node instance, and will query selector strings."," content = Y.one(content);",""," // Support the callback function being either the second or third arg."," if (typeof options === 'function') {"," options = {callback: options};"," callback = null;"," }",""," // Mix in default option to *not* render the view because presumably we"," // have pre-rendered content here. This also creates a copy so we can"," // modify the object."," options = Y.merge({render: false}, options);",""," var view = options.view || '',"," viewName = typeof view === 'string' ? view : view.name,"," viewConfig = typeof view !== 'string' ? view.config : {},"," viewInfo = this.getViewInfo(viewName),"," container, template, type, ViewConstructor;",""," // Remove `view` from the `options` which will be passed along to the"," // `showView()` method."," delete options.view;",""," // When the specified `content` is a document fragment, we want to see"," // if it only contains a single node, and use that as the content. This"," // checks `childNodes` which will include text nodes."," if (content && content.isFragment() &&"," content.get('childNodes').size() === 1) {",""," content = content.get('firstChild');"," }",""," // When the `content` is an element node (`nodeType` 1), we can use it"," // as-is for the `container`. Otherwise, we'll construct a new container"," // based on the `options.view`'s `containerTemplate`."," if (content && content.get('nodeType') === 1) {"," container = content;"," } else {"," type = (viewInfo && viewInfo.type) || Y.View;",""," // Looks for a namespaced constructor function on `Y`."," ViewConstructor = typeof type === 'string' ?"," Y.Object.getValue(Y, type.split('.')) : type;",""," // Find the correct node template for the view."," template = ViewConstructor.prototype.containerTemplate;"," container = Y.Node.create(template);",""," // Append the document fragment to the newly created `container`"," // node. This is the worst case where we have to create a wrapper"," // node around the `content`."," container.append(content);"," }",""," // Makes sure the view is created using _our_ `container` node."," viewConfig = Y.merge(viewConfig, {container: container});",""," // Finally switch to the new `activeView`. We want to make sure `view`"," // is a string if it's falsy, that way a new view will be created."," return this.showView(viewName, viewConfig, options, callback);"," },",""," // -- Protected Methods ----------------------------------------------------",""," /**"," Provides a default content route which will show a server rendered view.",""," **Note:** This route callback assumes that it's called after the"," `loadContent()` middleware.",""," @method _contentRoute"," @param {Object} req Request object."," @param {Object} res Response Object."," @param {Function} next Function to pass control to the next route callback."," @protected"," @since 3.7.0"," @see Y.App.Content.route"," **/"," _contentRoute: function (req, res, next) {"," var content = res.content,"," doc = Y.config.doc,"," activeViewHandle;",""," // We must have some content to work with."," if (!(content && content.node)) { return next(); }",""," if (content.title && doc) {"," // Make sure the `activeView` does actually change before we go"," // messing with the page title."," activeViewHandle = this.onceAfter('activeViewChange', function () {"," doc.title = content.title;"," });"," }",""," this.showContent(content.node);",""," // Detach the handle just in case."," if (activeViewHandle) {"," activeViewHandle.detach();"," }",""," next();"," }","};","","// Mix statics.","AppContent.ATTRS = Y.Attribute.protectAttrs(PjaxContent.ATTRS);","","// Mix prototype.","Y.mix(AppContent, PjaxContent, false, null, 1);","","// -- Namespace ----------------------------------------------------------------","Y.App.Content = AppContent;","Y.Base.mix(Y.App, [AppContent]);","","","}, '3.8.0', {\"requires\": [\"app-base\", \"pjax-content\"]});"]; +_yuitest_coverage["build/app-content/app-content.js"].lines = {"1":0,"11":0,"57":0,"58":0,"72":0,"74":0,"118":0,"121":0,"122":0,"123":0,"129":0,"131":0,"139":0,"144":0,"147":0,"153":0,"154":0,"156":0,"159":0,"163":0,"164":0,"169":0,"173":0,"177":0,"197":0,"202":0,"204":0,"207":0,"208":0,"212":0,"215":0,"216":0,"219":0,"224":0,"227":0,"230":0,"231":0}; _yuitest_coverage["build/app-content/app-content.js"].functions = {"AppContent:57":0,"showContent:116":0,"(anonymous 2):207":0,"_contentRoute:196":0,"(anonymous 1):1":0}; _yuitest_coverage["build/app-content/app-content.js"].coveredLines = 37; _yuitest_coverage["build/app-content/app-content.js"].coveredFunctions = 5; @@ -299,16 +299,17 @@ next(); // Mix statics. _yuitest_coverline("build/app-content/app-content.js", 224); -Y.mix(AppContent, PjaxContent); +AppContent.ATTRS = Y.Attribute.protectAttrs(PjaxContent.ATTRS); + // Mix prototype. -_yuitest_coverline("build/app-content/app-content.js", 226); +_yuitest_coverline("build/app-content/app-content.js", 227); Y.mix(AppContent, PjaxContent, false, null, 1); // -- Namespace ---------------------------------------------------------------- -_yuitest_coverline("build/app-content/app-content.js", 229); -Y.App.Content = AppContent; _yuitest_coverline("build/app-content/app-content.js", 230); +Y.App.Content = AppContent; +_yuitest_coverline("build/app-content/app-content.js", 231); Y.Base.mix(Y.App, [AppContent]); -}, '3.7.3', {"requires": ["app-base", "pjax-content"]}); +}, '3.8.0', {"requires": ["app-base", "pjax-content"]}); diff --git a/lib/yuilib/3.7.3/build/app-content/app-content-debug.js b/lib/yuilib/3.8.0/build/app-content/app-content-debug.js similarity index 98% rename from lib/yuilib/3.7.3/build/app-content/app-content-debug.js rename to lib/yuilib/3.8.0/build/app-content/app-content-debug.js index bb2bdf536c6..d5d355e4e02 100644 --- a/lib/yuilib/3.7.3/build/app-content/app-content-debug.js +++ b/lib/yuilib/3.8.0/build/app-content/app-content-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -227,7 +227,8 @@ AppContent.prototype = { }; // Mix statics. -Y.mix(AppContent, PjaxContent); +AppContent.ATTRS = Y.Attribute.protectAttrs(PjaxContent.ATTRS); + // Mix prototype. Y.mix(AppContent, PjaxContent, false, null, 1); @@ -236,4 +237,4 @@ Y.App.Content = AppContent; Y.Base.mix(Y.App, [AppContent]); -}, '3.7.3', {"requires": ["app-base", "pjax-content"]}); +}, '3.8.0', {"requires": ["app-base", "pjax-content"]}); diff --git a/lib/yuilib/3.7.3/build/app-content/app-content-min.js b/lib/yuilib/3.8.0/build/app-content/app-content-min.js similarity index 85% rename from lib/yuilib/3.7.3/build/app-content/app-content-min.js rename to lib/yuilib/3.8.0/build/app-content/app-content-min.js index c50bb034742..e1bf5234da9 100644 --- a/lib/yuilib/3.7.3/build/app-content/app-content-min.js +++ b/lib/yuilib/3.8.0/build/app-content/app-content-min.js @@ -1,7 +1,7 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ -YUI.add("app-content",function(e,t){function r(){n.apply(this,arguments)}var n=e.PjaxContent;r.route=["loadContent","_contentRoute"],r.prototype={showContent:function(t,n,r){t=e.one(t),typeof n=="function"&&(n={callback:n},r=null),n=e.merge({render:!1},n);var i=n.view||"",s=typeof i=="string"?i:i.name,o=typeof i!="string"?i.config:{},u=this.getViewInfo(s),a,f,l,c;return delete n.view,t&&t.isFragment()&&t.get("childNodes").size()===1&&(t=t.get("firstChild")),t&&t.get("nodeType")===1?a=t:(l=u&&u.type||e.View,c=typeof l=="string"?e.Object.getValue(e,l.split(".")):l,f=c.prototype.containerTemplate,a=e.Node.create(f),a.append(t)),o=e.merge(o,{container:a}),this.showView(s,o,n,r)},_contentRoute:function(t,n,r){var i=n.content,s=e.config.doc,o;if(!i||!i.node)return r();i.title&&s&&(o=this.onceAfter("activeViewChange",function(){s.title=i.title})),this.showContent(i.node),o&&o.detach(),r()}},e.mix(r,n),e.mix(r,n,!1,null,1),e.App.Content=r,e.Base.mix(e.App,[r])},"3.7.3",{requires:["app-base","pjax-content"]}); +YUI.add("app-content",function(e,t){function r(){n.apply(this,arguments)}var n=e.PjaxContent;r.route=["loadContent","_contentRoute"],r.prototype={showContent:function(t,n,r){t=e.one(t),typeof n=="function"&&(n={callback:n},r=null),n=e.merge({render:!1},n);var i=n.view||"",s=typeof i=="string"?i:i.name,o=typeof i!="string"?i.config:{},u=this.getViewInfo(s),a,f,l,c;return delete n.view,t&&t.isFragment()&&t.get("childNodes").size()===1&&(t=t.get("firstChild")),t&&t.get("nodeType")===1?a=t:(l=u&&u.type||e.View,c=typeof l=="string"?e.Object.getValue(e,l.split(".")):l,f=c.prototype.containerTemplate,a=e.Node.create(f),a.append(t)),o=e.merge(o,{container:a}),this.showView(s,o,n,r)},_contentRoute:function(t,n,r){var i=n.content,s=e.config.doc,o;if(!i||!i.node)return r();i.title&&s&&(o=this.onceAfter("activeViewChange",function(){s.title=i.title})),this.showContent(i.node),o&&o.detach(),r()}},r.ATTRS=e.Attribute.protectAttrs(n.ATTRS),e.mix(r,n,!1,null,1),e.App.Content=r,e.Base.mix(e.App,[r])},"3.8.0",{requires:["app-base","pjax-content"]}); diff --git a/lib/yuilib/3.7.3/build/app-content/app-content.js b/lib/yuilib/3.8.0/build/app-content/app-content.js similarity index 98% rename from lib/yuilib/3.7.3/build/app-content/app-content.js rename to lib/yuilib/3.8.0/build/app-content/app-content.js index bb2bdf536c6..d5d355e4e02 100644 --- a/lib/yuilib/3.7.3/build/app-content/app-content.js +++ b/lib/yuilib/3.8.0/build/app-content/app-content.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -227,7 +227,8 @@ AppContent.prototype = { }; // Mix statics. -Y.mix(AppContent, PjaxContent); +AppContent.ATTRS = Y.Attribute.protectAttrs(PjaxContent.ATTRS); + // Mix prototype. Y.mix(AppContent, PjaxContent, false, null, 1); @@ -236,4 +237,4 @@ Y.App.Content = AppContent; Y.Base.mix(Y.App, [AppContent]); -}, '3.7.3', {"requires": ["app-base", "pjax-content"]}); +}, '3.8.0', {"requires": ["app-base", "pjax-content"]}); diff --git a/lib/yuilib/3.7.3/build/app-transitions-css/app-transitions-css-min.css b/lib/yuilib/3.8.0/build/app-transitions-css/app-transitions-css-min.css similarity index 96% rename from lib/yuilib/3.7.3/build/app-transitions-css/app-transitions-css-min.css rename to lib/yuilib/3.8.0/build/app-transitions-css/app-transitions-css-min.css index 0f554291eee..cda6a3282b2 100644 --- a/lib/yuilib/3.7.3/build/app-transitions-css/app-transitions-css-min.css +++ b/lib/yuilib/3.8.0/build/app-transitions-css/app-transitions-css-min.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/app-transitions-css/app-transitions-css.css b/lib/yuilib/3.8.0/build/app-transitions-css/app-transitions-css.css similarity index 97% rename from lib/yuilib/3.7.3/build/app-transitions-css/app-transitions-css.css rename to lib/yuilib/3.8.0/build/app-transitions-css/app-transitions-css.css index adb179ffc13..155f441baf8 100644 --- a/lib/yuilib/3.7.3/build/app-transitions-css/app-transitions-css.css +++ b/lib/yuilib/3.8.0/build/app-transitions-css/app-transitions-css.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/app-transitions-native/app-transitions-native-coverage.js b/lib/yuilib/3.8.0/build/app-transitions-native/app-transitions-native-coverage.js similarity index 99% rename from lib/yuilib/3.7.3/build/app-transitions-native/app-transitions-native-coverage.js rename to lib/yuilib/3.8.0/build/app-transitions-native/app-transitions-native-coverage.js index b694cfca065..da965c3ce71 100644 --- a/lib/yuilib/3.7.3/build/app-transitions-native/app-transitions-native-coverage.js +++ b/lib/yuilib/3.8.0/build/app-transitions-native/app-transitions-native-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,7 +32,7 @@ _yuitest_coverage["build/app-transitions-native/app-transitions-native.js"] = { path: "build/app-transitions-native/app-transitions-native.js", code: [] }; -_yuitest_coverage["build/app-transitions-native/app-transitions-native.js"].code=["YUI.add('app-transitions-native', function (Y, NAME) {","","/**","Provides the implementation of view transitions for `Y.App.Transitions` in","browsers which support native CSS3 transitions.","","@module app","@submodule app-transitions-native","@since 3.5.0","**/","","var AppTransitions = Y.App.Transitions;","","/**","Provides the implementation of view transitions for `Y.App.Transitions` in","browsers which support native CSS3 transitions.","","When this module is used, `Y.App.TransitionsNative` will automatically mix","itself in to `Y.App`.","","@class App.TransitionsNative","@extensionfor App","@since 3.5.0","**/","function AppTransitionsNative() {}","","AppTransitionsNative.prototype = {"," // -- Protected Properties -------------------------------------------------",""," /**"," Whether this app is currently transitioning its `activeView`.",""," @property _transitioning"," @type Boolean"," @default false"," @protected"," @since 3.5.0"," **/",""," /**"," A queue that holds pending calls to this app's `_uiTransitionActiveView()`"," method.",""," @property _viewTransitionQueue"," @type Array"," @default []"," @protected"," @since 3.5.0"," **/",""," // -- Lifecycle Methods ----------------------------------------------------",""," initializer: function () {"," this._transitioning = false;"," this._viewTransitionQueue = [];",""," // TODO: Consider the AOP approach that `Plugin.WidgetAnim` uses."," Y.Do.before(this._queueActiveView, this, '_uiSetActiveView');"," },",""," // -- Protected Methods ----------------------------------------------------",""," /**"," Dequeues any pending calls to `_uiTransitionActiveView()`.",""," **Note:** When there is more than one queued transition, only the most"," recent `activeView` change will be visually transitioned, while the others"," will have their `transition` option overridden to `false`.",""," @method _dequeueActiveView"," @protected"," @since 3.5.0"," **/"," _dequeueActiveView: function () {"," var queue = this._viewTransitionQueue,"," transition = queue.shift(),"," options;",""," if (transition) {"," // When items are still left in the queue, override the transition"," // so it does not run."," if (queue.length) {"," // Overrides `transition` option and splices in the new options."," options = Y.merge(transition[2], {transition: false});"," transition.splice(2, 1, options);"," }",""," this._uiTransitionActiveView.apply(this, transition);"," }"," },",""," /**"," Returns an object containing a named fx for both `viewIn` and `viewOut`"," based on the relationship between the specified `newView` and `oldView`.",""," @method _getFx"," @param {View} newView The view being transitioned-in."," @param {View} oldView The view being transitioned-out."," @param {String} [transition] The preferred transition to use."," @return {Object} An object containing a named fx for both `viewIn` and"," `viewOut`."," @protected"," @since 3.5.0"," **/"," _getFx: function (newView, oldView, transition) {"," var fx = AppTransitions.FX,"," transitions = this.get('transitions');",""," if (transition === false || !transitions) {"," return null;"," }",""," if (transition) {"," return fx[transition];"," }",""," if (this._isChildView(newView, oldView)) {"," return fx[transitions.toChild];"," }",""," if (this._isParentView(newView, oldView)) {"," return fx[transitions.toParent];"," }",""," return fx[transitions.navigate];"," },",""," /**"," Queues calls to `_uiTransitionActiveView()` to make sure a currently running"," transition isn't interrupted.",""," **Note:** This method prevents the default `_uiSetActiveView()` method from"," running.",""," @method _queueActiveView"," @protected"," @since 3.5.0"," **/"," _queueActiveView: function () {"," var args = Y.Array(arguments, 0, true);",""," this._viewTransitionQueue.push(args);",""," if (!this._transitioning) {"," this._dequeueActiveView();"," }",""," return new Y.Do.Prevent();"," },",""," /**"," Performs the actual change of this app's `activeView` by visually"," transitioning between the `newView` and `oldView` using any specified"," `options`.",""," The `newView` is attached to the app by rendering it to the `viewContainer`,"," and making this app a bubble target of its events.",""," The `oldView` is detached from the app by removing it from the"," `viewContainer`, and removing this app as a bubble target for its events."," The `oldView` will either be preserved or properly destroyed.",""," **Note:** This method overrides `_uiSetActiveView()` and provides all of its"," functionality plus supports visual transitions. Also, the `activeView`"," attribute is read-only and can be changed by calling the `showView()`"," method.",""," @method _uiTransitionActiveView"," @param {View} newView The View which is now this app's `activeView`."," @param {View} [oldView] The View which was this app's `activeView`."," @param {Object} [options] Optional object containing any of the following"," properties:"," @param {Function} [options.callback] Optional callback function to call"," after new `activeView` is ready to use, the function will be passed:"," @param {View} options.callback.view A reference to the new"," `activeView`."," @param {Boolean} [options.prepend=false] Whether the `view` should be"," prepended instead of appended to the `viewContainer`."," @param {Boolean} [options.render] Whether the `view` should be rendered."," **Note:** If no value is specified, a view instance will only be"," rendered if it's newly created by this method."," @param {Boolean|String} [options.transition] Optional transition override."," A transition can be specified which will override the default, or"," `false` for no transition."," @param {Boolean} [options.update=false] Whether an existing view should"," have its attributes updated by passing the `config` object to its"," `setAttrs()` method. **Note:** This option does not have an effect if"," the `view` instance is created as a result of calling this method."," @protected"," @since 3.5.0"," **/"," _uiTransitionActiveView: function (newView, oldView, options) {"," options || (options = {});",""," var callback = options.callback,"," container, transitioning, isChild, isParent, prepend,"," fx, fxConfig, transitions;",""," // Quits early when to new and old views are the same."," if (newView === oldView) {"," callback && callback.call(this, newView);",""," this._transitioning = false;"," return this._dequeueActiveView();"," }",""," fx = this._getFx(newView, oldView, options.transition);"," isChild = this._isChildView(newView, oldView);"," isParent = !isChild && this._isParentView(newView, oldView);"," prepend = !!options.prepend || isParent;",""," // Preforms simply attach/detach of the new and old view respectively"," // when there's no transition to perform."," if (!fx) {"," this._attachView(newView, prepend);"," this._detachView(oldView);"," callback && callback.call(this, newView);",""," this._transitioning = false;"," return this._dequeueActiveView();"," }",""," this._transitioning = true;",""," container = this.get('container');"," transitioning = Y.App.CLASS_NAMES.transitioning;",""," container.addClass(transitioning);",""," this._attachView(newView, prepend);",""," // Called when view transitions completed, if none were added this will"," // run right away."," function complete() {"," this._detachView(oldView);"," container.removeClass(transitioning);"," callback && callback.call(this, newView);",""," this._transitioning = false;"," return this._dequeueActiveView();"," }",""," // Setup a new stack to run the view transitions in parallel."," transitions = new Y.Parallel({context: this});"," fxConfig = {"," crossView: !!oldView && !!newView,"," prepended: prepend"," };",""," // Transition the new view first to prevent a gap when sliding."," if (newView && fx.viewIn) {"," newView.get('container')"," .transition(fx.viewIn, fxConfig, transitions.add());"," }",""," if (oldView && fx.viewOut) {"," oldView.get('container')"," .transition(fx.viewOut, fxConfig, transitions.add());"," }",""," transitions.done(complete);"," }","};","","// -- Transition fx ------------------------------------------------------------","Y.mix(Y.Transition.fx, {"," 'app:fadeIn': {"," opacity : 1,"," duration: 0.3,",""," on: {"," start: function (data) {"," var styles = {opacity: 0},"," config = data.config;",""," if (config.crossView && !config.prepended) {"," styles.transform = 'translateX(-100%)';"," }",""," this.setStyles(styles);"," },",""," end: function () {"," this.setStyle('transform', 'translateX(0)');"," }"," }"," },",""," 'app:fadeOut': {"," opacity : 0,"," duration: 0.3,",""," on: {"," start: function (data) {"," var styles = {opacity: 1},"," config = data.config;",""," if (config.crossView && config.prepended) {"," styles.transform = 'translateX(-100%)';"," }",""," this.setStyles(styles);"," },",""," end: function () {"," this.setStyle('transform', 'translateX(0)');"," }"," }"," },",""," 'app:slideLeft': {"," duration : 0.3,"," transform: 'translateX(-100%)',",""," on: {"," start: function () {"," this.setStyles({"," opacity : 1,"," transform: 'translateX(0%)'"," });"," },",""," end: function () {"," this.setStyle('transform', 'translateX(0)');"," }"," }"," },",""," 'app:slideRight': {"," duration : 0.3,"," transform: 'translateX(0)',",""," on: {"," start: function () {"," this.setStyles({"," opacity : 1,"," transform: 'translateX(-100%)'"," });"," },",""," end: function () {"," this.setStyle('transform', 'translateX(0)');"," }"," }"," }","});","","// -- Namespacae ---------------------------------------------------------------","Y.App.TransitionsNative = AppTransitionsNative;","Y.Base.mix(Y.App, [AppTransitionsNative]);","","","}, '3.7.3', {\"requires\": [\"app-transitions\", \"app-transitions-css\", \"parallel\", \"transition\"]});"]; +_yuitest_coverage["build/app-transitions-native/app-transitions-native.js"].code=["YUI.add('app-transitions-native', function (Y, NAME) {","","/**","Provides the implementation of view transitions for `Y.App.Transitions` in","browsers which support native CSS3 transitions.","","@module app","@submodule app-transitions-native","@since 3.5.0","**/","","var AppTransitions = Y.App.Transitions;","","/**","Provides the implementation of view transitions for `Y.App.Transitions` in","browsers which support native CSS3 transitions.","","When this module is used, `Y.App.TransitionsNative` will automatically mix","itself in to `Y.App`.","","@class App.TransitionsNative","@extensionfor App","@since 3.5.0","**/","function AppTransitionsNative() {}","","AppTransitionsNative.prototype = {"," // -- Protected Properties -------------------------------------------------",""," /**"," Whether this app is currently transitioning its `activeView`.",""," @property _transitioning"," @type Boolean"," @default false"," @protected"," @since 3.5.0"," **/",""," /**"," A queue that holds pending calls to this app's `_uiTransitionActiveView()`"," method.",""," @property _viewTransitionQueue"," @type Array"," @default []"," @protected"," @since 3.5.0"," **/",""," // -- Lifecycle Methods ----------------------------------------------------",""," initializer: function () {"," this._transitioning = false;"," this._viewTransitionQueue = [];",""," // TODO: Consider the AOP approach that `Plugin.WidgetAnim` uses."," Y.Do.before(this._queueActiveView, this, '_uiSetActiveView');"," },",""," // -- Protected Methods ----------------------------------------------------",""," /**"," Dequeues any pending calls to `_uiTransitionActiveView()`.",""," **Note:** When there is more than one queued transition, only the most"," recent `activeView` change will be visually transitioned, while the others"," will have their `transition` option overridden to `false`.",""," @method _dequeueActiveView"," @protected"," @since 3.5.0"," **/"," _dequeueActiveView: function () {"," var queue = this._viewTransitionQueue,"," transition = queue.shift(),"," options;",""," if (transition) {"," // When items are still left in the queue, override the transition"," // so it does not run."," if (queue.length) {"," // Overrides `transition` option and splices in the new options."," options = Y.merge(transition[2], {transition: false});"," transition.splice(2, 1, options);"," }",""," this._uiTransitionActiveView.apply(this, transition);"," }"," },",""," /**"," Returns an object containing a named fx for both `viewIn` and `viewOut`"," based on the relationship between the specified `newView` and `oldView`.",""," @method _getFx"," @param {View} newView The view being transitioned-in."," @param {View} oldView The view being transitioned-out."," @param {String} [transition] The preferred transition to use."," @return {Object} An object containing a named fx for both `viewIn` and"," `viewOut`."," @protected"," @since 3.5.0"," **/"," _getFx: function (newView, oldView, transition) {"," var fx = AppTransitions.FX,"," transitions = this.get('transitions');",""," if (transition === false || !transitions) {"," return null;"," }",""," if (transition) {"," return fx[transition];"," }",""," if (this._isChildView(newView, oldView)) {"," return fx[transitions.toChild];"," }",""," if (this._isParentView(newView, oldView)) {"," return fx[transitions.toParent];"," }",""," return fx[transitions.navigate];"," },",""," /**"," Queues calls to `_uiTransitionActiveView()` to make sure a currently running"," transition isn't interrupted.",""," **Note:** This method prevents the default `_uiSetActiveView()` method from"," running.",""," @method _queueActiveView"," @protected"," @since 3.5.0"," **/"," _queueActiveView: function () {"," var args = Y.Array(arguments, 0, true);",""," this._viewTransitionQueue.push(args);",""," if (!this._transitioning) {"," this._dequeueActiveView();"," }",""," return new Y.Do.Prevent();"," },",""," /**"," Performs the actual change of this app's `activeView` by visually"," transitioning between the `newView` and `oldView` using any specified"," `options`.",""," The `newView` is attached to the app by rendering it to the `viewContainer`,"," and making this app a bubble target of its events.",""," The `oldView` is detached from the app by removing it from the"," `viewContainer`, and removing this app as a bubble target for its events."," The `oldView` will either be preserved or properly destroyed.",""," **Note:** This method overrides `_uiSetActiveView()` and provides all of its"," functionality plus supports visual transitions. Also, the `activeView`"," attribute is read-only and can be changed by calling the `showView()`"," method.",""," @method _uiTransitionActiveView"," @param {View} newView The View which is now this app's `activeView`."," @param {View} [oldView] The View which was this app's `activeView`."," @param {Object} [options] Optional object containing any of the following"," properties:"," @param {Function} [options.callback] Optional callback function to call"," after new `activeView` is ready to use, the function will be passed:"," @param {View} options.callback.view A reference to the new"," `activeView`."," @param {Boolean} [options.prepend=false] Whether the `view` should be"," prepended instead of appended to the `viewContainer`."," @param {Boolean} [options.render] Whether the `view` should be rendered."," **Note:** If no value is specified, a view instance will only be"," rendered if it's newly created by this method."," @param {Boolean|String} [options.transition] Optional transition override."," A transition can be specified which will override the default, or"," `false` for no transition."," @param {Boolean} [options.update=false] Whether an existing view should"," have its attributes updated by passing the `config` object to its"," `setAttrs()` method. **Note:** This option does not have an effect if"," the `view` instance is created as a result of calling this method."," @protected"," @since 3.5.0"," **/"," _uiTransitionActiveView: function (newView, oldView, options) {"," options || (options = {});",""," var callback = options.callback,"," container, transitioning, isChild, isParent, prepend,"," fx, fxConfig, transitions;",""," // Quits early when to new and old views are the same."," if (newView === oldView) {"," callback && callback.call(this, newView);",""," this._transitioning = false;"," return this._dequeueActiveView();"," }",""," fx = this._getFx(newView, oldView, options.transition);"," isChild = this._isChildView(newView, oldView);"," isParent = !isChild && this._isParentView(newView, oldView);"," prepend = !!options.prepend || isParent;",""," // Preforms simply attach/detach of the new and old view respectively"," // when there's no transition to perform."," if (!fx) {"," this._attachView(newView, prepend);"," this._detachView(oldView);"," callback && callback.call(this, newView);",""," this._transitioning = false;"," return this._dequeueActiveView();"," }",""," this._transitioning = true;",""," container = this.get('container');"," transitioning = Y.App.CLASS_NAMES.transitioning;",""," container.addClass(transitioning);",""," this._attachView(newView, prepend);",""," // Called when view transitions completed, if none were added this will"," // run right away."," function complete() {"," this._detachView(oldView);"," container.removeClass(transitioning);"," callback && callback.call(this, newView);",""," this._transitioning = false;"," return this._dequeueActiveView();"," }",""," // Setup a new stack to run the view transitions in parallel."," transitions = new Y.Parallel({context: this});"," fxConfig = {"," crossView: !!oldView && !!newView,"," prepended: prepend"," };",""," // Transition the new view first to prevent a gap when sliding."," if (newView && fx.viewIn) {"," newView.get('container')"," .transition(fx.viewIn, fxConfig, transitions.add());"," }",""," if (oldView && fx.viewOut) {"," oldView.get('container')"," .transition(fx.viewOut, fxConfig, transitions.add());"," }",""," transitions.done(complete);"," }","};","","// -- Transition fx ------------------------------------------------------------","Y.mix(Y.Transition.fx, {"," 'app:fadeIn': {"," opacity : 1,"," duration: 0.3,",""," on: {"," start: function (data) {"," var styles = {opacity: 0},"," config = data.config;",""," if (config.crossView && !config.prepended) {"," styles.transform = 'translateX(-100%)';"," }",""," this.setStyles(styles);"," },",""," end: function () {"," this.setStyle('transform', 'translateX(0)');"," }"," }"," },",""," 'app:fadeOut': {"," opacity : 0,"," duration: 0.3,",""," on: {"," start: function (data) {"," var styles = {opacity: 1},"," config = data.config;",""," if (config.crossView && config.prepended) {"," styles.transform = 'translateX(-100%)';"," }",""," this.setStyles(styles);"," },",""," end: function () {"," this.setStyle('transform', 'translateX(0)');"," }"," }"," },",""," 'app:slideLeft': {"," duration : 0.3,"," transform: 'translateX(-100%)',",""," on: {"," start: function () {"," this.setStyles({"," opacity : 1,"," transform: 'translateX(0%)'"," });"," },",""," end: function () {"," this.setStyle('transform', 'translateX(0)');"," }"," }"," },",""," 'app:slideRight': {"," duration : 0.3,"," transform: 'translateX(0)',",""," on: {"," start: function () {"," this.setStyles({"," opacity : 1,"," transform: 'translateX(-100%)'"," });"," },",""," end: function () {"," this.setStyle('transform', 'translateX(0)');"," }"," }"," }","});","","// -- Namespacae ---------------------------------------------------------------","Y.App.TransitionsNative = AppTransitionsNative;","Y.Base.mix(Y.App, [AppTransitionsNative]);","","","}, '3.8.0', {\"requires\": [\"app-transitions\", \"app-transitions-css\", \"parallel\", \"transition\"]});"]; _yuitest_coverage["build/app-transitions-native/app-transitions-native.js"].lines = {"1":0,"12":0,"25":0,"27":0,"54":0,"55":0,"58":0,"75":0,"79":0,"82":0,"84":0,"85":0,"88":0,"106":0,"109":0,"110":0,"113":0,"114":0,"117":0,"118":0,"121":0,"122":0,"125":0,"140":0,"142":0,"144":0,"145":0,"148":0,"193":0,"195":0,"200":0,"201":0,"203":0,"204":0,"207":0,"208":0,"209":0,"210":0,"214":0,"215":0,"216":0,"217":0,"219":0,"220":0,"223":0,"225":0,"226":0,"228":0,"230":0,"234":0,"235":0,"236":0,"237":0,"239":0,"240":0,"244":0,"245":0,"251":0,"252":0,"256":0,"257":0,"261":0,"266":0,"273":0,"276":0,"277":0,"280":0,"284":0,"295":0,"298":0,"299":0,"302":0,"306":0,"317":0,"324":0,"335":0,"342":0,"349":0,"350":0}; _yuitest_coverage["build/app-transitions-native/app-transitions-native.js"].functions = {"AppTransitionsNative:25":0,"initializer:53":0,"_dequeueActiveView:74":0,"_getFx:105":0,"_queueActiveView:139":0,"complete:234":0,"_uiTransitionActiveView:192":0,"start:272":0,"end:283":0,"start:294":0,"end:305":0,"start:316":0,"end:323":0,"start:334":0,"end:341":0,"(anonymous 1):1":0}; _yuitest_coverage["build/app-transitions-native/app-transitions-native.js"].coveredLines = 79; @@ -483,4 +483,4 @@ _yuitest_coverline("build/app-transitions-native/app-transitions-native.js", 350 Y.Base.mix(Y.App, [AppTransitionsNative]); -}, '3.7.3', {"requires": ["app-transitions", "app-transitions-css", "parallel", "transition"]}); +}, '3.8.0', {"requires": ["app-transitions", "app-transitions-css", "parallel", "transition"]}); diff --git a/lib/yuilib/3.7.3/build/app-transitions-native/app-transitions-native-debug.js b/lib/yuilib/3.8.0/build/app-transitions-native/app-transitions-native-debug.js similarity index 99% rename from lib/yuilib/3.7.3/build/app-transitions-native/app-transitions-native-debug.js rename to lib/yuilib/3.8.0/build/app-transitions-native/app-transitions-native-debug.js index e1838f24660..f767dee3bb2 100644 --- a/lib/yuilib/3.7.3/build/app-transitions-native/app-transitions-native-debug.js +++ b/lib/yuilib/3.8.0/build/app-transitions-native/app-transitions-native-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -356,4 +356,4 @@ Y.App.TransitionsNative = AppTransitionsNative; Y.Base.mix(Y.App, [AppTransitionsNative]); -}, '3.7.3', {"requires": ["app-transitions", "app-transitions-css", "parallel", "transition"]}); +}, '3.8.0', {"requires": ["app-transitions", "app-transitions-css", "parallel", "transition"]}); diff --git a/lib/yuilib/3.7.3/build/app-transitions-native/app-transitions-native-min.js b/lib/yuilib/3.8.0/build/app-transitions-native/app-transitions-native-min.js similarity index 96% rename from lib/yuilib/3.7.3/build/app-transitions-native/app-transitions-native-min.js rename to lib/yuilib/3.8.0/build/app-transitions-native/app-transitions-native-min.js index eaf2f7d72cf..a44f2183fb2 100644 --- a/lib/yuilib/3.7.3/build/app-transitions-native/app-transitions-native-min.js +++ b/lib/yuilib/3.8.0/build/app-transitions-native/app-transitions-native-min.js @@ -1,7 +1,7 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ -YUI.add("app-transitions-native",function(e,t){function r(){}var n=e.App.Transitions;r.prototype={initializer:function(){this._transitioning=!1,this._viewTransitionQueue=[],e.Do.before(this._queueActiveView,this,"_uiSetActiveView")},_dequeueActiveView:function(){var t=this._viewTransitionQueue,n=t.shift(),r;n&&(t.length&&(r=e.merge(n[2],{transition:!1}),n.splice(2,1,r)),this._uiTransitionActiveView.apply(this,n))},_getFx:function(e,t,r){var i=n.FX,s=this.get("transitions");return r===!1||!s?null:r?i[r]:this._isChildView(e,t)?i[s.toChild]:this._isParentView(e,t)?i[s.toParent]:i[s.navigate]},_queueActiveView:function(){var t=e.Array(arguments,0,!0);return this._viewTransitionQueue.push(t),this._transitioning||this._dequeueActiveView(),new e.Do.Prevent},_uiTransitionActiveView:function(t,n,r){function p(){return this._detachView(n),s.removeClass(o),i&&i.call(this,t),this._transitioning=!1,this._dequeueActiveView()}r||(r={});var i=r.callback,s,o,u,a,f,l,c,h;if(t===n)return i&&i.call(this,t),this._transitioning=!1,this._dequeueActiveView();l=this._getFx(t,n,r.transition),u=this._isChildView(t,n),a=!u&&this._isParentView(t,n),f=!!r.prepend||a;if(!l)return this._attachView(t,f),this._detachView(n),i&&i.call(this,t),this._transitioning=!1,this._dequeueActiveView();this._transitioning=!0,s=this.get("container"),o=e.App.CLASS_NAMES.transitioning,s.addClass(o),this._attachView(t,f),h=new e.Parallel({context:this}),c={crossView:!!n&&!!t,prepended:f},t&&l.viewIn&&t.get("container").transition(l.viewIn,c,h.add()),n&&l.viewOut&&n.get("container").transition(l.viewOut,c,h.add()),h.done(p)}},e.mix(e.Transition.fx,{"app:fadeIn":{opacity:1,duration:.3,on:{start:function(e){var t={opacity:0},n=e.config;n.crossView&&!n.prepended&&(t.transform="translateX(-100%)"),this.setStyles(t)},end:function(){this.setStyle("transform","translateX(0)")}}},"app:fadeOut":{opacity:0,duration:.3,on:{start:function(e){var t={opacity:1},n=e.config;n.crossView&&n.prepended&&(t.transform="translateX(-100%)"),this.setStyles(t)},end:function(){this.setStyle("transform","translateX(0)")}}},"app:slideLeft":{duration:.3,transform:"translateX(-100%)",on:{start:function(){this.setStyles({opacity:1,transform:"translateX(0%)"})},end:function(){this.setStyle("transform","translateX(0)")}}},"app:slideRight":{duration:.3,transform:"translateX(0)",on:{start:function(){this.setStyles({opacity:1,transform:"translateX(-100%)"})},end:function(){this.setStyle("transform","translateX(0)")}}}}),e.App.TransitionsNative=r,e.Base.mix(e.App,[r])},"3.7.3",{requires:["app-transitions","app-transitions-css","parallel","transition"]}); +YUI.add("app-transitions-native",function(e,t){function r(){}var n=e.App.Transitions;r.prototype={initializer:function(){this._transitioning=!1,this._viewTransitionQueue=[],e.Do.before(this._queueActiveView,this,"_uiSetActiveView")},_dequeueActiveView:function(){var t=this._viewTransitionQueue,n=t.shift(),r;n&&(t.length&&(r=e.merge(n[2],{transition:!1}),n.splice(2,1,r)),this._uiTransitionActiveView.apply(this,n))},_getFx:function(e,t,r){var i=n.FX,s=this.get("transitions");return r===!1||!s?null:r?i[r]:this._isChildView(e,t)?i[s.toChild]:this._isParentView(e,t)?i[s.toParent]:i[s.navigate]},_queueActiveView:function(){var t=e.Array(arguments,0,!0);return this._viewTransitionQueue.push(t),this._transitioning||this._dequeueActiveView(),new e.Do.Prevent},_uiTransitionActiveView:function(t,n,r){function p(){return this._detachView(n),s.removeClass(o),i&&i.call(this,t),this._transitioning=!1,this._dequeueActiveView()}r||(r={});var i=r.callback,s,o,u,a,f,l,c,h;if(t===n)return i&&i.call(this,t),this._transitioning=!1,this._dequeueActiveView();l=this._getFx(t,n,r.transition),u=this._isChildView(t,n),a=!u&&this._isParentView(t,n),f=!!r.prepend||a;if(!l)return this._attachView(t,f),this._detachView(n),i&&i.call(this,t),this._transitioning=!1,this._dequeueActiveView();this._transitioning=!0,s=this.get("container"),o=e.App.CLASS_NAMES.transitioning,s.addClass(o),this._attachView(t,f),h=new e.Parallel({context:this}),c={crossView:!!n&&!!t,prepended:f},t&&l.viewIn&&t.get("container").transition(l.viewIn,c,h.add()),n&&l.viewOut&&n.get("container").transition(l.viewOut,c,h.add()),h.done(p)}},e.mix(e.Transition.fx,{"app:fadeIn":{opacity:1,duration:.3,on:{start:function(e){var t={opacity:0},n=e.config;n.crossView&&!n.prepended&&(t.transform="translateX(-100%)"),this.setStyles(t)},end:function(){this.setStyle("transform","translateX(0)")}}},"app:fadeOut":{opacity:0,duration:.3,on:{start:function(e){var t={opacity:1},n=e.config;n.crossView&&n.prepended&&(t.transform="translateX(-100%)"),this.setStyles(t)},end:function(){this.setStyle("transform","translateX(0)")}}},"app:slideLeft":{duration:.3,transform:"translateX(-100%)",on:{start:function(){this.setStyles({opacity:1,transform:"translateX(0%)"})},end:function(){this.setStyle("transform","translateX(0)")}}},"app:slideRight":{duration:.3,transform:"translateX(0)",on:{start:function(){this.setStyles({opacity:1,transform:"translateX(-100%)"})},end:function(){this.setStyle("transform","translateX(0)")}}}}),e.App.TransitionsNative=r,e.Base.mix(e.App,[r])},"3.8.0",{requires:["app-transitions","app-transitions-css","parallel","transition"]}); diff --git a/lib/yuilib/3.7.3/build/app-transitions-native/app-transitions-native.js b/lib/yuilib/3.8.0/build/app-transitions-native/app-transitions-native.js similarity index 99% rename from lib/yuilib/3.7.3/build/app-transitions-native/app-transitions-native.js rename to lib/yuilib/3.8.0/build/app-transitions-native/app-transitions-native.js index e1838f24660..f767dee3bb2 100644 --- a/lib/yuilib/3.7.3/build/app-transitions-native/app-transitions-native.js +++ b/lib/yuilib/3.8.0/build/app-transitions-native/app-transitions-native.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -356,4 +356,4 @@ Y.App.TransitionsNative = AppTransitionsNative; Y.Base.mix(Y.App, [AppTransitionsNative]); -}, '3.7.3', {"requires": ["app-transitions", "app-transitions-css", "parallel", "transition"]}); +}, '3.8.0', {"requires": ["app-transitions", "app-transitions-css", "parallel", "transition"]}); diff --git a/lib/yuilib/3.7.3/build/app-transitions/app-transitions-coverage.js b/lib/yuilib/3.8.0/build/app-transitions/app-transitions-coverage.js similarity index 99% rename from lib/yuilib/3.7.3/build/app-transitions/app-transitions-coverage.js rename to lib/yuilib/3.8.0/build/app-transitions/app-transitions-coverage.js index f1827bd8854..38b287c9ff6 100644 --- a/lib/yuilib/3.7.3/build/app-transitions/app-transitions-coverage.js +++ b/lib/yuilib/3.8.0/build/app-transitions/app-transitions-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,7 +32,7 @@ _yuitest_coverage["build/app-transitions/app-transitions.js"] = { path: "build/app-transitions/app-transitions.js", code: [] }; -_yuitest_coverage["build/app-transitions/app-transitions.js"].code=["YUI.add('app-transitions', function (Y, NAME) {","","/**","`Y.App` extension that provides view transitions in browsers which support","native CSS3 transitions.","","@module app","@submodule app-transitions","@since 3.5.0","**/","","/**","`Y.App` extension that provides view transitions in browsers which support","native CSS3 transitions.","","View transitions provide an nice way to move from one \"page\" to the next that is","both pleasant to the user and helps to communicate a hierarchy between sections","of an application.","","When the `\"app-transitions\"` module is used, it will automatically mix itself","into `Y.App` and transition between `activeView` changes using the following","effects:",""," - **`fade`**: Cross-fades between the old an new active views.",""," - **`slideLeft`**: The old and new active views are positioned next to each"," other and both slide to the left.",""," - **`slideRight`**: The old and new active views are positioned next to each"," other and both slide to the right.","","**Note:** Transitions are an opt-in feature and are enabled via an app's","`transitions` attribute.","","@class App.Transitions","@uses App.TransitionsNative","@extensionfor App","@since 3.5.0","**/","function AppTransitions() {}","","AppTransitions.ATTRS = {"," /**"," Whether or not this application should use view transitions, and if so then"," which ones or `true` for the defaults which are specified by the"," `transitions` prototype property.",""," **Note:** Transitions are an opt-in feature and will only be used in"," browsers which support native CSS3 transitions.",""," @attribute transitions"," @type Boolean|Object"," @default false"," @since 3.5.0"," **/"," transitions: {"," setter: '_setTransitions',"," value : false"," }","};","","/**","Collect of transitions -> fx.","","A transition (e.g. \"fade\") is a simple name given to a configuration of fx to","apply, consisting of `viewIn` and `viewOut` properties who's values are names of","fx registered on `Y.Transition.fx`.","","By default transitions: `fade`, `slideLeft`, and `slideRight` have fx defined.","","@property FX","@type Object","@static","@since 3.5.0","**/","AppTransitions.FX = {"," fade: {"," viewIn : 'app:fadeIn',"," viewOut: 'app:fadeOut'"," },",""," slideLeft: {"," viewIn : 'app:slideLeft',"," viewOut: 'app:slideLeft'"," },",""," slideRight: {"," viewIn : 'app:slideRight',"," viewOut: 'app:slideRight'"," }","};","","AppTransitions.prototype = {"," // -- Public Properties ----------------------------------------------------",""," /**"," Default transitions to use when the `activeView` changes.",""," The following are types of changes for which transitions can be defined that"," correspond to the relationship between the new and previous `activeView`:",""," * `navigate`: The default transition to use when changing the `activeView`"," of the application.",""," * `toChild`: The transition to use when the new `activeView` is configured"," as a child of the previously active view via its `parent` property as"," defined in this app's `views`.",""," * `toParent`: The transition to use when the new `activeView` is"," configured as the `parent` of the previously active view as defined in"," this app's `views`.",""," **Note:** Transitions are an opt-in feature and will only be used in"," browsers which support native CSS3 transitions.",""," @property transitions"," @type Object"," @default"," {"," navigate: 'fade',"," toChild : 'slideLeft',"," toParent: 'slideRight'"," }"," @since 3.5.0"," **/"," transitions: {"," navigate: 'fade',"," toChild : 'slideLeft',"," toParent: 'slideRight'"," },",""," // -- Public Methods -------------------------------------------------------",""," /**"," Sets which view is active/visible for the application. This will set the"," app's `activeView` attribute to the specified `view`.",""," The `view` will be \"attached\" to this app, meaning it will be both rendered"," into this app's `viewContainer` node and all of its events will bubble to"," the app. The previous `activeView` will be \"detached\" from this app.",""," When a string-name is provided for a view which has been registered on this"," app's `views` object, the referenced metadata will be used and the"," `activeView` will be set to either a preserved view instance, or a new"," instance of the registered view will be created using the specified `config`"," object passed-into this method.",""," A callback function can be specified as either the third or fourth argument,"," and this function will be called after the new `view` becomes the"," `activeView`, is rendered to the `viewContainer`, and is ready to use.",""," @example"," var app = new Y.App({"," views: {"," usersView: {"," // Imagine that `Y.UsersView` has been defined."," type: Y.UsersView"," }"," },",""," transitions: true,"," users : new Y.ModelList()"," });",""," app.route('/users/', function () {"," this.showView('usersView', {users: this.get('users')});"," });",""," app.render();"," app.navigate('/uses/');"," // => Creates a new `Y.UsersView` and transitions to it.",""," @method showView"," @param {String|View} view The name of a view defined in the `views` object,"," or a view instance which should become this app's `activeView`."," @param {Object} [config] Optional configuration to use when creating a new"," view instance. This config object can also be used to update an existing"," or preserved view's attributes when `options.update` is `true`."," @param {Object} [options] Optional object containing any of the following"," properties:"," @param {Function} [options.callback] Optional callback function to call"," after new `activeView` is ready to use, the function will be passed:"," @param {View} options.callback.view A reference to the new"," `activeView`."," @param {Boolean} [options.prepend=false] Whether the `view` should be"," prepended instead of appended to the `viewContainer`."," @param {Boolean} [options.render] Whether the `view` should be rendered."," **Note:** If no value is specified, a view instance will only be"," rendered if it's newly created by this method."," @param {Boolean|String} [options.transition] Optional transition override."," A transition can be specified which will override the default, or"," `false` for no transition."," @param {Boolean} [options.update=false] Whether an existing view should"," have its attributes updated by passing the `config` object to its"," `setAttrs()` method. **Note:** This option does not have an effect if"," the `view` instance is created as a result of calling this method."," @param {Function} [callback] Optional callback Function to call after the"," new `activeView` is ready to use. **Note:** this will override"," `options.callback` and it can be specified as either the third or fourth"," argument. The function will be passed the following:"," @param {View} callback.view A reference to the new `activeView`."," @chainable"," @since 3.5.0"," **/"," // Does not override `showView()` but does use `options.transitions`.",""," // -- Protected Methods ----------------------------------------------------",""," /**"," Setter for `transitions` attribute.",""," When specified as `true`, the defaults will be use as specified by the"," `transitions` prototype property.",""," @method _setTransitions"," @param {Boolean|Object} transitions The new `transitions` attribute value."," @return {Mixed} The processed value which represents the new state."," @protected"," @see App.Base.showView()"," @since 3.5.0"," **/"," _setTransitions: function (transitions) {"," var defTransitions = this.transitions;",""," if (transitions && transitions === true) {"," return Y.merge(defTransitions);"," }",""," return transitions;"," }","};","","// -- Namespace ----------------------------------------------------------------","Y.App.Transitions = AppTransitions;","Y.Base.mix(Y.App, [AppTransitions]);","","Y.mix(Y.App.CLASS_NAMES, {"," transitioning: Y.ClassNameManager.getClassName('app', 'transitioning')","});","","","}, '3.7.3', {\"requires\": [\"app-base\"]});"]; +_yuitest_coverage["build/app-transitions/app-transitions.js"].code=["YUI.add('app-transitions', function (Y, NAME) {","","/**","`Y.App` extension that provides view transitions in browsers which support","native CSS3 transitions.","","@module app","@submodule app-transitions","@since 3.5.0","**/","","/**","`Y.App` extension that provides view transitions in browsers which support","native CSS3 transitions.","","View transitions provide an nice way to move from one \"page\" to the next that is","both pleasant to the user and helps to communicate a hierarchy between sections","of an application.","","When the `\"app-transitions\"` module is used, it will automatically mix itself","into `Y.App` and transition between `activeView` changes using the following","effects:",""," - **`fade`**: Cross-fades between the old an new active views.",""," - **`slideLeft`**: The old and new active views are positioned next to each"," other and both slide to the left.",""," - **`slideRight`**: The old and new active views are positioned next to each"," other and both slide to the right.","","**Note:** Transitions are an opt-in feature and are enabled via an app's","`transitions` attribute.","","@class App.Transitions","@uses App.TransitionsNative","@extensionfor App","@since 3.5.0","**/","function AppTransitions() {}","","AppTransitions.ATTRS = {"," /**"," Whether or not this application should use view transitions, and if so then"," which ones or `true` for the defaults which are specified by the"," `transitions` prototype property.",""," **Note:** Transitions are an opt-in feature and will only be used in"," browsers which support native CSS3 transitions.",""," @attribute transitions"," @type Boolean|Object"," @default false"," @since 3.5.0"," **/"," transitions: {"," setter: '_setTransitions',"," value : false"," }","};","","/**","Collect of transitions -> fx.","","A transition (e.g. \"fade\") is a simple name given to a configuration of fx to","apply, consisting of `viewIn` and `viewOut` properties who's values are names of","fx registered on `Y.Transition.fx`.","","By default transitions: `fade`, `slideLeft`, and `slideRight` have fx defined.","","@property FX","@type Object","@static","@since 3.5.0","**/","AppTransitions.FX = {"," fade: {"," viewIn : 'app:fadeIn',"," viewOut: 'app:fadeOut'"," },",""," slideLeft: {"," viewIn : 'app:slideLeft',"," viewOut: 'app:slideLeft'"," },",""," slideRight: {"," viewIn : 'app:slideRight',"," viewOut: 'app:slideRight'"," }","};","","AppTransitions.prototype = {"," // -- Public Properties ----------------------------------------------------",""," /**"," Default transitions to use when the `activeView` changes.",""," The following are types of changes for which transitions can be defined that"," correspond to the relationship between the new and previous `activeView`:",""," * `navigate`: The default transition to use when changing the `activeView`"," of the application.",""," * `toChild`: The transition to use when the new `activeView` is configured"," as a child of the previously active view via its `parent` property as"," defined in this app's `views`.",""," * `toParent`: The transition to use when the new `activeView` is"," configured as the `parent` of the previously active view as defined in"," this app's `views`.",""," **Note:** Transitions are an opt-in feature and will only be used in"," browsers which support native CSS3 transitions.",""," @property transitions"," @type Object"," @default"," {"," navigate: 'fade',"," toChild : 'slideLeft',"," toParent: 'slideRight'"," }"," @since 3.5.0"," **/"," transitions: {"," navigate: 'fade',"," toChild : 'slideLeft',"," toParent: 'slideRight'"," },",""," // -- Public Methods -------------------------------------------------------",""," /**"," Sets which view is active/visible for the application. This will set the"," app's `activeView` attribute to the specified `view`.",""," The `view` will be \"attached\" to this app, meaning it will be both rendered"," into this app's `viewContainer` node and all of its events will bubble to"," the app. The previous `activeView` will be \"detached\" from this app.",""," When a string-name is provided for a view which has been registered on this"," app's `views` object, the referenced metadata will be used and the"," `activeView` will be set to either a preserved view instance, or a new"," instance of the registered view will be created using the specified `config`"," object passed-into this method.",""," A callback function can be specified as either the third or fourth argument,"," and this function will be called after the new `view` becomes the"," `activeView`, is rendered to the `viewContainer`, and is ready to use.",""," @example"," var app = new Y.App({"," views: {"," usersView: {"," // Imagine that `Y.UsersView` has been defined."," type: Y.UsersView"," }"," },",""," transitions: true,"," users : new Y.ModelList()"," });",""," app.route('/users/', function () {"," this.showView('usersView', {users: this.get('users')});"," });",""," app.render();"," app.navigate('/uses/');"," // => Creates a new `Y.UsersView` and transitions to it.",""," @method showView"," @param {String|View} view The name of a view defined in the `views` object,"," or a view instance which should become this app's `activeView`."," @param {Object} [config] Optional configuration to use when creating a new"," view instance. This config object can also be used to update an existing"," or preserved view's attributes when `options.update` is `true`."," @param {Object} [options] Optional object containing any of the following"," properties:"," @param {Function} [options.callback] Optional callback function to call"," after new `activeView` is ready to use, the function will be passed:"," @param {View} options.callback.view A reference to the new"," `activeView`."," @param {Boolean} [options.prepend=false] Whether the `view` should be"," prepended instead of appended to the `viewContainer`."," @param {Boolean} [options.render] Whether the `view` should be rendered."," **Note:** If no value is specified, a view instance will only be"," rendered if it's newly created by this method."," @param {Boolean|String} [options.transition] Optional transition override."," A transition can be specified which will override the default, or"," `false` for no transition."," @param {Boolean} [options.update=false] Whether an existing view should"," have its attributes updated by passing the `config` object to its"," `setAttrs()` method. **Note:** This option does not have an effect if"," the `view` instance is created as a result of calling this method."," @param {Function} [callback] Optional callback Function to call after the"," new `activeView` is ready to use. **Note:** this will override"," `options.callback` and it can be specified as either the third or fourth"," argument. The function will be passed the following:"," @param {View} callback.view A reference to the new `activeView`."," @chainable"," @since 3.5.0"," **/"," // Does not override `showView()` but does use `options.transitions`.",""," // -- Protected Methods ----------------------------------------------------",""," /**"," Setter for `transitions` attribute.",""," When specified as `true`, the defaults will be use as specified by the"," `transitions` prototype property.",""," @method _setTransitions"," @param {Boolean|Object} transitions The new `transitions` attribute value."," @return {Mixed} The processed value which represents the new state."," @protected"," @see App.Base.showView()"," @since 3.5.0"," **/"," _setTransitions: function (transitions) {"," var defTransitions = this.transitions;",""," if (transitions && transitions === true) {"," return Y.merge(defTransitions);"," }",""," return transitions;"," }","};","","// -- Namespace ----------------------------------------------------------------","Y.App.Transitions = AppTransitions;","Y.Base.mix(Y.App, [AppTransitions]);","","Y.mix(Y.App.CLASS_NAMES, {"," transitioning: Y.ClassNameManager.getClassName('app', 'transitioning')","});","","","}, '3.8.0', {\"requires\": [\"app-base\"]});"]; _yuitest_coverage["build/app-transitions/app-transitions.js"].lines = {"1":0,"40":0,"42":0,"76":0,"93":0,"223":0,"225":0,"226":0,"229":0,"234":0,"235":0,"237":0}; _yuitest_coverage["build/app-transitions/app-transitions.js"].functions = {"AppTransitions:40":0,"_setTransitions:222":0,"(anonymous 1):1":0}; _yuitest_coverage["build/app-transitions/app-transitions.js"].coveredLines = 12; @@ -292,4 +292,4 @@ Y.mix(Y.App.CLASS_NAMES, { }); -}, '3.7.3', {"requires": ["app-base"]}); +}, '3.8.0', {"requires": ["app-base"]}); diff --git a/lib/yuilib/3.7.3/build/app-transitions/app-transitions-debug.js b/lib/yuilib/3.8.0/build/app-transitions/app-transitions-debug.js similarity index 99% rename from lib/yuilib/3.7.3/build/app-transitions/app-transitions-debug.js rename to lib/yuilib/3.8.0/build/app-transitions/app-transitions-debug.js index c0e0249296f..bae09d88ffd 100644 --- a/lib/yuilib/3.7.3/build/app-transitions/app-transitions-debug.js +++ b/lib/yuilib/3.8.0/build/app-transitions/app-transitions-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -245,4 +245,4 @@ Y.mix(Y.App.CLASS_NAMES, { }); -}, '3.7.3', {"requires": ["app-base"]}); +}, '3.8.0', {"requires": ["app-base"]}); diff --git a/lib/yuilib/3.7.3/build/app-transitions/app-transitions-min.js b/lib/yuilib/3.8.0/build/app-transitions/app-transitions-min.js similarity index 90% rename from lib/yuilib/3.7.3/build/app-transitions/app-transitions-min.js rename to lib/yuilib/3.8.0/build/app-transitions/app-transitions-min.js index c582a6b2e20..2573644c51b 100644 --- a/lib/yuilib/3.7.3/build/app-transitions/app-transitions-min.js +++ b/lib/yuilib/3.8.0/build/app-transitions/app-transitions-min.js @@ -1,7 +1,7 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ -YUI.add("app-transitions",function(e,t){function n(){}n.ATTRS={transitions:{setter:"_setTransitions",value:!1}},n.FX={fade:{viewIn:"app:fadeIn",viewOut:"app:fadeOut"},slideLeft:{viewIn:"app:slideLeft",viewOut:"app:slideLeft"},slideRight:{viewIn:"app:slideRight",viewOut:"app:slideRight"}},n.prototype={transitions:{navigate:"fade",toChild:"slideLeft",toParent:"slideRight"},_setTransitions:function(t){var n=this.transitions;return t&&t===!0?e.merge(n):t}},e.App.Transitions=n,e.Base.mix(e.App,[n]),e.mix(e.App.CLASS_NAMES,{transitioning:e.ClassNameManager.getClassName("app","transitioning")})},"3.7.3",{requires:["app-base"]}); +YUI.add("app-transitions",function(e,t){function n(){}n.ATTRS={transitions:{setter:"_setTransitions",value:!1}},n.FX={fade:{viewIn:"app:fadeIn",viewOut:"app:fadeOut"},slideLeft:{viewIn:"app:slideLeft",viewOut:"app:slideLeft"},slideRight:{viewIn:"app:slideRight",viewOut:"app:slideRight"}},n.prototype={transitions:{navigate:"fade",toChild:"slideLeft",toParent:"slideRight"},_setTransitions:function(t){var n=this.transitions;return t&&t===!0?e.merge(n):t}},e.App.Transitions=n,e.Base.mix(e.App,[n]),e.mix(e.App.CLASS_NAMES,{transitioning:e.ClassNameManager.getClassName("app","transitioning")})},"3.8.0",{requires:["app-base"]}); diff --git a/lib/yuilib/3.7.3/build/app-transitions/app-transitions.js b/lib/yuilib/3.8.0/build/app-transitions/app-transitions.js similarity index 99% rename from lib/yuilib/3.7.3/build/app-transitions/app-transitions.js rename to lib/yuilib/3.8.0/build/app-transitions/app-transitions.js index c0e0249296f..bae09d88ffd 100644 --- a/lib/yuilib/3.7.3/build/app-transitions/app-transitions.js +++ b/lib/yuilib/3.8.0/build/app-transitions/app-transitions.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -245,4 +245,4 @@ Y.mix(Y.App.CLASS_NAMES, { }); -}, '3.7.3', {"requires": ["app-base"]}); +}, '3.8.0', {"requires": ["app-base"]}); diff --git a/lib/yuilib/3.7.3/build/array-extras/array-extras-coverage.js b/lib/yuilib/3.8.0/build/array-extras/array-extras-coverage.js similarity index 99% rename from lib/yuilib/3.7.3/build/array-extras/array-extras-coverage.js rename to lib/yuilib/3.8.0/build/array-extras/array-extras-coverage.js index b061ddd4152..0f8401b7fc2 100644 --- a/lib/yuilib/3.7.3/build/array-extras/array-extras-coverage.js +++ b/lib/yuilib/3.8.0/build/array-extras/array-extras-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,7 +32,7 @@ _yuitest_coverage["build/array-extras/array-extras.js"] = { path: "build/array-extras/array-extras.js", code: [] }; -_yuitest_coverage["build/array-extras/array-extras.js"].code=["YUI.add('array-extras', function (Y, NAME) {","","/**","Adds additional utility methods to the `Y.Array` class.","","@module collection","@submodule array-extras","**/","","var A = Y.Array,"," L = Y.Lang,"," ArrayProto = Array.prototype;","","/**","Returns the index of the last item in the array that contains the specified","value, or `-1` if the value isn't found.","","@method lastIndexOf","@param {Array} a Array to search in.","@param {Any} val Value to search for.","@param {Number} [fromIndex] Index at which to start searching backwards."," Defaults to the array's length - 1. If negative, it will be taken as an offset"," from the end of the array. If the calculated index is less than 0, the array"," will not be searched and `-1` will be returned.","@return {Number} Index of the item that contains the value, or `-1` if not"," found.","@static","@for Array","**/","A.lastIndexOf = L._isNative(ArrayProto.lastIndexOf) ?"," function(a, val, fromIndex) {"," // An undefined fromIndex is still considered a value by some (all?)"," // native implementations, so we can't pass it unless it's actually"," // specified."," return fromIndex || fromIndex === 0 ? a.lastIndexOf(val, fromIndex) :"," a.lastIndexOf(val);"," } :"," function(a, val, fromIndex) {"," var len = a.length,"," i = len - 1;",""," if (fromIndex || fromIndex === 0) {"," i = Math.min(fromIndex < 0 ? len + fromIndex : fromIndex, len);"," }",""," if (i > -1 && len > 0) {"," for (; i > -1; --i) {"," if (i in a && a[i] === val) {"," return i;"," }"," }"," }",""," return -1;"," };","","/**","Returns a copy of the input array with duplicate items removed.","","Note: If the input array only contains strings, the `Y.Array.dedupe()` method is","a much faster alternative.","","@method unique","@param {Array} array Array to dedupe.","@param {Function} [testFn] Custom function to use to test the equality of two"," values. A truthy return value indicates that the values are equal. A falsy"," return value indicates that the values are not equal.",""," @param {Any} testFn.a First value to compare."," @param {Any} testFn.b Second value to compare."," @param {Number} testFn.index Index of the current item in the original"," array."," @param {Array} testFn.array The original array."," @return {Boolean} _true_ if the items are equal, _false_ otherwise.","","@return {Array} Copy of the input array with duplicate items removed.","@static","**/","A.unique = function (array, testFn) {"," var i = 0,"," len = array.length,"," results = [],"," j, result, resultLen, value;",""," // Note the label here. It's used to jump out of the inner loop when a value"," // is not unique."," outerLoop: for (; i < len; i++) {"," value = array[i];",""," // For each value in the input array, iterate through the result array"," // and check for uniqueness against each result value."," for (j = 0, resultLen = results.length; j < resultLen; j++) {"," result = results[j];",""," // If the test function returns true or there's no test function and"," // the value equals the current result item, stop iterating over the"," // results and continue to the next value in the input array."," if (testFn) {"," if (testFn.call(array, value, result, i, array)) {"," continue outerLoop;"," }"," } else if (value === result) {"," continue outerLoop;"," }"," }",""," // If we get this far, that means the current value is not already in"," // the result array, so add it."," results.push(value);"," }",""," return results;","};","","/**","Executes the supplied function on each item in the array. Returns a new array","containing the items for which the supplied function returned a truthy value.","","@method filter","@param {Array} a Array to filter.","@param {Function} f Function to execute on each item.","@param {Object} [o] Optional context object.","@return {Array} Array of items for which the supplied function returned a"," truthy value (empty if it never returned a truthy value).","@static","*/","A.filter = L._isNative(ArrayProto.filter) ?"," function(a, f, o) {"," return ArrayProto.filter.call(a, f, o);"," } :"," function(a, f, o) {"," var i = 0,"," len = a.length,"," results = [],"," item;",""," for (; i < len; ++i) {"," if (i in a) {"," item = a[i];",""," if (f.call(o, item, i, a)) {"," results.push(item);"," }"," }"," }",""," return results;"," };","","/**","The inverse of `Array.filter()`. Executes the supplied function on each item.","Returns a new array containing the items for which the supplied function","returned `false`.","","@method reject","@param {Array} a the array to iterate.","@param {Function} f the function to execute on each item.","@param {object} [o] Optional context object.","@return {Array} The items for which the supplied function returned `false`.","@static","*/","A.reject = function(a, f, o) {"," return A.filter(a, function(item, i, a) {"," return !f.call(o, item, i, a);"," });","};","","/**","Executes the supplied function on each item in the array. Iteration stops if the","supplied function does not return a truthy value.","","@method every","@param {Array} a the array to iterate.","@param {Function} f the function to execute on each item.","@param {Object} [o] Optional context object.","@return {Boolean} `true` if every item in the array returns `true` from the"," supplied function, `false` otherwise.","@static","*/","A.every = L._isNative(ArrayProto.every) ?"," function(a, f, o) {"," return ArrayProto.every.call(a, f, o);"," } :"," function(a, f, o) {"," for (var i = 0, l = a.length; i < l; ++i) {"," if (i in a && !f.call(o, a[i], i, a)) {"," return false;"," }"," }",""," return true;"," };","","/**","Executes the supplied function on each item in the array and returns a new array","containing all the values returned by the supplied function.","","@example",""," // Convert an array of numbers into an array of strings."," Y.Array.map([1, 2, 3, 4], function (item) {"," return '' + item;"," });"," // => ['1', '2', '3', '4']","","@method map","@param {Array} a the array to iterate.","@param {Function} f the function to execute on each item.","@param {object} [o] Optional context object.","@return {Array} A new array containing the return value of the supplied function"," for each item in the original array.","@static","*/","A.map = L._isNative(ArrayProto.map) ?"," function(a, f, o) {"," return ArrayProto.map.call(a, f, o);"," } :"," function(a, f, o) {"," var i = 0,"," len = a.length,"," results = ArrayProto.concat.call(a);",""," for (; i < len; ++i) {"," if (i in a) {"," results[i] = f.call(o, a[i], i, a);"," }"," }",""," return results;"," };","","","/**","Executes the supplied function on each item in the array, \"folding\" the array","into a single value.","","@method reduce","@param {Array} a Array to iterate.","@param {Any} init Initial value to start with.","@param {Function} f Function to execute on each item. This function should"," update and return the value of the computation. It will receive the following"," arguments:"," @param {Any} f.previousValue Value returned from the previous iteration,"," or the initial value if this is the first iteration."," @param {Any} f.currentValue Value of the current item being iterated."," @param {Number} f.index Index of the current item."," @param {Array} f.array Array being iterated.","@param {Object} [o] Optional context object.","@return {Any} Final result from iteratively applying the given function to each"," element in the array.","@static","*/","A.reduce = L._isNative(ArrayProto.reduce) ?"," function(a, init, f, o) {"," // ES5 Array.reduce doesn't support a thisObject, so we need to"," // implement it manually."," return ArrayProto.reduce.call(a, function(init, item, i, a) {"," return f.call(o, init, item, i, a);"," }, init);"," } :"," function(a, init, f, o) {"," var i = 0,"," len = a.length,"," result = init;",""," for (; i < len; ++i) {"," if (i in a) {"," result = f.call(o, result, a[i], i, a);"," }"," }",""," return result;"," };","","/**","Executes the supplied function on each item in the array, searching for the","first item that matches the supplied function.","","@method find","@param {Array} a the array to search.","@param {Function} f the function to execute on each item. Iteration is stopped"," as soon as this function returns `true`.","@param {Object} [o] Optional context object.","@return {Object} the first item that the supplied function returns `true` for,"," or `null` if it never returns `true`.","@static","*/","A.find = function(a, f, o) {"," for (var i = 0, l = a.length; i < l; i++) {"," if (i in a && f.call(o, a[i], i, a)) {"," return a[i];"," }"," }"," return null;","};","","/**","Iterates over an array, returning a new array of all the elements that match the","supplied regular expression.","","@method grep","@param {Array} a Array to iterate over.","@param {RegExp} pattern Regular expression to test against each item.","@return {Array} All the items in the array that produce a match against the"," supplied regular expression. If no items match, an empty array is returned.","@static","*/","A.grep = function(a, pattern) {"," return A.filter(a, function(item, index) {"," return pattern.test(item);"," });","};","","/**","Partitions an array into two new arrays, one with the items for which the","supplied function returns `true`, and one with the items for which the function","returns `false`.","","@method partition","@param {Array} a Array to iterate over.","@param {Function} f Function to execute for each item in the array. It will"," receive the following arguments:"," @param {Any} f.item Current item."," @param {Number} f.index Index of the current item."," @param {Array} f.array The array being iterated.","@param {Object} [o] Optional execution context.","@return {Object} An object with two properties: `matches` and `rejects`. Each is"," an array containing the items that were selected or rejected by the test"," function (or an empty array if none).","@static","*/","A.partition = function(a, f, o) {"," var results = {"," matches: [],"," rejects: []"," };",""," A.each(a, function(item, index) {"," var set = f.call(o, item, index, a) ? results.matches : results.rejects;"," set.push(item);"," });",""," return results;","};","","/**","Creates an array of arrays by pairing the corresponding elements of two arrays","together into a new array.","","@method zip","@param {Array} a Array to iterate over.","@param {Array} a2 Another array whose values will be paired with values of the"," first array.","@return {Array} An array of arrays formed by pairing each element of the first"," array with an item in the second array having the corresponding index.","@static","*/","A.zip = function(a, a2) {"," var results = [];"," A.each(a, function(item, index) {"," results.push([item, a2[index]]);"," });"," return results;","};","","/**","Flattens an array of nested arrays at any abitrary depth into a single, flat","array.","","@method flatten","@param {Array} a Array with nested arrays to flatten.","@return {Array} An array whose nested arrays have been flattened.","@static","@since 3.7.0","**/","A.flatten = function(a) {"," var result = [],"," i, len, val;",""," // Always return an array."," if (!a) {"," return result;"," }",""," for (i = 0, len = a.length; i < len; ++i) {"," val = a[i];",""," if (L.isArray(val)) {"," // Recusively flattens any nested arrays."," result.push.apply(result, A.flatten(val));"," } else {"," result.push(val);"," }"," }",""," return result;","};","","","}, '3.7.3', {\"requires\": [\"yui-base\"]});"]; +_yuitest_coverage["build/array-extras/array-extras.js"].code=["YUI.add('array-extras', function (Y, NAME) {","","/**","Adds additional utility methods to the `Y.Array` class.","","@module collection","@submodule array-extras","**/","","var A = Y.Array,"," L = Y.Lang,"," ArrayProto = Array.prototype;","","/**","Returns the index of the last item in the array that contains the specified","value, or `-1` if the value isn't found.","","@method lastIndexOf","@param {Array} a Array to search in.","@param {Any} val Value to search for.","@param {Number} [fromIndex] Index at which to start searching backwards."," Defaults to the array's length - 1. If negative, it will be taken as an offset"," from the end of the array. If the calculated index is less than 0, the array"," will not be searched and `-1` will be returned.","@return {Number} Index of the item that contains the value, or `-1` if not"," found.","@static","@for Array","**/","A.lastIndexOf = L._isNative(ArrayProto.lastIndexOf) ?"," function(a, val, fromIndex) {"," // An undefined fromIndex is still considered a value by some (all?)"," // native implementations, so we can't pass it unless it's actually"," // specified."," return fromIndex || fromIndex === 0 ? a.lastIndexOf(val, fromIndex) :"," a.lastIndexOf(val);"," } :"," function(a, val, fromIndex) {"," var len = a.length,"," i = len - 1;",""," if (fromIndex || fromIndex === 0) {"," i = Math.min(fromIndex < 0 ? len + fromIndex : fromIndex, len);"," }",""," if (i > -1 && len > 0) {"," for (; i > -1; --i) {"," if (i in a && a[i] === val) {"," return i;"," }"," }"," }",""," return -1;"," };","","/**","Returns a copy of the input array with duplicate items removed.","","Note: If the input array only contains strings, the `Y.Array.dedupe()` method is","a much faster alternative.","","@method unique","@param {Array} array Array to dedupe.","@param {Function} [testFn] Custom function to use to test the equality of two"," values. A truthy return value indicates that the values are equal. A falsy"," return value indicates that the values are not equal.",""," @param {Any} testFn.a First value to compare."," @param {Any} testFn.b Second value to compare."," @param {Number} testFn.index Index of the current item in the original"," array."," @param {Array} testFn.array The original array."," @return {Boolean} _true_ if the items are equal, _false_ otherwise.","","@return {Array} Copy of the input array with duplicate items removed.","@static","**/","A.unique = function (array, testFn) {"," var i = 0,"," len = array.length,"," results = [],"," j, result, resultLen, value;",""," // Note the label here. It's used to jump out of the inner loop when a value"," // is not unique."," outerLoop: for (; i < len; i++) {"," value = array[i];",""," // For each value in the input array, iterate through the result array"," // and check for uniqueness against each result value."," for (j = 0, resultLen = results.length; j < resultLen; j++) {"," result = results[j];",""," // If the test function returns true or there's no test function and"," // the value equals the current result item, stop iterating over the"," // results and continue to the next value in the input array."," if (testFn) {"," if (testFn.call(array, value, result, i, array)) {"," continue outerLoop;"," }"," } else if (value === result) {"," continue outerLoop;"," }"," }",""," // If we get this far, that means the current value is not already in"," // the result array, so add it."," results.push(value);"," }",""," return results;","};","","/**","Executes the supplied function on each item in the array. Returns a new array","containing the items for which the supplied function returned a truthy value.","","@method filter","@param {Array} a Array to filter.","@param {Function} f Function to execute on each item.","@param {Object} [o] Optional context object.","@return {Array} Array of items for which the supplied function returned a"," truthy value (empty if it never returned a truthy value).","@static","*/","A.filter = L._isNative(ArrayProto.filter) ?"," function(a, f, o) {"," return ArrayProto.filter.call(a, f, o);"," } :"," function(a, f, o) {"," var i = 0,"," len = a.length,"," results = [],"," item;",""," for (; i < len; ++i) {"," if (i in a) {"," item = a[i];",""," if (f.call(o, item, i, a)) {"," results.push(item);"," }"," }"," }",""," return results;"," };","","/**","The inverse of `Array.filter()`. Executes the supplied function on each item.","Returns a new array containing the items for which the supplied function","returned `false`.","","@method reject","@param {Array} a the array to iterate.","@param {Function} f the function to execute on each item.","@param {object} [o] Optional context object.","@return {Array} The items for which the supplied function returned `false`.","@static","*/","A.reject = function(a, f, o) {"," return A.filter(a, function(item, i, a) {"," return !f.call(o, item, i, a);"," });","};","","/**","Executes the supplied function on each item in the array. Iteration stops if the","supplied function does not return a truthy value.","","@method every","@param {Array} a the array to iterate.","@param {Function} f the function to execute on each item.","@param {Object} [o] Optional context object.","@return {Boolean} `true` if every item in the array returns `true` from the"," supplied function, `false` otherwise.","@static","*/","A.every = L._isNative(ArrayProto.every) ?"," function(a, f, o) {"," return ArrayProto.every.call(a, f, o);"," } :"," function(a, f, o) {"," for (var i = 0, l = a.length; i < l; ++i) {"," if (i in a && !f.call(o, a[i], i, a)) {"," return false;"," }"," }",""," return true;"," };","","/**","Executes the supplied function on each item in the array and returns a new array","containing all the values returned by the supplied function.","","@example",""," // Convert an array of numbers into an array of strings."," Y.Array.map([1, 2, 3, 4], function (item) {"," return '' + item;"," });"," // => ['1', '2', '3', '4']","","@method map","@param {Array} a the array to iterate.","@param {Function} f the function to execute on each item.","@param {object} [o] Optional context object.","@return {Array} A new array containing the return value of the supplied function"," for each item in the original array.","@static","*/","A.map = L._isNative(ArrayProto.map) ?"," function(a, f, o) {"," return ArrayProto.map.call(a, f, o);"," } :"," function(a, f, o) {"," var i = 0,"," len = a.length,"," results = ArrayProto.concat.call(a);",""," for (; i < len; ++i) {"," if (i in a) {"," results[i] = f.call(o, a[i], i, a);"," }"," }",""," return results;"," };","","","/**","Executes the supplied function on each item in the array, \"folding\" the array","into a single value.","","@method reduce","@param {Array} a Array to iterate.","@param {Any} init Initial value to start with.","@param {Function} f Function to execute on each item. This function should"," update and return the value of the computation. It will receive the following"," arguments:"," @param {Any} f.previousValue Value returned from the previous iteration,"," or the initial value if this is the first iteration."," @param {Any} f.currentValue Value of the current item being iterated."," @param {Number} f.index Index of the current item."," @param {Array} f.array Array being iterated.","@param {Object} [o] Optional context object.","@return {Any} Final result from iteratively applying the given function to each"," element in the array.","@static","*/","A.reduce = L._isNative(ArrayProto.reduce) ?"," function(a, init, f, o) {"," // ES5 Array.reduce doesn't support a thisObject, so we need to"," // implement it manually."," return ArrayProto.reduce.call(a, function(init, item, i, a) {"," return f.call(o, init, item, i, a);"," }, init);"," } :"," function(a, init, f, o) {"," var i = 0,"," len = a.length,"," result = init;",""," for (; i < len; ++i) {"," if (i in a) {"," result = f.call(o, result, a[i], i, a);"," }"," }",""," return result;"," };","","/**","Executes the supplied function on each item in the array, searching for the","first item that matches the supplied function.","","@method find","@param {Array} a the array to search.","@param {Function} f the function to execute on each item. Iteration is stopped"," as soon as this function returns `true`.","@param {Object} [o] Optional context object.","@return {Object} the first item that the supplied function returns `true` for,"," or `null` if it never returns `true`.","@static","*/","A.find = function(a, f, o) {"," for (var i = 0, l = a.length; i < l; i++) {"," if (i in a && f.call(o, a[i], i, a)) {"," return a[i];"," }"," }"," return null;","};","","/**","Iterates over an array, returning a new array of all the elements that match the","supplied regular expression.","","@method grep","@param {Array} a Array to iterate over.","@param {RegExp} pattern Regular expression to test against each item.","@return {Array} All the items in the array that produce a match against the"," supplied regular expression. If no items match, an empty array is returned.","@static","*/","A.grep = function(a, pattern) {"," return A.filter(a, function(item, index) {"," return pattern.test(item);"," });","};","","/**","Partitions an array into two new arrays, one with the items for which the","supplied function returns `true`, and one with the items for which the function","returns `false`.","","@method partition","@param {Array} a Array to iterate over.","@param {Function} f Function to execute for each item in the array. It will"," receive the following arguments:"," @param {Any} f.item Current item."," @param {Number} f.index Index of the current item."," @param {Array} f.array The array being iterated.","@param {Object} [o] Optional execution context.","@return {Object} An object with two properties: `matches` and `rejects`. Each is"," an array containing the items that were selected or rejected by the test"," function (or an empty array if none).","@static","*/","A.partition = function(a, f, o) {"," var results = {"," matches: [],"," rejects: []"," };",""," A.each(a, function(item, index) {"," var set = f.call(o, item, index, a) ? results.matches : results.rejects;"," set.push(item);"," });",""," return results;","};","","/**","Creates an array of arrays by pairing the corresponding elements of two arrays","together into a new array.","","@method zip","@param {Array} a Array to iterate over.","@param {Array} a2 Another array whose values will be paired with values of the"," first array.","@return {Array} An array of arrays formed by pairing each element of the first"," array with an item in the second array having the corresponding index.","@static","*/","A.zip = function(a, a2) {"," var results = [];"," A.each(a, function(item, index) {"," results.push([item, a2[index]]);"," });"," return results;","};","","/**","Flattens an array of nested arrays at any abitrary depth into a single, flat","array.","","@method flatten","@param {Array} a Array with nested arrays to flatten.","@return {Array} An array whose nested arrays have been flattened.","@static","@since 3.7.0","**/","A.flatten = function(a) {"," var result = [],"," i, len, val;",""," // Always return an array."," if (!a) {"," return result;"," }",""," for (i = 0, len = a.length; i < len; ++i) {"," val = a[i];",""," if (L.isArray(val)) {"," // Recusively flattens any nested arrays."," result.push.apply(result, A.flatten(val));"," } else {"," result.push(val);"," }"," }",""," return result;","};","","","}, '3.8.0', {\"requires\": [\"yui-base\"]});"]; _yuitest_coverage["build/array-extras/array-extras.js"].lines = {"1":0,"10":0,"30":0,"35":0,"39":0,"42":0,"43":0,"46":0,"47":0,"48":0,"49":0,"54":0,"79":0,"80":0,"87":0,"88":0,"92":0,"93":0,"98":0,"99":0,"100":0,"102":0,"103":0,"109":0,"112":0,"127":0,"129":0,"132":0,"137":0,"138":0,"139":0,"141":0,"142":0,"147":0,"162":0,"163":0,"164":0,"180":0,"182":0,"185":0,"186":0,"187":0,"191":0,"214":0,"216":0,"219":0,"223":0,"224":0,"225":0,"229":0,"253":0,"257":0,"258":0,"262":0,"266":0,"267":0,"268":0,"272":0,"288":0,"289":0,"290":0,"291":0,"294":0,"308":0,"309":0,"310":0,"332":0,"333":0,"338":0,"339":0,"340":0,"343":0,"358":0,"359":0,"360":0,"361":0,"363":0,"376":0,"377":0,"381":0,"382":0,"385":0,"386":0,"388":0,"390":0,"392":0,"396":0}; _yuitest_coverage["build/array-extras/array-extras.js"].functions = {"(anonymous 2):31":0,"}:38":0,"unique:79":0,"(anonymous 3):128":0,"}:131":0,"(anonymous 4):163":0,"reject:162":0,"(anonymous 5):181":0,"}:184":0,"(anonymous 6):215":0,"}:218":0,"(anonymous 8):257":0,"(anonymous 7):254":0,"}:261":0,"find:288":0,"(anonymous 9):309":0,"grep:308":0,"(anonymous 10):338":0,"partition:332":0,"(anonymous 11):360":0,"zip:358":0,"flatten:376":0,"(anonymous 1):1":0}; _yuitest_coverage["build/array-extras/array-extras.js"].coveredLines = 87; @@ -546,4 +546,4 @@ return result; }; -}, '3.7.3', {"requires": ["yui-base"]}); +}, '3.8.0', {"requires": ["yui-base"]}); diff --git a/lib/yuilib/3.7.3/build/array-extras/array-extras-debug.js b/lib/yuilib/3.8.0/build/array-extras/array-extras-debug.js similarity index 99% rename from lib/yuilib/3.7.3/build/array-extras/array-extras-debug.js rename to lib/yuilib/3.8.0/build/array-extras/array-extras-debug.js index 5e78952c15b..ed69437e469 100644 --- a/lib/yuilib/3.7.3/build/array-extras/array-extras-debug.js +++ b/lib/yuilib/3.8.0/build/array-extras/array-extras-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -403,4 +403,4 @@ A.flatten = function(a) { }; -}, '3.7.3', {"requires": ["yui-base"]}); +}, '3.8.0', {"requires": ["yui-base"]}); diff --git a/lib/yuilib/3.7.3/build/array-extras/array-extras-min.js b/lib/yuilib/3.8.0/build/array-extras/array-extras-min.js similarity index 94% rename from lib/yuilib/3.7.3/build/array-extras/array-extras-min.js rename to lib/yuilib/3.8.0/build/array-extras/array-extras-min.js index 031b9903a55..0777f1ef52c 100644 --- a/lib/yuilib/3.7.3/build/array-extras/array-extras-min.js +++ b/lib/yuilib/3.8.0/build/array-extras/array-extras-min.js @@ -1,7 +1,7 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ -YUI.add("array-extras",function(e,t){var n=e.Array,r=e.Lang,i=Array.prototype;n.lastIndexOf=r._isNative(i.lastIndexOf)?function(e,t,n){return n||n===0?e.lastIndexOf(t,n):e.lastIndexOf(t)}:function(e,t,n){var r=e.length,i=r-1;if(n||n===0)i=Math.min(n<0?r+n:n,r);if(i>-1&&r>0)for(;i>-1;--i)if(i in e&&e[i]===t)return i;return-1},n.unique=function(e,t){var n=0,r=e.length,i=[],s,o,u,a;e:for(;n-1&&r>0)for(;i>-1;--i)if(i in e&&e[i]===t)return i;return-1},n.unique=function(e,t){var n=0,r=e.length,i=[],s,o,u,a;e:for(;n= 0; --i) {"," if (comparator.call(this, needle, this.item(i))) {"," this._items.splice(i, 1);"," if (!all) {"," break;"," }"," }"," }",""," return this;"," },",""," /**"," * Default comparator for items stored in this list. Used by remove()."," *"," * @method itemsAreEqual"," * @param { mixed } a item to test equivalence with."," * @param { mixed } b other item to test equivalance."," * @return { Boolean } true if items are deemed equivalent."," * @for ArrayList"," * @deprecated Use ModelList or a custom ArrayList subclass"," */"," itemsAreEqual: function(a, b) {"," return a === b;"," }","","});","","","}, '3.7.3', {\"requires\": [\"arraylist\"]});"]; +_yuitest_coverage["build/arraylist-add/arraylist-add.js"].code=["YUI.add('arraylist-add', function (Y, NAME) {","","/**"," * Collection utilities beyond what is provided in the YUI core"," * @module collection"," * @submodule arraylist-add"," * @deprecated Use ModelList or a custom ArrayList subclass"," */","","/*"," * Adds methods add and remove to Y.ArrayList"," */","Y.mix(Y.ArrayList.prototype, {",""," /**"," * Add a single item to the ArrayList. Does not prevent duplicates."," *"," * @method add"," * @param { mixed } item Item presumably of the same type as others in the"," * ArrayList."," * @param {Number} index (Optional.) Number representing the position at"," * which the item should be inserted."," * @return {ArrayList} the instance."," * @for ArrayList"," * @deprecated Use ModelList or a custom ArrayList subclass"," * @chainable"," */"," add: function(item, index) {"," var items = this._items;",""," if (Y.Lang.isNumber(index)) {"," items.splice(index, 0, item);"," }"," else {"," items.push(item);"," }",""," return this;"," },",""," /**"," * Removes first or all occurrences of an item to the ArrayList. If a"," * comparator is not provided, uses itemsAreEqual method to determine"," * matches."," *"," * @method remove"," * @param { mixed } needle Item to find and remove from the list."," * @param { Boolean } all If true, remove all occurrences."," * @param { Function } comparator optional a/b function to test equivalence."," * @return {ArrayList} the instance."," * @for ArrayList"," * @deprecated Use ModelList or a custom ArrayList subclass"," * @chainable"," */"," remove: function(needle, all, comparator) {"," comparator = comparator || this.itemsAreEqual;",""," for (var i = this._items.length - 1; i >= 0; --i) {"," if (comparator.call(this, needle, this.item(i))) {"," this._items.splice(i, 1);"," if (!all) {"," break;"," }"," }"," }",""," return this;"," },",""," /**"," * Default comparator for items stored in this list. Used by remove()."," *"," * @method itemsAreEqual"," * @param { mixed } a item to test equivalence with."," * @param { mixed } b other item to test equivalance."," * @return { Boolean } true if items are deemed equivalent."," * @for ArrayList"," * @deprecated Use ModelList or a custom ArrayList subclass"," */"," itemsAreEqual: function(a, b) {"," return a === b;"," }","","});","","","}, '3.8.0', {\"requires\": [\"arraylist\"]});"]; _yuitest_coverage["build/arraylist-add/arraylist-add.js"].lines = {"1":0,"13":0,"29":0,"31":0,"32":0,"35":0,"38":0,"56":0,"58":0,"59":0,"60":0,"61":0,"62":0,"67":0,"81":0}; _yuitest_coverage["build/arraylist-add/arraylist-add.js"].functions = {"add:28":0,"remove:55":0,"itemsAreEqual:80":0,"(anonymous 1):1":0}; _yuitest_coverage["build/arraylist-add/arraylist-add.js"].coveredLines = 15; @@ -142,4 +142,4 @@ return a === b; }); -}, '3.7.3', {"requires": ["arraylist"]}); +}, '3.8.0', {"requires": ["arraylist"]}); diff --git a/lib/yuilib/3.7.3/build/arraylist-add/arraylist-add-debug.js b/lib/yuilib/3.8.0/build/arraylist-add/arraylist-add-debug.js similarity index 97% rename from lib/yuilib/3.7.3/build/arraylist-add/arraylist-add-debug.js rename to lib/yuilib/3.8.0/build/arraylist-add/arraylist-add-debug.js index a1dd9677278..efd9f89cb34 100644 --- a/lib/yuilib/3.7.3/build/arraylist-add/arraylist-add-debug.js +++ b/lib/yuilib/3.8.0/build/arraylist-add/arraylist-add-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -90,4 +90,4 @@ Y.mix(Y.ArrayList.prototype, { }); -}, '3.7.3', {"requires": ["arraylist"]}); +}, '3.8.0', {"requires": ["arraylist"]}); diff --git a/lib/yuilib/3.7.3/build/arraylist-add/arraylist-add-min.js b/lib/yuilib/3.8.0/build/arraylist-add/arraylist-add-min.js similarity index 84% rename from lib/yuilib/3.7.3/build/arraylist-add/arraylist-add-min.js rename to lib/yuilib/3.8.0/build/arraylist-add/arraylist-add-min.js index 1f5cd97a646..833ef8946a5 100644 --- a/lib/yuilib/3.7.3/build/arraylist-add/arraylist-add-min.js +++ b/lib/yuilib/3.8.0/build/arraylist-add/arraylist-add-min.js @@ -1,7 +1,7 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ -YUI.add("arraylist-add",function(e,t){e.mix(e.ArrayList.prototype,{add:function(t,n){var r=this._items;return e.Lang.isNumber(n)?r.splice(n,0,t):r.push(t),this},remove:function(e,t,n){n=n||this.itemsAreEqual;for(var r=this._items.length-1;r>=0;--r)if(n.call(this,e,this.item(r))){this._items.splice(r,1);if(!t)break}return this},itemsAreEqual:function(e,t){return e===t}})},"3.7.3",{requires:["arraylist"]}); +YUI.add("arraylist-add",function(e,t){e.mix(e.ArrayList.prototype,{add:function(t,n){var r=this._items;return e.Lang.isNumber(n)?r.splice(n,0,t):r.push(t),this},remove:function(e,t,n){n=n||this.itemsAreEqual;for(var r=this._items.length-1;r>=0;--r)if(n.call(this,e,this.item(r))){this._items.splice(r,1);if(!t)break}return this},itemsAreEqual:function(e,t){return e===t}})},"3.8.0",{requires:["arraylist"]}); diff --git a/lib/yuilib/3.7.3/build/arraylist-add/arraylist-add.js b/lib/yuilib/3.8.0/build/arraylist-add/arraylist-add.js similarity index 97% rename from lib/yuilib/3.7.3/build/arraylist-add/arraylist-add.js rename to lib/yuilib/3.8.0/build/arraylist-add/arraylist-add.js index a1dd9677278..efd9f89cb34 100644 --- a/lib/yuilib/3.7.3/build/arraylist-add/arraylist-add.js +++ b/lib/yuilib/3.8.0/build/arraylist-add/arraylist-add.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -90,4 +90,4 @@ Y.mix(Y.ArrayList.prototype, { }); -}, '3.7.3', {"requires": ["arraylist"]}); +}, '3.8.0', {"requires": ["arraylist"]}); diff --git a/lib/yuilib/3.7.3/build/arraylist-filter/arraylist-filter-coverage.js b/lib/yuilib/3.8.0/build/arraylist-filter/arraylist-filter-coverage.js similarity index 97% rename from lib/yuilib/3.7.3/build/arraylist-filter/arraylist-filter-coverage.js rename to lib/yuilib/3.8.0/build/arraylist-filter/arraylist-filter-coverage.js index 152de21d246..b694af2be3a 100644 --- a/lib/yuilib/3.7.3/build/arraylist-filter/arraylist-filter-coverage.js +++ b/lib/yuilib/3.8.0/build/arraylist-filter/arraylist-filter-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,7 +32,7 @@ _yuitest_coverage["build/arraylist-filter/arraylist-filter.js"] = { path: "build/arraylist-filter/arraylist-filter.js", code: [] }; -_yuitest_coverage["build/arraylist-filter/arraylist-filter.js"].code=["YUI.add('arraylist-filter', function (Y, NAME) {","","/**"," * Collection utilities beyond what is provided in the YUI core"," * @module collection"," * @submodule arraylist-filter"," * @deprecated Use ModelList or a custom subclass implementation"," */","","/*"," * Adds filter method to ArrayList prototype"," */","Y.mix(Y.ArrayList.prototype, {",""," /**"," *

          Create a new ArrayList (or augmenting class instance) from a subset"," * of items as determined by the boolean function passed as the"," * argument. The original ArrayList is unchanged.

          "," *"," *

          The validator signature is validator( item ).

          "," *"," * @method filter"," * @param { Function } validator Boolean function to determine in or out."," * @return { ArrayList } New instance based on who passed the validator."," * @for ArrayList"," * @deprecated Use ModelList or a custom subclass implementation"," */"," filter: function(validator) {"," var items = [];",""," Y.Array.each(this._items, function(item, i) {"," item = this.item(i);",""," if (validator(item)) {"," items.push(item);"," }"," }, this);",""," return new this.constructor(items);"," }","","});","","","}, '3.7.3', {\"requires\": [\"arraylist\"]});"]; +_yuitest_coverage["build/arraylist-filter/arraylist-filter.js"].code=["YUI.add('arraylist-filter', function (Y, NAME) {","","/**"," * Collection utilities beyond what is provided in the YUI core"," * @module collection"," * @submodule arraylist-filter"," * @deprecated Use ModelList or a custom subclass implementation"," */","","/*"," * Adds filter method to ArrayList prototype"," */","Y.mix(Y.ArrayList.prototype, {",""," /**"," *

          Create a new ArrayList (or augmenting class instance) from a subset"," * of items as determined by the boolean function passed as the"," * argument. The original ArrayList is unchanged.

          "," *"," *

          The validator signature is validator( item ).

          "," *"," * @method filter"," * @param { Function } validator Boolean function to determine in or out."," * @return { ArrayList } New instance based on who passed the validator."," * @for ArrayList"," * @deprecated Use ModelList or a custom subclass implementation"," */"," filter: function(validator) {"," var items = [];",""," Y.Array.each(this._items, function(item, i) {"," item = this.item(i);",""," if (validator(item)) {"," items.push(item);"," }"," }, this);",""," return new this.constructor(items);"," }","","});","","","}, '3.8.0', {\"requires\": [\"arraylist\"]});"]; _yuitest_coverage["build/arraylist-filter/arraylist-filter.js"].lines = {"1":0,"13":0,"29":0,"31":0,"32":0,"34":0,"35":0,"39":0}; _yuitest_coverage["build/arraylist-filter/arraylist-filter.js"].functions = {"(anonymous 2):31":0,"filter:28":0,"(anonymous 1):1":0}; _yuitest_coverage["build/arraylist-filter/arraylist-filter.js"].coveredLines = 8; @@ -92,4 +92,4 @@ return new this.constructor(items); }); -}, '3.7.3', {"requires": ["arraylist"]}); +}, '3.8.0', {"requires": ["arraylist"]}); diff --git a/lib/yuilib/3.7.3/build/arraylist-filter/arraylist-filter-debug.js b/lib/yuilib/3.8.0/build/arraylist-filter/arraylist-filter-debug.js similarity index 95% rename from lib/yuilib/3.7.3/build/arraylist-filter/arraylist-filter-debug.js rename to lib/yuilib/3.8.0/build/arraylist-filter/arraylist-filter-debug.js index b8e8b66abae..1b13451a136 100644 --- a/lib/yuilib/3.7.3/build/arraylist-filter/arraylist-filter-debug.js +++ b/lib/yuilib/3.8.0/build/arraylist-filter/arraylist-filter-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -48,4 +48,4 @@ Y.mix(Y.ArrayList.prototype, { }); -}, '3.7.3', {"requires": ["arraylist"]}); +}, '3.8.0', {"requires": ["arraylist"]}); diff --git a/lib/yuilib/3.7.3/build/arraylist-filter/arraylist-filter-min.js b/lib/yuilib/3.8.0/build/arraylist-filter/arraylist-filter-min.js similarity index 80% rename from lib/yuilib/3.7.3/build/arraylist-filter/arraylist-filter-min.js rename to lib/yuilib/3.8.0/build/arraylist-filter/arraylist-filter-min.js index bbf84a2840c..20eea18342f 100644 --- a/lib/yuilib/3.7.3/build/arraylist-filter/arraylist-filter-min.js +++ b/lib/yuilib/3.8.0/build/arraylist-filter/arraylist-filter-min.js @@ -1,7 +1,7 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ -YUI.add("arraylist-filter",function(e,t){e.mix(e.ArrayList.prototype,{filter:function(t){var n=[];return e.Array.each(this._items,function(e,r){e=this.item(r),t(e)&&n.push(e)},this),new this.constructor(n)}})},"3.7.3",{requires:["arraylist"]}); +YUI.add("arraylist-filter",function(e,t){e.mix(e.ArrayList.prototype,{filter:function(t){var n=[];return e.Array.each(this._items,function(e,r){e=this.item(r),t(e)&&n.push(e)},this),new this.constructor(n)}})},"3.8.0",{requires:["arraylist"]}); diff --git a/lib/yuilib/3.7.3/build/arraylist-filter/arraylist-filter.js b/lib/yuilib/3.8.0/build/arraylist-filter/arraylist-filter.js similarity index 95% rename from lib/yuilib/3.7.3/build/arraylist-filter/arraylist-filter.js rename to lib/yuilib/3.8.0/build/arraylist-filter/arraylist-filter.js index b8e8b66abae..1b13451a136 100644 --- a/lib/yuilib/3.7.3/build/arraylist-filter/arraylist-filter.js +++ b/lib/yuilib/3.8.0/build/arraylist-filter/arraylist-filter.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -48,4 +48,4 @@ Y.mix(Y.ArrayList.prototype, { }); -}, '3.7.3', {"requires": ["arraylist"]}); +}, '3.8.0', {"requires": ["arraylist"]}); diff --git a/lib/yuilib/3.7.3/build/arraylist/arraylist-coverage.js b/lib/yuilib/3.8.0/build/arraylist/arraylist-coverage.js similarity index 99% rename from lib/yuilib/3.7.3/build/arraylist/arraylist-coverage.js rename to lib/yuilib/3.8.0/build/arraylist/arraylist-coverage.js index 5baefb36e79..461e963d21d 100644 --- a/lib/yuilib/3.7.3/build/arraylist/arraylist-coverage.js +++ b/lib/yuilib/3.8.0/build/arraylist/arraylist-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,7 +32,7 @@ _yuitest_coverage["build/arraylist/arraylist.js"] = { path: "build/arraylist/arraylist.js", code: [] }; -_yuitest_coverage["build/arraylist/arraylist.js"].code=["YUI.add('arraylist', function (Y, NAME) {","","/**"," * Collection utilities beyond what is provided in the YUI core"," * @module collection"," * @submodule arraylist"," */","","var YArray = Y.Array,"," YArray_each = YArray.each,"," ArrayListProto;","","/**"," * Generic ArrayList class for managing lists of items and iterating operations"," * over them. The targeted use for this class is for augmentation onto a"," * class that is responsible for managing multiple instances of another class"," * (e.g. NodeList for Nodes). The recommended use is to augment your class with"," * ArrayList, then use ArrayList.addMethod to mirror the API of the constituent"," * items on the list's API."," *"," * The default implementation creates immutable lists, but mutability can be"," * provided via the arraylist-add submodule or by implementing mutation methods"," * directly on the augmented class's prototype."," *"," * @class ArrayList"," * @constructor"," * @param items { Array } array of items this list will be responsible for"," */","function ArrayList( items ) {"," if ( items !== undefined ) {"," this._items = Y.Lang.isArray( items ) ? items : YArray( items );"," } else {"," // ||= to support lazy initialization from augment"," this._items = this._items || [];"," }","}","","ArrayListProto = {"," /**"," * Get an item by index from the list. Override this method if managing a"," * list of objects that have a different public representation (e.g. Node"," * instances vs DOM nodes). The iteration methods that accept a user"," * function will use this method for access list items for operation."," *"," * @method item"," * @param i { Integer } index to fetch"," * @return { mixed } the item at the requested index"," */"," item: function ( i ) {"," return this._items[i];"," },",""," /**"," *

          Execute a function on each item of the list, optionally providing a"," * custom execution context. Default context is the item.

          "," *"," *

          The callback signature is callback( item, index ).

          "," *"," * @method each"," * @param fn { Function } the function to execute"," * @param context { mixed } optional override 'this' in the function"," * @return { ArrayList } this instance"," * @chainable"," */"," each: function ( fn, context ) {"," YArray_each( this._items, function ( item, i ) {"," item = this.item( i );",""," fn.call( context || item, item, i, this );"," }, this);",""," return this;"," },",""," /**"," *

          Execute a function on each item of the list, optionally providing a"," * custom execution context. Default context is the item.

          "," *"," *

          The callback signature is callback( item, index ).

          "," *"," *

          Unlike each, if the callback returns true, the"," * iteratation will stop.

          "," *"," * @method some"," * @param fn { Function } the function to execute"," * @param context { mixed } optional override 'this' in the function"," * @return { Boolean } True if the function returned true on an item"," */"," some: function ( fn, context ) {"," return YArray.some( this._items, function ( item, i ) {"," item = this.item( i );",""," return fn.call( context || item, item, i, this );"," }, this);"," },",""," /**"," * Finds the first index of the needle in the managed array of items."," *"," * @method indexOf"," * @param needle { mixed } The item to search for"," * @return { Integer } Array index if found. Otherwise -1"," */"," indexOf: function ( needle ) {"," return YArray.indexOf( this._items, needle );"," },",""," /**"," * How many items are in this list?"," *"," * @method size"," * @return { Integer } Number of items in the list"," */"," size: function () {"," return this._items.length;"," },",""," /**"," * Is this instance managing any items?"," *"," * @method isEmpty"," * @return { Boolean } true if 1 or more items are being managed"," */"," isEmpty: function () {"," return !this.size();"," },",""," /**"," * Provides an array-like representation for JSON.stringify."," *"," * @method toJSON"," * @return { Array } an array representation of the ArrayList"," */"," toJSON: function () {"," return this._items;"," }","};","// Default implementation does not distinguish between public and private","// item getter","/**"," * Protected method for optimizations that may be appropriate for API"," * mirroring. Similar in functionality to item, but is used by"," * methods added with ArrayList.addMethod()."," *"," * @method _item"," * @protected"," * @param i { Integer } Index of item to fetch"," * @return { mixed } The item appropriate for pass through API methods"," */","ArrayListProto._item = ArrayListProto.item;","","// Mixed onto existing proto to preserve constructor NOT being an own property.","// This has bitten me when composing classes by enumerating, copying prototypes.","Y.mix(ArrayList.prototype, ArrayListProto);","","Y.mix( ArrayList, {",""," /**"," *

          Adds a pass through method to dest (typically the prototype of a list"," * class) that calls the named method on each item in the list with"," * whatever parameters are passed in. Allows for API indirection via list"," * instances.

          "," *"," *

          Accepts a single string name or an array of string names.

          "," *"," *
          list.each( function ( item ) {","     *     item.methodName( 1, 2, 3 );","     * } );","     * // becomes","     * list.methodName( 1, 2, 3 );
          "," *"," *

          Additionally, the pass through methods use the item retrieved by the"," * _item method in case there is any special behavior that is"," * appropriate for API mirroring.

          "," *"," *

          If the iterated method returns a value, the return value from the"," * added method will be an array of values with each value being at the"," * corresponding index for that item. If the iterated method does not"," * return a value, the added method will be chainable."," *"," * @method addMethod"," * @static"," * @param dest {Object} Object or prototype to receive the iterator method"," * @param name {String|String[]} Name of method of methods to create"," */"," addMethod: function ( dest, names ) {",""," names = YArray( names );",""," YArray_each( names, function ( name ) {"," dest[ name ] = function () {"," var args = YArray( arguments, 0, true ),"," ret = [];",""," YArray_each( this._items, function ( item, i ) {"," item = this._item( i );",""," var result = item[ name ].apply( item, args );",""," if ( result !== undefined && result !== item ) {"," ret[i] = result;"," }"," }, this);",""," return ret.length ? ret : this;"," };"," } );"," }","} );","","Y.ArrayList = ArrayList;","","","}, '3.7.3', {\"requires\": [\"yui-base\"]});"]; +_yuitest_coverage["build/arraylist/arraylist.js"].code=["YUI.add('arraylist', function (Y, NAME) {","","/**"," * Collection utilities beyond what is provided in the YUI core"," * @module collection"," * @submodule arraylist"," */","","var YArray = Y.Array,"," YArray_each = YArray.each,"," ArrayListProto;","","/**"," * Generic ArrayList class for managing lists of items and iterating operations"," * over them. The targeted use for this class is for augmentation onto a"," * class that is responsible for managing multiple instances of another class"," * (e.g. NodeList for Nodes). The recommended use is to augment your class with"," * ArrayList, then use ArrayList.addMethod to mirror the API of the constituent"," * items on the list's API."," *"," * The default implementation creates immutable lists, but mutability can be"," * provided via the arraylist-add submodule or by implementing mutation methods"," * directly on the augmented class's prototype."," *"," * @class ArrayList"," * @constructor"," * @param items { Array } array of items this list will be responsible for"," */","function ArrayList( items ) {"," if ( items !== undefined ) {"," this._items = Y.Lang.isArray( items ) ? items : YArray( items );"," } else {"," // ||= to support lazy initialization from augment"," this._items = this._items || [];"," }","}","","ArrayListProto = {"," /**"," * Get an item by index from the list. Override this method if managing a"," * list of objects that have a different public representation (e.g. Node"," * instances vs DOM nodes). The iteration methods that accept a user"," * function will use this method for access list items for operation."," *"," * @method item"," * @param i { Integer } index to fetch"," * @return { mixed } the item at the requested index"," */"," item: function ( i ) {"," return this._items[i];"," },",""," /**"," *

          Execute a function on each item of the list, optionally providing a"," * custom execution context. Default context is the item.

          "," *"," *

          The callback signature is callback( item, index ).

          "," *"," * @method each"," * @param fn { Function } the function to execute"," * @param context { mixed } optional override 'this' in the function"," * @return { ArrayList } this instance"," * @chainable"," */"," each: function ( fn, context ) {"," YArray_each( this._items, function ( item, i ) {"," item = this.item( i );",""," fn.call( context || item, item, i, this );"," }, this);",""," return this;"," },",""," /**"," *

          Execute a function on each item of the list, optionally providing a"," * custom execution context. Default context is the item.

          "," *"," *

          The callback signature is callback( item, index ).

          "," *"," *

          Unlike each, if the callback returns true, the"," * iteratation will stop.

          "," *"," * @method some"," * @param fn { Function } the function to execute"," * @param context { mixed } optional override 'this' in the function"," * @return { Boolean } True if the function returned true on an item"," */"," some: function ( fn, context ) {"," return YArray.some( this._items, function ( item, i ) {"," item = this.item( i );",""," return fn.call( context || item, item, i, this );"," }, this);"," },",""," /**"," * Finds the first index of the needle in the managed array of items."," *"," * @method indexOf"," * @param needle { mixed } The item to search for"," * @return { Integer } Array index if found. Otherwise -1"," */"," indexOf: function ( needle ) {"," return YArray.indexOf( this._items, needle );"," },",""," /**"," * How many items are in this list?"," *"," * @method size"," * @return { Integer } Number of items in the list"," */"," size: function () {"," return this._items.length;"," },",""," /**"," * Is this instance managing any items?"," *"," * @method isEmpty"," * @return { Boolean } true if 1 or more items are being managed"," */"," isEmpty: function () {"," return !this.size();"," },",""," /**"," * Provides an array-like representation for JSON.stringify."," *"," * @method toJSON"," * @return { Array } an array representation of the ArrayList"," */"," toJSON: function () {"," return this._items;"," }","};","// Default implementation does not distinguish between public and private","// item getter","/**"," * Protected method for optimizations that may be appropriate for API"," * mirroring. Similar in functionality to item, but is used by"," * methods added with ArrayList.addMethod()."," *"," * @method _item"," * @protected"," * @param i { Integer } Index of item to fetch"," * @return { mixed } The item appropriate for pass through API methods"," */","ArrayListProto._item = ArrayListProto.item;","","// Mixed onto existing proto to preserve constructor NOT being an own property.","// This has bitten me when composing classes by enumerating, copying prototypes.","Y.mix(ArrayList.prototype, ArrayListProto);","","Y.mix( ArrayList, {",""," /**"," *

          Adds a pass through method to dest (typically the prototype of a list"," * class) that calls the named method on each item in the list with"," * whatever parameters are passed in. Allows for API indirection via list"," * instances.

          "," *"," *

          Accepts a single string name or an array of string names.

          "," *"," *
          list.each( function ( item ) {","     *     item.methodName( 1, 2, 3 );","     * } );","     * // becomes","     * list.methodName( 1, 2, 3 );
          "," *"," *

          Additionally, the pass through methods use the item retrieved by the"," * _item method in case there is any special behavior that is"," * appropriate for API mirroring.

          "," *"," *

          If the iterated method returns a value, the return value from the"," * added method will be an array of values with each value being at the"," * corresponding index for that item. If the iterated method does not"," * return a value, the added method will be chainable."," *"," * @method addMethod"," * @static"," * @param dest {Object} Object or prototype to receive the iterator method"," * @param name {String|String[]} Name of method of methods to create"," */"," addMethod: function ( dest, names ) {",""," names = YArray( names );",""," YArray_each( names, function ( name ) {"," dest[ name ] = function () {"," var args = YArray( arguments, 0, true ),"," ret = [];",""," YArray_each( this._items, function ( item, i ) {"," item = this._item( i );",""," var result = item[ name ].apply( item, args );",""," if ( result !== undefined && result !== item ) {"," ret[i] = result;"," }"," }, this);",""," return ret.length ? ret : this;"," };"," } );"," }","} );","","Y.ArrayList = ArrayList;","","","}, '3.8.0', {\"requires\": [\"yui-base\"]});"]; _yuitest_coverage["build/arraylist/arraylist.js"].lines = {"1":0,"9":0,"29":0,"30":0,"31":0,"34":0,"38":0,"50":0,"66":0,"67":0,"69":0,"72":0,"90":0,"91":0,"93":0,"105":0,"115":0,"125":0,"135":0,"150":0,"154":0,"156":0,"188":0,"190":0,"191":0,"192":0,"195":0,"196":0,"198":0,"200":0,"201":0,"205":0,"211":0}; _yuitest_coverage["build/arraylist/arraylist.js"].functions = {"ArrayList:29":0,"item:49":0,"(anonymous 2):66":0,"each:65":0,"(anonymous 3):90":0,"some:89":0,"indexOf:104":0,"size:114":0,"isEmpty:124":0,"toJSON:134":0,"(anonymous 5):195":0,"]:191":0,"(anonymous 4):190":0,"addMethod:186":0,"(anonymous 1):1":0}; _yuitest_coverage["build/arraylist/arraylist.js"].coveredLines = 33; @@ -298,4 +298,4 @@ _yuitest_coverline("build/arraylist/arraylist.js", 211); Y.ArrayList = ArrayList; -}, '3.7.3', {"requires": ["yui-base"]}); +}, '3.8.0', {"requires": ["yui-base"]}); diff --git a/lib/yuilib/3.7.3/build/arraylist/arraylist-debug.js b/lib/yuilib/3.8.0/build/arraylist/arraylist-debug.js similarity index 99% rename from lib/yuilib/3.7.3/build/arraylist/arraylist-debug.js rename to lib/yuilib/3.8.0/build/arraylist/arraylist-debug.js index 1d919d7d1a2..9217fe369be 100644 --- a/lib/yuilib/3.7.3/build/arraylist/arraylist-debug.js +++ b/lib/yuilib/3.8.0/build/arraylist/arraylist-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -217,4 +217,4 @@ Y.mix( ArrayList, { Y.ArrayList = ArrayList; -}, '3.7.3', {"requires": ["yui-base"]}); +}, '3.8.0', {"requires": ["yui-base"]}); diff --git a/lib/yuilib/3.7.3/build/arraylist/arraylist-min.js b/lib/yuilib/3.8.0/build/arraylist/arraylist-min.js similarity index 91% rename from lib/yuilib/3.7.3/build/arraylist/arraylist-min.js rename to lib/yuilib/3.8.0/build/arraylist/arraylist-min.js index b395b9cb33f..8583b19f00c 100644 --- a/lib/yuilib/3.7.3/build/arraylist/arraylist-min.js +++ b/lib/yuilib/3.8.0/build/arraylist/arraylist-min.js @@ -1,7 +1,7 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ -YUI.add("arraylist",function(e,t){function s(t){t!==undefined?this._items=e.Lang.isArray(t)?t:n(t):this._items=this._items||[]}var n=e.Array,r=n.each,i;i={item:function(e){return this._items[e]},each:function(e,t){return r(this._items,function(n,r){n=this.item(r),e.call(t||n,n,r,this)},this),this},some:function(e,t){return n.some(this._items,function(n,r){return n=this.item(r),e.call(t||n,n,r,this)},this)},indexOf:function(e){return n.indexOf(this._items,e)},size:function(){return this._items.length},isEmpty:function(){return!this.size()},toJSON:function(){return this._items}},i._item=i.item,e.mix(s.prototype,i),e.mix(s,{addMethod:function(e,t){t=n(t),r(t,function(t){e[t]=function(){var e=n(arguments,0,!0),i=[];return r(this._items,function(n,r){n=this._item(r);var s=n[t].apply(n,e);s!==undefined&&s!==n&&(i[r]=s)},this),i.length?i:this}})}}),e.ArrayList=s},"3.7.3",{requires:["yui-base"]}); +YUI.add("arraylist",function(e,t){function s(t){t!==undefined?this._items=e.Lang.isArray(t)?t:n(t):this._items=this._items||[]}var n=e.Array,r=n.each,i;i={item:function(e){return this._items[e]},each:function(e,t){return r(this._items,function(n,r){n=this.item(r),e.call(t||n,n,r,this)},this),this},some:function(e,t){return n.some(this._items,function(n,r){return n=this.item(r),e.call(t||n,n,r,this)},this)},indexOf:function(e){return n.indexOf(this._items,e)},size:function(){return this._items.length},isEmpty:function(){return!this.size()},toJSON:function(){return this._items}},i._item=i.item,e.mix(s.prototype,i),e.mix(s,{addMethod:function(e,t){t=n(t),r(t,function(t){e[t]=function(){var e=n(arguments,0,!0),i=[];return r(this._items,function(n,r){n=this._item(r);var s=n[t].apply(n,e);s!==undefined&&s!==n&&(i[r]=s)},this),i.length?i:this}})}}),e.ArrayList=s},"3.8.0",{requires:["yui-base"]}); diff --git a/lib/yuilib/3.7.3/build/arraylist/arraylist.js b/lib/yuilib/3.8.0/build/arraylist/arraylist.js similarity index 99% rename from lib/yuilib/3.7.3/build/arraylist/arraylist.js rename to lib/yuilib/3.8.0/build/arraylist/arraylist.js index 1d919d7d1a2..9217fe369be 100644 --- a/lib/yuilib/3.7.3/build/arraylist/arraylist.js +++ b/lib/yuilib/3.8.0/build/arraylist/arraylist.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -217,4 +217,4 @@ Y.mix( ArrayList, { Y.ArrayList = ArrayList; -}, '3.7.3', {"requires": ["yui-base"]}); +}, '3.8.0', {"requires": ["yui-base"]}); diff --git a/lib/yuilib/3.7.3/build/arraysort/arraysort-coverage.js b/lib/yuilib/3.8.0/build/arraysort/arraysort-coverage.js similarity index 97% rename from lib/yuilib/3.7.3/build/arraysort/arraysort-coverage.js rename to lib/yuilib/3.8.0/build/arraysort/arraysort-coverage.js index be933b3354e..26ffc120003 100644 --- a/lib/yuilib/3.7.3/build/arraysort/arraysort-coverage.js +++ b/lib/yuilib/3.8.0/build/arraysort/arraysort-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,7 +32,7 @@ _yuitest_coverage["build/arraysort/arraysort.js"] = { path: "build/arraysort/arraysort.js", code: [] }; -_yuitest_coverage["build/arraysort/arraysort.js"].code=["YUI.add('arraysort', function (Y, NAME) {","","/**","Provides a case-insenstive comparator which can be used for array sorting.","","@module arraysort","*/","","var LANG = Y.Lang,"," ISVALUE = LANG.isValue,"," ISSTRING = LANG.isString;","","/**","Provides a case-insenstive comparator which can be used for array sorting.","","@class ArraySort","*/","","Y.ArraySort = {",""," /**"," Comparator function for simple case-insensitive sorting of an array of"," strings.",""," @method compare"," @param a {Object} First sort argument."," @param b {Object} Second sort argument."," @param desc {Boolean} `true` if sort direction is descending, `false` if"," sort direction is ascending."," @return {Boolean} -1 when a < b. 0 when a == b. 1 when a > b."," */"," compare: function(a, b, desc) {"," if(!ISVALUE(a)) {"," if(!ISVALUE(b)) {"," return 0;"," }"," else {"," return 1;"," }"," }"," else if(!ISVALUE(b)) {"," return -1;"," }",""," if(ISSTRING(a)) {"," a = a.toLowerCase();"," }"," if(ISSTRING(b)) {"," b = b.toLowerCase();"," }"," if(a < b) {"," return (desc) ? 1 : -1;"," }"," else if (a > b) {"," return (desc) ? -1 : 1;"," }"," else {"," return 0;"," }"," }","","};","","","}, '3.7.3', {\"requires\": [\"yui-base\"]});"]; +_yuitest_coverage["build/arraysort/arraysort.js"].code=["YUI.add('arraysort', function (Y, NAME) {","","/**","Provides a case-insenstive comparator which can be used for array sorting.","","@module arraysort","*/","","var LANG = Y.Lang,"," ISVALUE = LANG.isValue,"," ISSTRING = LANG.isString;","","/**","Provides a case-insenstive comparator which can be used for array sorting.","","@class ArraySort","*/","","Y.ArraySort = {",""," /**"," Comparator function for simple case-insensitive sorting of an array of"," strings.",""," @method compare"," @param a {Object} First sort argument."," @param b {Object} Second sort argument."," @param desc {Boolean} `true` if sort direction is descending, `false` if"," sort direction is ascending."," @return {Boolean} -1 when a < b. 0 when a == b. 1 when a > b."," */"," compare: function(a, b, desc) {"," if(!ISVALUE(a)) {"," if(!ISVALUE(b)) {"," return 0;"," }"," else {"," return 1;"," }"," }"," else if(!ISVALUE(b)) {"," return -1;"," }",""," if(ISSTRING(a)) {"," a = a.toLowerCase();"," }"," if(ISSTRING(b)) {"," b = b.toLowerCase();"," }"," if(a < b) {"," return (desc) ? 1 : -1;"," }"," else if (a > b) {"," return (desc) ? -1 : 1;"," }"," else {"," return 0;"," }"," }","","};","","","}, '3.8.0', {\"requires\": [\"yui-base\"]});"]; _yuitest_coverage["build/arraysort/arraysort.js"].lines = {"1":0,"9":0,"19":0,"33":0,"34":0,"35":0,"38":0,"41":0,"42":0,"45":0,"46":0,"48":0,"49":0,"51":0,"52":0,"54":0,"55":0,"58":0}; _yuitest_coverage["build/arraysort/arraysort.js"].functions = {"compare:32":0,"(anonymous 1):1":0}; _yuitest_coverage["build/arraysort/arraysort.js"].coveredLines = 18; @@ -121,4 +121,4 @@ return 0; }; -}, '3.7.3', {"requires": ["yui-base"]}); +}, '3.8.0', {"requires": ["yui-base"]}); diff --git a/lib/yuilib/3.7.3/build/arraysort/arraysort-debug.js b/lib/yuilib/3.8.0/build/arraysort/arraysort-debug.js similarity index 95% rename from lib/yuilib/3.7.3/build/arraysort/arraysort-debug.js rename to lib/yuilib/3.8.0/build/arraysort/arraysort-debug.js index aea60f810e9..1ee82c3aea2 100644 --- a/lib/yuilib/3.7.3/build/arraysort/arraysort-debug.js +++ b/lib/yuilib/3.8.0/build/arraysort/arraysort-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -68,4 +68,4 @@ Y.ArraySort = { }; -}, '3.7.3', {"requires": ["yui-base"]}); +}, '3.8.0', {"requires": ["yui-base"]}); diff --git a/lib/yuilib/3.7.3/build/arraysort/arraysort-min.js b/lib/yuilib/3.8.0/build/arraysort/arraysort-min.js similarity index 78% rename from lib/yuilib/3.7.3/build/arraysort/arraysort-min.js rename to lib/yuilib/3.8.0/build/arraysort/arraysort-min.js index a3c9c7dfa87..6118a06229f 100644 --- a/lib/yuilib/3.7.3/build/arraysort/arraysort-min.js +++ b/lib/yuilib/3.8.0/build/arraysort/arraysort-min.js @@ -1,7 +1,7 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ -YUI.add("arraysort",function(e,t){var n=e.Lang,r=n.isValue,i=n.isString;e.ArraySort={compare:function(e,t,n){return r(e)?r(t)?(i(e)&&(e=e.toLowerCase()),i(t)&&(t=t.toLowerCase()),et?n?-1:1:0):-1:r(t)?1:0}}},"3.7.3",{requires:["yui-base"]}); +YUI.add("arraysort",function(e,t){var n=e.Lang,r=n.isValue,i=n.isString;e.ArraySort={compare:function(e,t,n){return r(e)?r(t)?(i(e)&&(e=e.toLowerCase()),i(t)&&(t=t.toLowerCase()),et?n?-1:1:0):-1:r(t)?1:0}}},"3.8.0",{requires:["yui-base"]}); diff --git a/lib/yuilib/3.7.3/build/arraysort/arraysort.js b/lib/yuilib/3.8.0/build/arraysort/arraysort.js similarity index 95% rename from lib/yuilib/3.7.3/build/arraysort/arraysort.js rename to lib/yuilib/3.8.0/build/arraysort/arraysort.js index aea60f810e9..1ee82c3aea2 100644 --- a/lib/yuilib/3.7.3/build/arraysort/arraysort.js +++ b/lib/yuilib/3.8.0/build/arraysort/arraysort.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -68,4 +68,4 @@ Y.ArraySort = { }; -}, '3.7.3', {"requires": ["yui-base"]}); +}, '3.8.0', {"requires": ["yui-base"]}); diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/arrows.png b/lib/yuilib/3.8.0/build/assets/skins/sam/arrows.png similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/arrows.png rename to lib/yuilib/3.8.0/build/assets/skins/sam/arrows.png diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/autocomplete-list.css b/lib/yuilib/3.8.0/build/assets/skins/sam/autocomplete-list.css similarity index 97% rename from lib/yuilib/3.7.3/build/assets/skins/sam/autocomplete-list.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/autocomplete-list.css index 68b3509110b..4f9d705bc01 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/autocomplete-list.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/autocomplete-list.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/bg.png b/lib/yuilib/3.8.0/build/assets/skins/sam/bg.png similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/bg.png rename to lib/yuilib/3.8.0/build/assets/skins/sam/bg.png diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/calendar-base.css b/lib/yuilib/3.8.0/build/assets/skins/sam/calendar-base.css similarity index 98% rename from lib/yuilib/3.7.3/build/assets/skins/sam/calendar-base.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/calendar-base.css index e24474df611..46ab623b298 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/calendar-base.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/calendar-base.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/calendar.css b/lib/yuilib/3.8.0/build/assets/skins/sam/calendar.css similarity index 97% rename from lib/yuilib/3.7.3/build/assets/skins/sam/calendar.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/calendar.css index b857585689a..142f587028d 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/calendar.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/calendar.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/calendarnavigator/assets/skins/sam/calendarnavigator.css b/lib/yuilib/3.8.0/build/assets/skins/sam/calendarnavigator.css similarity index 99% rename from lib/yuilib/3.7.3/build/calendarnavigator/assets/skins/sam/calendarnavigator.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/calendarnavigator.css index 0c1039113e2..df96f1393da 100644 --- a/lib/yuilib/3.7.3/build/calendarnavigator/assets/skins/sam/calendarnavigator.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/calendarnavigator.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/console-filters.css b/lib/yuilib/3.8.0/build/assets/skins/sam/console-filters.css similarity index 97% rename from lib/yuilib/3.7.3/build/assets/skins/sam/console-filters.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/console-filters.css index 69b6a580d2e..8a6fa64d3ec 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/console-filters.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/console-filters.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/console/assets/skins/sam/console.css b/lib/yuilib/3.8.0/build/assets/skins/sam/console.css similarity index 99% rename from lib/yuilib/3.7.3/build/console/assets/skins/sam/console.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/console.css index 5374c653ed5..5f51ffe9272 100644 --- a/lib/yuilib/3.7.3/build/console/assets/skins/sam/console.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/console.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/datatable-base-deprecated.css b/lib/yuilib/3.8.0/build/assets/skins/sam/datatable-base-deprecated.css similarity index 99% rename from lib/yuilib/3.7.3/build/assets/skins/sam/datatable-base-deprecated.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/datatable-base-deprecated.css index 5be172bc9f4..a819a26b10a 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/datatable-base-deprecated.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/datatable-base-deprecated.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/datatable-base.css b/lib/yuilib/3.8.0/build/assets/skins/sam/datatable-base.css similarity index 98% rename from lib/yuilib/3.7.3/build/assets/skins/sam/datatable-base.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/datatable-base.css index 4947e366728..c44e99d36aa 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/datatable-base.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/datatable-base.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/datatable-message/assets/skins/sam/datatable-message.css b/lib/yuilib/3.8.0/build/assets/skins/sam/datatable-message.css similarity index 94% rename from lib/yuilib/3.7.3/build/datatable-message/assets/skins/sam/datatable-message.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/datatable-message.css index bc6ffee4979..9c797e9ebda 100644 --- a/lib/yuilib/3.7.3/build/datatable-message/assets/skins/sam/datatable-message.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/datatable-message.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/datatable-scroll.css b/lib/yuilib/3.8.0/build/assets/skins/sam/datatable-scroll.css similarity index 98% rename from lib/yuilib/3.7.3/build/assets/skins/sam/datatable-scroll.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/datatable-scroll.css index 13ba4e560e2..76faef95fe8 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/datatable-scroll.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/datatable-scroll.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/datatable-sort.css b/lib/yuilib/3.8.0/build/assets/skins/sam/datatable-sort.css similarity index 98% rename from lib/yuilib/3.7.3/build/assets/skins/sam/datatable-sort.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/datatable-sort.css index c04017372a2..fce6daf1b65 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/datatable-sort.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/datatable-sort.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/dial.css b/lib/yuilib/3.8.0/build/assets/skins/sam/dial.css similarity index 99% rename from lib/yuilib/3.7.3/build/assets/skins/sam/dial.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/dial.css index de135759e4a..e7058647e44 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/dial.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/dial.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/dt-arrow-dn.png b/lib/yuilib/3.8.0/build/assets/skins/sam/dt-arrow-dn.png similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/dt-arrow-dn.png rename to lib/yuilib/3.8.0/build/assets/skins/sam/dt-arrow-dn.png diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/dt-arrow-up.png b/lib/yuilib/3.8.0/build/assets/skins/sam/dt-arrow-up.png similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/dt-arrow-up.png rename to lib/yuilib/3.8.0/build/assets/skins/sam/dt-arrow-up.png diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/horizontal-menu-submenu-indicator.png b/lib/yuilib/3.8.0/build/assets/skins/sam/horizontal-menu-submenu-indicator.png similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/horizontal-menu-submenu-indicator.png rename to lib/yuilib/3.8.0/build/assets/skins/sam/horizontal-menu-submenu-indicator.png diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/horizontal-menu-submenu-toggle.png b/lib/yuilib/3.8.0/build/assets/skins/sam/horizontal-menu-submenu-toggle.png similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/horizontal-menu-submenu-toggle.png rename to lib/yuilib/3.8.0/build/assets/skins/sam/horizontal-menu-submenu-toggle.png diff --git a/lib/yuilib/3.7.3/build/node-flick/assets/skins/sam/node-flick.css b/lib/yuilib/3.8.0/build/assets/skins/sam/node-flick.css similarity index 91% rename from lib/yuilib/3.7.3/build/node-flick/assets/skins/sam/node-flick.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/node-flick.css index 30020432b03..7ced041d746 100644 --- a/lib/yuilib/3.7.3/build/node-flick/assets/skins/sam/node-flick.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/node-flick.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/node-menunav.css b/lib/yuilib/3.8.0/build/assets/skins/sam/node-menunav.css similarity index 99% rename from lib/yuilib/3.7.3/build/assets/skins/sam/node-menunav.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/node-menunav.css index 2ce64e5c346..0a4cd3e0c44 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/node-menunav.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/node-menunav.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/overlay/assets/skins/sam/overlay.css b/lib/yuilib/3.8.0/build/assets/skins/sam/overlay.css similarity index 93% rename from lib/yuilib/3.7.3/build/overlay/assets/skins/sam/overlay.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/overlay.css index 925769f7a58..517b20447cb 100644 --- a/lib/yuilib/3.7.3/build/overlay/assets/skins/sam/overlay.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/overlay.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/panel.css b/lib/yuilib/3.8.0/build/assets/skins/sam/panel.css similarity index 98% rename from lib/yuilib/3.7.3/build/assets/skins/sam/panel.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/panel.css index 270c58294b8..09230abeed9 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/panel.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/panel.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/rail-x-lines.png b/lib/yuilib/3.8.0/build/assets/skins/sam/rail-x-lines.png similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/rail-x-lines.png rename to lib/yuilib/3.8.0/build/assets/skins/sam/rail-x-lines.png diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/rail-x.png b/lib/yuilib/3.8.0/build/assets/skins/sam/rail-x.png similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/rail-x.png rename to lib/yuilib/3.8.0/build/assets/skins/sam/rail-x.png diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/rail-y-lines.png b/lib/yuilib/3.8.0/build/assets/skins/sam/rail-y-lines.png similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/rail-y-lines.png rename to lib/yuilib/3.8.0/build/assets/skins/sam/rail-y-lines.png diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/rail-y.png b/lib/yuilib/3.8.0/build/assets/skins/sam/rail-y.png similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/rail-y.png rename to lib/yuilib/3.8.0/build/assets/skins/sam/rail-y.png diff --git a/lib/yuilib/3.8.0/build/assets/skins/sam/resize-base.css b/lib/yuilib/3.8.0/build/assets/skins/sam/resize-base.css new file mode 100644 index 00000000000..78287cfeb5b --- /dev/null +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/resize-base.css @@ -0,0 +1,7 @@ +/* +YUI 3.8.0 (build 5744) +Copyright 2012 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ +.yui3-resize,.yui3-resize-wrapper{z-index:0;zoom:1}.yui3-resize-handle{position:absolute;display:block;z-index:100;zoom:1}.yui3-resize-proxy{position:absolute;border:1px dashed #000;position:absolute;z-index:10000}.yui3-resize-hidden-handles .yui3-resize-handle{opacity:0;filter:alpha(opacity=0)}.yui3-resize-handle-t,.yui3-resize-handle-b{width:100%;left:0;height:6px}.yui3-resize-handle-l,.yui3-resize-handle-r{height:100%;top:0;width:6px}.yui3-resize-handle-t{cursor:n-resize;top:0}.yui3-resize-handle-b{cursor:s-resize;bottom:0}.yui3-resize-handle-l{cursor:w-resize;left:0}.yui3-resize-handle-r{cursor:e-resize;right:0}.yui3-resize-handle-inner{position:absolute;zoom:1}@media only screen and (min-device-width :320px) and (max-device-width :480px){.yui3-resize-handle-inner:after{content:"";width:40px;height:40px;position:absolute}.yui3-resize-handle-inner-r,.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-tr,.yui3-resize-handle-inner-br,.yui3-resize-handle-inner-tl,.yui3-resize-handle-inner-bl{overflow:visible!important}.yui3-resize-handle-inner-r:after{top:-12px;right:0}.yui3-resize-handle-inner-l:after{top:-12px;left:0}.yui3-resize-handle-inner-t:after{top:0;left:-12px}.yui3-resize-handle-inner-b:after{bottom:0;left:-12px}.yui3-resize-handle-inner-tr:after{top:0;right:0}.yui3-resize-handle-inner-br:after{bottom:0;right:0}.yui3-resize-handle-inner-tl:after{top:0;left:0}.yui3-resize-handle-inner-bl:after{bottom:0;left:0}}@media only screen and (min-device-width :768px) and (max-device-width :1024px){.yui3-resize-handle-inner:after{content:"";width:30px;height:30px;position:absolute}.yui3-resize-handle-inner-r,.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-tr,.yui3-resize-handle-inner-br,.yui3-resize-handle-inner-tl,.yui3-resize-handle-inner-bl{overflow:visible!important}.yui3-resize-handle-inner-r:after{top:-6px;right:0}.yui3-resize-handle-inner-l:after{top:-6px;left:0}.yui3-resize-handle-inner-t:after{top:0;left:-6px}.yui3-resize-handle-inner-b:after{bottom:0;left:-6px}.yui3-resize-handle-inner-tr:after{top:0;right:0}.yui3-resize-handle-inner-br:after{bottom:0;right:0}.yui3-resize-handle-inner-tl:after{top:0;left:0}.yui3-resize-handle-inner-bl:after{bottom:0;left:0}}.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b{margin-left:-8px;left:50%}.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-r{margin-top:-8px;top:50%}.yui3-resize-handle-inner-t{top:-4px}.yui3-resize-handle-inner-b{bottom:-4px}.yui3-resize-handle-inner-l{left:-4px}.yui3-resize-handle-inner-r{right:-4px}.yui3-resize-handle-tr,.yui3-resize-handle-br,.yui3-resize-handle-tl,.yui3-resize-handle-bl{height:15px;width:15px;z-index:200}.yui3-resize-handle-tr{cursor:ne-resize;top:0;right:0}.yui3-resize-handle-tl{cursor:nw-resize;top:0;left:0}.yui3-resize-handle-br{cursor:se-resize;bottom:0;right:0}.yui3-resize-handle-bl{cursor:sw-resize;bottom:0;left:0}.yui3-resize-handle-inner-r,.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-tr,.yui3-resize-handle-inner-br,.yui3-resize-handle-inner-tl,.yui3-resize-handle-inner-bl{background-repeat:no-repeat;background:url(arrows.png) no-repeat 0 0;display:block;height:15px;overflow:hidden;text-indent:-99999em;width:15px}.yui3-resize-handle-inner-br{background-position:-30px 0;bottom:-2px;right:-2px}.yui3-resize-handle-inner-tr{background-position:-58px 0;bottom:0;right:-2px}.yui3-resize-handle-inner-bl{background-position:-75px 0;bottom:-2px;right:-2px}.yui3-resize-handle-inner-tl{background-position:-47px 0;bottom:0;right:-2px}.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-t{background-position:-15px 0}#yui3-css-stamp.skin-sam-resize-base{display:none} diff --git a/lib/yuilib/3.7.3/build/scrollview-base/assets/skins/sam/scrollview-base.css b/lib/yuilib/3.8.0/build/assets/skins/sam/scrollview-base.css similarity index 94% rename from lib/yuilib/3.7.3/build/scrollview-base/assets/skins/sam/scrollview-base.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/scrollview-base.css index 15ea4d0aa0d..5dd80107a8f 100644 --- a/lib/yuilib/3.7.3/build/scrollview-base/assets/skins/sam/scrollview-base.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/scrollview-base.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/scrollview-list.css b/lib/yuilib/3.8.0/build/assets/skins/sam/scrollview-list.css similarity index 97% rename from lib/yuilib/3.7.3/build/assets/skins/sam/scrollview-list.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/scrollview-list.css index aad28c9af6e..85a7e55b336 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/scrollview-list.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/scrollview-list.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/scrollview-scrollbars.css b/lib/yuilib/3.8.0/build/assets/skins/sam/scrollview-scrollbars.css similarity index 99% rename from lib/yuilib/3.7.3/build/assets/skins/sam/scrollview-scrollbars.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/scrollview-scrollbars.css index 8a833258652..8c1bf2520c2 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/scrollview-scrollbars.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/scrollview-scrollbars.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/skin.css b/lib/yuilib/3.8.0/build/assets/skins/sam/skin.css similarity index 93% rename from lib/yuilib/3.7.3/build/assets/skins/sam/skin.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/skin.css index 912960c8b6b..9c643ff7d05 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/skin.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/skin.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -21,7 +21,7 @@ v\:oval,v\:shadow,v\:fill{behavior:url(#default#VML);display:inline-block;zoom:1 .yui3-menu .yui3-menu{position:absolute;z-index:1}.yui3-menu .yui3-shim{position:absolute;top:0;left:0;z-index:-1;opacity:0;filter:alpha(opacity=0);border:0;margin:0;padding:0;height:100%;width:100%}.yui3-menu-hidden{top:-10000px;left:-10000px;visibility:hidden}.yui3-menu li{list-style-type:none}.yui3-menu ul,.yui3-menu li{margin:0;padding:0}.yui3-menu-label,.yui3-menuitem-content{text-align:left;white-space:nowrap;display:block}.yui3-menu-horizontal li{float:left;width:auto}.yui3-menu-horizontal li li{float:none}.yui3-menu-horizontal ul{*zoom:1}.yui3-menu-horizontal ul ul{*zoom:normal}.yui3-menu-horizontal>.yui3-menu-content>ul:after{content:"";display:block;clear:both;line-height:0;font-size:0;visibility:hidden}.yui3-menu-content{*zoom:1}.yui3-menu-hidden .yui3-menu-content{*zoom:normal}.yui3-menuitem-content,.yui3-menu-label{_zoom:1}.yui3-menu-hidden .yui3-menuitem-content,.yui3-menu-hidden .yui3-menu-label{_zoom:normal}.yui3-skin-sam .yui3-menu-content,.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menu-content{font-size:93%;line-height:1.5;*line-height:1.45;border:solid 1px #808080;background:#fff;padding:3px 0}.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menu-content{font-size:100%}.yui3-skin-sam .yui3-menu-horizontal .yui3-menu-content{line-height:2;*line-height:1.9;background:url(sprite.png) repeat-x 0 0;padding:0}.yui3-skin-sam .yui3-menu ul,.yui3-skin-sam .yui3-menu ul ul{margin-top:3px;padding-top:3px;border-top:solid 1px #ccc}.yui3-skin-sam .yui3-menu ul.first-of-type{border:0;margin:0;padding:0}.yui3-skin-sam .yui3-menu-horizontal ul{padding:0;margin:0;border:0}.yui3-skin-sam .yui3-menu li,.yui3-skin-sam .yui3-menu .yui3-menu li{_border-bottom:solid 1px #fff}.yui3-skin-sam .yui3-menu-horizontal li{_border-bottom:0}.yui3-skin-sam .yui3-menubuttonnav li{border-right:solid 1px #ccc}.yui3-skin-sam .yui3-splitbuttonnav li{border-right:solid 1px #808080}.yui3-skin-sam .yui3-menubuttonnav li li,.yui3-skin-sam .yui3-splitbuttonnav li li{border-right:0}.yui3-skin-sam .yui3-menu-label,.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menu-label,.yui3-skin-sam .yui3-menuitem-content,.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menuitem-content{padding:0 1em;color:#000;text-decoration:none;cursor:default;float:none;border:0;margin:0}.yui3-skin-sam .yui3-menu-horizontal .yui3-menu-label,.yui3-skin-sam .yui3-menu-horizontal .yui3-menuitem-content{padding:0 10px;border-style:solid;border-color:#808080;border-width:1px 0;margin:-1px 0;float:left;width:auto}.yui3-skin-sam .yui3-menu-label,.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menu-label{background:url(vertical-menu-submenu-indicator.png) right center no-repeat}.yui3-skin-sam .yui3-menu-horizontal .yui3-menu-label{background:url(sprite.png) repeat-x 0 0}.yui3-skin-sam .yui3-menubuttonnav .yui3-menu-label,.yui3-skin-sam .yui3-splitbuttonnav .yui3-menu-label{background-image:none}.yui3-skin-sam .yui3-menubuttonnav .yui3-menu-label{padding-right:0}.yui3-skin-sam .yui3-menubuttonnav .yui3-menu-label em{font-style:normal;padding-right:20px;display:block;background:url(horizontal-menu-submenu-indicator.png) right center no-repeat}.yui3-skin-sam .yui3-splitbuttonnav .yui3-menu-label{padding:0}.yui3-skin-sam .yui3-splitbuttonnav .yui3-menu-label a{float:left;width:auto;color:#000;text-decoration:none;cursor:default;padding:0 5px 0 10px}.yui3-skin-sam .yui3-splitbuttonnav .yui3-menu-label .yui3-menu-toggle{padding:0;border-left:solid 1px #ccc;width:15px;overflow:hidden;text-indent:-1000px;background:url(horizontal-menu-submenu-indicator.png) 3px center no-repeat}.yui3-skin-sam .yui3-menu-label-active,.yui3-skin-sam .yui3-menu-label-menuvisible,.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menu-label-active,.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menu-label-menuvisible{background-color:#b3d4ff}.yui3-skin-sam .yui3-menuitem-active .yui3-menuitem-content,.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menuitem-active .yui3-menuitem-content{background-image:none;background-color:#b3d4ff;border-left-width:0;margin-left:0}.yui3-skin-sam .yui3-menu-horizontal .yui3-menu-label-active,.yui3-skin-sam .yui3-menu-horizontal .yui3-menuitem-active .yui3-menuitem-content,.yui3-skin-sam .yui3-menu-horizontal .yui3-menu-label-menuvisible{border-color:#7d98b8;background:url(sprite.png) repeat-x 0 -1700px}.yui3-skin-sam .yui3-menubuttonnav .yui3-menu-label-active,.yui3-skin-sam .yui3-menubuttonnav .yui3-menuitem-active .yui3-menuitem-content,.yui3-skin-sam .yui3-menubuttonnav .yui3-menu-label-menuvisible,.yui3-skin-sam .yui3-splitbuttonnav .yui3-menu-label-active,.yui3-skin-sam .yui3-splitbuttonnav .yui3-menuitem-active .yui3-menuitem-content,.yui3-skin-sam .yui3-splitbuttonnav .yui3-menu-label-menuvisible{border-left-width:1px;margin-left:-1px}.yui3-skin-sam .yui3-splitbuttonnav .yui3-menu-label-menuvisible{border-color:#808080;background:transparent}.yui3-skin-sam .yui3-splitbuttonnav .yui3-menu-label-menuvisible .yui3-menu-toggle{border-color:#7d98b8;background:url(horizontal-menu-submenu-toggle.png) left center no-repeat}#yui3-css-stamp.skin-sam-node-menunav{display:none} .yui3-overlay{position:absolute}.yui3-overlay-hidden{visibility:hidden}.yui3-widget-tmp-forcesize .yui3-overlay-content{overflow:hidden!important}#yui3-css-stamp.skin-sam-overlay{display:none} .yui3-panel{position:absolute}.yui3-panel-hidden{visibility:hidden}.yui3-widget-tmp-forcesize .yui3-panel-content{overflow:hidden!important}.yui3-panel .yui3-widget-hd{position:relative}.yui3-panel .yui3-widget-hd .yui3-widget-buttons{position:absolute;top:0;right:0}.yui3-panel .yui3-widget-ft .yui3-widget-buttons{display:inline-block;*display:inline;zoom:1}.yui3-skin-sam .yui3-panel-content{-webkit-box-shadow:0 0 5px #333;-moz-box-shadow:0 0 5px #333;box-shadow:0 0 5px #333;border:1px solid black;background:white}.yui3-skin-sam .yui3-panel .yui3-widget-hd{padding:8px 28px 8px 8px;min-height:13px;_height:13px;color:white;background-color:#3961c5;background:-moz-linear-gradient(0% 100% 90deg,#2647a0 7%,#3d67ce 50%,#426fd9 100%);background:-webkit-gradient(linear,left bottom,left top,from(#2647a0),color-stop(0.07,#2647a0),color-stop(0.5,#3d67ce),to(#426fd9))}.yui3-skin-sam .yui3-panel .yui3-widget-hd .yui3-widget-buttons{padding:8px}.yui3-skin-sam .yui3-panel .yui3-widget-bd{padding:10px}.yui3-skin-sam .yui3-panel .yui3-widget-ft{background:#edf5ff;padding:8px;text-align:right}.yui3-skin-sam .yui3-panel .yui3-widget-ft .yui3-button{margin-left:8px}.yui3-skin-sam .yui3-panel .yui3-widget-hd .yui3-button-close{background:transparent;filter:none;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;width:13px;height:13px;padding:0;overflow:hidden;vertical-align:top;*font-size:0;*line-height:0;*letter-spacing:-1000px;*color:#86a5ec;*background:url(sprite_icons.png) no-repeat 1px 1px}.yui3-skin-sam .yui3-panel .yui3-widget-hd .yui3-button-close:before{content:url(sprite_icons.png);display:inline-block;text-align:center;font-size:0;line-height:0;width:13px;margin:1px 0 0 1px}.yui3-skin-sam .yui3-panel-hidden .yui3-widget-hd .yui3-button-close{display:none}#yui3-css-stamp.skin-sam-panel{display:none} -.yui3-resize,.yui3-resize-wrapper{z-index:0;zoom:1}.yui3-resize-handle{position:absolute;display:block;z-index:100;zoom:1}.yui3-resize-proxy{position:absolute;border:1px dashed #000;position:absolute;z-index:10000}.yui3-resize-hidden-handles .yui3-resize-handle{opacity:0;filter:alpha(opacity=0)}.yui3-resize-handle-t,.yui3-resize-handle-b{width:100%;left:0;height:6px}.yui3-resize-handle-l,.yui3-resize-handle-r{height:100%;top:0;width:6px}.yui3-resize-handle-t{cursor:n-resize;top:0}.yui3-resize-handle-b{cursor:s-resize;bottom:0}.yui3-resize-handle-l{cursor:w-resize;left:0}.yui3-resize-handle-r{cursor:e-resize;right:0}.yui3-resize-handle-inner{position:absolute;zoom:1}@media only screen and (min-device-width :320px) and (max-device-width:480px){.yui3-resize-handle-inner:after{content:"";width:40px;height:40px;position:absolute}.yui3-resize-handle-inner-r,.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-tr,.yui3-resize-handle-inner-br,.yui3-resize-handle-inner-tl,.yui3-resize-handle-inner-bl{overflow:visible!important}.yui3-resize-handle-inner-r:after{top:-12px;right:0}.yui3-resize-handle-inner-l:after{top:-12px;left:0}.yui3-resize-handle-inner-t:after{top:0;left:-12px}.yui3-resize-handle-inner-b:after{bottom:0;left:-12px}.yui3-resize-handle-inner-tr:after{top:0;right:0}.yui3-resize-handle-inner-br:after{bottom:0;right:0}.yui3-resize-handle-inner-tl:after{top:0;left:0}.yui3-resize-handle-inner-bl:after{bottom:0;left:0}}@media only screen and (min-device-width :768px) and (max-device-width:1024px){.yui3-resize-handle-inner:after{content:"";width:30px;height:30px;position:absolute}.yui3-resize-handle-inner-r,.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-tr,.yui3-resize-handle-inner-br,.yui3-resize-handle-inner-tl,.yui3-resize-handle-inner-bl{overflow:visible!important}.yui3-resize-handle-inner-r:after{top:-6px;right:0}.yui3-resize-handle-inner-l:after{top:-6px;left:0}.yui3-resize-handle-inner-t:after{top:0;left:-6px}.yui3-resize-handle-inner-b:after{bottom:0;left:-6px}.yui3-resize-handle-inner-tr:after{top:0;right:0}.yui3-resize-handle-inner-br:after{bottom:0;right:0}.yui3-resize-handle-inner-tl:after{top:0;left:0}.yui3-resize-handle-inner-bl:after{bottom:0;left:0}}.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b{margin-left:-8px;left:50%}.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-r{margin-top:-8px;top:50%}.yui3-resize-handle-inner-t{top:-4px}.yui3-resize-handle-inner-b{bottom:-4px}.yui3-resize-handle-inner-l{left:-4px}.yui3-resize-handle-inner-r{right:-4px}.yui3-resize-handle-tr,.yui3-resize-handle-br,.yui3-resize-handle-tl,.yui3-resize-handle-bl{height:15px;width:15px;z-index:200}.yui3-resize-handle-tr{cursor:ne-resize;top:0;right:0}.yui3-resize-handle-tl{cursor:nw-resize;top:0;left:0}.yui3-resize-handle-br{cursor:se-resize;bottom:0;right:0}.yui3-resize-handle-bl{cursor:sw-resize;bottom:0;left:0}.yui3-resize-handle-inner-r,.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-tr,.yui3-resize-handle-inner-br,.yui3-resize-handle-inner-tl,.yui3-resize-handle-inner-bl{background-repeat:no-repeat;background:url(arrows.png) no-repeat 0 0;display:block;height:15px;overflow:hidden;text-indent:-99999em;width:15px}.yui3-resize-handle-inner-br{background-position:-30px 0;bottom:-2px;right:-2px}.yui3-resize-handle-inner-tr{background-position:-58px 0;bottom:0;right:-2px}.yui3-resize-handle-inner-bl{background-position:-75px 0;bottom:-2px;right:-2px}.yui3-resize-handle-inner-tl{background-position:-47px 0;bottom:0;right:-2px}.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-t{background-position:-15px 0}#yui3-css-stamp.skin-sam-resize-base{display:none} +.yui3-resize,.yui3-resize-wrapper{z-index:0;zoom:1}.yui3-resize-handle{position:absolute;display:block;z-index:100;zoom:1}.yui3-resize-proxy{position:absolute;border:1px dashed #000;position:absolute;z-index:10000}.yui3-resize-hidden-handles .yui3-resize-handle{opacity:0;filter:alpha(opacity=0)}.yui3-resize-handle-t,.yui3-resize-handle-b{width:100%;left:0;height:6px}.yui3-resize-handle-l,.yui3-resize-handle-r{height:100%;top:0;width:6px}.yui3-resize-handle-t{cursor:n-resize;top:0}.yui3-resize-handle-b{cursor:s-resize;bottom:0}.yui3-resize-handle-l{cursor:w-resize;left:0}.yui3-resize-handle-r{cursor:e-resize;right:0}.yui3-resize-handle-inner{position:absolute;zoom:1}@media only screen and (min-device-width :320px) and (max-device-width :480px){.yui3-resize-handle-inner:after{content:"";width:40px;height:40px;position:absolute}.yui3-resize-handle-inner-r,.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-tr,.yui3-resize-handle-inner-br,.yui3-resize-handle-inner-tl,.yui3-resize-handle-inner-bl{overflow:visible!important}.yui3-resize-handle-inner-r:after{top:-12px;right:0}.yui3-resize-handle-inner-l:after{top:-12px;left:0}.yui3-resize-handle-inner-t:after{top:0;left:-12px}.yui3-resize-handle-inner-b:after{bottom:0;left:-12px}.yui3-resize-handle-inner-tr:after{top:0;right:0}.yui3-resize-handle-inner-br:after{bottom:0;right:0}.yui3-resize-handle-inner-tl:after{top:0;left:0}.yui3-resize-handle-inner-bl:after{bottom:0;left:0}}@media only screen and (min-device-width :768px) and (max-device-width :1024px){.yui3-resize-handle-inner:after{content:"";width:30px;height:30px;position:absolute}.yui3-resize-handle-inner-r,.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-tr,.yui3-resize-handle-inner-br,.yui3-resize-handle-inner-tl,.yui3-resize-handle-inner-bl{overflow:visible!important}.yui3-resize-handle-inner-r:after{top:-6px;right:0}.yui3-resize-handle-inner-l:after{top:-6px;left:0}.yui3-resize-handle-inner-t:after{top:0;left:-6px}.yui3-resize-handle-inner-b:after{bottom:0;left:-6px}.yui3-resize-handle-inner-tr:after{top:0;right:0}.yui3-resize-handle-inner-br:after{bottom:0;right:0}.yui3-resize-handle-inner-tl:after{top:0;left:0}.yui3-resize-handle-inner-bl:after{bottom:0;left:0}}.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b{margin-left:-8px;left:50%}.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-r{margin-top:-8px;top:50%}.yui3-resize-handle-inner-t{top:-4px}.yui3-resize-handle-inner-b{bottom:-4px}.yui3-resize-handle-inner-l{left:-4px}.yui3-resize-handle-inner-r{right:-4px}.yui3-resize-handle-tr,.yui3-resize-handle-br,.yui3-resize-handle-tl,.yui3-resize-handle-bl{height:15px;width:15px;z-index:200}.yui3-resize-handle-tr{cursor:ne-resize;top:0;right:0}.yui3-resize-handle-tl{cursor:nw-resize;top:0;left:0}.yui3-resize-handle-br{cursor:se-resize;bottom:0;right:0}.yui3-resize-handle-bl{cursor:sw-resize;bottom:0;left:0}.yui3-resize-handle-inner-r,.yui3-resize-handle-inner-l,.yui3-resize-handle-inner-t,.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-tr,.yui3-resize-handle-inner-br,.yui3-resize-handle-inner-tl,.yui3-resize-handle-inner-bl{background-repeat:no-repeat;background:url(arrows.png) no-repeat 0 0;display:block;height:15px;overflow:hidden;text-indent:-99999em;width:15px}.yui3-resize-handle-inner-br{background-position:-30px 0;bottom:-2px;right:-2px}.yui3-resize-handle-inner-tr{background-position:-58px 0;bottom:0;right:-2px}.yui3-resize-handle-inner-bl{background-position:-75px 0;bottom:-2px;right:-2px}.yui3-resize-handle-inner-tl{background-position:-47px 0;bottom:0;right:-2px}.yui3-resize-handle-inner-b,.yui3-resize-handle-inner-t{background-position:-15px 0}#yui3-css-stamp.skin-sam-resize-base{display:none} .yui3-scrollview{position:relative;overflow:hidden;-webkit-user-select:none;-moz-user-select:none}.yui3-scrollview-hidden{display:none}.yui3-scrollview-content{position:relative}.yui3-skin-sam .yui3-scrollview{-webkit-tap-highlight-color:rgba(255,255,255,0)}#yui3-css-stamp.skin-sam-scrollview-base{display:none} .yui3-skin-sam .yui3-scrollview{-webkit-tap-highlight-color:rgba(255,255,255,0)}.yui3-skin-sam .yui3-scrollview{background-color:white}.yui3-skin-sam .yui3-scrollview-vert .yui3-scrollview-content .yui3-scrollview-item{*zoom:1}.yui3-skin-sam .yui3-scrollview-vert .yui3-scrollview-content .yui3-scrollview-list{*zoom:1;list-style:none;padding:0;margin:0}.yui3-skin-sam .yui3-scrollview-vert .yui3-scrollview-content{border-top:0;background-color:white;font-family:HelveticaNeue,arial,helvetica,clean,sans-serif;color:black}.yui3-skin-sam .yui3-scrollview-vert .yui3-scrollview-content .yui3-scrollview-item{border-bottom:1px solid #303030;padding:15px 20px 16px;font-size:100%;font-weight:bold;background-color:white;cursor:pointer}#yui3-css-stamp.skin-sam-scrollview-list{display:none} .yui3-scrollview-scrollbar{opacity:1;position:absolute;width:6px;height:10px}.yui3-scrollview-scrollbar{top:0;right:1px}.yui3-scrollview-scrollbar-horiz{top:auto;height:8px;width:20px;bottom:1px;left:0}.yui3-scrollview-scrollbar .yui3-scrollview-child{position:absolute;right:0;display:block;width:100%;height:4px}.yui3-scrollview-scrollbar .yui3-scrollview-first{top:0}.yui3-scrollview-scrollbar .yui3-scrollview-last{top:0}.yui3-scrollview-scrollbar .yui3-scrollview-middle{position:absolute;top:4px;height:1px}.yui3-scrollview-scrollbar-horiz .yui3-scrollview-child{display:-moz-inline-stack;display:inline-block;zoom:1;*display:inline;top:0;left:0;bottom:auto;right:auto}.yui3-scrollview-scrollbar-horiz .yui3-scrollview-first,.yui3-scrollview-scrollbar-horiz .yui3-scrollview-last{width:4px;height:6px}.yui3-scrollview-scrollbar-horiz .yui3-scrollview-middle{top:0;left:4px;width:1px;height:6px}.yui3-scrollview-scrollbar-vert-basic{height:auto}.yui3-scrollview-scrollbar-vert-basic .yui3-scrollview-child{position:static;_overflow:hidden;_line-height:4px}.yui3-scrollview-scrollbar-horiz-basic{width:auto;white-space:nowrap;line-height:6px;_overflow:hidden}.yui3-scrollview-scrollbar-horiz-basic .yui3-scrollview-child{position:static;padding:0;margin:0;top:auto;left:auto;right:auto;bottom:auto}.yui3-skin-sam .yui3-scrollview-scrollbar{-webkit-transform:translate3d(0,0,0);-moz-transform:translate(0,0)}.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle,.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last{border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUeNpiZGBgSGPAAgACDAAIkABoFyloZQAAAABJRU5ErkJggg==)}.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last{border-bottom-right-radius:0;border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:0}.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last{border-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;-webkit-border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;-webkit-transform:translate3d(0,0,0);-moz-border-radius:0;-moz-border-radius-bottomright:3px;-moz-border-radius-bottomleft:3px;-moz-transform:translate(0,0)}.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle{border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;-webkit-transform:translate3d(0,0,0) scaleY(1);-webkit-transform-origin-y:0;-moz-transform:translate(0,0) scaleY(1);-moz-transform-origin:0 0}.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-first,.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last{border-top-right-radius:0;border-bottom-left-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-bottom-left-radius:3px;-moz-border-radius-topright:0;-moz-border-radius-bottomleft:3px}.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last{border-bottom-left-radius:0;border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-top-right-radius:3px;-moz-border-radius-bottomleft:0;-moz-border-radius-topright:3px}.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-middle{-webkit-transform:translate3d(0,0,0) scaleX(1);-webkit-transform-origin:0 0;-moz-transform:translate(0,0) scaleX(1);-moz-transform-origin:0 0}.yui3-skin-sam .yui3-scrollview-scrollbar-vert-basic .yui3-scrollview-child,.yui3-skin-sam .yui3-scrollview-scrollbar-horiz-basic .yui3-scrollview-child{background-color:#aaa;background-image:none}#yui3-css-stamp.skin-sam-scrollview-scrollbars{display:none} diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/slider-base.css b/lib/yuilib/3.8.0/build/assets/skins/sam/slider-base.css similarity index 98% rename from lib/yuilib/3.7.3/build/assets/skins/sam/slider-base.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/slider-base.css index 0bca65481a3..7e0dae63f87 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/slider-base.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/slider-base.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/sort-arrow-sprite-ie.png b/lib/yuilib/3.8.0/build/assets/skins/sam/sort-arrow-sprite-ie.png similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/sort-arrow-sprite-ie.png rename to lib/yuilib/3.8.0/build/assets/skins/sam/sort-arrow-sprite-ie.png diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/sort-arrow-sprite.png b/lib/yuilib/3.8.0/build/assets/skins/sam/sort-arrow-sprite.png similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/sort-arrow-sprite.png rename to lib/yuilib/3.8.0/build/assets/skins/sam/sort-arrow-sprite.png diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/sprite.png b/lib/yuilib/3.8.0/build/assets/skins/sam/sprite.png similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/sprite.png rename to lib/yuilib/3.8.0/build/assets/skins/sam/sprite.png diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/sprite_icons.gif b/lib/yuilib/3.8.0/build/assets/skins/sam/sprite_icons.gif similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/sprite_icons.gif rename to lib/yuilib/3.8.0/build/assets/skins/sam/sprite_icons.gif diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/sprite_icons.png b/lib/yuilib/3.8.0/build/assets/skins/sam/sprite_icons.png similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/sprite_icons.png rename to lib/yuilib/3.8.0/build/assets/skins/sam/sprite_icons.png diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/tabview.css b/lib/yuilib/3.8.0/build/assets/skins/sam/tabview.css similarity index 98% rename from lib/yuilib/3.7.3/build/assets/skins/sam/tabview.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/tabview.css index 258c6ea38b6..adccd9d07e6 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/tabview.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/tabview.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/test-console.css b/lib/yuilib/3.8.0/build/assets/skins/sam/test-console.css similarity index 98% rename from lib/yuilib/3.7.3/build/assets/skins/sam/test-console.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/test-console.css index 9f1fb25dcd9..b0a120eabc1 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/test-console.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/test-console.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/thumb-x.png b/lib/yuilib/3.8.0/build/assets/skins/sam/thumb-x.png similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/thumb-x.png rename to lib/yuilib/3.8.0/build/assets/skins/sam/thumb-x.png diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/thumb-y.png b/lib/yuilib/3.8.0/build/assets/skins/sam/thumb-y.png similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/thumb-y.png rename to lib/yuilib/3.8.0/build/assets/skins/sam/thumb-y.png diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/vertical-menu-submenu-indicator.png b/lib/yuilib/3.8.0/build/assets/skins/sam/vertical-menu-submenu-indicator.png similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/vertical-menu-submenu-indicator.png rename to lib/yuilib/3.8.0/build/assets/skins/sam/vertical-menu-submenu-indicator.png diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/warn_error.png b/lib/yuilib/3.8.0/build/assets/skins/sam/warn_error.png similarity index 100% rename from lib/yuilib/3.7.3/build/assets/skins/sam/warn_error.png rename to lib/yuilib/3.8.0/build/assets/skins/sam/warn_error.png diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/widget-base.css b/lib/yuilib/3.8.0/build/assets/skins/sam/widget-base.css similarity index 95% rename from lib/yuilib/3.7.3/build/assets/skins/sam/widget-base.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/widget-base.css index 118a6ec1bbd..b4ddfef421d 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/widget-base.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/widget-base.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/widget-buttons.css b/lib/yuilib/3.8.0/build/assets/skins/sam/widget-buttons.css similarity index 96% rename from lib/yuilib/3.7.3/build/assets/skins/sam/widget-buttons.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/widget-buttons.css index bef96b10484..6b3afb66385 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/widget-buttons.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/widget-buttons.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/widget-modality/assets/skins/sam/widget-modality.css b/lib/yuilib/3.8.0/build/assets/skins/sam/widget-modality.css similarity index 92% rename from lib/yuilib/3.7.3/build/widget-modality/assets/skins/sam/widget-modality.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/widget-modality.css index b3c0198df2b..6ad81040331 100644 --- a/lib/yuilib/3.7.3/build/widget-modality/assets/skins/sam/widget-modality.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/widget-modality.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/assets/skins/sam/widget-stack.css b/lib/yuilib/3.8.0/build/assets/skins/sam/widget-stack.css similarity index 93% rename from lib/yuilib/3.7.3/build/assets/skins/sam/widget-stack.css rename to lib/yuilib/3.8.0/build/assets/skins/sam/widget-stack.css index 61ac07ba4e2..eb75271ef20 100644 --- a/lib/yuilib/3.7.3/build/assets/skins/sam/widget-stack.css +++ b/lib/yuilib/3.8.0/build/assets/skins/sam/widget-stack.css @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ diff --git a/lib/yuilib/3.7.3/build/async-queue/async-queue-coverage.js b/lib/yuilib/3.8.0/build/async-queue/async-queue-coverage.js similarity index 99% rename from lib/yuilib/3.7.3/build/async-queue/async-queue-coverage.js rename to lib/yuilib/3.8.0/build/async-queue/async-queue-coverage.js index 5c85bc08148..d268cb1dab5 100644 --- a/lib/yuilib/3.7.3/build/async-queue/async-queue-coverage.js +++ b/lib/yuilib/3.8.0/build/async-queue/async-queue-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,7 +32,7 @@ _yuitest_coverage["build/async-queue/async-queue.js"] = { path: "build/async-queue/async-queue.js", code: [] }; -_yuitest_coverage["build/async-queue/async-queue.js"].code=["YUI.add('async-queue', function (Y, NAME) {","","/**"," *

          AsyncQueue allows you create a chain of function callbacks executed"," * via setTimeout (or synchronously) that are guaranteed to run in order."," * Items in the queue can be promoted or removed. Start or resume the"," * execution chain with run(). pause() to temporarily delay execution, or"," * stop() to halt and clear the queue.

          "," *"," * @module async-queue"," */","","/**"," *

          A specialized queue class that supports scheduling callbacks to execute"," * sequentially, iteratively, even asynchronously.

          "," *"," *

          Callbacks can be function refs or objects with the following keys. Only"," * the fn key is required.

          "," *"," *
            "," *
          • fn -- The callback function
          • "," *
          • context -- The execution context for the callbackFn.
          • "," *
          • args -- Arguments to pass to callbackFn.
          • "," *
          • timeout -- Millisecond delay before executing callbackFn."," * (Applies to each iterative execution of callback)
          • "," *
          • iterations -- Number of times to repeat the callback."," *
          • until -- Repeat the callback until this function returns"," * true. This setting trumps iterations.
          • "," *
          • autoContinue -- Set to false to prevent the AsyncQueue from"," * executing the next callback in the Queue after"," * the callback completes.
          • "," *
          • id -- Name that can be used to get, promote, get the"," * indexOf, or delete this callback.
          • "," *
          "," *"," * @class AsyncQueue"," * @extends EventTarget"," * @constructor"," * @param callback* {Function|Object} 0..n callbacks to seed the queue"," */","Y.AsyncQueue = function() {"," this._init();"," this.add.apply(this, arguments);","};","","var Queue = Y.AsyncQueue,"," EXECUTE = 'execute',"," SHIFT = 'shift',"," PROMOTE = 'promote',"," REMOVE = 'remove',",""," isObject = Y.Lang.isObject,"," isFunction = Y.Lang.isFunction;","","/**"," *

          Static default values used to populate callback configuration properties."," * Preconfigured defaults include:

          "," *"," *
            "," *
          • autoContinue: true
          • "," *
          • iterations: 1
          • "," *
          • timeout: 10 (10ms between callbacks)
          • "," *
          • until: (function to run until iterations <= 0)
          • "," *
          "," *"," * @property defaults"," * @type {Object}"," * @static"," */","Queue.defaults = Y.mix({"," autoContinue : true,"," iterations : 1,"," timeout : 10,"," until : function () {"," this.iterations |= 0;"," return this.iterations <= 0;"," }","}, Y.config.queueDefaults || {});","","Y.extend(Queue, Y.EventTarget, {"," /**"," * Used to indicate the queue is currently executing a callback."," *"," * @property _running"," * @type {Boolean|Object} true for synchronous callback execution, the"," * return handle from Y.later for async callbacks."," * Otherwise false."," * @protected"," */"," _running : false,",""," /**"," * Initializes the AsyncQueue instance properties and events."," *"," * @method _init"," * @protected"," */"," _init : function () {"," Y.EventTarget.call(this, { prefix: 'queue', emitFacade: true });",""," this._q = [];",""," /** "," * Callback defaults for this instance. Static defaults that are not"," * overridden are also included."," *"," * @property defaults"," * @type {Object}"," */"," this.defaults = {};",""," this._initEvents();"," },",""," /**"," * Initializes the instance events."," *"," * @method _initEvents"," * @protected"," */"," _initEvents : function () {"," this.publish({"," 'execute' : { defaultFn : this._defExecFn, emitFacade: true },"," 'shift' : { defaultFn : this._defShiftFn, emitFacade: true },"," 'add' : { defaultFn : this._defAddFn, emitFacade: true },"," 'promote' : { defaultFn : this._defPromoteFn, emitFacade: true },"," 'remove' : { defaultFn : this._defRemoveFn, emitFacade: true }"," });"," },",""," /**"," * Returns the next callback needing execution. If a callback is"," * configured to repeat via iterations or until, it will be returned until"," * the completion criteria is met."," *"," * When the queue is empty, null is returned."," *"," * @method next"," * @return {Function} the callback to execute"," */"," next : function () {"," var callback;",""," while (this._q.length) {"," callback = this._q[0] = this._prepare(this._q[0]);"," if (callback && callback.until()) {"," this.fire(SHIFT, { callback: callback });"," callback = null;"," } else {"," break;"," }"," }",""," return callback || null;"," },",""," /**"," * Default functionality for the "shift" event. Shifts the"," * callback stored in the event object's callback property from"," * the queue if it is the first item."," *"," * @method _defShiftFn"," * @param e {Event} The event object"," * @protected"," */"," _defShiftFn : function (e) {"," if (this.indexOf(e.callback) === 0) {"," this._q.shift();"," }"," },",""," /**"," * Creates a wrapper function to execute the callback using the aggregated "," * configuration generated by combining the static AsyncQueue.defaults, the"," * instance defaults, and the specified callback settings."," *"," * The wrapper function is decorated with the callback configuration as"," * properties for runtime modification."," *"," * @method _prepare"," * @param callback {Object|Function} the raw callback"," * @return {Function} a decorated function wrapper to execute the callback"," * @protected"," */"," _prepare: function (callback) {"," if (isFunction(callback) && callback._prepared) {"," return callback;"," }",""," var config = Y.merge("," Queue.defaults,"," { context : this, args: [], _prepared: true },"," this.defaults,"," (isFunction(callback) ? { fn: callback } : callback)),"," "," wrapper = Y.bind(function () {"," if (!wrapper._running) {"," wrapper.iterations--;"," }"," if (isFunction(wrapper.fn)) {"," wrapper.fn.apply(wrapper.context || Y,"," Y.Array(wrapper.args));"," }"," }, this);"," "," return Y.mix(wrapper, config);"," },",""," /**"," * Sets the queue in motion. All queued callbacks will be executed in"," * order unless pause() or stop() is called or if one of the callbacks is"," * configured with autoContinue: false."," *"," * @method run"," * @return {AsyncQueue} the AsyncQueue instance"," * @chainable"," */"," run : function () {"," var callback,"," cont = true;",""," for (callback = this.next();"," cont && callback && !this.isRunning();"," callback = this.next())"," {"," cont = (callback.timeout < 0) ?"," this._execute(callback) :"," this._schedule(callback);"," }",""," if (!callback) {"," /**"," * Event fired after the last queued callback is executed."," * @event complete"," */"," this.fire('complete');"," }",""," return this;"," },",""," /**"," * Handles the execution of callbacks. Returns a boolean indicating"," * whether it is appropriate to continue running."," *"," * @method _execute"," * @param callback {Object} the callback object to execute"," * @return {Boolean} whether the run loop should continue"," * @protected"," */"," _execute : function (callback) {"," this._running = callback._running = true;",""," callback.iterations--;"," this.fire(EXECUTE, { callback: callback });",""," var cont = this._running && callback.autoContinue;",""," this._running = callback._running = false;",""," return cont;"," },",""," /**"," * Schedules the execution of asynchronous callbacks."," *"," * @method _schedule"," * @param callback {Object} the callback object to execute"," * @return {Boolean} whether the run loop should continue"," * @protected"," */"," _schedule : function (callback) {"," this._running = Y.later(callback.timeout, this, function () {"," if (this._execute(callback)) {"," this.run();"," }"," });",""," return false;"," },",""," /**"," * Determines if the queue is waiting for a callback to complete execution."," *"," * @method isRunning"," * @return {Boolean} true if queue is waiting for a "," * from any initiated transactions"," */"," isRunning : function () {"," return !!this._running;"," },",""," /**"," * Default functionality for the "execute" event. Executes the"," * callback function"," *"," * @method _defExecFn"," * @param e {Event} the event object"," * @protected"," */"," _defExecFn : function (e) {"," e.callback();"," },",""," /**"," * Add any number of callbacks to the end of the queue. Callbacks may be"," * provided as functions or objects."," *"," * @method add"," * @param callback* {Function|Object} 0..n callbacks"," * @return {AsyncQueue} the AsyncQueue instance"," * @chainable"," */"," add : function () {"," this.fire('add', { callbacks: Y.Array(arguments,0,true) });",""," return this;"," },",""," /**"," * Default functionality for the "add" event. Adds the callbacks"," * in the event facade to the queue. Callbacks successfully added to the"," * queue are present in the event's added property in the"," * after phase."," *"," * @method _defAddFn"," * @param e {Event} the event object"," * @protected"," */"," _defAddFn : function(e) {"," var _q = this._q,"," added = [];",""," Y.Array.each(e.callbacks, function (c) {"," if (isObject(c)) {"," _q.push(c);"," added.push(c);"," }"," });",""," e.added = added;"," },",""," /**"," * Pause the execution of the queue after the execution of the current"," * callback completes. If called from code outside of a queued callback,"," * clears the timeout for the pending callback. Paused queue can be"," * restarted with q.run()"," *"," * @method pause"," * @return {AsyncQueue} the AsyncQueue instance"," * @chainable"," */"," pause: function () {"," if (isObject(this._running)) {"," this._running.cancel();"," }",""," this._running = false;",""," return this;"," },",""," /**"," * Stop and clear the queue after the current execution of the"," * current callback completes."," *"," * @method stop"," * @return {AsyncQueue} the AsyncQueue instance"," * @chainable"," */"," stop : function () { "," this._q = [];",""," return this.pause();"," },",""," /** "," * Returns the current index of a callback. Pass in either the id or"," * callback function from getCallback."," *"," * @method indexOf"," * @param callback {String|Function} the callback or its specified id"," * @return {Number} index of the callback or -1 if not found"," */"," indexOf : function (callback) {"," var i = 0, len = this._q.length, c;",""," for (; i < len; ++i) {"," c = this._q[i];"," if (c === callback || c.id === callback) {"," return i;"," }"," }",""," return -1;"," },",""," /**"," * Retrieve a callback by its id. Useful to modify the configuration"," * while the queue is running."," *"," * @method getCallback"," * @param id {String} the id assigned to the callback"," * @return {Object} the callback object"," */"," getCallback : function (id) {"," var i = this.indexOf(id);",""," return (i > -1) ? this._q[i] : null;"," },",""," /**"," * Promotes the named callback to the top of the queue. If a callback is"," * currently executing or looping (via until or iterations), the promotion"," * is scheduled to occur after the current callback has completed."," *"," * @method promote"," * @param callback {String|Object} the callback object or a callback's id"," * @return {AsyncQueue} the AsyncQueue instance"," * @chainable"," */"," promote : function (callback) {"," var payload = { callback : callback },e;",""," if (this.isRunning()) {"," e = this.after(SHIFT, function () {"," this.fire(PROMOTE, payload);"," e.detach();"," }, this);"," } else {"," this.fire(PROMOTE, payload);"," }",""," return this;"," },",""," /**"," *

          Default functionality for the "promote" event. Promotes the"," * named callback to the head of the queue.

          "," *"," *

          The event object will contain a property "callback", which"," * holds the id of a callback or the callback object itself.

          "," *"," * @method _defPromoteFn"," * @param e {Event} the custom event"," * @protected"," */"," _defPromoteFn : function (e) {"," var i = this.indexOf(e.callback),"," promoted = (i > -1) ? this._q.splice(i,1)[0] : null;",""," e.promoted = promoted;",""," if (promoted) {"," this._q.unshift(promoted);"," }"," },",""," /**"," * Removes the callback from the queue. If the queue is active, the"," * removal is scheduled to occur after the current callback has completed."," *"," * @method remove"," * @param callback {String|Object} the callback object or a callback's id"," * @return {AsyncQueue} the AsyncQueue instance"," * @chainable"," */"," remove : function (callback) {"," var payload = { callback : callback },e;",""," // Can't return the removed callback because of the deferral until"," // current callback is complete"," if (this.isRunning()) {"," e = this.after(SHIFT, function () {"," this.fire(REMOVE, payload);"," e.detach();"," },this);"," } else {"," this.fire(REMOVE, payload);"," }",""," return this;"," },",""," /**"," *

          Default functionality for the "remove" event. Removes the"," * callback from the queue.

          "," *"," *

          The event object will contain a property "callback", which"," * holds the id of a callback or the callback object itself.

          "," *"," * @method _defRemoveFn"," * @param e {Event} the custom event"," * @protected"," */"," _defRemoveFn : function (e) {"," var i = this.indexOf(e.callback);",""," e.removed = (i > -1) ? this._q.splice(i,1)[0] : null;"," },",""," /**"," * Returns the number of callbacks in the queue."," *"," * @method size"," * @return {Number}"," */"," size : function () {"," // next() flushes callbacks that have met their until() criteria and"," // therefore shouldn't count since they wouldn't execute anyway."," if (!this.isRunning()) {"," this.next();"," }",""," return this._q.length;"," }","});","","","","}, '3.7.3', {\"requires\": [\"event-custom\"]});"]; +_yuitest_coverage["build/async-queue/async-queue.js"].code=["YUI.add('async-queue', function (Y, NAME) {","","/**"," *

          AsyncQueue allows you create a chain of function callbacks executed"," * via setTimeout (or synchronously) that are guaranteed to run in order."," * Items in the queue can be promoted or removed. Start or resume the"," * execution chain with run(). pause() to temporarily delay execution, or"," * stop() to halt and clear the queue.

          "," *"," * @module async-queue"," */","","/**"," *

          A specialized queue class that supports scheduling callbacks to execute"," * sequentially, iteratively, even asynchronously.

          "," *"," *

          Callbacks can be function refs or objects with the following keys. Only"," * the fn key is required.

          "," *"," *
            "," *
          • fn -- The callback function
          • "," *
          • context -- The execution context for the callbackFn.
          • "," *
          • args -- Arguments to pass to callbackFn.
          • "," *
          • timeout -- Millisecond delay before executing callbackFn."," * (Applies to each iterative execution of callback)
          • "," *
          • iterations -- Number of times to repeat the callback."," *
          • until -- Repeat the callback until this function returns"," * true. This setting trumps iterations.
          • "," *
          • autoContinue -- Set to false to prevent the AsyncQueue from"," * executing the next callback in the Queue after"," * the callback completes.
          • "," *
          • id -- Name that can be used to get, promote, get the"," * indexOf, or delete this callback.
          • "," *
          "," *"," * @class AsyncQueue"," * @extends EventTarget"," * @constructor"," * @param callback* {Function|Object} 0..n callbacks to seed the queue"," */","Y.AsyncQueue = function() {"," this._init();"," this.add.apply(this, arguments);","};","","var Queue = Y.AsyncQueue,"," EXECUTE = 'execute',"," SHIFT = 'shift',"," PROMOTE = 'promote',"," REMOVE = 'remove',",""," isObject = Y.Lang.isObject,"," isFunction = Y.Lang.isFunction;","","/**"," *

          Static default values used to populate callback configuration properties."," * Preconfigured defaults include:

          "," *"," *
            "," *
          • autoContinue: true
          • "," *
          • iterations: 1
          • "," *
          • timeout: 10 (10ms between callbacks)
          • "," *
          • until: (function to run until iterations <= 0)
          • "," *
          "," *"," * @property defaults"," * @type {Object}"," * @static"," */","Queue.defaults = Y.mix({"," autoContinue : true,"," iterations : 1,"," timeout : 10,"," until : function () {"," this.iterations |= 0;"," return this.iterations <= 0;"," }","}, Y.config.queueDefaults || {});","","Y.extend(Queue, Y.EventTarget, {"," /**"," * Used to indicate the queue is currently executing a callback."," *"," * @property _running"," * @type {Boolean|Object} true for synchronous callback execution, the"," * return handle from Y.later for async callbacks."," * Otherwise false."," * @protected"," */"," _running : false,",""," /**"," * Initializes the AsyncQueue instance properties and events."," *"," * @method _init"," * @protected"," */"," _init : function () {"," Y.EventTarget.call(this, { prefix: 'queue', emitFacade: true });",""," this._q = [];",""," /** "," * Callback defaults for this instance. Static defaults that are not"," * overridden are also included."," *"," * @property defaults"," * @type {Object}"," */"," this.defaults = {};",""," this._initEvents();"," },",""," /**"," * Initializes the instance events."," *"," * @method _initEvents"," * @protected"," */"," _initEvents : function () {"," this.publish({"," 'execute' : { defaultFn : this._defExecFn, emitFacade: true },"," 'shift' : { defaultFn : this._defShiftFn, emitFacade: true },"," 'add' : { defaultFn : this._defAddFn, emitFacade: true },"," 'promote' : { defaultFn : this._defPromoteFn, emitFacade: true },"," 'remove' : { defaultFn : this._defRemoveFn, emitFacade: true }"," });"," },",""," /**"," * Returns the next callback needing execution. If a callback is"," * configured to repeat via iterations or until, it will be returned until"," * the completion criteria is met."," *"," * When the queue is empty, null is returned."," *"," * @method next"," * @return {Function} the callback to execute"," */"," next : function () {"," var callback;",""," while (this._q.length) {"," callback = this._q[0] = this._prepare(this._q[0]);"," if (callback && callback.until()) {"," this.fire(SHIFT, { callback: callback });"," callback = null;"," } else {"," break;"," }"," }",""," return callback || null;"," },",""," /**"," * Default functionality for the "shift" event. Shifts the"," * callback stored in the event object's callback property from"," * the queue if it is the first item."," *"," * @method _defShiftFn"," * @param e {Event} The event object"," * @protected"," */"," _defShiftFn : function (e) {"," if (this.indexOf(e.callback) === 0) {"," this._q.shift();"," }"," },",""," /**"," * Creates a wrapper function to execute the callback using the aggregated "," * configuration generated by combining the static AsyncQueue.defaults, the"," * instance defaults, and the specified callback settings."," *"," * The wrapper function is decorated with the callback configuration as"," * properties for runtime modification."," *"," * @method _prepare"," * @param callback {Object|Function} the raw callback"," * @return {Function} a decorated function wrapper to execute the callback"," * @protected"," */"," _prepare: function (callback) {"," if (isFunction(callback) && callback._prepared) {"," return callback;"," }",""," var config = Y.merge("," Queue.defaults,"," { context : this, args: [], _prepared: true },"," this.defaults,"," (isFunction(callback) ? { fn: callback } : callback)),"," "," wrapper = Y.bind(function () {"," if (!wrapper._running) {"," wrapper.iterations--;"," }"," if (isFunction(wrapper.fn)) {"," wrapper.fn.apply(wrapper.context || Y,"," Y.Array(wrapper.args));"," }"," }, this);"," "," return Y.mix(wrapper, config);"," },",""," /**"," * Sets the queue in motion. All queued callbacks will be executed in"," * order unless pause() or stop() is called or if one of the callbacks is"," * configured with autoContinue: false."," *"," * @method run"," * @return {AsyncQueue} the AsyncQueue instance"," * @chainable"," */"," run : function () {"," var callback,"," cont = true;",""," for (callback = this.next();"," cont && callback && !this.isRunning();"," callback = this.next())"," {"," cont = (callback.timeout < 0) ?"," this._execute(callback) :"," this._schedule(callback);"," }",""," if (!callback) {"," /**"," * Event fired after the last queued callback is executed."," * @event complete"," */"," this.fire('complete');"," }",""," return this;"," },",""," /**"," * Handles the execution of callbacks. Returns a boolean indicating"," * whether it is appropriate to continue running."," *"," * @method _execute"," * @param callback {Object} the callback object to execute"," * @return {Boolean} whether the run loop should continue"," * @protected"," */"," _execute : function (callback) {"," this._running = callback._running = true;",""," callback.iterations--;"," this.fire(EXECUTE, { callback: callback });",""," var cont = this._running && callback.autoContinue;",""," this._running = callback._running = false;",""," return cont;"," },",""," /**"," * Schedules the execution of asynchronous callbacks."," *"," * @method _schedule"," * @param callback {Object} the callback object to execute"," * @return {Boolean} whether the run loop should continue"," * @protected"," */"," _schedule : function (callback) {"," this._running = Y.later(callback.timeout, this, function () {"," if (this._execute(callback)) {"," this.run();"," }"," });",""," return false;"," },",""," /**"," * Determines if the queue is waiting for a callback to complete execution."," *"," * @method isRunning"," * @return {Boolean} true if queue is waiting for a "," * from any initiated transactions"," */"," isRunning : function () {"," return !!this._running;"," },",""," /**"," * Default functionality for the "execute" event. Executes the"," * callback function"," *"," * @method _defExecFn"," * @param e {Event} the event object"," * @protected"," */"," _defExecFn : function (e) {"," e.callback();"," },",""," /**"," * Add any number of callbacks to the end of the queue. Callbacks may be"," * provided as functions or objects."," *"," * @method add"," * @param callback* {Function|Object} 0..n callbacks"," * @return {AsyncQueue} the AsyncQueue instance"," * @chainable"," */"," add : function () {"," this.fire('add', { callbacks: Y.Array(arguments,0,true) });",""," return this;"," },",""," /**"," * Default functionality for the "add" event. Adds the callbacks"," * in the event facade to the queue. Callbacks successfully added to the"," * queue are present in the event's added property in the"," * after phase."," *"," * @method _defAddFn"," * @param e {Event} the event object"," * @protected"," */"," _defAddFn : function(e) {"," var _q = this._q,"," added = [];",""," Y.Array.each(e.callbacks, function (c) {"," if (isObject(c)) {"," _q.push(c);"," added.push(c);"," }"," });",""," e.added = added;"," },",""," /**"," * Pause the execution of the queue after the execution of the current"," * callback completes. If called from code outside of a queued callback,"," * clears the timeout for the pending callback. Paused queue can be"," * restarted with q.run()"," *"," * @method pause"," * @return {AsyncQueue} the AsyncQueue instance"," * @chainable"," */"," pause: function () {"," if (isObject(this._running)) {"," this._running.cancel();"," }",""," this._running = false;",""," return this;"," },",""," /**"," * Stop and clear the queue after the current execution of the"," * current callback completes."," *"," * @method stop"," * @return {AsyncQueue} the AsyncQueue instance"," * @chainable"," */"," stop : function () { "," this._q = [];",""," return this.pause();"," },",""," /** "," * Returns the current index of a callback. Pass in either the id or"," * callback function from getCallback."," *"," * @method indexOf"," * @param callback {String|Function} the callback or its specified id"," * @return {Number} index of the callback or -1 if not found"," */"," indexOf : function (callback) {"," var i = 0, len = this._q.length, c;",""," for (; i < len; ++i) {"," c = this._q[i];"," if (c === callback || c.id === callback) {"," return i;"," }"," }",""," return -1;"," },",""," /**"," * Retrieve a callback by its id. Useful to modify the configuration"," * while the queue is running."," *"," * @method getCallback"," * @param id {String} the id assigned to the callback"," * @return {Object} the callback object"," */"," getCallback : function (id) {"," var i = this.indexOf(id);",""," return (i > -1) ? this._q[i] : null;"," },",""," /**"," * Promotes the named callback to the top of the queue. If a callback is"," * currently executing or looping (via until or iterations), the promotion"," * is scheduled to occur after the current callback has completed."," *"," * @method promote"," * @param callback {String|Object} the callback object or a callback's id"," * @return {AsyncQueue} the AsyncQueue instance"," * @chainable"," */"," promote : function (callback) {"," var payload = { callback : callback },e;",""," if (this.isRunning()) {"," e = this.after(SHIFT, function () {"," this.fire(PROMOTE, payload);"," e.detach();"," }, this);"," } else {"," this.fire(PROMOTE, payload);"," }",""," return this;"," },",""," /**"," *

          Default functionality for the "promote" event. Promotes the"," * named callback to the head of the queue.

          "," *"," *

          The event object will contain a property "callback", which"," * holds the id of a callback or the callback object itself.

          "," *"," * @method _defPromoteFn"," * @param e {Event} the custom event"," * @protected"," */"," _defPromoteFn : function (e) {"," var i = this.indexOf(e.callback),"," promoted = (i > -1) ? this._q.splice(i,1)[0] : null;",""," e.promoted = promoted;",""," if (promoted) {"," this._q.unshift(promoted);"," }"," },",""," /**"," * Removes the callback from the queue. If the queue is active, the"," * removal is scheduled to occur after the current callback has completed."," *"," * @method remove"," * @param callback {String|Object} the callback object or a callback's id"," * @return {AsyncQueue} the AsyncQueue instance"," * @chainable"," */"," remove : function (callback) {"," var payload = { callback : callback },e;",""," // Can't return the removed callback because of the deferral until"," // current callback is complete"," if (this.isRunning()) {"," e = this.after(SHIFT, function () {"," this.fire(REMOVE, payload);"," e.detach();"," },this);"," } else {"," this.fire(REMOVE, payload);"," }",""," return this;"," },",""," /**"," *

          Default functionality for the "remove" event. Removes the"," * callback from the queue.

          "," *"," *

          The event object will contain a property "callback", which"," * holds the id of a callback or the callback object itself.

          "," *"," * @method _defRemoveFn"," * @param e {Event} the custom event"," * @protected"," */"," _defRemoveFn : function (e) {"," var i = this.indexOf(e.callback);",""," e.removed = (i > -1) ? this._q.splice(i,1)[0] : null;"," },",""," /**"," * Returns the number of callbacks in the queue."," *"," * @method size"," * @return {Number}"," */"," size : function () {"," // next() flushes callbacks that have met their until() criteria and"," // therefore shouldn't count since they wouldn't execute anyway."," if (!this.isRunning()) {"," this.next();"," }",""," return this._q.length;"," }","});","","","","}, '3.8.0', {\"requires\": [\"event-custom\"]});"]; _yuitest_coverage["build/async-queue/async-queue.js"].lines = {"1":0,"41":0,"42":0,"43":0,"46":0,"70":0,"75":0,"76":0,"80":0,"99":0,"101":0,"110":0,"112":0,"122":0,"142":0,"144":0,"145":0,"146":0,"147":0,"148":0,"150":0,"154":0,"167":0,"168":0,"186":0,"187":0,"190":0,"197":0,"198":0,"200":0,"201":0,"206":0,"219":0,"222":0,"226":0,"231":0,"236":0,"239":0,"252":0,"254":0,"255":0,"257":0,"259":0,"261":0,"273":0,"274":0,"275":0,"279":0,"290":0,"302":0,"315":0,"317":0,"331":0,"334":0,"335":0,"336":0,"337":0,"341":0,"355":0,"356":0,"359":0,"361":0,"373":0,"375":0,"387":0,"389":0,"390":0,"391":0,"392":0,"396":0,"408":0,"410":0,"424":0,"426":0,"427":0,"428":0,"429":0,"432":0,"435":0,"450":0,"453":0,"455":0,"456":0,"470":0,"474":0,"475":0,"476":0,"477":0,"480":0,"483":0,"498":0,"500":0,"512":0,"513":0,"516":0}; _yuitest_coverage["build/async-queue/async-queue.js"].functions = {"AsyncQueue:41":0,"until:74":0,"_init:98":0,"_initEvents:121":0,"next:141":0,"_defShiftFn:166":0,"(anonymous 2):196":0,"_prepare:185":0,"run:218":0,"_execute:251":0,"(anonymous 3):273":0,"_schedule:272":0,"isRunning:289":0,"_defExecFn:301":0,"add:314":0,"(anonymous 4):334":0,"_defAddFn:330":0,"pause:354":0,"stop:372":0,"indexOf:386":0,"getCallback:407":0,"(anonymous 5):427":0,"promote:423":0,"_defPromoteFn:449":0,"(anonymous 6):475":0,"remove:469":0,"_defRemoveFn:497":0,"size:509":0,"(anonymous 1):1":0}; _yuitest_coverage["build/async-queue/async-queue.js"].coveredLines = 95; @@ -682,4 +682,4 @@ return this._q.length; -}, '3.7.3', {"requires": ["event-custom"]}); +}, '3.8.0', {"requires": ["event-custom"]}); diff --git a/lib/yuilib/3.7.3/build/async-queue/async-queue-debug.js b/lib/yuilib/3.8.0/build/async-queue/async-queue-debug.js similarity index 99% rename from lib/yuilib/3.7.3/build/async-queue/async-queue-debug.js rename to lib/yuilib/3.8.0/build/async-queue/async-queue-debug.js index b399e57632c..fa0e466b973 100644 --- a/lib/yuilib/3.7.3/build/async-queue/async-queue-debug.js +++ b/lib/yuilib/3.8.0/build/async-queue/async-queue-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -525,4 +525,4 @@ Y.extend(Queue, Y.EventTarget, { -}, '3.7.3', {"requires": ["event-custom"]}); +}, '3.8.0', {"requires": ["event-custom"]}); diff --git a/lib/yuilib/3.7.3/build/async-queue/async-queue-min.js b/lib/yuilib/3.8.0/build/async-queue/async-queue-min.js similarity index 97% rename from lib/yuilib/3.7.3/build/async-queue/async-queue-min.js rename to lib/yuilib/3.8.0/build/async-queue/async-queue-min.js index 649e75b1964..02721b799ab 100644 --- a/lib/yuilib/3.7.3/build/async-queue/async-queue-min.js +++ b/lib/yuilib/3.8.0/build/async-queue/async-queue-min.js @@ -1,7 +1,7 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ -YUI.add("async-queue",function(e,t){e.AsyncQueue=function(){this._init(),this.add.apply(this,arguments)};var n=e.AsyncQueue,r="execute",i="shift",s="promote",o="remove",u=e.Lang.isObject,a=e.Lang.isFunction;n.defaults=e.mix({autoContinue:!0,iterations:1,timeout:10,until:function(){return this.iterations|=0,this.iterations<=0}},e.config.queueDefaults||{}),e.extend(n,e.EventTarget,{_running:!1,_init:function(){e.EventTarget.call(this,{prefix:"queue",emitFacade:!0}),this._q=[],this.defaults={},this._initEvents()},_initEvents:function(){this.publish({execute:{defaultFn:this._defExecFn,emitFacade:!0},shift:{defaultFn:this._defShiftFn,emitFacade:!0},add:{defaultFn:this._defAddFn,emitFacade:!0},promote:{defaultFn:this._defPromoteFn,emitFacade:!0},remove:{defaultFn:this._defRemoveFn,emitFacade:!0}})},next:function(){var e;while(this._q.length){e=this._q[0]=this._prepare(this._q[0]);if(!e||!e.until())break;this.fire(i,{callback:e}),e=null}return e||null},_defShiftFn:function(e){this.indexOf(e.callback)===0&&this._q.shift()},_prepare:function(t){if(a(t)&&t._prepared)return t;var r=e.merge(n.defaults,{context:this,args:[],_prepared:!0},this.defaults,a(t)?{fn:t}:t),i=e.bind(function(){i._running||i.iterations--,a(i.fn)&&i.fn.apply(i.context||e,e.Array(i.args))},this);return e.mix(i,r)},run:function(){var e,t=!0;for(e=this.next();t&&e&&!this.isRunning();e=this.next())t=e.timeout<0?this._execute(e):this._schedule(e);return e||this.fire("complete"),this},_execute:function(e){this._running=e._running=!0,e.iterations--,this.fire(r,{callback:e});var t=this._running&&e.autoContinue;return this._running=e._running=!1,t},_schedule:function(t){return this._running=e.later(t.timeout,this,function(){this._execute(t)&&this.run()}),!1},isRunning:function(){return!!this._running},_defExecFn:function(e){e.callback()},add:function(){return this.fire("add",{callbacks:e.Array(arguments,0,!0)}),this},_defAddFn:function(t){var n=this._q,r=[];e.Array.each(t.callbacks,function(e){u(e)&&(n.push(e),r.push(e))}),t.added=r},pause:function(){return u(this._running)&&this._running.cancel(),this._running=!1,this},stop:function(){return this._q=[],this.pause()},indexOf:function(e){var t=0,n=this._q.length,r;for(;t-1?this._q[t]:null},promote:function(e){var t={callback:e},n;return this.isRunning()?n=this.after(i,function(){this.fire(s,t),n.detach()},this):this.fire(s,t),this},_defPromoteFn:function(e){var t=this.indexOf(e.callback),n=t>-1?this._q.splice(t,1)[0]:null;e.promoted=n,n&&this._q.unshift(n)},remove:function(e){var t={callback:e},n;return this.isRunning()?n=this.after(i,function(){this.fire(o,t),n.detach()},this):this.fire(o,t),this},_defRemoveFn:function(e){var t=this.indexOf(e.callback);e.removed=t>-1?this._q.splice(t,1)[0]:null},size:function(){return this.isRunning()||this.next(),this._q.length}})},"3.7.3",{requires:["event-custom"]}); +YUI.add("async-queue",function(e,t){e.AsyncQueue=function(){this._init(),this.add.apply(this,arguments)};var n=e.AsyncQueue,r="execute",i="shift",s="promote",o="remove",u=e.Lang.isObject,a=e.Lang.isFunction;n.defaults=e.mix({autoContinue:!0,iterations:1,timeout:10,until:function(){return this.iterations|=0,this.iterations<=0}},e.config.queueDefaults||{}),e.extend(n,e.EventTarget,{_running:!1,_init:function(){e.EventTarget.call(this,{prefix:"queue",emitFacade:!0}),this._q=[],this.defaults={},this._initEvents()},_initEvents:function(){this.publish({execute:{defaultFn:this._defExecFn,emitFacade:!0},shift:{defaultFn:this._defShiftFn,emitFacade:!0},add:{defaultFn:this._defAddFn,emitFacade:!0},promote:{defaultFn:this._defPromoteFn,emitFacade:!0},remove:{defaultFn:this._defRemoveFn,emitFacade:!0}})},next:function(){var e;while(this._q.length){e=this._q[0]=this._prepare(this._q[0]);if(!e||!e.until())break;this.fire(i,{callback:e}),e=null}return e||null},_defShiftFn:function(e){this.indexOf(e.callback)===0&&this._q.shift()},_prepare:function(t){if(a(t)&&t._prepared)return t;var r=e.merge(n.defaults,{context:this,args:[],_prepared:!0},this.defaults,a(t)?{fn:t}:t),i=e.bind(function(){i._running||i.iterations--,a(i.fn)&&i.fn.apply(i.context||e,e.Array(i.args))},this);return e.mix(i,r)},run:function(){var e,t=!0;for(e=this.next();t&&e&&!this.isRunning();e=this.next())t=e.timeout<0?this._execute(e):this._schedule(e);return e||this.fire("complete"),this},_execute:function(e){this._running=e._running=!0,e.iterations--,this.fire(r,{callback:e});var t=this._running&&e.autoContinue;return this._running=e._running=!1,t},_schedule:function(t){return this._running=e.later(t.timeout,this,function(){this._execute(t)&&this.run()}),!1},isRunning:function(){return!!this._running},_defExecFn:function(e){e.callback()},add:function(){return this.fire("add",{callbacks:e.Array(arguments,0,!0)}),this},_defAddFn:function(t){var n=this._q,r=[];e.Array.each(t.callbacks,function(e){u(e)&&(n.push(e),r.push(e))}),t.added=r},pause:function(){return u(this._running)&&this._running.cancel(),this._running=!1,this},stop:function(){return this._q=[],this.pause()},indexOf:function(e){var t=0,n=this._q.length,r;for(;t-1?this._q[t]:null},promote:function(e){var t={callback:e},n;return this.isRunning()?n=this.after(i,function(){this.fire(s,t),n.detach()},this):this.fire(s,t),this},_defPromoteFn:function(e){var t=this.indexOf(e.callback),n=t>-1?this._q.splice(t,1)[0]:null;e.promoted=n,n&&this._q.unshift(n)},remove:function(e){var t={callback:e},n;return this.isRunning()?n=this.after(i,function(){this.fire(o,t),n.detach()},this):this.fire(o,t),this},_defRemoveFn:function(e){var t=this.indexOf(e.callback);e.removed=t>-1?this._q.splice(t,1)[0]:null},size:function(){return this.isRunning()||this.next(),this._q.length}})},"3.8.0",{requires:["event-custom"]}); diff --git a/lib/yuilib/3.7.3/build/async-queue/async-queue.js b/lib/yuilib/3.8.0/build/async-queue/async-queue.js similarity index 99% rename from lib/yuilib/3.7.3/build/async-queue/async-queue.js rename to lib/yuilib/3.8.0/build/async-queue/async-queue.js index b399e57632c..fa0e466b973 100644 --- a/lib/yuilib/3.7.3/build/async-queue/async-queue.js +++ b/lib/yuilib/3.8.0/build/async-queue/async-queue.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -525,4 +525,4 @@ Y.extend(Queue, Y.EventTarget, { -}, '3.7.3', {"requires": ["event-custom"]}); +}, '3.8.0', {"requires": ["event-custom"]}); diff --git a/lib/yuilib/3.8.0/build/attribute-base/attribute-base-coverage.js b/lib/yuilib/3.8.0/build/attribute-base/attribute-base-coverage.js new file mode 100644 index 00000000000..498cb7ec383 --- /dev/null +++ b/lib/yuilib/3.8.0/build/attribute-base/attribute-base-coverage.js @@ -0,0 +1,161 @@ +/* +YUI 3.8.0 (build 5744) +Copyright 2012 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ +if (typeof _yuitest_coverage == "undefined"){ + _yuitest_coverage = {}; + _yuitest_coverline = function(src, line){ + var coverage = _yuitest_coverage[src]; + if (!coverage.lines[line]){ + coverage.calledLines++; + } + coverage.lines[line]++; + }; + _yuitest_coverfunc = function(src, name, line){ + var coverage = _yuitest_coverage[src], + funcId = name + ":" + line; + if (!coverage.functions[funcId]){ + coverage.calledFunctions++; + } + coverage.functions[funcId]++; + }; +} +_yuitest_coverage["build/attribute-base/attribute-base.js"] = { + lines: {}, + functions: {}, + coveredLines: 0, + calledLines: 0, + coveredFunctions: 0, + calledFunctions: 0, + path: "build/attribute-base/attribute-base.js", + code: [] +}; +_yuitest_coverage["build/attribute-base/attribute-base.js"].code=["YUI.add('attribute-base', function (Y, NAME) {",""," /**"," * The attribute module provides an augmentable Attribute implementation, which"," * adds configurable attributes and attribute change events to the class being"," * augmented. It also provides a State class, which is used internally by Attribute,"," * but can also be used independently to provide a name/property/value data structure to"," * store state."," *"," * @module attribute"," */",""," /**"," * The attribute-base submodule provides core attribute handling support, with everything"," * aside from complex attribute handling in the provider's constructor."," *"," * @module attribute"," * @submodule attribute-base"," */",""," /**"," *

          "," * Attribute provides configurable attribute support along with attribute change events. It is designed to be"," * augmented on to a host class, and provides the host with the ability to configure attributes to store and retrieve state,"," * along with attribute change events."," *

          "," *

          For example, attributes added to the host can be configured:

          "," *
            "," *
          • As read only.
          • "," *
          • As write once.
          • "," *
          • With a setter function, which can be used to manipulate"," * values passed to Attribute's set method, before they are stored.
          • "," *
          • With a getter function, which can be used to manipulate stored values,"," * before they are returned by Attribute's get method.
          • "," *
          • With a validator function, to validate values before they are stored.
          • "," *
          "," *"," *

          See the addAttr method, for the complete set of configuration"," * options available for attributes.

          "," *"," *

          NOTE: Most implementations will be better off extending the Base class,"," * instead of augmenting Attribute directly. Base augments Attribute and will handle the initial configuration"," * of attributes for derived classes, accounting for values passed into the constructor.

          "," *"," * @class Attribute"," * @param attrs {Object} The attributes to add during construction (passed through to addAttrs). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor."," * @param values {Object} The initial attribute values to apply (passed through to addAttrs). These are not merged/cloned. The caller is responsible for isolating user provided values if required."," * @param lazy {boolean} Whether or not to add attributes lazily (passed through to addAttrs)."," * @uses AttributeCore"," * @uses AttributeObservable"," * @uses EventTarget"," * @uses AttributeExtras"," */"," function Attribute() {"," Y.AttributeCore.apply(this, arguments);"," Y.AttributeObservable.apply(this, arguments);"," Y.AttributeExtras.apply(this, arguments);"," }",""," Y.mix(Attribute, Y.AttributeCore, false, null, 1);"," Y.mix(Attribute, Y.AttributeExtras, false, null, 1);",""," // Needs to be \"true\", to overwrite methods from AttributeCore"," Y.mix(Attribute, Y.AttributeObservable, true, null, 1);",""," /**"," *

          The value to return from an attribute setter in order to prevent the set from going through.

          "," *"," *

          You can return this value from your setter if you wish to combine validator and setter"," * functionality into a single setter function, which either returns the massaged value to be stored or"," * AttributeCore.INVALID_VALUE to prevent invalid values from being stored.

          "," *"," * @property INVALID_VALUE"," * @type Object"," * @static"," * @final"," */"," Attribute.INVALID_VALUE = Y.AttributeCore.INVALID_VALUE;",""," /**"," * The list of properties which can be configured for"," * each attribute (e.g. setter, getter, writeOnce etc.)."," *"," * This property is used internally as a whitelist for faster"," * Y.mix operations."," *"," * @property _ATTR_CFG"," * @type Array"," * @static"," * @protected"," */"," Attribute._ATTR_CFG = Y.AttributeCore._ATTR_CFG.concat(Y.AttributeObservable._ATTR_CFG);",""," /**"," * Utility method to protect an attribute configuration hash, by merging the"," * entire object and the individual attr config objects."," *"," * @method protectAttrs"," * @static"," * @param {Object} attrs A hash of attribute to configuration object pairs."," * @return {Object} A protected version of the `attrs` argument."," */"," Attribute.protectAttrs = Y.AttributeCore.protectAttrs;",""," Y.Attribute = Attribute;","","","}, '3.8.0', {\"requires\": [\"attribute-core\", \"attribute-observable\", \"attribute-extras\"]});"]; +_yuitest_coverage["build/attribute-base/attribute-base.js"].lines = {"1":0,"54":0,"55":0,"56":0,"57":0,"60":0,"61":0,"64":0,"78":0,"92":0,"103":0,"105":0}; +_yuitest_coverage["build/attribute-base/attribute-base.js"].functions = {"Attribute:54":0,"(anonymous 1):1":0}; +_yuitest_coverage["build/attribute-base/attribute-base.js"].coveredLines = 12; +_yuitest_coverage["build/attribute-base/attribute-base.js"].coveredFunctions = 2; +_yuitest_coverline("build/attribute-base/attribute-base.js", 1); +YUI.add('attribute-base', function (Y, NAME) { + + /** + * The attribute module provides an augmentable Attribute implementation, which + * adds configurable attributes and attribute change events to the class being + * augmented. It also provides a State class, which is used internally by Attribute, + * but can also be used independently to provide a name/property/value data structure to + * store state. + * + * @module attribute + */ + + /** + * The attribute-base submodule provides core attribute handling support, with everything + * aside from complex attribute handling in the provider's constructor. + * + * @module attribute + * @submodule attribute-base + */ + + /** + *

          + * Attribute provides configurable attribute support along with attribute change events. It is designed to be + * augmented on to a host class, and provides the host with the ability to configure attributes to store and retrieve state, + * along with attribute change events. + *

          + *

          For example, attributes added to the host can be configured:

          + *
            + *
          • As read only.
          • + *
          • As write once.
          • + *
          • With a setter function, which can be used to manipulate + * values passed to Attribute's set method, before they are stored.
          • + *
          • With a getter function, which can be used to manipulate stored values, + * before they are returned by Attribute's get method.
          • + *
          • With a validator function, to validate values before they are stored.
          • + *
          + * + *

          See the addAttr method, for the complete set of configuration + * options available for attributes.

          + * + *

          NOTE: Most implementations will be better off extending the Base class, + * instead of augmenting Attribute directly. Base augments Attribute and will handle the initial configuration + * of attributes for derived classes, accounting for values passed into the constructor.

          + * + * @class Attribute + * @param attrs {Object} The attributes to add during construction (passed through to addAttrs). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor. + * @param values {Object} The initial attribute values to apply (passed through to addAttrs). These are not merged/cloned. The caller is responsible for isolating user provided values if required. + * @param lazy {boolean} Whether or not to add attributes lazily (passed through to addAttrs). + * @uses AttributeCore + * @uses AttributeObservable + * @uses EventTarget + * @uses AttributeExtras + */ + _yuitest_coverfunc("build/attribute-base/attribute-base.js", "(anonymous 1)", 1); +_yuitest_coverline("build/attribute-base/attribute-base.js", 54); +function Attribute() { + _yuitest_coverfunc("build/attribute-base/attribute-base.js", "Attribute", 54); +_yuitest_coverline("build/attribute-base/attribute-base.js", 55); +Y.AttributeCore.apply(this, arguments); + _yuitest_coverline("build/attribute-base/attribute-base.js", 56); +Y.AttributeObservable.apply(this, arguments); + _yuitest_coverline("build/attribute-base/attribute-base.js", 57); +Y.AttributeExtras.apply(this, arguments); + } + + _yuitest_coverline("build/attribute-base/attribute-base.js", 60); +Y.mix(Attribute, Y.AttributeCore, false, null, 1); + _yuitest_coverline("build/attribute-base/attribute-base.js", 61); +Y.mix(Attribute, Y.AttributeExtras, false, null, 1); + + // Needs to be "true", to overwrite methods from AttributeCore + _yuitest_coverline("build/attribute-base/attribute-base.js", 64); +Y.mix(Attribute, Y.AttributeObservable, true, null, 1); + + /** + *

          The value to return from an attribute setter in order to prevent the set from going through.

          + * + *

          You can return this value from your setter if you wish to combine validator and setter + * functionality into a single setter function, which either returns the massaged value to be stored or + * AttributeCore.INVALID_VALUE to prevent invalid values from being stored.

          + * + * @property INVALID_VALUE + * @type Object + * @static + * @final + */ + _yuitest_coverline("build/attribute-base/attribute-base.js", 78); +Attribute.INVALID_VALUE = Y.AttributeCore.INVALID_VALUE; + + /** + * The list of properties which can be configured for + * each attribute (e.g. setter, getter, writeOnce etc.). + * + * This property is used internally as a whitelist for faster + * Y.mix operations. + * + * @property _ATTR_CFG + * @type Array + * @static + * @protected + */ + _yuitest_coverline("build/attribute-base/attribute-base.js", 92); +Attribute._ATTR_CFG = Y.AttributeCore._ATTR_CFG.concat(Y.AttributeObservable._ATTR_CFG); + + /** + * Utility method to protect an attribute configuration hash, by merging the + * entire object and the individual attr config objects. + * + * @method protectAttrs + * @static + * @param {Object} attrs A hash of attribute to configuration object pairs. + * @return {Object} A protected version of the `attrs` argument. + */ + _yuitest_coverline("build/attribute-base/attribute-base.js", 103); +Attribute.protectAttrs = Y.AttributeCore.protectAttrs; + + _yuitest_coverline("build/attribute-base/attribute-base.js", 105); +Y.Attribute = Attribute; + + +}, '3.8.0', {"requires": ["attribute-core", "attribute-observable", "attribute-extras"]}); diff --git a/lib/yuilib/3.7.3/build/attribute-base/attribute-base-debug.js b/lib/yuilib/3.8.0/build/attribute-base/attribute-base-debug.js similarity index 78% rename from lib/yuilib/3.7.3/build/attribute-base/attribute-base-debug.js rename to lib/yuilib/3.8.0/build/attribute-base/attribute-base-debug.js index ea977ea6761..9577d51fc27 100644 --- a/lib/yuilib/3.7.3/build/attribute-base/attribute-base-debug.js +++ b/lib/yuilib/3.8.0/build/attribute-base/attribute-base-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -7,8 +7,8 @@ http://yuilibrary.com/license/ YUI.add('attribute-base', function (Y, NAME) { /** - * The attribute module provides an augmentable Attribute implementation, which - * adds configurable attributes and attribute change events to the class being + * The attribute module provides an augmentable Attribute implementation, which + * adds configurable attributes and attribute change events to the class being * augmented. It also provides a State class, which is used internally by Attribute, * but can also be used independently to provide a name/property/value data structure to * store state. @@ -23,11 +23,11 @@ YUI.add('attribute-base', function (Y, NAME) { * @module attribute * @submodule attribute-base */ - + /** *

          - * Attribute provides configurable attribute support along with attribute change events. It is designed to be - * augmented on to a host class, and provides the host with the ability to configure attributes to store and retrieve state, + * Attribute provides configurable attribute support along with attribute change events. It is designed to be + * augmented on to a host class, and provides the host with the ability to configure attributes to store and retrieve state, * along with attribute change events. *

          *

          For example, attributes added to the host can be configured:

          @@ -44,8 +44,8 @@ YUI.add('attribute-base', function (Y, NAME) { *

          See the addAttr method, for the complete set of configuration * options available for attributes.

          * - *

          NOTE: Most implementations will be better off extending the Base class, - * instead of augmenting Attribute directly. Base augments Attribute and will handle the initial configuration + *

          NOTE: Most implementations will be better off extending the Base class, + * instead of augmenting Attribute directly. Base augments Attribute and will handle the initial configuration * of attributes for derived classes, accounting for values passed into the constructor.

          * * @class Attribute @@ -53,35 +53,27 @@ YUI.add('attribute-base', function (Y, NAME) { * @param values {Object} The initial attribute values to apply (passed through to addAttrs). These are not merged/cloned. The caller is responsible for isolating user provided values if required. * @param lazy {boolean} Whether or not to add attributes lazily (passed through to addAttrs). * @uses AttributeCore - * @uses AttributeEvents + * @uses AttributeObservable * @uses EventTarget * @uses AttributeExtras */ - var Attribute = function() { - - // Fix #2531929 - // Complete hack, to make sure the first clone of a node value in IE doesn't doesn't hurt state - maintains 3.4.1 behavior. - // Too late in the release cycle to do anything about the core problem. - // The root issue is that cloning a Y.Node instance results in an object which barfs in IE, when you access it's properties (since 3.3.0). - this._ATTR_E_FACADE = null; - this._yuievt = null; - + function Attribute() { Y.AttributeCore.apply(this, arguments); - Y.AttributeEvents.apply(this, arguments); + Y.AttributeObservable.apply(this, arguments); Y.AttributeExtras.apply(this, arguments); - }; + } Y.mix(Attribute, Y.AttributeCore, false, null, 1); Y.mix(Attribute, Y.AttributeExtras, false, null, 1); // Needs to be "true", to overwrite methods from AttributeCore - Y.mix(Attribute, Y.AttributeEvents, true, null, 1); + Y.mix(Attribute, Y.AttributeObservable, true, null, 1); /** *

          The value to return from an attribute setter in order to prevent the set from going through.

          * - *

          You can return this value from your setter if you wish to combine validator and setter - * functionality into a single setter function, which either returns the massaged value to be stored or + *

          You can return this value from your setter if you wish to combine validator and setter + * functionality into a single setter function, which either returns the massaged value to be stored or * AttributeCore.INVALID_VALUE to prevent invalid values from being stored.

          * * @property INVALID_VALUE @@ -92,7 +84,7 @@ YUI.add('attribute-base', function (Y, NAME) { Attribute.INVALID_VALUE = Y.AttributeCore.INVALID_VALUE; /** - * The list of properties which can be configured for + * The list of properties which can be configured for * each attribute (e.g. setter, getter, writeOnce etc.). * * This property is used internally as a whitelist for faster @@ -103,8 +95,20 @@ YUI.add('attribute-base', function (Y, NAME) { * @static * @protected */ - Attribute._ATTR_CFG = Y.AttributeCore._ATTR_CFG.concat(Y.AttributeEvents._ATTR_CFG); + Attribute._ATTR_CFG = Y.AttributeCore._ATTR_CFG.concat(Y.AttributeObservable._ATTR_CFG); + + /** + * Utility method to protect an attribute configuration hash, by merging the + * entire object and the individual attr config objects. + * + * @method protectAttrs + * @static + * @param {Object} attrs A hash of attribute to configuration object pairs. + * @return {Object} A protected version of the `attrs` argument. + */ + Attribute.protectAttrs = Y.AttributeCore.protectAttrs; Y.Attribute = Attribute; -}, '3.7.3', {"requires": ["attribute-core", "attribute-events", "attribute-extras"]}); + +}, '3.8.0', {"requires": ["attribute-core", "attribute-observable", "attribute-extras"]}); diff --git a/lib/yuilib/3.8.0/build/attribute-base/attribute-base-min.js b/lib/yuilib/3.8.0/build/attribute-base/attribute-base-min.js new file mode 100644 index 00000000000..64913421d81 --- /dev/null +++ b/lib/yuilib/3.8.0/build/attribute-base/attribute-base-min.js @@ -0,0 +1,7 @@ +/* +YUI 3.8.0 (build 5744) +Copyright 2012 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ +YUI.add("attribute-base",function(e,t){function n(){e.AttributeCore.apply(this,arguments),e.AttributeObservable.apply(this,arguments),e.AttributeExtras.apply(this,arguments)}e.mix(n,e.AttributeCore,!1,null,1),e.mix(n,e.AttributeExtras,!1,null,1),e.mix(n,e.AttributeObservable,!0,null,1),n.INVALID_VALUE=e.AttributeCore.INVALID_VALUE,n._ATTR_CFG=e.AttributeCore._ATTR_CFG.concat(e.AttributeObservable._ATTR_CFG),n.protectAttrs=e.AttributeCore.protectAttrs,e.Attribute=n},"3.8.0",{requires:["attribute-core","attribute-observable","attribute-extras"]}); diff --git a/lib/yuilib/3.7.3/build/attribute-base/attribute-base.js b/lib/yuilib/3.8.0/build/attribute-base/attribute-base.js similarity index 78% rename from lib/yuilib/3.7.3/build/attribute-base/attribute-base.js rename to lib/yuilib/3.8.0/build/attribute-base/attribute-base.js index ea977ea6761..9577d51fc27 100644 --- a/lib/yuilib/3.7.3/build/attribute-base/attribute-base.js +++ b/lib/yuilib/3.8.0/build/attribute-base/attribute-base.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -7,8 +7,8 @@ http://yuilibrary.com/license/ YUI.add('attribute-base', function (Y, NAME) { /** - * The attribute module provides an augmentable Attribute implementation, which - * adds configurable attributes and attribute change events to the class being + * The attribute module provides an augmentable Attribute implementation, which + * adds configurable attributes and attribute change events to the class being * augmented. It also provides a State class, which is used internally by Attribute, * but can also be used independently to provide a name/property/value data structure to * store state. @@ -23,11 +23,11 @@ YUI.add('attribute-base', function (Y, NAME) { * @module attribute * @submodule attribute-base */ - + /** *

          - * Attribute provides configurable attribute support along with attribute change events. It is designed to be - * augmented on to a host class, and provides the host with the ability to configure attributes to store and retrieve state, + * Attribute provides configurable attribute support along with attribute change events. It is designed to be + * augmented on to a host class, and provides the host with the ability to configure attributes to store and retrieve state, * along with attribute change events. *

          *

          For example, attributes added to the host can be configured:

          @@ -44,8 +44,8 @@ YUI.add('attribute-base', function (Y, NAME) { *

          See the addAttr method, for the complete set of configuration * options available for attributes.

          * - *

          NOTE: Most implementations will be better off extending the Base class, - * instead of augmenting Attribute directly. Base augments Attribute and will handle the initial configuration + *

          NOTE: Most implementations will be better off extending the Base class, + * instead of augmenting Attribute directly. Base augments Attribute and will handle the initial configuration * of attributes for derived classes, accounting for values passed into the constructor.

          * * @class Attribute @@ -53,35 +53,27 @@ YUI.add('attribute-base', function (Y, NAME) { * @param values {Object} The initial attribute values to apply (passed through to addAttrs). These are not merged/cloned. The caller is responsible for isolating user provided values if required. * @param lazy {boolean} Whether or not to add attributes lazily (passed through to addAttrs). * @uses AttributeCore - * @uses AttributeEvents + * @uses AttributeObservable * @uses EventTarget * @uses AttributeExtras */ - var Attribute = function() { - - // Fix #2531929 - // Complete hack, to make sure the first clone of a node value in IE doesn't doesn't hurt state - maintains 3.4.1 behavior. - // Too late in the release cycle to do anything about the core problem. - // The root issue is that cloning a Y.Node instance results in an object which barfs in IE, when you access it's properties (since 3.3.0). - this._ATTR_E_FACADE = null; - this._yuievt = null; - + function Attribute() { Y.AttributeCore.apply(this, arguments); - Y.AttributeEvents.apply(this, arguments); + Y.AttributeObservable.apply(this, arguments); Y.AttributeExtras.apply(this, arguments); - }; + } Y.mix(Attribute, Y.AttributeCore, false, null, 1); Y.mix(Attribute, Y.AttributeExtras, false, null, 1); // Needs to be "true", to overwrite methods from AttributeCore - Y.mix(Attribute, Y.AttributeEvents, true, null, 1); + Y.mix(Attribute, Y.AttributeObservable, true, null, 1); /** *

          The value to return from an attribute setter in order to prevent the set from going through.

          * - *

          You can return this value from your setter if you wish to combine validator and setter - * functionality into a single setter function, which either returns the massaged value to be stored or + *

          You can return this value from your setter if you wish to combine validator and setter + * functionality into a single setter function, which either returns the massaged value to be stored or * AttributeCore.INVALID_VALUE to prevent invalid values from being stored.

          * * @property INVALID_VALUE @@ -92,7 +84,7 @@ YUI.add('attribute-base', function (Y, NAME) { Attribute.INVALID_VALUE = Y.AttributeCore.INVALID_VALUE; /** - * The list of properties which can be configured for + * The list of properties which can be configured for * each attribute (e.g. setter, getter, writeOnce etc.). * * This property is used internally as a whitelist for faster @@ -103,8 +95,20 @@ YUI.add('attribute-base', function (Y, NAME) { * @static * @protected */ - Attribute._ATTR_CFG = Y.AttributeCore._ATTR_CFG.concat(Y.AttributeEvents._ATTR_CFG); + Attribute._ATTR_CFG = Y.AttributeCore._ATTR_CFG.concat(Y.AttributeObservable._ATTR_CFG); + + /** + * Utility method to protect an attribute configuration hash, by merging the + * entire object and the individual attr config objects. + * + * @method protectAttrs + * @static + * @param {Object} attrs A hash of attribute to configuration object pairs. + * @return {Object} A protected version of the `attrs` argument. + */ + Attribute.protectAttrs = Y.AttributeCore.protectAttrs; Y.Attribute = Attribute; -}, '3.7.3', {"requires": ["attribute-core", "attribute-events", "attribute-extras"]}); + +}, '3.8.0', {"requires": ["attribute-core", "attribute-observable", "attribute-extras"]}); diff --git a/lib/yuilib/3.8.0/build/attribute-complex/attribute-complex-coverage.js b/lib/yuilib/3.8.0/build/attribute-complex/attribute-complex-coverage.js new file mode 100644 index 00000000000..970fd302507 --- /dev/null +++ b/lib/yuilib/3.8.0/build/attribute-complex/attribute-complex-coverage.js @@ -0,0 +1,101 @@ +/* +YUI 3.8.0 (build 5744) +Copyright 2012 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ +if (typeof _yuitest_coverage == "undefined"){ + _yuitest_coverage = {}; + _yuitest_coverline = function(src, line){ + var coverage = _yuitest_coverage[src]; + if (!coverage.lines[line]){ + coverage.calledLines++; + } + coverage.lines[line]++; + }; + _yuitest_coverfunc = function(src, name, line){ + var coverage = _yuitest_coverage[src], + funcId = name + ":" + line; + if (!coverage.functions[funcId]){ + coverage.calledFunctions++; + } + coverage.functions[funcId]++; + }; +} +_yuitest_coverage["build/attribute-complex/attribute-complex.js"] = { + lines: {}, + functions: {}, + coveredLines: 0, + calledLines: 0, + coveredFunctions: 0, + calledFunctions: 0, + path: "build/attribute-complex/attribute-complex.js", + code: [] +}; +_yuitest_coverage["build/attribute-complex/attribute-complex.js"].code=["YUI.add('attribute-complex', function (Y, NAME) {",""," /**"," * Adds support for attribute providers to handle complex attributes in the constructor"," *"," * @module attribute"," * @submodule attribute-complex"," * @for Attribute"," * @deprecated AttributeComplex's overrides are now part of AttributeCore."," */",""," var Attribute = Y.Attribute;",""," Attribute.Complex = function() {};"," Attribute.Complex.prototype = {",""," /**"," * Utility method to split out simple attribute name/value pairs (\"x\")"," * from complex attribute name/value pairs (\"x.y.z\"), so that complex"," * attributes can be keyed by the top level attribute name."," *"," * @method _normAttrVals"," * @param {Object} valueHash An object with attribute name/value pairs"," *"," * @return {Object} An object literal with 2 properties - \"simple\" and \"complex\","," * containing simple and complex attribute values respectively keyed"," * by the top level attribute name, or null, if valueHash is falsey."," *"," * @private"," */"," _normAttrVals : Attribute.prototype._normAttrVals,",""," /**"," * Returns the initial value of the given attribute from"," * either the default configuration provided, or the"," * over-ridden value if it exists in the set of initValues"," * provided and the attribute is not read-only."," *"," * @param {String} attr The name of the attribute"," * @param {Object} cfg The attribute configuration object"," * @param {Object} initValues The object with simple and complex attribute name/value pairs returned from _normAttrVals"," *"," * @return {Any} The initial value of the attribute."," *"," * @method _getAttrInitVal"," * @private"," */"," _getAttrInitVal : Attribute.prototype._getAttrInitVal",""," };",""," // Consistency with the rest of the Attribute addons for now."," Y.AttributeComplex = Attribute.Complex;","","","}, '3.8.0', {\"requires\": [\"attribute-base\"]});"]; +_yuitest_coverage["build/attribute-complex/attribute-complex.js"].lines = {"1":0,"12":0,"14":0,"15":0,"53":0}; +_yuitest_coverage["build/attribute-complex/attribute-complex.js"].functions = {"(anonymous 1):1":0}; +_yuitest_coverage["build/attribute-complex/attribute-complex.js"].coveredLines = 5; +_yuitest_coverage["build/attribute-complex/attribute-complex.js"].coveredFunctions = 1; +_yuitest_coverline("build/attribute-complex/attribute-complex.js", 1); +YUI.add('attribute-complex', function (Y, NAME) { + + /** + * Adds support for attribute providers to handle complex attributes in the constructor + * + * @module attribute + * @submodule attribute-complex + * @for Attribute + * @deprecated AttributeComplex's overrides are now part of AttributeCore. + */ + + _yuitest_coverfunc("build/attribute-complex/attribute-complex.js", "(anonymous 1)", 1); +_yuitest_coverline("build/attribute-complex/attribute-complex.js", 12); +var Attribute = Y.Attribute; + + _yuitest_coverline("build/attribute-complex/attribute-complex.js", 14); +Attribute.Complex = function() {}; + _yuitest_coverline("build/attribute-complex/attribute-complex.js", 15); +Attribute.Complex.prototype = { + + /** + * Utility method to split out simple attribute name/value pairs ("x") + * from complex attribute name/value pairs ("x.y.z"), so that complex + * attributes can be keyed by the top level attribute name. + * + * @method _normAttrVals + * @param {Object} valueHash An object with attribute name/value pairs + * + * @return {Object} An object literal with 2 properties - "simple" and "complex", + * containing simple and complex attribute values respectively keyed + * by the top level attribute name, or null, if valueHash is falsey. + * + * @private + */ + _normAttrVals : Attribute.prototype._normAttrVals, + + /** + * Returns the initial value of the given attribute from + * either the default configuration provided, or the + * over-ridden value if it exists in the set of initValues + * provided and the attribute is not read-only. + * + * @param {String} attr The name of the attribute + * @param {Object} cfg The attribute configuration object + * @param {Object} initValues The object with simple and complex attribute name/value pairs returned from _normAttrVals + * + * @return {Any} The initial value of the attribute. + * + * @method _getAttrInitVal + * @private + */ + _getAttrInitVal : Attribute.prototype._getAttrInitVal + + }; + + // Consistency with the rest of the Attribute addons for now. + _yuitest_coverline("build/attribute-complex/attribute-complex.js", 53); +Y.AttributeComplex = Attribute.Complex; + + +}, '3.8.0', {"requires": ["attribute-base"]}); diff --git a/lib/yuilib/3.8.0/build/attribute-complex/attribute-complex-debug.js b/lib/yuilib/3.8.0/build/attribute-complex/attribute-complex-debug.js new file mode 100644 index 00000000000..fbabcc2101b --- /dev/null +++ b/lib/yuilib/3.8.0/build/attribute-complex/attribute-complex-debug.js @@ -0,0 +1,62 @@ +/* +YUI 3.8.0 (build 5744) +Copyright 2012 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ +YUI.add('attribute-complex', function (Y, NAME) { + + /** + * Adds support for attribute providers to handle complex attributes in the constructor + * + * @module attribute + * @submodule attribute-complex + * @for Attribute + * @deprecated AttributeComplex's overrides are now part of AttributeCore. + */ + + var Attribute = Y.Attribute; + + Attribute.Complex = function() {}; + Attribute.Complex.prototype = { + + /** + * Utility method to split out simple attribute name/value pairs ("x") + * from complex attribute name/value pairs ("x.y.z"), so that complex + * attributes can be keyed by the top level attribute name. + * + * @method _normAttrVals + * @param {Object} valueHash An object with attribute name/value pairs + * + * @return {Object} An object literal with 2 properties - "simple" and "complex", + * containing simple and complex attribute values respectively keyed + * by the top level attribute name, or null, if valueHash is falsey. + * + * @private + */ + _normAttrVals : Attribute.prototype._normAttrVals, + + /** + * Returns the initial value of the given attribute from + * either the default configuration provided, or the + * over-ridden value if it exists in the set of initValues + * provided and the attribute is not read-only. + * + * @param {String} attr The name of the attribute + * @param {Object} cfg The attribute configuration object + * @param {Object} initValues The object with simple and complex attribute name/value pairs returned from _normAttrVals + * + * @return {Any} The initial value of the attribute. + * + * @method _getAttrInitVal + * @private + */ + _getAttrInitVal : Attribute.prototype._getAttrInitVal + + }; + + // Consistency with the rest of the Attribute addons for now. + Y.AttributeComplex = Attribute.Complex; + + +}, '3.8.0', {"requires": ["attribute-base"]}); diff --git a/lib/yuilib/3.8.0/build/attribute-complex/attribute-complex-min.js b/lib/yuilib/3.8.0/build/attribute-complex/attribute-complex-min.js new file mode 100644 index 00000000000..69070fda0f1 --- /dev/null +++ b/lib/yuilib/3.8.0/build/attribute-complex/attribute-complex-min.js @@ -0,0 +1,7 @@ +/* +YUI 3.8.0 (build 5744) +Copyright 2012 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ +YUI.add("attribute-complex",function(e,t){var n=e.Attribute;n.Complex=function(){},n.Complex.prototype={_normAttrVals:n.prototype._normAttrVals,_getAttrInitVal:n.prototype._getAttrInitVal},e.AttributeComplex=n.Complex},"3.8.0",{requires:["attribute-base"]}); diff --git a/lib/yuilib/3.8.0/build/attribute-complex/attribute-complex.js b/lib/yuilib/3.8.0/build/attribute-complex/attribute-complex.js new file mode 100644 index 00000000000..fbabcc2101b --- /dev/null +++ b/lib/yuilib/3.8.0/build/attribute-complex/attribute-complex.js @@ -0,0 +1,62 @@ +/* +YUI 3.8.0 (build 5744) +Copyright 2012 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ +YUI.add('attribute-complex', function (Y, NAME) { + + /** + * Adds support for attribute providers to handle complex attributes in the constructor + * + * @module attribute + * @submodule attribute-complex + * @for Attribute + * @deprecated AttributeComplex's overrides are now part of AttributeCore. + */ + + var Attribute = Y.Attribute; + + Attribute.Complex = function() {}; + Attribute.Complex.prototype = { + + /** + * Utility method to split out simple attribute name/value pairs ("x") + * from complex attribute name/value pairs ("x.y.z"), so that complex + * attributes can be keyed by the top level attribute name. + * + * @method _normAttrVals + * @param {Object} valueHash An object with attribute name/value pairs + * + * @return {Object} An object literal with 2 properties - "simple" and "complex", + * containing simple and complex attribute values respectively keyed + * by the top level attribute name, or null, if valueHash is falsey. + * + * @private + */ + _normAttrVals : Attribute.prototype._normAttrVals, + + /** + * Returns the initial value of the given attribute from + * either the default configuration provided, or the + * over-ridden value if it exists in the set of initValues + * provided and the attribute is not read-only. + * + * @param {String} attr The name of the attribute + * @param {Object} cfg The attribute configuration object + * @param {Object} initValues The object with simple and complex attribute name/value pairs returned from _normAttrVals + * + * @return {Any} The initial value of the attribute. + * + * @method _getAttrInitVal + * @private + */ + _getAttrInitVal : Attribute.prototype._getAttrInitVal + + }; + + // Consistency with the rest of the Attribute addons for now. + Y.AttributeComplex = Attribute.Complex; + + +}, '3.8.0', {"requires": ["attribute-base"]}); diff --git a/lib/yuilib/3.7.3/build/attribute-core/attribute-core-coverage.js b/lib/yuilib/3.8.0/build/attribute-core/attribute-core-coverage.js similarity index 51% rename from lib/yuilib/3.7.3/build/attribute-core/attribute-core-coverage.js rename to lib/yuilib/3.8.0/build/attribute-core/attribute-core-coverage.js index 634141ea75a..0e2af6d1f73 100644 --- a/lib/yuilib/3.7.3/build/attribute-core/attribute-core-coverage.js +++ b/lib/yuilib/3.8.0/build/attribute-core/attribute-core-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,10 +32,10 @@ _yuitest_coverage["build/attribute-core/attribute-core.js"] = { path: "build/attribute-core/attribute-core.js", code: [] }; -_yuitest_coverage["build/attribute-core/attribute-core.js"].code=["YUI.add('attribute-core', function (Y, NAME) {",""," /**"," * The State class maintains state for a collection of named items, with"," * a varying number of properties defined."," *"," * It avoids the need to create a separate class for the item, and separate instances"," * of these classes for each item, by storing the state in a 2 level hash table,"," * improving performance when the number of items is likely to be large."," *"," * @constructor"," * @class State"," */"," Y.State = function() {"," /**"," * Hash of attributes"," * @property data"," */"," this.data = {};"," };",""," Y.State.prototype = {",""," /**"," * Adds a property to an item."," *"," * @method add"," * @param name {String} The name of the item."," * @param key {String} The name of the property."," * @param val {Any} The value of the property."," */"," add: function(name, key, val) {"," var item = this.data[name];",""," if (!item) {"," item = this.data[name] = {};"," }",""," item[key] = val;"," },",""," /**"," * Adds multiple properties to an item."," *"," * @method addAll"," * @param name {String} The name of the item."," * @param obj {Object} A hash of property/value pairs."," */"," addAll: function(name, obj) {"," var item = this.data[name],"," key;",""," if (!item) {"," item = this.data[name] = {};"," }",""," for (key in obj) {"," if (obj.hasOwnProperty(key)) {"," item[key] = obj[key];"," }"," }"," },",""," /**"," * Removes a property from an item."," *"," * @method remove"," * @param name {String} The name of the item."," * @param key {String} The property to remove."," */"," remove: function(name, key) {"," var item = this.data[name];",""," if (item) {"," delete item[key];"," }"," },",""," /**"," * Removes multiple properties from an item, or removes the item completely."," *"," * @method removeAll"," * @param name {String} The name of the item."," * @param obj {Object|Array} Collection of properties to delete. If not provided, the entire item is removed."," */"," removeAll: function(name, obj) {"," var data;",""," if (!obj) {"," data = this.data;",""," if (name in data) {"," delete data[name];"," }"," } else {"," Y.each(obj, function(value, key) {"," this.remove(name, typeof key === 'string' ? key : value);"," }, this);"," }"," },",""," /**"," * For a given item, returns the value of the property requested, or undefined if not found."," *"," * @method get"," * @param name {String} The name of the item"," * @param key {String} Optional. The property value to retrieve."," * @return {Any} The value of the supplied property."," */"," get: function(name, key) {"," var item = this.data[name];",""," if (item) {"," return item[key];"," }"," },",""," /**"," * For the given item, returns an object with all of the"," * item's property/value pairs. By default the object returned"," * is a shallow copy of the stored data, but passing in true"," * as the second parameter will return a reference to the stored"," * data."," *"," * @method getAll"," * @param name {String} The name of the item"," * @param reference {boolean} true, if you want a reference to the stored"," * object"," * @return {Object} An object with property/value pairs for the item."," */"," getAll : function(name, reference) {"," var item = this.data[name],"," key, obj;",""," if (reference) {"," obj = item;"," } else if (item) {"," obj = {};",""," for (key in item) {"," if (item.hasOwnProperty(key)) {"," obj[key] = item[key];"," }"," }"," }",""," return obj;"," }"," };"," /**"," * The attribute module provides an augmentable Attribute implementation, which "," * adds configurable attributes and attribute change events to the class being "," * augmented. It also provides a State class, which is used internally by Attribute,"," * but can also be used independently to provide a name/property/value data structure to"," * store state."," *"," * @module attribute"," */",""," /**"," * The attribute-core submodule provides the lightest level of attribute handling support "," * without Attribute change events, or lesser used methods such as reset(), modifyAttrs(),"," * and removeAttr()."," *"," * @module attribute"," * @submodule attribute-core"," */"," var O = Y.Object,"," Lang = Y.Lang,",""," DOT = \".\",",""," // Externally configurable props"," GETTER = \"getter\","," SETTER = \"setter\","," READ_ONLY = \"readOnly\","," WRITE_ONCE = \"writeOnce\","," INIT_ONLY = \"initOnly\","," VALIDATOR = \"validator\","," VALUE = \"value\","," VALUE_FN = \"valueFn\","," LAZY_ADD = \"lazyAdd\",",""," // Used for internal state management"," ADDED = \"added\","," BYPASS_PROXY = \"_bypassProxy\","," INITIALIZING = \"initializing\","," INIT_VALUE = \"initValue\","," LAZY = \"lazy\","," IS_LAZY_ADD = \"isLazyAdd\",",""," INVALID_VALUE;",""," /**"," *

          "," * AttributeCore provides the lightest level of configurable attribute support. It is designed to be "," * augmented on to a host class, and provides the host with the ability to configure "," * attributes to store and retrieve state, but without support for attribute change events."," *

          "," *

          For example, attributes added to the host can be configured:

          "," *
            "," *
          • As read only.
          • "," *
          • As write once.
          • "," *
          • With a setter function, which can be used to manipulate"," * values passed to Attribute's set method, before they are stored.
          • "," *
          • With a getter function, which can be used to manipulate stored values,"," * before they are returned by Attribute's get method.
          • "," *
          • With a validator function, to validate values before they are stored.
          • "," *
          "," *"," *

          See the addAttr method, for the complete set of configuration"," * options available for attributes.

          "," * "," *

          Object/Classes based on AttributeCore can augment AttributeEvents "," * (with true for overwrite) and AttributeExtras to add attribute event and "," * additional, less commonly used attribute methods, such as `modifyAttr`, `removeAttr` and `reset`.

          "," *"," * @class AttributeCore"," * @param attrs {Object} The attributes to add during construction (passed through to addAttrs). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor."," * @param values {Object} The initial attribute values to apply (passed through to addAttrs). These are not merged/cloned. The caller is responsible for isolating user provided values if required."," * @param lazy {boolean} Whether or not to add attributes lazily (passed through to addAttrs)."," */"," function AttributeCore(attrs, values, lazy) {"," this._initAttrHost(attrs, values, lazy); "," }",""," /**"," *

          The value to return from an attribute setter in order to prevent the set from going through.

          "," *"," *

          You can return this value from your setter if you wish to combine validator and setter "," * functionality into a single setter function, which either returns the massaged value to be stored or "," * AttributeCore.INVALID_VALUE to prevent invalid values from being stored.

          "," *"," * @property INVALID_VALUE"," * @type Object"," * @static"," * @final"," */"," AttributeCore.INVALID_VALUE = {};"," INVALID_VALUE = AttributeCore.INVALID_VALUE;",""," /**"," * The list of properties which can be configured for "," * each attribute (e.g. setter, getter, writeOnce etc.)."," *"," * This property is used internally as a whitelist for faster"," * Y.mix operations."," *"," * @property _ATTR_CFG"," * @type Array"," * @static"," * @protected"," */"," AttributeCore._ATTR_CFG = [SETTER, GETTER, VALIDATOR, VALUE, VALUE_FN, WRITE_ONCE, READ_ONLY, LAZY_ADD, BYPASS_PROXY];",""," AttributeCore.prototype = {",""," /**"," * Constructor logic for attributes. Initializes the host state, and sets up the inital attributes passed to the "," * constructor."," *"," * @method _initAttrHost"," * @param attrs {Object} The attributes to add during construction (passed through to addAttrs). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor."," * @param values {Object} The initial attribute values to apply (passed through to addAttrs). These are not merged/cloned. The caller is responsible for isolating user provided values if required."," * @param lazy {boolean} Whether or not to add attributes lazily (passed through to addAttrs)."," * @private"," */"," _initAttrHost : function(attrs, values, lazy) {"," this._state = new Y.State();"," this._initAttrs(attrs, values, lazy);"," },",""," /**"," *

          "," * Adds an attribute with the provided configuration to the host object."," *

          "," *

          "," * The config argument object supports the following properties:"," *

          "," * "," *
          "," *
          value <Any>
          "," *
          The initial value to set on the attribute
          "," *"," *
          valueFn <Function | String>
          "," *
          "," *

          A function, which will return the initial value to set on the attribute. This is useful"," * for cases where the attribute configuration is defined statically, but needs to "," * reference the host instance (\"this\") to obtain an initial value. If both the value and valueFn properties are defined, "," * the value returned by the valueFn has precedence over the value property, unless it returns undefined, in which "," * case the value property is used.

          "," *"," *

          valueFn can also be set to a string, representing the name of the instance method to be used to retrieve the value.

          "," *
          "," *"," *
          readOnly <boolean>
          "," *
          Whether or not the attribute is read only. Attributes having readOnly set to true"," * cannot be modified by invoking the set method.
          "," *"," *
          writeOnce <boolean> or <string>
          "," *
          "," * Whether or not the attribute is \"write once\". Attributes having writeOnce set to true, "," * can only have their values set once, be it through the default configuration, "," * constructor configuration arguments, or by invoking set."," *

          The writeOnce attribute can also be set to the string \"initOnly\", in which case the attribute can only be set during initialization"," * (when used with Base, this means it can only be set during construction)

          "," *
          "," *"," *
          setter <Function | String>
          "," *
          "," *

          The setter function used to massage or normalize the value passed to the set method for the attribute. "," * The value returned by the setter will be the final stored value. Returning"," * Attribute.INVALID_VALUE, from the setter will prevent"," * the value from being stored."," *

          "," * "," *

          setter can also be set to a string, representing the name of the instance method to be used as the setter function.

          "," *
          "," * "," *
          getter <Function | String>
          "," *
          "," *

          "," * The getter function used to massage or normalize the value returned by the get method for the attribute."," * The value returned by the getter function is the value which will be returned to the user when they "," * invoke get."," *

          "," *"," *

          getter can also be set to a string, representing the name of the instance method to be used as the getter function.

          "," *
          "," *"," *
          validator <Function | String>
          "," *
          "," *

          "," * The validator function invoked prior to setting the stored value. Returning"," * false from the validator function will prevent the value from being stored."," *

          "," * "," *

          validator can also be set to a string, representing the name of the instance method to be used as the validator function.

          "," *
          "," *"," *
          lazyAdd <boolean>
          "," *
          Whether or not to delay initialization of the attribute until the first call to get/set it. "," * This flag can be used to over-ride lazy initialization on a per attribute basis, when adding multiple attributes through "," * the addAttrs method.
          "," *"," *
          "," *"," *

          The setter, getter and validator are invoked with the value and name passed in as the first and second arguments, and with"," * the context (\"this\") set to the host object.

          "," *"," *

          Configuration properties outside of the list mentioned above are considered private properties used internally by attribute, "," * and are not intended for public use.

          "," * "," * @method addAttr"," *"," * @param {String} name The name of the attribute."," * @param {Object} config An object with attribute configuration property/value pairs, specifying the configuration for the attribute."," *"," *

          "," * NOTE: The configuration object is modified when adding an attribute, so if you need "," * to protect the original values, you will need to merge the object."," *

          "," *"," * @param {boolean} lazy (optional) Whether or not to add this attribute lazily (on the first call to get/set). "," *"," * @return {Object} A reference to the host object."," *"," * @chainable"," */"," addAttr: function(name, config, lazy) {","",""," var host = this, // help compression"," state = host._state,"," value,"," hasValue;",""," config = config || {};",""," lazy = (LAZY_ADD in config) ? config[LAZY_ADD] : lazy;",""," if (lazy && !host.attrAdded(name)) {"," state.addAll(name, {"," lazy : config,"," added : true"," });"," } else {","",""," if (!host.attrAdded(name) || state.get(name, IS_LAZY_ADD)) {",""," hasValue = (VALUE in config);","",""," if (hasValue) {"," // We'll go through set, don't want to set value in config directly"," value = config.value;"," delete config.value;"," }",""," config.added = true;"," config.initializing = true;",""," state.addAll(name, config);",""," if (hasValue) {"," // Go through set, so that raw values get normalized/validated"," host.set(name, value);"," }",""," state.remove(name, INITIALIZING);"," }"," }",""," return host;"," },",""," /**"," * Checks if the given attribute has been added to the host"," *"," * @method attrAdded"," * @param {String} name The name of the attribute to check."," * @return {boolean} true if an attribute with the given name has been added, false if it hasn't. This method will return true for lazily added attributes."," */"," attrAdded: function(name) {"," return !!this._state.get(name, ADDED);"," },",""," /**"," * Returns the current value of the attribute. If the attribute"," * has been configured with a 'getter' function, this method will delegate"," * to the 'getter' to obtain the value of the attribute."," *"," * @method get"," *"," * @param {String} name The name of the attribute. If the value of the attribute is an Object, "," * dot notation can be used to obtain the value of a property of the object (e.g. get(\"x.y.z\"))"," *"," * @return {Any} The value of the attribute"," */"," get : function(name) {"," return this._getAttr(name);"," },",""," /**"," * Checks whether or not the attribute is one which has been"," * added lazily and still requires initialization."," *"," * @method _isLazyAttr"," * @private"," * @param {String} name The name of the attribute"," * @return {boolean} true if it's a lazily added attribute, false otherwise."," */"," _isLazyAttr: function(name) {"," return this._state.get(name, LAZY);"," },",""," /**"," * Finishes initializing an attribute which has been lazily added."," *"," * @method _addLazyAttr"," * @private"," * @param {Object} name The name of the attribute"," */"," _addLazyAttr: function(name, cfg) {"," var state = this._state,"," lazyCfg = state.get(name, LAZY);",""," state.add(name, IS_LAZY_ADD, true);"," state.remove(name, LAZY);"," this.addAttr(name, lazyCfg);"," },",""," /**"," * Sets the value of an attribute."," *"," * @method set"," * @chainable"," *"," * @param {String} name The name of the attribute. If the "," * current value of the attribute is an Object, dot notation can be used"," * to set the value of a property within the object (e.g. set(\"x.y.z\", 5))."," *"," * @param {Any} value The value to set the attribute to."," *"," * @return {Object} A reference to the host object."," */"," set : function(name, val) {"," return this._setAttr(name, val);"," },",""," /**"," * Allows setting of readOnly/writeOnce attributes. See set for argument details."," *"," * @method _set"," * @protected"," * @chainable"," * "," * @param {String} name The name of the attribute."," * @param {Any} val The value to set the attribute to."," * @return {Object} A reference to the host object."," */"," _set : function(name, val) {"," return this._setAttr(name, val, null, true);"," },",""," /**"," * Provides the common implementation for the public set and protected _set methods."," *"," * See set for argument details."," *"," * @method _setAttr"," * @protected"," * @chainable"," *"," * @param {String} name The name of the attribute."," * @param {Any} value The value to set the attribute to."," * @param {Object} opts (Optional) Optional event data to be mixed into"," * the event facade passed to subscribers of the attribute's change event."," * This is currently a hack. There's no real need for the AttributeCore implementation"," * to support this parameter, but breaking it out into AttributeEvents, results in"," * additional function hops for the critical path."," * @param {boolean} force If true, allows the caller to set values for "," * readOnly or writeOnce attributes which have already been set."," *"," * @return {Object} A reference to the host object."," */"," _setAttr : function(name, val, opts, force) {"," "," // HACK - no real reason core needs to know about opts, but "," // it adds fn hops if we want to break it out. "," // Not sure it's worth it for this critical path"," "," var allowSet = true,"," state = this._state,"," stateProxy = this._stateProxy,"," cfg,"," initialSet,"," strPath,"," path,"," currVal,"," writeOnce,"," initializing;",""," if (name.indexOf(DOT) !== -1) {"," strPath = name;"," path = name.split(DOT);"," name = path.shift();"," }",""," if (this._isLazyAttr(name)) {"," this._addLazyAttr(name);"," }",""," cfg = state.getAll(name, true) || {}; ",""," initialSet = (!(VALUE in cfg));",""," if (stateProxy && name in stateProxy && !cfg._bypassProxy) {"," // TODO: Value is always set for proxy. Can we do any better? Maybe take a snapshot as the initial value for the first call to set? "," initialSet = false;"," }",""," writeOnce = cfg.writeOnce;"," initializing = cfg.initializing;",""," if (!initialSet && !force) {",""," if (writeOnce) {"," allowSet = false;"," }",""," if (cfg.readOnly) {"," allowSet = false;"," }"," }",""," if (!initializing && !force && writeOnce === INIT_ONLY) {"," allowSet = false;"," }",""," if (allowSet) {"," // Don't need currVal if initialSet (might fail in custom getter if it always expects a non-undefined/non-null value)"," if (!initialSet) {"," currVal = this.get(name);"," }",""," if (path) {"," val = O.setValue(Y.clone(currVal), path, val);",""," if (val === undefined) {"," allowSet = false;"," }"," }",""," if (allowSet) {"," if (!this._fireAttrChange || initializing) {"," this._setAttrVal(name, strPath, currVal, val);"," } else {"," // HACK - no real reason core needs to know about _fireAttrChange, but "," // it adds fn hops if we want to break it out. Not sure it's worth it for this critical path"," this._fireAttrChange(name, strPath, currVal, val, opts);"," }"," }"," }",""," return this;"," },",""," /**"," * Provides the common implementation for the public get method,"," * allowing Attribute hosts to over-ride either method."," *"," * See get for argument details."," *"," * @method _getAttr"," * @protected"," * @chainable"," *"," * @param {String} name The name of the attribute."," * @return {Any} The value of the attribute."," */"," _getAttr : function(name) {"," var host = this, // help compression"," fullName = name,"," state = host._state,"," path,"," getter,"," val,"," cfg;",""," if (name.indexOf(DOT) !== -1) {"," path = name.split(DOT);"," name = path.shift();"," }",""," // On Demand - Should be rare - handles out of order valueFn references"," if (host._tCfgs && host._tCfgs[name]) {"," cfg = {};"," cfg[name] = host._tCfgs[name];"," delete host._tCfgs[name];"," host._addAttrs(cfg, host._tVals);"," }"," "," // Lazy Init"," if (host._isLazyAttr(name)) {"," host._addLazyAttr(name);"," }",""," val = host._getStateVal(name);"," "," getter = state.get(name, GETTER);",""," if (getter && !getter.call) {"," getter = this[getter];"," }",""," val = (getter) ? getter.call(host, val, fullName) : val;"," val = (path) ? O.getValue(val, path) : val;",""," return val;"," },",""," /**"," * Gets the stored value for the attribute, from either the "," * internal state object, or the state proxy if it exits"," * "," * @method _getStateVal"," * @private"," * @param {String} name The name of the attribute"," * @return {Any} The stored value of the attribute"," */"," _getStateVal : function(name) {"," var stateProxy = this._stateProxy;"," return stateProxy && (name in stateProxy) && !this._state.get(name, BYPASS_PROXY) ? stateProxy[name] : this._state.get(name, VALUE);"," },",""," /**"," * Sets the stored value for the attribute, in either the "," * internal state object, or the state proxy if it exits"," *"," * @method _setStateVal"," * @private"," * @param {String} name The name of the attribute"," * @param {Any} value The value of the attribute"," */"," _setStateVal : function(name, value) {"," var stateProxy = this._stateProxy;"," if (stateProxy && (name in stateProxy) && !this._state.get(name, BYPASS_PROXY)) {"," stateProxy[name] = value;"," } else {"," this._state.add(name, VALUE, value);"," }"," },",""," /**"," * Updates the stored value of the attribute in the privately held State object,"," * if validation and setter passes."," *"," * @method _setAttrVal"," * @private"," * @param {String} attrName The attribute name."," * @param {String} subAttrName The sub-attribute name, if setting a sub-attribute property (\"x.y.z\")."," * @param {Any} prevVal The currently stored value of the attribute."," * @param {Any} newVal The value which is going to be stored."," * "," * @return {booolean} true if the new attribute value was stored, false if not."," */"," _setAttrVal : function(attrName, subAttrName, prevVal, newVal) {",""," var host = this,"," allowSet = true,"," cfg = this._state.getAll(attrName, true) || {},"," validator = cfg.validator,"," setter = cfg.setter,"," initializing = cfg.initializing,"," prevRawVal = this._getStateVal(attrName),"," name = subAttrName || attrName,"," retVal,"," valid;",""," if (validator) {"," if (!validator.call) { "," // Assume string - trying to keep critical path tight, so avoiding Lang check"," validator = this[validator];"," }"," if (validator) {"," valid = validator.call(host, newVal, name);",""," if (!valid && initializing) {"," newVal = cfg.defaultValue;"," valid = true; // Assume it's valid, for perf."," }"," }"," }",""," if (!validator || valid) {"," if (setter) {"," if (!setter.call) {"," // Assume string - trying to keep critical path tight, so avoiding Lang check"," setter = this[setter];"," }"," if (setter) {"," retVal = setter.call(host, newVal, name);",""," if (retVal === INVALID_VALUE) {"," allowSet = false;"," } else if (retVal !== undefined){"," newVal = retVal;"," }"," }"," }",""," if (allowSet) {"," if(!subAttrName && (newVal === prevRawVal) && !Lang.isObject(newVal)) {"," allowSet = false;"," } else {"," // Store value"," if (!(INIT_VALUE in cfg)) {"," cfg.initValue = newVal;"," }"," host._setStateVal(attrName, newVal);"," }"," }",""," } else {"," allowSet = false;"," }",""," return allowSet;"," },",""," /**"," * Sets multiple attribute values."," *"," * @method setAttrs"," * @param {Object} attrs An object with attributes name/value pairs."," * @return {Object} A reference to the host object."," * @chainable"," */"," setAttrs : function(attrs) {"," return this._setAttrs(attrs);"," },",""," /**"," * Implementation behind the public setAttrs method, to set multiple attribute values."," *"," * @method _setAttrs"," * @protected"," * @param {Object} attrs An object with attributes name/value pairs."," * @return {Object} A reference to the host object."," * @chainable"," */"," _setAttrs : function(attrs) {"," var attr;"," for (attr in attrs) {"," if ( attrs.hasOwnProperty(attr) ) {"," this.set(attr, attrs[attr]);"," }"," }"," return this;"," },",""," /**"," * Gets multiple attribute values."," *"," * @method getAttrs"," * @param {Array | boolean} attrs Optional. An array of attribute names. If omitted, all attribute values are"," * returned. If set to true, all attributes modified from their initial values are returned."," * @return {Object} An object with attribute name/value pairs."," */"," getAttrs : function(attrs) {"," return this._getAttrs(attrs);"," },",""," /**"," * Implementation behind the public getAttrs method, to get multiple attribute values."," *"," * @method _getAttrs"," * @protected"," * @param {Array | boolean} attrs Optional. An array of attribute names. If omitted, all attribute values are"," * returned. If set to true, all attributes modified from their initial values are returned."," * @return {Object} An object with attribute name/value pairs."," */"," _getAttrs : function(attrs) {"," var obj = {},"," attr, i, len,"," modifiedOnly = (attrs === true);",""," // TODO - figure out how to get all \"added\""," if (!attrs || modifiedOnly) {"," attrs = O.keys(this._state.data);"," }",""," for (i = 0, len = attrs.length; i < len; i++) {"," attr = attrs[i];",""," if (!modifiedOnly || this._getStateVal(attr) != this._state.get(attr, INIT_VALUE)) {"," // Go through get, to honor cloning/normalization"," obj[attr] = this.get(attr);"," }"," }",""," return obj;"," },",""," /**"," * Configures a group of attributes, and sets initial values."," *"," *

          "," * NOTE: This method does not isolate the configuration object by merging/cloning. "," * The caller is responsible for merging/cloning the configuration object if required."," *

          "," *"," * @method addAttrs"," * @chainable"," *"," * @param {Object} cfgs An object with attribute name/configuration pairs."," * @param {Object} values An object with attribute name/value pairs, defining the initial values to apply."," * Values defined in the cfgs argument will be over-written by values in this argument unless defined as read only."," * @param {boolean} lazy Whether or not to delay the intialization of these attributes until the first call to get/set."," * Individual attributes can over-ride this behavior by defining a lazyAdd configuration property in their configuration."," * See addAttr."," * "," * @return {Object} A reference to the host object."," */"," addAttrs : function(cfgs, values, lazy) {"," var host = this; // help compression"," if (cfgs) {"," host._tCfgs = cfgs;"," host._tVals = host._normAttrVals(values);"," host._addAttrs(cfgs, host._tVals, lazy);"," host._tCfgs = host._tVals = null;"," }",""," return host;"," },",""," /**"," * Implementation behind the public addAttrs method. "," * "," * This method is invoked directly by get if it encounters a scenario "," * in which an attribute's valueFn attempts to obtain the "," * value an attribute in the same group of attributes, which has not yet "," * been added (on demand initialization)."," *"," * @method _addAttrs"," * @private"," * @param {Object} cfgs An object with attribute name/configuration pairs."," * @param {Object} values An object with attribute name/value pairs, defining the initial values to apply."," * Values defined in the cfgs argument will be over-written by values in this argument unless defined as read only."," * @param {boolean} lazy Whether or not to delay the intialization of these attributes until the first call to get/set."," * Individual attributes can over-ride this behavior by defining a lazyAdd configuration property in their configuration."," * See addAttr."," */"," _addAttrs : function(cfgs, values, lazy) {"," var host = this, // help compression"," attr,"," attrCfg,"," value;",""," for (attr in cfgs) {"," if (cfgs.hasOwnProperty(attr)) {",""," // Not Merging. Caller is responsible for isolating configs"," attrCfg = cfgs[attr];"," attrCfg.defaultValue = attrCfg.value;",""," // Handle simple, complex and user values, accounting for read-only"," value = host._getAttrInitVal(attr, attrCfg, host._tVals);",""," if (value !== undefined) {"," attrCfg.value = value;"," }",""," if (host._tCfgs[attr]) {"," delete host._tCfgs[attr];"," }",""," host.addAttr(attr, attrCfg, lazy);"," }"," }"," },",""," /**"," * Utility method to protect an attribute configuration"," * hash, by merging the entire object and the individual "," * attr config objects. "," *"," * @method _protectAttrs"," * @protected"," * @param {Object} attrs A hash of attribute to configuration object pairs."," * @return {Object} A protected version of the attrs argument."," */"," _protectAttrs : function(attrs) {"," if (attrs) {"," attrs = Y.merge(attrs);"," for (var attr in attrs) {"," if (attrs.hasOwnProperty(attr)) {"," attrs[attr] = Y.merge(attrs[attr]);"," }"," }"," }"," return attrs;"," },",""," /**"," * Utility method to normalize attribute values. The base implementation "," * simply merges the hash to protect the original."," *"," * @method _normAttrVals"," * @param {Object} valueHash An object with attribute name/value pairs"," *"," * @return {Object}"," *"," * @private"," */"," _normAttrVals : function(valueHash) {"," return (valueHash) ? Y.merge(valueHash) : null;"," },",""," /**"," * Returns the initial value of the given attribute from"," * either the default configuration provided, or the "," * over-ridden value if it exists in the set of initValues "," * provided and the attribute is not read-only."," *"," * @param {String} attr The name of the attribute"," * @param {Object} cfg The attribute configuration object"," * @param {Object} initValues The object with simple and complex attribute name/value pairs returned from _normAttrVals"," *"," * @return {Any} The initial value of the attribute."," *"," * @method _getAttrInitVal"," * @private"," */"," _getAttrInitVal : function(attr, cfg, initValues) {"," var val, valFn;"," // init value is provided by the user if it exists, else, provided by the config"," if (!cfg.readOnly && initValues && initValues.hasOwnProperty(attr)) {"," val = initValues[attr];"," } else {"," val = cfg.value;"," valFn = cfg.valueFn;"," "," if (valFn) {"," if (!valFn.call) {"," valFn = this[valFn];"," }"," if (valFn) {"," val = valFn.call(this, attr);"," }"," }"," }","",""," return val;"," },",""," /**"," * Utility method to set up initial attributes defined during construction, either through the constructor.ATTRS property, or explicitly passed in."," * "," * @method _initAttrs"," * @protected"," * @param attrs {Object} The attributes to add during construction (passed through to addAttrs). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor."," * @param values {Object} The initial attribute values to apply (passed through to addAttrs). These are not merged/cloned. The caller is responsible for isolating user provided values if required."," * @param lazy {boolean} Whether or not to add attributes lazily (passed through to addAttrs)."," */"," _initAttrs : function(attrs, values, lazy) {"," // ATTRS support for Node, which is not Base based"," attrs = attrs || this.constructor.ATTRS;"," "," var Base = Y.Base,"," BaseCore = Y.BaseCore,"," baseInst = (Base && Y.instanceOf(this, Base)),"," baseCoreInst = (!baseInst && BaseCore && Y.instanceOf(this, BaseCore));",""," if ( attrs && !baseInst && !baseCoreInst) {"," this.addAttrs(this._protectAttrs(attrs), values, lazy);"," }"," }"," };",""," Y.AttributeCore = AttributeCore;","","","}, '3.7.3', {\"requires\": [\"oop\"]});"]; -_yuitest_coverage["build/attribute-core/attribute-core.js"].lines = {"1":0,"14":0,"19":0,"22":0,"33":0,"35":0,"36":0,"39":0,"50":0,"53":0,"54":0,"57":0,"58":0,"59":0,"72":0,"74":0,"75":0,"87":0,"89":0,"90":0,"92":0,"93":0,"96":0,"97":0,"111":0,"113":0,"114":0,"132":0,"135":0,"136":0,"137":0,"138":0,"140":0,"141":0,"142":0,"147":0,"168":0,"223":0,"224":0,"239":0,"240":0,"254":0,"256":0,"269":0,"270":0,"373":0,"378":0,"380":0,"382":0,"383":0,"390":0,"392":0,"395":0,"397":0,"398":0,"401":0,"402":0,"404":0,"406":0,"408":0,"411":0,"415":0,"426":0,"442":0,"455":0,"466":0,"469":0,"470":0,"471":0,"489":0,"504":0,"534":0,"545":0,"546":0,"547":0,"548":0,"551":0,"552":0,"555":0,"557":0,"559":0,"561":0,"564":0,"565":0,"567":0,"569":0,"570":0,"573":0,"574":0,"578":0,"579":0,"582":0,"584":0,"585":0,"588":0,"589":0,"591":0,"592":0,"596":0,"597":0,"598":0,"602":0,"607":0,"624":0,"632":0,"633":0,"634":0,"638":0,"639":0,"640":0,"641":0,"642":0,"646":0,"647":0,"650":0,"652":0,"654":0,"655":0,"658":0,"659":0,"661":0,"674":0,"675":0,"688":0,"689":0,"690":0,"692":0,"711":0,"722":0,"723":0,"725":0,"727":0,"728":0,"730":0,"731":0,"732":0,"737":0,"738":0,"739":0,"741":0,"743":0,"744":0,"746":0,"747":0,"748":0,"749":0,"754":0,"755":0,"756":0,"759":0,"760":0,"762":0,"767":0,"770":0,"782":0,"795":0,"796":0,"797":0,"798":0,"801":0,"813":0,"826":0,"831":0,"832":0,"835":0,"836":0,"838":0,"840":0,"844":0,"868":0,"869":0,"870":0,"871":0,"872":0,"873":0,"876":0,"897":0,"902":0,"903":0,"906":0,"907":0,"910":0,"912":0,"913":0,"916":0,"917":0,"920":0,"936":0,"937":0,"938":0,"939":0,"940":0,"944":0,"959":0,"978":0,"980":0,"981":0,"983":0,"984":0,"986":0,"987":0,"988":0,"990":0,"991":0,"997":0,"1011":0,"1013":0,"1018":0,"1019":0,"1024":0}; -_yuitest_coverage["build/attribute-core/attribute-core.js"].functions = {"State:14":0,"add:32":0,"addAll:49":0,"remove:71":0,"(anonymous 2):96":0,"removeAll:86":0,"get:110":0,"getAll:131":0,"AttributeCore:223":0,"_initAttrHost:268":0,"addAttr:370":0,"attrAdded:425":0,"get:441":0,"_isLazyAttr:454":0,"_addLazyAttr:465":0,"set:488":0,"_set:503":0,"_setAttr:528":0,"_getAttr:623":0,"_getStateVal:673":0,"_setStateVal:687":0,"_setAttrVal:709":0,"setAttrs:781":0,"_setAttrs:794":0,"getAttrs:812":0,"_getAttrs:825":0,"addAttrs:867":0,"_addAttrs:896":0,"_protectAttrs:935":0,"_normAttrVals:958":0,"_getAttrInitVal:977":0,"_initAttrs:1009":0,"(anonymous 1):1":0}; -_yuitest_coverage["build/attribute-core/attribute-core.js"].coveredLines = 210; +_yuitest_coverage["build/attribute-core/attribute-core.js"].code=["YUI.add('attribute-core', function (Y, NAME) {",""," /**"," * The State class maintains state for a collection of named items, with"," * a varying number of properties defined."," *"," * It avoids the need to create a separate class for the item, and separate instances"," * of these classes for each item, by storing the state in a 2 level hash table,"," * improving performance when the number of items is likely to be large."," *"," * @constructor"," * @class State"," */"," Y.State = function() {"," /**"," * Hash of attributes"," * @property data"," */"," this.data = {};"," };",""," Y.State.prototype = {",""," /**"," * Adds a property to an item."," *"," * @method add"," * @param name {String} The name of the item."," * @param key {String} The name of the property."," * @param val {Any} The value of the property."," */"," add: function(name, key, val) {"," var item = this.data[name];",""," if (!item) {"," item = this.data[name] = {};"," }",""," item[key] = val;"," },",""," /**"," * Adds multiple properties to an item."," *"," * @method addAll"," * @param name {String} The name of the item."," * @param obj {Object} A hash of property/value pairs."," */"," addAll: function(name, obj) {"," var item = this.data[name],"," key;",""," if (!item) {"," item = this.data[name] = {};"," }",""," for (key in obj) {"," if (obj.hasOwnProperty(key)) {"," item[key] = obj[key];"," }"," }"," },",""," /**"," * Removes a property from an item."," *"," * @method remove"," * @param name {String} The name of the item."," * @param key {String} The property to remove."," */"," remove: function(name, key) {"," var item = this.data[name];",""," if (item) {"," delete item[key];"," }"," },",""," /**"," * Removes multiple properties from an item, or removes the item completely."," *"," * @method removeAll"," * @param name {String} The name of the item."," * @param obj {Object|Array} Collection of properties to delete. If not provided, the entire item is removed."," */"," removeAll: function(name, obj) {"," var data;",""," if (!obj) {"," data = this.data;",""," if (name in data) {"," delete data[name];"," }"," } else {"," Y.each(obj, function(value, key) {"," this.remove(name, typeof key === 'string' ? key : value);"," }, this);"," }"," },",""," /**"," * For a given item, returns the value of the property requested, or undefined if not found."," *"," * @method get"," * @param name {String} The name of the item"," * @param key {String} Optional. The property value to retrieve."," * @return {Any} The value of the supplied property."," */"," get: function(name, key) {"," var item = this.data[name];",""," if (item) {"," return item[key];"," }"," },",""," /**"," * For the given item, returns an object with all of the"," * item's property/value pairs. By default the object returned"," * is a shallow copy of the stored data, but passing in true"," * as the second parameter will return a reference to the stored"," * data."," *"," * @method getAll"," * @param name {String} The name of the item"," * @param reference {boolean} true, if you want a reference to the stored"," * object"," * @return {Object} An object with property/value pairs for the item."," */"," getAll : function(name, reference) {"," var item = this.data[name],"," key, obj;",""," if (reference) {"," obj = item;"," } else if (item) {"," obj = {};",""," for (key in item) {"," if (item.hasOwnProperty(key)) {"," obj[key] = item[key];"," }"," }"," }",""," return obj;"," }"," };"," /**"," * The attribute module provides an augmentable Attribute implementation, which"," * adds configurable attributes and attribute change events to the class being"," * augmented. It also provides a State class, which is used internally by Attribute,"," * but can also be used independently to provide a name/property/value data structure to"," * store state."," *"," * @module attribute"," */",""," /**"," * The attribute-core submodule provides the lightest level of attribute handling support"," * without Attribute change events, or lesser used methods such as reset(), modifyAttrs(),"," * and removeAttr()."," *"," * @module attribute"," * @submodule attribute-core"," */"," var O = Y.Object,"," Lang = Y.Lang,",""," DOT = \".\",",""," // Externally configurable props"," GETTER = \"getter\","," SETTER = \"setter\","," READ_ONLY = \"readOnly\","," WRITE_ONCE = \"writeOnce\","," INIT_ONLY = \"initOnly\","," VALIDATOR = \"validator\","," VALUE = \"value\","," VALUE_FN = \"valueFn\","," LAZY_ADD = \"lazyAdd\",",""," // Used for internal state management"," ADDED = \"added\","," BYPASS_PROXY = \"_bypassProxy\","," INITIALIZING = \"initializing\","," INIT_VALUE = \"initValue\","," LAZY = \"lazy\","," IS_LAZY_ADD = \"isLazyAdd\",",""," INVALID_VALUE;",""," /**"," *

          "," * AttributeCore provides the lightest level of configurable attribute support. It is designed to be"," * augmented on to a host class, and provides the host with the ability to configure"," * attributes to store and retrieve state, but without support for attribute change events."," *

          "," *

          For example, attributes added to the host can be configured:

          "," *
            "," *
          • As read only.
          • "," *
          • As write once.
          • "," *
          • With a setter function, which can be used to manipulate"," * values passed to Attribute's set method, before they are stored.
          • "," *
          • With a getter function, which can be used to manipulate stored values,"," * before they are returned by Attribute's get method.
          • "," *
          • With a validator function, to validate values before they are stored.
          • "," *
          "," *"," *

          See the addAttr method, for the complete set of configuration"," * options available for attributes.

          "," *"," *

          Object/Classes based on AttributeCore can augment AttributeObservable"," * (with true for overwrite) and AttributeExtras to add attribute event and"," * additional, less commonly used attribute methods, such as `modifyAttr`, `removeAttr` and `reset`.

          "," *"," * @class AttributeCore"," * @param attrs {Object} The attributes to add during construction (passed through to addAttrs). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor."," * @param values {Object} The initial attribute values to apply (passed through to addAttrs). These are not merged/cloned. The caller is responsible for isolating user provided values if required."," * @param lazy {boolean} Whether or not to add attributes lazily (passed through to addAttrs)."," */"," function AttributeCore(attrs, values, lazy) {"," // HACK: Fix #2531929"," // Complete hack, to make sure the first clone of a node value in IE doesn't doesn't hurt state - maintains 3.4.1 behavior."," // Too late in the release cycle to do anything about the core problem."," // The root issue is that cloning a Y.Node instance results in an object which barfs in IE, when you access it's properties (since 3.3.0)."," this._yuievt = null;",""," this._initAttrHost(attrs, values, lazy);"," }",""," /**"," *

          The value to return from an attribute setter in order to prevent the set from going through.

          "," *"," *

          You can return this value from your setter if you wish to combine validator and setter"," * functionality into a single setter function, which either returns the massaged value to be stored or"," * AttributeCore.INVALID_VALUE to prevent invalid values from being stored.

          "," *"," * @property INVALID_VALUE"," * @type Object"," * @static"," * @final"," */"," AttributeCore.INVALID_VALUE = {};"," INVALID_VALUE = AttributeCore.INVALID_VALUE;",""," /**"," * The list of properties which can be configured for"," * each attribute (e.g. setter, getter, writeOnce etc.)."," *"," * This property is used internally as a whitelist for faster"," * Y.mix operations."," *"," * @property _ATTR_CFG"," * @type Array"," * @static"," * @protected"," */"," AttributeCore._ATTR_CFG = [SETTER, GETTER, VALIDATOR, VALUE, VALUE_FN, WRITE_ONCE, READ_ONLY, LAZY_ADD, BYPASS_PROXY];",""," /**"," * Utility method to protect an attribute configuration hash, by merging the"," * entire object and the individual attr config objects."," *"," * @method protectAttrs"," * @static"," * @param {Object} attrs A hash of attribute to configuration object pairs."," * @return {Object} A protected version of the `attrs` argument."," */"," AttributeCore.protectAttrs = function (attrs) {"," if (attrs) {"," attrs = Y.merge(attrs);"," for (var attr in attrs) {"," if (attrs.hasOwnProperty(attr)) {"," attrs[attr] = Y.merge(attrs[attr]);"," }"," }"," }",""," return attrs;"," };",""," AttributeCore.prototype = {",""," /**"," * Constructor logic for attributes. Initializes the host state, and sets up the inital attributes passed to the"," * constructor."," *"," * @method _initAttrHost"," * @param attrs {Object} The attributes to add during construction (passed through to addAttrs). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor."," * @param values {Object} The initial attribute values to apply (passed through to addAttrs). These are not merged/cloned. The caller is responsible for isolating user provided values if required."," * @param lazy {boolean} Whether or not to add attributes lazily (passed through to addAttrs)."," * @private"," */"," _initAttrHost : function(attrs, values, lazy) {"," this._state = new Y.State();"," this._initAttrs(attrs, values, lazy);"," },",""," /**"," *

          "," * Adds an attribute with the provided configuration to the host object."," *

          "," *

          "," * The config argument object supports the following properties:"," *

          "," *"," *
          "," *
          value <Any>
          "," *
          The initial value to set on the attribute
          "," *"," *
          valueFn <Function | String>
          "," *
          "," *

          A function, which will return the initial value to set on the attribute. This is useful"," * for cases where the attribute configuration is defined statically, but needs to"," * reference the host instance (\"this\") to obtain an initial value. If both the value and valueFn properties are defined,"," * the value returned by the valueFn has precedence over the value property, unless it returns undefined, in which"," * case the value property is used.

          "," *"," *

          valueFn can also be set to a string, representing the name of the instance method to be used to retrieve the value.

          "," *
          "," *"," *
          readOnly <boolean>
          "," *
          Whether or not the attribute is read only. Attributes having readOnly set to true"," * cannot be modified by invoking the set method.
          "," *"," *
          writeOnce <boolean> or <string>
          "," *
          "," * Whether or not the attribute is \"write once\". Attributes having writeOnce set to true,"," * can only have their values set once, be it through the default configuration,"," * constructor configuration arguments, or by invoking set."," *

          The writeOnce attribute can also be set to the string \"initOnly\", in which case the attribute can only be set during initialization"," * (when used with Base, this means it can only be set during construction)

          "," *
          "," *"," *
          setter <Function | String>
          "," *
          "," *

          The setter function used to massage or normalize the value passed to the set method for the attribute."," * The value returned by the setter will be the final stored value. Returning"," * Attribute.INVALID_VALUE, from the setter will prevent"," * the value from being stored."," *

          "," *"," *

          setter can also be set to a string, representing the name of the instance method to be used as the setter function.

          "," *
          "," *"," *
          getter <Function | String>
          "," *
          "," *

          "," * The getter function used to massage or normalize the value returned by the get method for the attribute."," * The value returned by the getter function is the value which will be returned to the user when they"," * invoke get."," *

          "," *"," *

          getter can also be set to a string, representing the name of the instance method to be used as the getter function.

          "," *
          "," *"," *
          validator <Function | String>
          "," *
          "," *

          "," * The validator function invoked prior to setting the stored value. Returning"," * false from the validator function will prevent the value from being stored."," *

          "," *"," *

          validator can also be set to a string, representing the name of the instance method to be used as the validator function.

          "," *
          "," *"," *
          lazyAdd <boolean>
          "," *
          Whether or not to delay initialization of the attribute until the first call to get/set it."," * This flag can be used to over-ride lazy initialization on a per attribute basis, when adding multiple attributes through"," * the addAttrs method.
          "," *"," *
          "," *"," *

          The setter, getter and validator are invoked with the value and name passed in as the first and second arguments, and with"," * the context (\"this\") set to the host object.

          "," *"," *

          Configuration properties outside of the list mentioned above are considered private properties used internally by attribute,"," * and are not intended for public use.

          "," *"," * @method addAttr"," *"," * @param {String} name The name of the attribute."," * @param {Object} config An object with attribute configuration property/value pairs, specifying the configuration for the attribute."," *"," *

          "," * NOTE: The configuration object is modified when adding an attribute, so if you need"," * to protect the original values, you will need to merge the object."," *

          "," *"," * @param {boolean} lazy (optional) Whether or not to add this attribute lazily (on the first call to get/set)."," *"," * @return {Object} A reference to the host object."," *"," * @chainable"," */"," addAttr: function(name, config, lazy) {","",""," var host = this, // help compression"," state = host._state,"," value,"," hasValue;",""," config = config || {};",""," lazy = (LAZY_ADD in config) ? config[LAZY_ADD] : lazy;",""," if (lazy && !host.attrAdded(name)) {"," state.addAll(name, {"," lazy : config,"," added : true"," });"," } else {","",""," if (!host.attrAdded(name) || state.get(name, IS_LAZY_ADD)) {",""," hasValue = (VALUE in config);","",""," if (hasValue) {"," // We'll go through set, don't want to set value in config directly"," value = config.value;"," delete config.value;"," }",""," config.added = true;"," config.initializing = true;",""," state.addAll(name, config);",""," if (hasValue) {"," // Go through set, so that raw values get normalized/validated"," host.set(name, value);"," }",""," state.remove(name, INITIALIZING);"," }"," }",""," return host;"," },",""," /**"," * Checks if the given attribute has been added to the host"," *"," * @method attrAdded"," * @param {String} name The name of the attribute to check."," * @return {boolean} true if an attribute with the given name has been added, false if it hasn't. This method will return true for lazily added attributes."," */"," attrAdded: function(name) {"," return !!this._state.get(name, ADDED);"," },",""," /**"," * Returns the current value of the attribute. If the attribute"," * has been configured with a 'getter' function, this method will delegate"," * to the 'getter' to obtain the value of the attribute."," *"," * @method get"," *"," * @param {String} name The name of the attribute. If the value of the attribute is an Object,"," * dot notation can be used to obtain the value of a property of the object (e.g. get(\"x.y.z\"))"," *"," * @return {Any} The value of the attribute"," */"," get : function(name) {"," return this._getAttr(name);"," },",""," /**"," * Checks whether or not the attribute is one which has been"," * added lazily and still requires initialization."," *"," * @method _isLazyAttr"," * @private"," * @param {String} name The name of the attribute"," * @return {boolean} true if it's a lazily added attribute, false otherwise."," */"," _isLazyAttr: function(name) {"," return this._state.get(name, LAZY);"," },",""," /**"," * Finishes initializing an attribute which has been lazily added."," *"," * @method _addLazyAttr"," * @private"," * @param {Object} name The name of the attribute"," */"," _addLazyAttr: function(name, cfg) {"," var state = this._state,"," lazyCfg = state.get(name, LAZY);",""," state.add(name, IS_LAZY_ADD, true);"," state.remove(name, LAZY);"," this.addAttr(name, lazyCfg);"," },",""," /**"," * Sets the value of an attribute."," *"," * @method set"," * @chainable"," *"," * @param {String} name The name of the attribute. If the"," * current value of the attribute is an Object, dot notation can be used"," * to set the value of a property within the object (e.g. set(\"x.y.z\", 5))."," *"," * @param {Any} value The value to set the attribute to."," *"," * @return {Object} A reference to the host object."," */"," set : function(name, val) {"," return this._setAttr(name, val);"," },",""," /**"," * Allows setting of readOnly/writeOnce attributes. See set for argument details."," *"," * @method _set"," * @protected"," * @chainable"," *"," * @param {String} name The name of the attribute."," * @param {Any} val The value to set the attribute to."," * @return {Object} A reference to the host object."," */"," _set : function(name, val) {"," return this._setAttr(name, val, null, true);"," },",""," /**"," * Provides the common implementation for the public set and protected _set methods."," *"," * See set for argument details."," *"," * @method _setAttr"," * @protected"," * @chainable"," *"," * @param {String} name The name of the attribute."," * @param {Any} value The value to set the attribute to."," * @param {Object} opts (Optional) Optional event data to be mixed into"," * the event facade passed to subscribers of the attribute's change event."," * This is currently a hack. There's no real need for the AttributeCore implementation"," * to support this parameter, but breaking it out into AttributeObservable, results in"," * additional function hops for the critical path."," * @param {boolean} force If true, allows the caller to set values for"," * readOnly or writeOnce attributes which have already been set."," *"," * @return {Object} A reference to the host object."," */"," _setAttr : function(name, val, opts, force) {",""," // HACK - no real reason core needs to know about opts, but"," // it adds fn hops if we want to break it out."," // Not sure it's worth it for this critical path",""," var allowSet = true,"," state = this._state,"," stateProxy = this._stateProxy,"," cfg,"," initialSet,"," strPath,"," path,"," currVal,"," writeOnce,"," initializing;",""," if (name.indexOf(DOT) !== -1) {"," strPath = name;"," path = name.split(DOT);"," name = path.shift();"," }",""," if (this._isLazyAttr(name)) {"," this._addLazyAttr(name);"," }",""," cfg = state.getAll(name, true) || {};",""," initialSet = (!(VALUE in cfg));",""," if (stateProxy && name in stateProxy && !cfg._bypassProxy) {"," // TODO: Value is always set for proxy. Can we do any better? Maybe take a snapshot as the initial value for the first call to set?"," initialSet = false;"," }",""," writeOnce = cfg.writeOnce;"," initializing = cfg.initializing;",""," if (!initialSet && !force) {",""," if (writeOnce) {"," allowSet = false;"," }",""," if (cfg.readOnly) {"," allowSet = false;"," }"," }",""," if (!initializing && !force && writeOnce === INIT_ONLY) {"," allowSet = false;"," }",""," if (allowSet) {"," // Don't need currVal if initialSet (might fail in custom getter if it always expects a non-undefined/non-null value)"," if (!initialSet) {"," currVal = this.get(name);"," }",""," if (path) {"," val = O.setValue(Y.clone(currVal), path, val);",""," if (val === undefined) {"," allowSet = false;"," }"," }",""," if (allowSet) {"," if (!this._fireAttrChange || initializing) {"," this._setAttrVal(name, strPath, currVal, val);"," } else {"," // HACK - no real reason core needs to know about _fireAttrChange, but"," // it adds fn hops if we want to break it out. Not sure it's worth it for this critical path"," this._fireAttrChange(name, strPath, currVal, val, opts);"," }"," }"," }",""," return this;"," },",""," /**"," * Provides the common implementation for the public get method,"," * allowing Attribute hosts to over-ride either method."," *"," * See get for argument details."," *"," * @method _getAttr"," * @protected"," * @chainable"," *"," * @param {String} name The name of the attribute."," * @return {Any} The value of the attribute."," */"," _getAttr : function(name) {"," var host = this, // help compression"," fullName = name,"," state = host._state,"," path,"," getter,"," val,"," cfg;",""," if (name.indexOf(DOT) !== -1) {"," path = name.split(DOT);"," name = path.shift();"," }",""," // On Demand - Should be rare - handles out of order valueFn references"," if (host._tCfgs && host._tCfgs[name]) {"," cfg = {};"," cfg[name] = host._tCfgs[name];"," delete host._tCfgs[name];"," host._addAttrs(cfg, host._tVals);"," }",""," // Lazy Init"," if (host._isLazyAttr(name)) {"," host._addLazyAttr(name);"," }",""," val = host._getStateVal(name);",""," getter = state.get(name, GETTER);",""," if (getter && !getter.call) {"," getter = this[getter];"," }",""," val = (getter) ? getter.call(host, val, fullName) : val;"," val = (path) ? O.getValue(val, path) : val;",""," return val;"," },",""," /**"," * Gets the stored value for the attribute, from either the"," * internal state object, or the state proxy if it exits"," *"," * @method _getStateVal"," * @private"," * @param {String} name The name of the attribute"," * @return {Any} The stored value of the attribute"," */"," _getStateVal : function(name) {"," var stateProxy = this._stateProxy;"," return stateProxy && (name in stateProxy) && !this._state.get(name, BYPASS_PROXY) ? stateProxy[name] : this._state.get(name, VALUE);"," },",""," /**"," * Sets the stored value for the attribute, in either the"," * internal state object, or the state proxy if it exits"," *"," * @method _setStateVal"," * @private"," * @param {String} name The name of the attribute"," * @param {Any} value The value of the attribute"," */"," _setStateVal : function(name, value) {"," var stateProxy = this._stateProxy;"," if (stateProxy && (name in stateProxy) && !this._state.get(name, BYPASS_PROXY)) {"," stateProxy[name] = value;"," } else {"," this._state.add(name, VALUE, value);"," }"," },",""," /**"," * Updates the stored value of the attribute in the privately held State object,"," * if validation and setter passes."," *"," * @method _setAttrVal"," * @private"," * @param {String} attrName The attribute name."," * @param {String} subAttrName The sub-attribute name, if setting a sub-attribute property (\"x.y.z\")."," * @param {Any} prevVal The currently stored value of the attribute."," * @param {Any} newVal The value which is going to be stored."," *"," * @return {booolean} true if the new attribute value was stored, false if not."," */"," _setAttrVal : function(attrName, subAttrName, prevVal, newVal) {",""," var host = this,"," allowSet = true,"," cfg = this._state.getAll(attrName, true) || {},"," validator = cfg.validator,"," setter = cfg.setter,"," initializing = cfg.initializing,"," prevRawVal = this._getStateVal(attrName),"," name = subAttrName || attrName,"," retVal,"," valid;",""," if (validator) {"," if (!validator.call) {"," // Assume string - trying to keep critical path tight, so avoiding Lang check"," validator = this[validator];"," }"," if (validator) {"," valid = validator.call(host, newVal, name);",""," if (!valid && initializing) {"," newVal = cfg.defaultValue;"," valid = true; // Assume it's valid, for perf."," }"," }"," }",""," if (!validator || valid) {"," if (setter) {"," if (!setter.call) {"," // Assume string - trying to keep critical path tight, so avoiding Lang check"," setter = this[setter];"," }"," if (setter) {"," retVal = setter.call(host, newVal, name);",""," if (retVal === INVALID_VALUE) {"," allowSet = false;"," } else if (retVal !== undefined){"," newVal = retVal;"," }"," }"," }",""," if (allowSet) {"," if(!subAttrName && (newVal === prevRawVal) && !Lang.isObject(newVal)) {"," allowSet = false;"," } else {"," // Store value"," if (!(INIT_VALUE in cfg)) {"," cfg.initValue = newVal;"," }"," host._setStateVal(attrName, newVal);"," }"," }",""," } else {"," allowSet = false;"," }",""," return allowSet;"," },",""," /**"," * Sets multiple attribute values."," *"," * @method setAttrs"," * @param {Object} attrs An object with attributes name/value pairs."," * @return {Object} A reference to the host object."," * @chainable"," */"," setAttrs : function(attrs) {"," return this._setAttrs(attrs);"," },",""," /**"," * Implementation behind the public setAttrs method, to set multiple attribute values."," *"," * @method _setAttrs"," * @protected"," * @param {Object} attrs An object with attributes name/value pairs."," * @return {Object} A reference to the host object."," * @chainable"," */"," _setAttrs : function(attrs) {"," var attr;"," for (attr in attrs) {"," if ( attrs.hasOwnProperty(attr) ) {"," this.set(attr, attrs[attr]);"," }"," }"," return this;"," },",""," /**"," * Gets multiple attribute values."," *"," * @method getAttrs"," * @param {Array | boolean} attrs Optional. An array of attribute names. If omitted, all attribute values are"," * returned. If set to true, all attributes modified from their initial values are returned."," * @return {Object} An object with attribute name/value pairs."," */"," getAttrs : function(attrs) {"," return this._getAttrs(attrs);"," },",""," /**"," * Implementation behind the public getAttrs method, to get multiple attribute values."," *"," * @method _getAttrs"," * @protected"," * @param {Array | boolean} attrs Optional. An array of attribute names. If omitted, all attribute values are"," * returned. If set to true, all attributes modified from their initial values are returned."," * @return {Object} An object with attribute name/value pairs."," */"," _getAttrs : function(attrs) {"," var obj = {},"," attr, i, len,"," modifiedOnly = (attrs === true);",""," // TODO - figure out how to get all \"added\""," if (!attrs || modifiedOnly) {"," attrs = O.keys(this._state.data);"," }",""," for (i = 0, len = attrs.length; i < len; i++) {"," attr = attrs[i];",""," if (!modifiedOnly || this._getStateVal(attr) != this._state.get(attr, INIT_VALUE)) {"," // Go through get, to honor cloning/normalization"," obj[attr] = this.get(attr);"," }"," }",""," return obj;"," },",""," /**"," * Configures a group of attributes, and sets initial values."," *"," *

          "," * NOTE: This method does not isolate the configuration object by merging/cloning."," * The caller is responsible for merging/cloning the configuration object if required."," *

          "," *"," * @method addAttrs"," * @chainable"," *"," * @param {Object} cfgs An object with attribute name/configuration pairs."," * @param {Object} values An object with attribute name/value pairs, defining the initial values to apply."," * Values defined in the cfgs argument will be over-written by values in this argument unless defined as read only."," * @param {boolean} lazy Whether or not to delay the intialization of these attributes until the first call to get/set."," * Individual attributes can over-ride this behavior by defining a lazyAdd configuration property in their configuration."," * See addAttr."," *"," * @return {Object} A reference to the host object."," */"," addAttrs : function(cfgs, values, lazy) {"," var host = this; // help compression"," if (cfgs) {"," host._tCfgs = cfgs;"," host._tVals = host._normAttrVals(values);"," host._addAttrs(cfgs, host._tVals, lazy);"," host._tCfgs = host._tVals = null;"," }",""," return host;"," },",""," /**"," * Implementation behind the public addAttrs method."," *"," * This method is invoked directly by get if it encounters a scenario"," * in which an attribute's valueFn attempts to obtain the"," * value an attribute in the same group of attributes, which has not yet"," * been added (on demand initialization)."," *"," * @method _addAttrs"," * @private"," * @param {Object} cfgs An object with attribute name/configuration pairs."," * @param {Object} values An object with attribute name/value pairs, defining the initial values to apply."," * Values defined in the cfgs argument will be over-written by values in this argument unless defined as read only."," * @param {boolean} lazy Whether or not to delay the intialization of these attributes until the first call to get/set."," * Individual attributes can over-ride this behavior by defining a lazyAdd configuration property in their configuration."," * See addAttr."," */"," _addAttrs : function(cfgs, values, lazy) {"," var host = this, // help compression"," attr,"," attrCfg,"," value;",""," for (attr in cfgs) {"," if (cfgs.hasOwnProperty(attr)) {",""," // Not Merging. Caller is responsible for isolating configs"," attrCfg = cfgs[attr];"," attrCfg.defaultValue = attrCfg.value;",""," // Handle simple, complex and user values, accounting for read-only"," value = host._getAttrInitVal(attr, attrCfg, host._tVals);",""," if (value !== undefined) {"," attrCfg.value = value;"," }",""," if (host._tCfgs[attr]) {"," delete host._tCfgs[attr];"," }",""," host.addAttr(attr, attrCfg, lazy);"," }"," }"," },",""," /**"," * Utility method to protect an attribute configuration"," * hash, by merging the entire object and the individual"," * attr config objects."," *"," * @method _protectAttrs"," * @protected"," * @param {Object} attrs A hash of attribute to configuration object pairs."," * @return {Object} A protected version of the attrs argument."," * @deprecated Use `AttributeCore.protectAttrs()` or"," * `Attribute.protectAttrs()` which are the same static utility method."," */"," _protectAttrs : AttributeCore.protectAttrs,",""," /**"," * Utility method to split out simple attribute name/value pairs (\"x\")"," * from complex attribute name/value pairs (\"x.y.z\"), so that complex"," * attributes can be keyed by the top level attribute name."," *"," * @method _normAttrVals"," * @param {Object} valueHash An object with attribute name/value pairs"," *"," * @return {Object} An object literal with 2 properties - \"simple\" and \"complex\","," * containing simple and complex attribute values respectively keyed"," * by the top level attribute name, or null, if valueHash is falsey."," *"," * @private"," */"," _normAttrVals : function(valueHash) {"," var vals = {},"," subvals = {},"," path,"," attr,"," v, k;",""," if (valueHash) {"," for (k in valueHash) {"," if (valueHash.hasOwnProperty(k)) {"," if (k.indexOf(DOT) !== -1) {"," path = k.split(DOT);"," attr = path.shift();"," v = subvals[attr] = subvals[attr] || [];"," v[v.length] = {"," path : path,"," value: valueHash[k]"," };"," } else {"," vals[k] = valueHash[k];"," }"," }"," }"," return { simple:vals, complex:subvals };"," } else {"," return null;"," }"," },",""," /**"," * Returns the initial value of the given attribute from"," * either the default configuration provided, or the"," * over-ridden value if it exists in the set of initValues"," * provided and the attribute is not read-only."," *"," * @param {String} attr The name of the attribute"," * @param {Object} cfg The attribute configuration object"," * @param {Object} initValues The object with simple and complex attribute name/value pairs returned from _normAttrVals"," *"," * @return {Any} The initial value of the attribute."," *"," * @method _getAttrInitVal"," * @private"," */"," _getAttrInitVal : function(attr, cfg, initValues) {",""," var val = cfg.value,"," valFn = cfg.valueFn,"," tmpVal,"," initValSet = false,"," simple,"," complex,"," i,"," l,"," path,"," subval,"," subvals;",""," if (!cfg.readOnly && initValues) {"," // Simple Attributes"," simple = initValues.simple;"," if (simple && simple.hasOwnProperty(attr)) {"," val = simple[attr];"," initValSet = true;"," }"," }",""," if (valFn && !initValSet) {"," if (!valFn.call) {"," valFn = this[valFn];"," }"," if (valFn) {"," tmpVal = valFn.call(this, attr);"," val = tmpVal;"," }"," }",""," if (!cfg.readOnly && initValues) {",""," // Complex Attributes (complex values applied, after simple, in case both are set)"," complex = initValues.complex;",""," if (complex && complex.hasOwnProperty(attr) && (val !== undefined) && (val !== null)) {"," subvals = complex[attr];"," for (i = 0, l = subvals.length; i < l; ++i) {"," path = subvals[i].path;"," subval = subvals[i].value;"," O.setValue(val, path, subval);"," }"," }"," }",""," return val;"," },",""," /**"," * Utility method to set up initial attributes defined during construction, either through the constructor.ATTRS property, or explicitly passed in."," *"," * @method _initAttrs"," * @protected"," * @param attrs {Object} The attributes to add during construction (passed through to addAttrs). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor."," * @param values {Object} The initial attribute values to apply (passed through to addAttrs). These are not merged/cloned. The caller is responsible for isolating user provided values if required."," * @param lazy {boolean} Whether or not to add attributes lazily (passed through to addAttrs)."," */"," _initAttrs : function(attrs, values, lazy) {"," // ATTRS support for Node, which is not Base based"," attrs = attrs || this.constructor.ATTRS;",""," var Base = Y.Base,"," BaseCore = Y.BaseCore,"," baseInst = (Base && Y.instanceOf(this, Base)),"," baseCoreInst = (!baseInst && BaseCore && Y.instanceOf(this, BaseCore));",""," if (attrs && !baseInst && !baseCoreInst) {"," this.addAttrs(Y.AttributeCore.protectAttrs(attrs), values, lazy);"," }"," }"," };",""," Y.AttributeCore = AttributeCore;","","","}, '3.8.0', {\"requires\": [\"oop\"]});"]; +_yuitest_coverage["build/attribute-core/attribute-core.js"].lines = {"1":0,"14":0,"19":0,"22":0,"33":0,"35":0,"36":0,"39":0,"50":0,"53":0,"54":0,"57":0,"58":0,"59":0,"72":0,"74":0,"75":0,"87":0,"89":0,"90":0,"92":0,"93":0,"96":0,"97":0,"111":0,"113":0,"114":0,"132":0,"135":0,"136":0,"137":0,"138":0,"140":0,"141":0,"142":0,"147":0,"168":0,"223":0,"228":0,"230":0,"245":0,"246":0,"260":0,"271":0,"272":0,"273":0,"274":0,"275":0,"276":0,"281":0,"284":0,"297":0,"298":0,"401":0,"406":0,"408":0,"410":0,"411":0,"418":0,"420":0,"423":0,"425":0,"426":0,"429":0,"430":0,"432":0,"434":0,"436":0,"439":0,"443":0,"454":0,"470":0,"483":0,"494":0,"497":0,"498":0,"499":0,"517":0,"532":0,"562":0,"573":0,"574":0,"575":0,"576":0,"579":0,"580":0,"583":0,"585":0,"587":0,"589":0,"592":0,"593":0,"595":0,"597":0,"598":0,"601":0,"602":0,"606":0,"607":0,"610":0,"612":0,"613":0,"616":0,"617":0,"619":0,"620":0,"624":0,"625":0,"626":0,"630":0,"635":0,"652":0,"660":0,"661":0,"662":0,"666":0,"667":0,"668":0,"669":0,"670":0,"674":0,"675":0,"678":0,"680":0,"682":0,"683":0,"686":0,"687":0,"689":0,"702":0,"703":0,"716":0,"717":0,"718":0,"720":0,"739":0,"750":0,"751":0,"753":0,"755":0,"756":0,"758":0,"759":0,"760":0,"765":0,"766":0,"767":0,"769":0,"771":0,"772":0,"774":0,"775":0,"776":0,"777":0,"782":0,"783":0,"784":0,"787":0,"788":0,"790":0,"795":0,"798":0,"810":0,"823":0,"824":0,"825":0,"826":0,"829":0,"841":0,"854":0,"859":0,"860":0,"863":0,"864":0,"866":0,"868":0,"872":0,"896":0,"897":0,"898":0,"899":0,"900":0,"901":0,"904":0,"925":0,"930":0,"931":0,"934":0,"935":0,"938":0,"940":0,"941":0,"944":0,"945":0,"948":0,"982":0,"988":0,"989":0,"990":0,"991":0,"992":0,"993":0,"994":0,"995":0,"1000":0,"1004":0,"1006":0,"1027":0,"1039":0,"1041":0,"1042":0,"1043":0,"1044":0,"1048":0,"1049":0,"1050":0,"1052":0,"1053":0,"1054":0,"1058":0,"1061":0,"1063":0,"1064":0,"1065":0,"1066":0,"1067":0,"1068":0,"1073":0,"1087":0,"1089":0,"1094":0,"1095":0,"1100":0}; +_yuitest_coverage["build/attribute-core/attribute-core.js"].functions = {"State:14":0,"add:32":0,"addAll:49":0,"remove:71":0,"(anonymous 2):96":0,"removeAll:86":0,"get:110":0,"getAll:131":0,"AttributeCore:223":0,"protectAttrs:271":0,"_initAttrHost:296":0,"addAttr:398":0,"attrAdded:453":0,"get:469":0,"_isLazyAttr:482":0,"_addLazyAttr:493":0,"set:516":0,"_set:531":0,"_setAttr:556":0,"_getAttr:651":0,"_getStateVal:701":0,"_setStateVal:715":0,"_setAttrVal:737":0,"setAttrs:809":0,"_setAttrs:822":0,"getAttrs:840":0,"_getAttrs:853":0,"addAttrs:895":0,"_addAttrs:924":0,"_normAttrVals:981":0,"_getAttrInitVal:1025":0,"_initAttrs:1085":0,"(anonymous 1):1":0}; +_yuitest_coverage["build/attribute-core/attribute-core.js"].coveredLines = 233; _yuitest_coverage["build/attribute-core/attribute-core.js"].coveredFunctions = 33; _yuitest_coverline("build/attribute-core/attribute-core.js", 1); YUI.add('attribute-core', function (Y, NAME) { @@ -232,8 +232,8 @@ return obj; } }; /** - * The attribute module provides an augmentable Attribute implementation, which - * adds configurable attributes and attribute change events to the class being + * The attribute module provides an augmentable Attribute implementation, which + * adds configurable attributes and attribute change events to the class being * augmented. It also provides a State class, which is used internally by Attribute, * but can also be used independently to provide a name/property/value data structure to * store state. @@ -242,7 +242,7 @@ return obj; */ /** - * The attribute-core submodule provides the lightest level of attribute handling support + * The attribute-core submodule provides the lightest level of attribute handling support * without Attribute change events, or lesser used methods such as reset(), modifyAttrs(), * and removeAttr(). * @@ -278,8 +278,8 @@ var O = Y.Object, /** *

          - * AttributeCore provides the lightest level of configurable attribute support. It is designed to be - * augmented on to a host class, and provides the host with the ability to configure + * AttributeCore provides the lightest level of configurable attribute support. It is designed to be + * augmented on to a host class, and provides the host with the ability to configure * attributes to store and retrieve state, but without support for attribute change events. *

          *

          For example, attributes added to the host can be configured:

          @@ -295,10 +295,10 @@ var O = Y.Object, * *

          See the addAttr method, for the complete set of configuration * options available for attributes.

          - * - *

          Object/Classes based on AttributeCore can augment AttributeEvents - * (with true for overwrite) and AttributeExtras to add attribute event and - * additional, less commonly used attribute methods, such as `modifyAttr`, `removeAttr` and `reset`.

          + * + *

          Object/Classes based on AttributeCore can augment AttributeObservable + * (with true for overwrite) and AttributeExtras to add attribute event and + * additional, less commonly used attribute methods, such as `modifyAttr`, `removeAttr` and `reset`.

          * * @class AttributeCore * @param attrs {Object} The attributes to add during construction (passed through to addAttrs). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor. @@ -307,16 +307,23 @@ var O = Y.Object, */ _yuitest_coverline("build/attribute-core/attribute-core.js", 223); function AttributeCore(attrs, values, lazy) { + // HACK: Fix #2531929 + // Complete hack, to make sure the first clone of a node value in IE doesn't doesn't hurt state - maintains 3.4.1 behavior. + // Too late in the release cycle to do anything about the core problem. + // The root issue is that cloning a Y.Node instance results in an object which barfs in IE, when you access it's properties (since 3.3.0). _yuitest_coverfunc("build/attribute-core/attribute-core.js", "AttributeCore", 223); -_yuitest_coverline("build/attribute-core/attribute-core.js", 224); -this._initAttrHost(attrs, values, lazy); +_yuitest_coverline("build/attribute-core/attribute-core.js", 228); +this._yuievt = null; + + _yuitest_coverline("build/attribute-core/attribute-core.js", 230); +this._initAttrHost(attrs, values, lazy); } /** *

          The value to return from an attribute setter in order to prevent the set from going through.

          * - *

          You can return this value from your setter if you wish to combine validator and setter - * functionality into a single setter function, which either returns the massaged value to be stored or + *

          You can return this value from your setter if you wish to combine validator and setter + * functionality into a single setter function, which either returns the massaged value to be stored or * AttributeCore.INVALID_VALUE to prevent invalid values from being stored.

          * * @property INVALID_VALUE @@ -324,13 +331,13 @@ this._initAttrHost(attrs, values, lazy); * @static * @final */ - _yuitest_coverline("build/attribute-core/attribute-core.js", 239); + _yuitest_coverline("build/attribute-core/attribute-core.js", 245); AttributeCore.INVALID_VALUE = {}; - _yuitest_coverline("build/attribute-core/attribute-core.js", 240); + _yuitest_coverline("build/attribute-core/attribute-core.js", 246); INVALID_VALUE = AttributeCore.INVALID_VALUE; /** - * The list of properties which can be configured for + * The list of properties which can be configured for * each attribute (e.g. setter, getter, writeOnce etc.). * * This property is used internally as a whitelist for faster @@ -341,14 +348,44 @@ INVALID_VALUE = AttributeCore.INVALID_VALUE; * @static * @protected */ - _yuitest_coverline("build/attribute-core/attribute-core.js", 254); + _yuitest_coverline("build/attribute-core/attribute-core.js", 260); AttributeCore._ATTR_CFG = [SETTER, GETTER, VALIDATOR, VALUE, VALUE_FN, WRITE_ONCE, READ_ONLY, LAZY_ADD, BYPASS_PROXY]; - _yuitest_coverline("build/attribute-core/attribute-core.js", 256); + /** + * Utility method to protect an attribute configuration hash, by merging the + * entire object and the individual attr config objects. + * + * @method protectAttrs + * @static + * @param {Object} attrs A hash of attribute to configuration object pairs. + * @return {Object} A protected version of the `attrs` argument. + */ + _yuitest_coverline("build/attribute-core/attribute-core.js", 271); +AttributeCore.protectAttrs = function (attrs) { + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "protectAttrs", 271); +_yuitest_coverline("build/attribute-core/attribute-core.js", 272); +if (attrs) { + _yuitest_coverline("build/attribute-core/attribute-core.js", 273); +attrs = Y.merge(attrs); + _yuitest_coverline("build/attribute-core/attribute-core.js", 274); +for (var attr in attrs) { + _yuitest_coverline("build/attribute-core/attribute-core.js", 275); +if (attrs.hasOwnProperty(attr)) { + _yuitest_coverline("build/attribute-core/attribute-core.js", 276); +attrs[attr] = Y.merge(attrs[attr]); + } + } + } + + _yuitest_coverline("build/attribute-core/attribute-core.js", 281); +return attrs; + }; + + _yuitest_coverline("build/attribute-core/attribute-core.js", 284); AttributeCore.prototype = { /** - * Constructor logic for attributes. Initializes the host state, and sets up the inital attributes passed to the + * Constructor logic for attributes. Initializes the host state, and sets up the inital attributes passed to the * constructor. * * @method _initAttrHost @@ -358,10 +395,10 @@ AttributeCore.prototype = { * @private */ _initAttrHost : function(attrs, values, lazy) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_initAttrHost", 268); -_yuitest_coverline("build/attribute-core/attribute-core.js", 269); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_initAttrHost", 296); +_yuitest_coverline("build/attribute-core/attribute-core.js", 297); this._state = new Y.State(); - _yuitest_coverline("build/attribute-core/attribute-core.js", 270); + _yuitest_coverline("build/attribute-core/attribute-core.js", 298); this._initAttrs(attrs, values, lazy); }, @@ -372,7 +409,7 @@ this._initAttrs(attrs, values, lazy); *

          * The config argument object supports the following properties: *

          - * + * *
          *
          value <Any>
          *
          The initial value to set on the attribute
          @@ -380,9 +417,9 @@ this._initAttrs(attrs, values, lazy); *
          valueFn <Function | String>
          *
          *

          A function, which will return the initial value to set on the attribute. This is useful - * for cases where the attribute configuration is defined statically, but needs to - * reference the host instance ("this") to obtain an initial value. If both the value and valueFn properties are defined, - * the value returned by the valueFn has precedence over the value property, unless it returns undefined, in which + * for cases where the attribute configuration is defined statically, but needs to + * reference the host instance ("this") to obtain an initial value. If both the value and valueFn properties are defined, + * the value returned by the valueFn has precedence over the value property, unless it returns undefined, in which * case the value property is used.

          * *

          valueFn can also be set to a string, representing the name of the instance method to be used to retrieve the value.

          @@ -394,8 +431,8 @@ this._initAttrs(attrs, values, lazy); * *
          writeOnce <boolean> or <string>
          *
          - * Whether or not the attribute is "write once". Attributes having writeOnce set to true, - * can only have their values set once, be it through the default configuration, + * Whether or not the attribute is "write once". Attributes having writeOnce set to true, + * can only have their values set once, be it through the default configuration, * constructor configuration arguments, or by invoking set. *

          The writeOnce attribute can also be set to the string "initOnly", in which case the attribute can only be set during initialization * (when used with Base, this means it can only be set during construction)

          @@ -403,20 +440,20 @@ this._initAttrs(attrs, values, lazy); * *
          setter <Function | String>
          *
          - *

          The setter function used to massage or normalize the value passed to the set method for the attribute. + *

          The setter function used to massage or normalize the value passed to the set method for the attribute. * The value returned by the setter will be the final stored value. Returning * Attribute.INVALID_VALUE, from the setter will prevent * the value from being stored. *

          - * + * *

          setter can also be set to a string, representing the name of the instance method to be used as the setter function.

          *
          - * + * *
          getter <Function | String>
          *
          *

          * The getter function used to massage or normalize the value returned by the get method for the attribute. - * The value returned by the getter function is the value which will be returned to the user when they + * The value returned by the getter function is the value which will be returned to the user when they * invoke get. *

          * @@ -429,13 +466,13 @@ this._initAttrs(attrs, values, lazy); * The validator function invoked prior to setting the stored value. Returning * false from the validator function will prevent the value from being stored. *

          - * + * *

          validator can also be set to a string, representing the name of the instance method to be used as the validator function.

          *
          * *
          lazyAdd <boolean>
          - *
          Whether or not to delay initialization of the attribute until the first call to get/set it. - * This flag can be used to over-ride lazy initialization on a per attribute basis, when adding multiple attributes through + *
          Whether or not to delay initialization of the attribute until the first call to get/set it. + * This flag can be used to over-ride lazy initialization on a per attribute basis, when adding multiple attributes through * the addAttrs method.
          * *
          @@ -443,20 +480,20 @@ this._initAttrs(attrs, values, lazy); *

          The setter, getter and validator are invoked with the value and name passed in as the first and second arguments, and with * the context ("this") set to the host object.

          * - *

          Configuration properties outside of the list mentioned above are considered private properties used internally by attribute, + *

          Configuration properties outside of the list mentioned above are considered private properties used internally by attribute, * and are not intended for public use.

          - * + * * @method addAttr * * @param {String} name The name of the attribute. * @param {Object} config An object with attribute configuration property/value pairs, specifying the configuration for the attribute. * *

          - * NOTE: The configuration object is modified when adding an attribute, so if you need + * NOTE: The configuration object is modified when adding an attribute, so if you need * to protect the original values, you will need to merge the object. *

          * - * @param {boolean} lazy (optional) Whether or not to add this attribute lazily (on the first call to get/set). + * @param {boolean} lazy (optional) Whether or not to add this attribute lazily (on the first call to get/set). * * @return {Object} A reference to the host object. * @@ -465,22 +502,22 @@ this._initAttrs(attrs, values, lazy); addAttr: function(name, config, lazy) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "addAttr", 370); -_yuitest_coverline("build/attribute-core/attribute-core.js", 373); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "addAttr", 398); +_yuitest_coverline("build/attribute-core/attribute-core.js", 401); var host = this, // help compression state = host._state, value, hasValue; - _yuitest_coverline("build/attribute-core/attribute-core.js", 378); + _yuitest_coverline("build/attribute-core/attribute-core.js", 406); config = config || {}; - _yuitest_coverline("build/attribute-core/attribute-core.js", 380); + _yuitest_coverline("build/attribute-core/attribute-core.js", 408); lazy = (LAZY_ADD in config) ? config[LAZY_ADD] : lazy; - _yuitest_coverline("build/attribute-core/attribute-core.js", 382); + _yuitest_coverline("build/attribute-core/attribute-core.js", 410); if (lazy && !host.attrAdded(name)) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 383); + _yuitest_coverline("build/attribute-core/attribute-core.js", 411); state.addAll(name, { lazy : config, added : true @@ -488,43 +525,43 @@ state.addAll(name, { } else { - _yuitest_coverline("build/attribute-core/attribute-core.js", 390); + _yuitest_coverline("build/attribute-core/attribute-core.js", 418); if (!host.attrAdded(name) || state.get(name, IS_LAZY_ADD)) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 392); + _yuitest_coverline("build/attribute-core/attribute-core.js", 420); hasValue = (VALUE in config); - _yuitest_coverline("build/attribute-core/attribute-core.js", 395); + _yuitest_coverline("build/attribute-core/attribute-core.js", 423); if (hasValue) { // We'll go through set, don't want to set value in config directly - _yuitest_coverline("build/attribute-core/attribute-core.js", 397); + _yuitest_coverline("build/attribute-core/attribute-core.js", 425); value = config.value; - _yuitest_coverline("build/attribute-core/attribute-core.js", 398); + _yuitest_coverline("build/attribute-core/attribute-core.js", 426); delete config.value; } - _yuitest_coverline("build/attribute-core/attribute-core.js", 401); + _yuitest_coverline("build/attribute-core/attribute-core.js", 429); config.added = true; - _yuitest_coverline("build/attribute-core/attribute-core.js", 402); + _yuitest_coverline("build/attribute-core/attribute-core.js", 430); config.initializing = true; - _yuitest_coverline("build/attribute-core/attribute-core.js", 404); + _yuitest_coverline("build/attribute-core/attribute-core.js", 432); state.addAll(name, config); - _yuitest_coverline("build/attribute-core/attribute-core.js", 406); + _yuitest_coverline("build/attribute-core/attribute-core.js", 434); if (hasValue) { // Go through set, so that raw values get normalized/validated - _yuitest_coverline("build/attribute-core/attribute-core.js", 408); + _yuitest_coverline("build/attribute-core/attribute-core.js", 436); host.set(name, value); } - _yuitest_coverline("build/attribute-core/attribute-core.js", 411); + _yuitest_coverline("build/attribute-core/attribute-core.js", 439); state.remove(name, INITIALIZING); } } - _yuitest_coverline("build/attribute-core/attribute-core.js", 415); + _yuitest_coverline("build/attribute-core/attribute-core.js", 443); return host; }, @@ -536,8 +573,8 @@ return host; * @return {boolean} true if an attribute with the given name has been added, false if it hasn't. This method will return true for lazily added attributes. */ attrAdded: function(name) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "attrAdded", 425); -_yuitest_coverline("build/attribute-core/attribute-core.js", 426); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "attrAdded", 453); +_yuitest_coverline("build/attribute-core/attribute-core.js", 454); return !!this._state.get(name, ADDED); }, @@ -548,14 +585,14 @@ return !!this._state.get(name, ADDED); * * @method get * - * @param {String} name The name of the attribute. If the value of the attribute is an Object, + * @param {String} name The name of the attribute. If the value of the attribute is an Object, * dot notation can be used to obtain the value of a property of the object (e.g. get("x.y.z")) * * @return {Any} The value of the attribute */ get : function(name) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "get", 441); -_yuitest_coverline("build/attribute-core/attribute-core.js", 442); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "get", 469); +_yuitest_coverline("build/attribute-core/attribute-core.js", 470); return this._getAttr(name); }, @@ -569,8 +606,8 @@ return this._getAttr(name); * @return {boolean} true if it's a lazily added attribute, false otherwise. */ _isLazyAttr: function(name) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_isLazyAttr", 454); -_yuitest_coverline("build/attribute-core/attribute-core.js", 455); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_isLazyAttr", 482); +_yuitest_coverline("build/attribute-core/attribute-core.js", 483); return this._state.get(name, LAZY); }, @@ -582,16 +619,16 @@ return this._state.get(name, LAZY); * @param {Object} name The name of the attribute */ _addLazyAttr: function(name, cfg) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_addLazyAttr", 465); -_yuitest_coverline("build/attribute-core/attribute-core.js", 466); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_addLazyAttr", 493); +_yuitest_coverline("build/attribute-core/attribute-core.js", 494); var state = this._state, lazyCfg = state.get(name, LAZY); - _yuitest_coverline("build/attribute-core/attribute-core.js", 469); + _yuitest_coverline("build/attribute-core/attribute-core.js", 497); state.add(name, IS_LAZY_ADD, true); - _yuitest_coverline("build/attribute-core/attribute-core.js", 470); + _yuitest_coverline("build/attribute-core/attribute-core.js", 498); state.remove(name, LAZY); - _yuitest_coverline("build/attribute-core/attribute-core.js", 471); + _yuitest_coverline("build/attribute-core/attribute-core.js", 499); this.addAttr(name, lazyCfg); }, @@ -601,7 +638,7 @@ this.addAttr(name, lazyCfg); * @method set * @chainable * - * @param {String} name The name of the attribute. If the + * @param {String} name The name of the attribute. If the * current value of the attribute is an Object, dot notation can be used * to set the value of a property within the object (e.g. set("x.y.z", 5)). * @@ -610,8 +647,8 @@ this.addAttr(name, lazyCfg); * @return {Object} A reference to the host object. */ set : function(name, val) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "set", 488); -_yuitest_coverline("build/attribute-core/attribute-core.js", 489); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "set", 516); +_yuitest_coverline("build/attribute-core/attribute-core.js", 517); return this._setAttr(name, val); }, @@ -621,14 +658,14 @@ return this._setAttr(name, val); * @method _set * @protected * @chainable - * + * * @param {String} name The name of the attribute. * @param {Any} val The value to set the attribute to. * @return {Object} A reference to the host object. */ _set : function(name, val) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_set", 503); -_yuitest_coverline("build/attribute-core/attribute-core.js", 504); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_set", 531); +_yuitest_coverline("build/attribute-core/attribute-core.js", 532); return this._setAttr(name, val, null, true); }, @@ -646,21 +683,21 @@ return this._setAttr(name, val, null, true); * @param {Object} opts (Optional) Optional event data to be mixed into * the event facade passed to subscribers of the attribute's change event. * This is currently a hack. There's no real need for the AttributeCore implementation - * to support this parameter, but breaking it out into AttributeEvents, results in + * to support this parameter, but breaking it out into AttributeObservable, results in * additional function hops for the critical path. - * @param {boolean} force If true, allows the caller to set values for + * @param {boolean} force If true, allows the caller to set values for * readOnly or writeOnce attributes which have already been set. * * @return {Object} A reference to the host object. */ _setAttr : function(name, val, opts, force) { - - // HACK - no real reason core needs to know about opts, but - // it adds fn hops if we want to break it out. + + // HACK - no real reason core needs to know about opts, but + // it adds fn hops if we want to break it out. // Not sure it's worth it for this critical path - - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_setAttr", 528); -_yuitest_coverline("build/attribute-core/attribute-core.js", 534); + + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_setAttr", 556); +_yuitest_coverline("build/attribute-core/attribute-core.js", 562); var allowSet = true, state = this._state, stateProxy = this._stateProxy, @@ -672,99 +709,99 @@ var allowSet = true, writeOnce, initializing; - _yuitest_coverline("build/attribute-core/attribute-core.js", 545); + _yuitest_coverline("build/attribute-core/attribute-core.js", 573); if (name.indexOf(DOT) !== -1) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 546); + _yuitest_coverline("build/attribute-core/attribute-core.js", 574); strPath = name; - _yuitest_coverline("build/attribute-core/attribute-core.js", 547); + _yuitest_coverline("build/attribute-core/attribute-core.js", 575); path = name.split(DOT); - _yuitest_coverline("build/attribute-core/attribute-core.js", 548); + _yuitest_coverline("build/attribute-core/attribute-core.js", 576); name = path.shift(); } - _yuitest_coverline("build/attribute-core/attribute-core.js", 551); + _yuitest_coverline("build/attribute-core/attribute-core.js", 579); if (this._isLazyAttr(name)) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 552); + _yuitest_coverline("build/attribute-core/attribute-core.js", 580); this._addLazyAttr(name); } - _yuitest_coverline("build/attribute-core/attribute-core.js", 555); -cfg = state.getAll(name, true) || {}; + _yuitest_coverline("build/attribute-core/attribute-core.js", 583); +cfg = state.getAll(name, true) || {}; - _yuitest_coverline("build/attribute-core/attribute-core.js", 557); + _yuitest_coverline("build/attribute-core/attribute-core.js", 585); initialSet = (!(VALUE in cfg)); - _yuitest_coverline("build/attribute-core/attribute-core.js", 559); + _yuitest_coverline("build/attribute-core/attribute-core.js", 587); if (stateProxy && name in stateProxy && !cfg._bypassProxy) { - // TODO: Value is always set for proxy. Can we do any better? Maybe take a snapshot as the initial value for the first call to set? - _yuitest_coverline("build/attribute-core/attribute-core.js", 561); + // TODO: Value is always set for proxy. Can we do any better? Maybe take a snapshot as the initial value for the first call to set? + _yuitest_coverline("build/attribute-core/attribute-core.js", 589); initialSet = false; } - _yuitest_coverline("build/attribute-core/attribute-core.js", 564); + _yuitest_coverline("build/attribute-core/attribute-core.js", 592); writeOnce = cfg.writeOnce; - _yuitest_coverline("build/attribute-core/attribute-core.js", 565); + _yuitest_coverline("build/attribute-core/attribute-core.js", 593); initializing = cfg.initializing; - _yuitest_coverline("build/attribute-core/attribute-core.js", 567); + _yuitest_coverline("build/attribute-core/attribute-core.js", 595); if (!initialSet && !force) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 569); + _yuitest_coverline("build/attribute-core/attribute-core.js", 597); if (writeOnce) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 570); + _yuitest_coverline("build/attribute-core/attribute-core.js", 598); allowSet = false; } - _yuitest_coverline("build/attribute-core/attribute-core.js", 573); + _yuitest_coverline("build/attribute-core/attribute-core.js", 601); if (cfg.readOnly) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 574); + _yuitest_coverline("build/attribute-core/attribute-core.js", 602); allowSet = false; } } - _yuitest_coverline("build/attribute-core/attribute-core.js", 578); + _yuitest_coverline("build/attribute-core/attribute-core.js", 606); if (!initializing && !force && writeOnce === INIT_ONLY) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 579); + _yuitest_coverline("build/attribute-core/attribute-core.js", 607); allowSet = false; } - _yuitest_coverline("build/attribute-core/attribute-core.js", 582); + _yuitest_coverline("build/attribute-core/attribute-core.js", 610); if (allowSet) { // Don't need currVal if initialSet (might fail in custom getter if it always expects a non-undefined/non-null value) - _yuitest_coverline("build/attribute-core/attribute-core.js", 584); + _yuitest_coverline("build/attribute-core/attribute-core.js", 612); if (!initialSet) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 585); + _yuitest_coverline("build/attribute-core/attribute-core.js", 613); currVal = this.get(name); } - _yuitest_coverline("build/attribute-core/attribute-core.js", 588); + _yuitest_coverline("build/attribute-core/attribute-core.js", 616); if (path) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 589); + _yuitest_coverline("build/attribute-core/attribute-core.js", 617); val = O.setValue(Y.clone(currVal), path, val); - _yuitest_coverline("build/attribute-core/attribute-core.js", 591); + _yuitest_coverline("build/attribute-core/attribute-core.js", 619); if (val === undefined) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 592); + _yuitest_coverline("build/attribute-core/attribute-core.js", 620); allowSet = false; } } - _yuitest_coverline("build/attribute-core/attribute-core.js", 596); + _yuitest_coverline("build/attribute-core/attribute-core.js", 624); if (allowSet) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 597); + _yuitest_coverline("build/attribute-core/attribute-core.js", 625); if (!this._fireAttrChange || initializing) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 598); + _yuitest_coverline("build/attribute-core/attribute-core.js", 626); this._setAttrVal(name, strPath, currVal, val); } else { - // HACK - no real reason core needs to know about _fireAttrChange, but + // HACK - no real reason core needs to know about _fireAttrChange, but // it adds fn hops if we want to break it out. Not sure it's worth it for this critical path - _yuitest_coverline("build/attribute-core/attribute-core.js", 602); + _yuitest_coverline("build/attribute-core/attribute-core.js", 630); this._fireAttrChange(name, strPath, currVal, val, opts); } } } - _yuitest_coverline("build/attribute-core/attribute-core.js", 607); + _yuitest_coverline("build/attribute-core/attribute-core.js", 635); return this; }, @@ -782,8 +819,8 @@ return this; * @return {Any} The value of the attribute. */ _getAttr : function(name) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_getAttr", 623); -_yuitest_coverline("build/attribute-core/attribute-core.js", 624); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_getAttr", 651); +_yuitest_coverline("build/attribute-core/attribute-core.js", 652); var host = this, // help compression fullName = name, state = host._state, @@ -792,74 +829,74 @@ var host = this, // help compression val, cfg; - _yuitest_coverline("build/attribute-core/attribute-core.js", 632); + _yuitest_coverline("build/attribute-core/attribute-core.js", 660); if (name.indexOf(DOT) !== -1) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 633); + _yuitest_coverline("build/attribute-core/attribute-core.js", 661); path = name.split(DOT); - _yuitest_coverline("build/attribute-core/attribute-core.js", 634); + _yuitest_coverline("build/attribute-core/attribute-core.js", 662); name = path.shift(); } // On Demand - Should be rare - handles out of order valueFn references - _yuitest_coverline("build/attribute-core/attribute-core.js", 638); + _yuitest_coverline("build/attribute-core/attribute-core.js", 666); if (host._tCfgs && host._tCfgs[name]) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 639); + _yuitest_coverline("build/attribute-core/attribute-core.js", 667); cfg = {}; - _yuitest_coverline("build/attribute-core/attribute-core.js", 640); + _yuitest_coverline("build/attribute-core/attribute-core.js", 668); cfg[name] = host._tCfgs[name]; - _yuitest_coverline("build/attribute-core/attribute-core.js", 641); + _yuitest_coverline("build/attribute-core/attribute-core.js", 669); delete host._tCfgs[name]; - _yuitest_coverline("build/attribute-core/attribute-core.js", 642); + _yuitest_coverline("build/attribute-core/attribute-core.js", 670); host._addAttrs(cfg, host._tVals); } - + // Lazy Init - _yuitest_coverline("build/attribute-core/attribute-core.js", 646); + _yuitest_coverline("build/attribute-core/attribute-core.js", 674); if (host._isLazyAttr(name)) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 647); + _yuitest_coverline("build/attribute-core/attribute-core.js", 675); host._addLazyAttr(name); } - _yuitest_coverline("build/attribute-core/attribute-core.js", 650); + _yuitest_coverline("build/attribute-core/attribute-core.js", 678); val = host._getStateVal(name); - - _yuitest_coverline("build/attribute-core/attribute-core.js", 652); + + _yuitest_coverline("build/attribute-core/attribute-core.js", 680); getter = state.get(name, GETTER); - _yuitest_coverline("build/attribute-core/attribute-core.js", 654); + _yuitest_coverline("build/attribute-core/attribute-core.js", 682); if (getter && !getter.call) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 655); + _yuitest_coverline("build/attribute-core/attribute-core.js", 683); getter = this[getter]; } - _yuitest_coverline("build/attribute-core/attribute-core.js", 658); + _yuitest_coverline("build/attribute-core/attribute-core.js", 686); val = (getter) ? getter.call(host, val, fullName) : val; - _yuitest_coverline("build/attribute-core/attribute-core.js", 659); + _yuitest_coverline("build/attribute-core/attribute-core.js", 687); val = (path) ? O.getValue(val, path) : val; - _yuitest_coverline("build/attribute-core/attribute-core.js", 661); + _yuitest_coverline("build/attribute-core/attribute-core.js", 689); return val; }, /** - * Gets the stored value for the attribute, from either the + * Gets the stored value for the attribute, from either the * internal state object, or the state proxy if it exits - * + * * @method _getStateVal * @private * @param {String} name The name of the attribute * @return {Any} The stored value of the attribute */ _getStateVal : function(name) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_getStateVal", 673); -_yuitest_coverline("build/attribute-core/attribute-core.js", 674); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_getStateVal", 701); +_yuitest_coverline("build/attribute-core/attribute-core.js", 702); var stateProxy = this._stateProxy; - _yuitest_coverline("build/attribute-core/attribute-core.js", 675); + _yuitest_coverline("build/attribute-core/attribute-core.js", 703); return stateProxy && (name in stateProxy) && !this._state.get(name, BYPASS_PROXY) ? stateProxy[name] : this._state.get(name, VALUE); }, /** - * Sets the stored value for the attribute, in either the + * Sets the stored value for the attribute, in either the * internal state object, or the state proxy if it exits * * @method _setStateVal @@ -868,15 +905,15 @@ return stateProxy && (name in stateProxy) && !this._state.get(name, BYPASS_PROXY * @param {Any} value The value of the attribute */ _setStateVal : function(name, value) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_setStateVal", 687); -_yuitest_coverline("build/attribute-core/attribute-core.js", 688); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_setStateVal", 715); +_yuitest_coverline("build/attribute-core/attribute-core.js", 716); var stateProxy = this._stateProxy; - _yuitest_coverline("build/attribute-core/attribute-core.js", 689); + _yuitest_coverline("build/attribute-core/attribute-core.js", 717); if (stateProxy && (name in stateProxy) && !this._state.get(name, BYPASS_PROXY)) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 690); + _yuitest_coverline("build/attribute-core/attribute-core.js", 718); stateProxy[name] = value; } else { - _yuitest_coverline("build/attribute-core/attribute-core.js", 692); + _yuitest_coverline("build/attribute-core/attribute-core.js", 720); this._state.add(name, VALUE, value); } }, @@ -891,13 +928,13 @@ this._state.add(name, VALUE, value); * @param {String} subAttrName The sub-attribute name, if setting a sub-attribute property ("x.y.z"). * @param {Any} prevVal The currently stored value of the attribute. * @param {Any} newVal The value which is going to be stored. - * + * * @return {booolean} true if the new attribute value was stored, false if not. */ _setAttrVal : function(attrName, subAttrName, prevVal, newVal) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_setAttrVal", 709); -_yuitest_coverline("build/attribute-core/attribute-core.js", 711); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_setAttrVal", 737); +_yuitest_coverline("build/attribute-core/attribute-core.js", 739); var host = this, allowSet = true, cfg = this._state.getAll(attrName, true) || {}, @@ -909,80 +946,80 @@ var host = this, retVal, valid; - _yuitest_coverline("build/attribute-core/attribute-core.js", 722); + _yuitest_coverline("build/attribute-core/attribute-core.js", 750); if (validator) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 723); -if (!validator.call) { + _yuitest_coverline("build/attribute-core/attribute-core.js", 751); +if (!validator.call) { // Assume string - trying to keep critical path tight, so avoiding Lang check - _yuitest_coverline("build/attribute-core/attribute-core.js", 725); + _yuitest_coverline("build/attribute-core/attribute-core.js", 753); validator = this[validator]; } - _yuitest_coverline("build/attribute-core/attribute-core.js", 727); + _yuitest_coverline("build/attribute-core/attribute-core.js", 755); if (validator) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 728); + _yuitest_coverline("build/attribute-core/attribute-core.js", 756); valid = validator.call(host, newVal, name); - _yuitest_coverline("build/attribute-core/attribute-core.js", 730); + _yuitest_coverline("build/attribute-core/attribute-core.js", 758); if (!valid && initializing) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 731); + _yuitest_coverline("build/attribute-core/attribute-core.js", 759); newVal = cfg.defaultValue; - _yuitest_coverline("build/attribute-core/attribute-core.js", 732); + _yuitest_coverline("build/attribute-core/attribute-core.js", 760); valid = true; // Assume it's valid, for perf. } } } - _yuitest_coverline("build/attribute-core/attribute-core.js", 737); + _yuitest_coverline("build/attribute-core/attribute-core.js", 765); if (!validator || valid) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 738); + _yuitest_coverline("build/attribute-core/attribute-core.js", 766); if (setter) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 739); + _yuitest_coverline("build/attribute-core/attribute-core.js", 767); if (!setter.call) { // Assume string - trying to keep critical path tight, so avoiding Lang check - _yuitest_coverline("build/attribute-core/attribute-core.js", 741); + _yuitest_coverline("build/attribute-core/attribute-core.js", 769); setter = this[setter]; } - _yuitest_coverline("build/attribute-core/attribute-core.js", 743); + _yuitest_coverline("build/attribute-core/attribute-core.js", 771); if (setter) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 744); + _yuitest_coverline("build/attribute-core/attribute-core.js", 772); retVal = setter.call(host, newVal, name); - _yuitest_coverline("build/attribute-core/attribute-core.js", 746); + _yuitest_coverline("build/attribute-core/attribute-core.js", 774); if (retVal === INVALID_VALUE) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 747); + _yuitest_coverline("build/attribute-core/attribute-core.js", 775); allowSet = false; - } else {_yuitest_coverline("build/attribute-core/attribute-core.js", 748); + } else {_yuitest_coverline("build/attribute-core/attribute-core.js", 776); if (retVal !== undefined){ - _yuitest_coverline("build/attribute-core/attribute-core.js", 749); + _yuitest_coverline("build/attribute-core/attribute-core.js", 777); newVal = retVal; }} } } - _yuitest_coverline("build/attribute-core/attribute-core.js", 754); + _yuitest_coverline("build/attribute-core/attribute-core.js", 782); if (allowSet) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 755); + _yuitest_coverline("build/attribute-core/attribute-core.js", 783); if(!subAttrName && (newVal === prevRawVal) && !Lang.isObject(newVal)) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 756); + _yuitest_coverline("build/attribute-core/attribute-core.js", 784); allowSet = false; } else { // Store value - _yuitest_coverline("build/attribute-core/attribute-core.js", 759); + _yuitest_coverline("build/attribute-core/attribute-core.js", 787); if (!(INIT_VALUE in cfg)) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 760); + _yuitest_coverline("build/attribute-core/attribute-core.js", 788); cfg.initValue = newVal; } - _yuitest_coverline("build/attribute-core/attribute-core.js", 762); + _yuitest_coverline("build/attribute-core/attribute-core.js", 790); host._setStateVal(attrName, newVal); } } } else { - _yuitest_coverline("build/attribute-core/attribute-core.js", 767); + _yuitest_coverline("build/attribute-core/attribute-core.js", 795); allowSet = false; } - _yuitest_coverline("build/attribute-core/attribute-core.js", 770); + _yuitest_coverline("build/attribute-core/attribute-core.js", 798); return allowSet; }, @@ -995,8 +1032,8 @@ return allowSet; * @chainable */ setAttrs : function(attrs) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "setAttrs", 781); -_yuitest_coverline("build/attribute-core/attribute-core.js", 782); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "setAttrs", 809); +_yuitest_coverline("build/attribute-core/attribute-core.js", 810); return this._setAttrs(attrs); }, @@ -1010,18 +1047,18 @@ return this._setAttrs(attrs); * @chainable */ _setAttrs : function(attrs) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_setAttrs", 794); -_yuitest_coverline("build/attribute-core/attribute-core.js", 795); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_setAttrs", 822); +_yuitest_coverline("build/attribute-core/attribute-core.js", 823); var attr; - _yuitest_coverline("build/attribute-core/attribute-core.js", 796); + _yuitest_coverline("build/attribute-core/attribute-core.js", 824); for (attr in attrs) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 797); + _yuitest_coverline("build/attribute-core/attribute-core.js", 825); if ( attrs.hasOwnProperty(attr) ) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 798); + _yuitest_coverline("build/attribute-core/attribute-core.js", 826); this.set(attr, attrs[attr]); } } - _yuitest_coverline("build/attribute-core/attribute-core.js", 801); + _yuitest_coverline("build/attribute-core/attribute-core.js", 829); return this; }, @@ -1034,8 +1071,8 @@ return this; * @return {Object} An object with attribute name/value pairs. */ getAttrs : function(attrs) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "getAttrs", 812); -_yuitest_coverline("build/attribute-core/attribute-core.js", 813); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "getAttrs", 840); +_yuitest_coverline("build/attribute-core/attribute-core.js", 841); return this._getAttrs(attrs); }, @@ -1049,33 +1086,33 @@ return this._getAttrs(attrs); * @return {Object} An object with attribute name/value pairs. */ _getAttrs : function(attrs) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_getAttrs", 825); -_yuitest_coverline("build/attribute-core/attribute-core.js", 826); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_getAttrs", 853); +_yuitest_coverline("build/attribute-core/attribute-core.js", 854); var obj = {}, attr, i, len, modifiedOnly = (attrs === true); // TODO - figure out how to get all "added" - _yuitest_coverline("build/attribute-core/attribute-core.js", 831); + _yuitest_coverline("build/attribute-core/attribute-core.js", 859); if (!attrs || modifiedOnly) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 832); + _yuitest_coverline("build/attribute-core/attribute-core.js", 860); attrs = O.keys(this._state.data); } - _yuitest_coverline("build/attribute-core/attribute-core.js", 835); + _yuitest_coverline("build/attribute-core/attribute-core.js", 863); for (i = 0, len = attrs.length; i < len; i++) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 836); + _yuitest_coverline("build/attribute-core/attribute-core.js", 864); attr = attrs[i]; - _yuitest_coverline("build/attribute-core/attribute-core.js", 838); + _yuitest_coverline("build/attribute-core/attribute-core.js", 866); if (!modifiedOnly || this._getStateVal(attr) != this._state.get(attr, INIT_VALUE)) { // Go through get, to honor cloning/normalization - _yuitest_coverline("build/attribute-core/attribute-core.js", 840); + _yuitest_coverline("build/attribute-core/attribute-core.js", 868); obj[attr] = this.get(attr); } } - _yuitest_coverline("build/attribute-core/attribute-core.js", 844); + _yuitest_coverline("build/attribute-core/attribute-core.js", 872); return obj; }, @@ -1083,7 +1120,7 @@ return obj; * Configures a group of attributes, and sets initial values. * *

          - * NOTE: This method does not isolate the configuration object by merging/cloning. + * NOTE: This method does not isolate the configuration object by merging/cloning. * The caller is responsible for merging/cloning the configuration object if required. *

          * @@ -1096,35 +1133,35 @@ return obj; * @param {boolean} lazy Whether or not to delay the intialization of these attributes until the first call to get/set. * Individual attributes can over-ride this behavior by defining a lazyAdd configuration property in their configuration. * See addAttr. - * + * * @return {Object} A reference to the host object. */ addAttrs : function(cfgs, values, lazy) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "addAttrs", 867); -_yuitest_coverline("build/attribute-core/attribute-core.js", 868); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "addAttrs", 895); +_yuitest_coverline("build/attribute-core/attribute-core.js", 896); var host = this; // help compression - _yuitest_coverline("build/attribute-core/attribute-core.js", 869); + _yuitest_coverline("build/attribute-core/attribute-core.js", 897); if (cfgs) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 870); + _yuitest_coverline("build/attribute-core/attribute-core.js", 898); host._tCfgs = cfgs; - _yuitest_coverline("build/attribute-core/attribute-core.js", 871); + _yuitest_coverline("build/attribute-core/attribute-core.js", 899); host._tVals = host._normAttrVals(values); - _yuitest_coverline("build/attribute-core/attribute-core.js", 872); + _yuitest_coverline("build/attribute-core/attribute-core.js", 900); host._addAttrs(cfgs, host._tVals, lazy); - _yuitest_coverline("build/attribute-core/attribute-core.js", 873); + _yuitest_coverline("build/attribute-core/attribute-core.js", 901); host._tCfgs = host._tVals = null; } - _yuitest_coverline("build/attribute-core/attribute-core.js", 876); + _yuitest_coverline("build/attribute-core/attribute-core.js", 904); return host; }, /** - * Implementation behind the public addAttrs method. - * - * This method is invoked directly by get if it encounters a scenario - * in which an attribute's valueFn attempts to obtain the - * value an attribute in the same group of attributes, which has not yet + * Implementation behind the public addAttrs method. + * + * This method is invoked directly by get if it encounters a scenario + * in which an attribute's valueFn attempts to obtain the + * value an attribute in the same group of attributes, which has not yet * been added (on demand initialization). * * @method _addAttrs @@ -1137,41 +1174,41 @@ return host; * See addAttr. */ _addAttrs : function(cfgs, values, lazy) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_addAttrs", 896); -_yuitest_coverline("build/attribute-core/attribute-core.js", 897); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_addAttrs", 924); +_yuitest_coverline("build/attribute-core/attribute-core.js", 925); var host = this, // help compression attr, attrCfg, value; - _yuitest_coverline("build/attribute-core/attribute-core.js", 902); + _yuitest_coverline("build/attribute-core/attribute-core.js", 930); for (attr in cfgs) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 903); + _yuitest_coverline("build/attribute-core/attribute-core.js", 931); if (cfgs.hasOwnProperty(attr)) { // Not Merging. Caller is responsible for isolating configs - _yuitest_coverline("build/attribute-core/attribute-core.js", 906); + _yuitest_coverline("build/attribute-core/attribute-core.js", 934); attrCfg = cfgs[attr]; - _yuitest_coverline("build/attribute-core/attribute-core.js", 907); + _yuitest_coverline("build/attribute-core/attribute-core.js", 935); attrCfg.defaultValue = attrCfg.value; // Handle simple, complex and user values, accounting for read-only - _yuitest_coverline("build/attribute-core/attribute-core.js", 910); + _yuitest_coverline("build/attribute-core/attribute-core.js", 938); value = host._getAttrInitVal(attr, attrCfg, host._tVals); - _yuitest_coverline("build/attribute-core/attribute-core.js", 912); + _yuitest_coverline("build/attribute-core/attribute-core.js", 940); if (value !== undefined) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 913); + _yuitest_coverline("build/attribute-core/attribute-core.js", 941); attrCfg.value = value; } - _yuitest_coverline("build/attribute-core/attribute-core.js", 916); + _yuitest_coverline("build/attribute-core/attribute-core.js", 944); if (host._tCfgs[attr]) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 917); + _yuitest_coverline("build/attribute-core/attribute-core.js", 945); delete host._tCfgs[attr]; } - _yuitest_coverline("build/attribute-core/attribute-core.js", 920); + _yuitest_coverline("build/attribute-core/attribute-core.js", 948); host.addAttr(attr, attrCfg, lazy); } } @@ -1179,54 +1216,78 @@ host.addAttr(attr, attrCfg, lazy); /** * Utility method to protect an attribute configuration - * hash, by merging the entire object and the individual - * attr config objects. + * hash, by merging the entire object and the individual + * attr config objects. * * @method _protectAttrs * @protected * @param {Object} attrs A hash of attribute to configuration object pairs. * @return {Object} A protected version of the attrs argument. + * @deprecated Use `AttributeCore.protectAttrs()` or + * `Attribute.protectAttrs()` which are the same static utility method. */ - _protectAttrs : function(attrs) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_protectAttrs", 935); -_yuitest_coverline("build/attribute-core/attribute-core.js", 936); -if (attrs) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 937); -attrs = Y.merge(attrs); - _yuitest_coverline("build/attribute-core/attribute-core.js", 938); -for (var attr in attrs) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 939); -if (attrs.hasOwnProperty(attr)) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 940); -attrs[attr] = Y.merge(attrs[attr]); - } - } - } - _yuitest_coverline("build/attribute-core/attribute-core.js", 944); -return attrs; - }, + _protectAttrs : AttributeCore.protectAttrs, /** - * Utility method to normalize attribute values. The base implementation - * simply merges the hash to protect the original. + * Utility method to split out simple attribute name/value pairs ("x") + * from complex attribute name/value pairs ("x.y.z"), so that complex + * attributes can be keyed by the top level attribute name. * * @method _normAttrVals * @param {Object} valueHash An object with attribute name/value pairs * - * @return {Object} + * @return {Object} An object literal with 2 properties - "simple" and "complex", + * containing simple and complex attribute values respectively keyed + * by the top level attribute name, or null, if valueHash is falsey. * * @private */ _normAttrVals : function(valueHash) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_normAttrVals", 958); -_yuitest_coverline("build/attribute-core/attribute-core.js", 959); -return (valueHash) ? Y.merge(valueHash) : null; + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_normAttrVals", 981); +_yuitest_coverline("build/attribute-core/attribute-core.js", 982); +var vals = {}, + subvals = {}, + path, + attr, + v, k; + + _yuitest_coverline("build/attribute-core/attribute-core.js", 988); +if (valueHash) { + _yuitest_coverline("build/attribute-core/attribute-core.js", 989); +for (k in valueHash) { + _yuitest_coverline("build/attribute-core/attribute-core.js", 990); +if (valueHash.hasOwnProperty(k)) { + _yuitest_coverline("build/attribute-core/attribute-core.js", 991); +if (k.indexOf(DOT) !== -1) { + _yuitest_coverline("build/attribute-core/attribute-core.js", 992); +path = k.split(DOT); + _yuitest_coverline("build/attribute-core/attribute-core.js", 993); +attr = path.shift(); + _yuitest_coverline("build/attribute-core/attribute-core.js", 994); +v = subvals[attr] = subvals[attr] || []; + _yuitest_coverline("build/attribute-core/attribute-core.js", 995); +v[v.length] = { + path : path, + value: valueHash[k] + }; + } else { + _yuitest_coverline("build/attribute-core/attribute-core.js", 1000); +vals[k] = valueHash[k]; + } + } + } + _yuitest_coverline("build/attribute-core/attribute-core.js", 1004); +return { simple:vals, complex:subvals }; + } else { + _yuitest_coverline("build/attribute-core/attribute-core.js", 1006); +return null; + } }, /** * Returns the initial value of the given attribute from - * either the default configuration provided, or the - * over-ridden value if it exists in the set of initValues + * either the default configuration provided, or the + * over-ridden value if it exists in the set of initValues * provided and the attribute is not read-only. * * @param {String} attr The name of the attribute @@ -1239,43 +1300,81 @@ return (valueHash) ? Y.merge(valueHash) : null; * @private */ _getAttrInitVal : function(attr, cfg, initValues) { - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_getAttrInitVal", 977); -_yuitest_coverline("build/attribute-core/attribute-core.js", 978); -var val, valFn; - // init value is provided by the user if it exists, else, provided by the config - _yuitest_coverline("build/attribute-core/attribute-core.js", 980); -if (!cfg.readOnly && initValues && initValues.hasOwnProperty(attr)) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 981); -val = initValues[attr]; - } else { - _yuitest_coverline("build/attribute-core/attribute-core.js", 983); -val = cfg.value; - _yuitest_coverline("build/attribute-core/attribute-core.js", 984); -valFn = cfg.valueFn; - - _yuitest_coverline("build/attribute-core/attribute-core.js", 986); -if (valFn) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 987); + + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_getAttrInitVal", 1025); +_yuitest_coverline("build/attribute-core/attribute-core.js", 1027); +var val = cfg.value, + valFn = cfg.valueFn, + tmpVal, + initValSet = false, + simple, + complex, + i, + l, + path, + subval, + subvals; + + _yuitest_coverline("build/attribute-core/attribute-core.js", 1039); +if (!cfg.readOnly && initValues) { + // Simple Attributes + _yuitest_coverline("build/attribute-core/attribute-core.js", 1041); +simple = initValues.simple; + _yuitest_coverline("build/attribute-core/attribute-core.js", 1042); +if (simple && simple.hasOwnProperty(attr)) { + _yuitest_coverline("build/attribute-core/attribute-core.js", 1043); +val = simple[attr]; + _yuitest_coverline("build/attribute-core/attribute-core.js", 1044); +initValSet = true; + } + } + + _yuitest_coverline("build/attribute-core/attribute-core.js", 1048); +if (valFn && !initValSet) { + _yuitest_coverline("build/attribute-core/attribute-core.js", 1049); if (!valFn.call) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 988); + _yuitest_coverline("build/attribute-core/attribute-core.js", 1050); valFn = this[valFn]; - } - _yuitest_coverline("build/attribute-core/attribute-core.js", 990); + } + _yuitest_coverline("build/attribute-core/attribute-core.js", 1052); if (valFn) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 991); -val = valFn.call(this, attr); + _yuitest_coverline("build/attribute-core/attribute-core.js", 1053); +tmpVal = valFn.call(this, attr); + _yuitest_coverline("build/attribute-core/attribute-core.js", 1054); +val = tmpVal; + } + } + + _yuitest_coverline("build/attribute-core/attribute-core.js", 1058); +if (!cfg.readOnly && initValues) { + + // Complex Attributes (complex values applied, after simple, in case both are set) + _yuitest_coverline("build/attribute-core/attribute-core.js", 1061); +complex = initValues.complex; + + _yuitest_coverline("build/attribute-core/attribute-core.js", 1063); +if (complex && complex.hasOwnProperty(attr) && (val !== undefined) && (val !== null)) { + _yuitest_coverline("build/attribute-core/attribute-core.js", 1064); +subvals = complex[attr]; + _yuitest_coverline("build/attribute-core/attribute-core.js", 1065); +for (i = 0, l = subvals.length; i < l; ++i) { + _yuitest_coverline("build/attribute-core/attribute-core.js", 1066); +path = subvals[i].path; + _yuitest_coverline("build/attribute-core/attribute-core.js", 1067); +subval = subvals[i].value; + _yuitest_coverline("build/attribute-core/attribute-core.js", 1068); +O.setValue(val, path, subval); } } } - - _yuitest_coverline("build/attribute-core/attribute-core.js", 997); + _yuitest_coverline("build/attribute-core/attribute-core.js", 1073); return val; }, /** * Utility method to set up initial attributes defined during construction, either through the constructor.ATTRS property, or explicitly passed in. - * + * * @method _initAttrs * @protected * @param attrs {Object} The attributes to add during construction (passed through to addAttrs). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor. @@ -1284,26 +1383,26 @@ return val; */ _initAttrs : function(attrs, values, lazy) { // ATTRS support for Node, which is not Base based - _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_initAttrs", 1009); -_yuitest_coverline("build/attribute-core/attribute-core.js", 1011); + _yuitest_coverfunc("build/attribute-core/attribute-core.js", "_initAttrs", 1085); +_yuitest_coverline("build/attribute-core/attribute-core.js", 1087); attrs = attrs || this.constructor.ATTRS; - - _yuitest_coverline("build/attribute-core/attribute-core.js", 1013); + + _yuitest_coverline("build/attribute-core/attribute-core.js", 1089); var Base = Y.Base, BaseCore = Y.BaseCore, baseInst = (Base && Y.instanceOf(this, Base)), baseCoreInst = (!baseInst && BaseCore && Y.instanceOf(this, BaseCore)); - _yuitest_coverline("build/attribute-core/attribute-core.js", 1018); -if ( attrs && !baseInst && !baseCoreInst) { - _yuitest_coverline("build/attribute-core/attribute-core.js", 1019); -this.addAttrs(this._protectAttrs(attrs), values, lazy); + _yuitest_coverline("build/attribute-core/attribute-core.js", 1094); +if (attrs && !baseInst && !baseCoreInst) { + _yuitest_coverline("build/attribute-core/attribute-core.js", 1095); +this.addAttrs(Y.AttributeCore.protectAttrs(attrs), values, lazy); } } }; - _yuitest_coverline("build/attribute-core/attribute-core.js", 1024); + _yuitest_coverline("build/attribute-core/attribute-core.js", 1100); Y.AttributeCore = AttributeCore; -}, '3.7.3', {"requires": ["oop"]}); +}, '3.8.0', {"requires": ["oop"]}); diff --git a/lib/yuilib/3.7.3/build/attribute-core/attribute-core-debug.js b/lib/yuilib/3.8.0/build/attribute-core/attribute-core-debug.js similarity index 86% rename from lib/yuilib/3.7.3/build/attribute-core/attribute-core-debug.js rename to lib/yuilib/3.8.0/build/attribute-core/attribute-core-debug.js index 3e6164ce59b..08e35d81b29 100644 --- a/lib/yuilib/3.7.3/build/attribute-core/attribute-core-debug.js +++ b/lib/yuilib/3.8.0/build/attribute-core/attribute-core-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -154,8 +154,8 @@ YUI.add('attribute-core', function (Y, NAME) { } }; /** - * The attribute module provides an augmentable Attribute implementation, which - * adds configurable attributes and attribute change events to the class being + * The attribute module provides an augmentable Attribute implementation, which + * adds configurable attributes and attribute change events to the class being * augmented. It also provides a State class, which is used internally by Attribute, * but can also be used independently to provide a name/property/value data structure to * store state. @@ -164,7 +164,7 @@ YUI.add('attribute-core', function (Y, NAME) { */ /** - * The attribute-core submodule provides the lightest level of attribute handling support + * The attribute-core submodule provides the lightest level of attribute handling support * without Attribute change events, or lesser used methods such as reset(), modifyAttrs(), * and removeAttr(). * @@ -199,8 +199,8 @@ YUI.add('attribute-core', function (Y, NAME) { /** *

          - * AttributeCore provides the lightest level of configurable attribute support. It is designed to be - * augmented on to a host class, and provides the host with the ability to configure + * AttributeCore provides the lightest level of configurable attribute support. It is designed to be + * augmented on to a host class, and provides the host with the ability to configure * attributes to store and retrieve state, but without support for attribute change events. *

          *

          For example, attributes added to the host can be configured:

          @@ -216,10 +216,10 @@ YUI.add('attribute-core', function (Y, NAME) { * *

          See the addAttr method, for the complete set of configuration * options available for attributes.

          - * - *

          Object/Classes based on AttributeCore can augment AttributeEvents - * (with true for overwrite) and AttributeExtras to add attribute event and - * additional, less commonly used attribute methods, such as `modifyAttr`, `removeAttr` and `reset`.

          + * + *

          Object/Classes based on AttributeCore can augment AttributeObservable + * (with true for overwrite) and AttributeExtras to add attribute event and + * additional, less commonly used attribute methods, such as `modifyAttr`, `removeAttr` and `reset`.

          * * @class AttributeCore * @param attrs {Object} The attributes to add during construction (passed through to addAttrs). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor. @@ -227,14 +227,20 @@ YUI.add('attribute-core', function (Y, NAME) { * @param lazy {boolean} Whether or not to add attributes lazily (passed through to addAttrs). */ function AttributeCore(attrs, values, lazy) { - this._initAttrHost(attrs, values, lazy); + // HACK: Fix #2531929 + // Complete hack, to make sure the first clone of a node value in IE doesn't doesn't hurt state - maintains 3.4.1 behavior. + // Too late in the release cycle to do anything about the core problem. + // The root issue is that cloning a Y.Node instance results in an object which barfs in IE, when you access it's properties (since 3.3.0). + this._yuievt = null; + + this._initAttrHost(attrs, values, lazy); } /** *

          The value to return from an attribute setter in order to prevent the set from going through.

          * - *

          You can return this value from your setter if you wish to combine validator and setter - * functionality into a single setter function, which either returns the massaged value to be stored or + *

          You can return this value from your setter if you wish to combine validator and setter + * functionality into a single setter function, which either returns the massaged value to be stored or * AttributeCore.INVALID_VALUE to prevent invalid values from being stored.

          * * @property INVALID_VALUE @@ -246,7 +252,7 @@ YUI.add('attribute-core', function (Y, NAME) { INVALID_VALUE = AttributeCore.INVALID_VALUE; /** - * The list of properties which can be configured for + * The list of properties which can be configured for * each attribute (e.g. setter, getter, writeOnce etc.). * * This property is used internally as a whitelist for faster @@ -259,10 +265,32 @@ YUI.add('attribute-core', function (Y, NAME) { */ AttributeCore._ATTR_CFG = [SETTER, GETTER, VALIDATOR, VALUE, VALUE_FN, WRITE_ONCE, READ_ONLY, LAZY_ADD, BYPASS_PROXY]; + /** + * Utility method to protect an attribute configuration hash, by merging the + * entire object and the individual attr config objects. + * + * @method protectAttrs + * @static + * @param {Object} attrs A hash of attribute to configuration object pairs. + * @return {Object} A protected version of the `attrs` argument. + */ + AttributeCore.protectAttrs = function (attrs) { + if (attrs) { + attrs = Y.merge(attrs); + for (var attr in attrs) { + if (attrs.hasOwnProperty(attr)) { + attrs[attr] = Y.merge(attrs[attr]); + } + } + } + + return attrs; + }; + AttributeCore.prototype = { /** - * Constructor logic for attributes. Initializes the host state, and sets up the inital attributes passed to the + * Constructor logic for attributes. Initializes the host state, and sets up the inital attributes passed to the * constructor. * * @method _initAttrHost @@ -283,7 +311,7 @@ YUI.add('attribute-core', function (Y, NAME) { *

          * The config argument object supports the following properties: *

          - * + * *
          *
          value <Any>
          *
          The initial value to set on the attribute
          @@ -291,9 +319,9 @@ YUI.add('attribute-core', function (Y, NAME) { *
          valueFn <Function | String>
          *
          *

          A function, which will return the initial value to set on the attribute. This is useful - * for cases where the attribute configuration is defined statically, but needs to - * reference the host instance ("this") to obtain an initial value. If both the value and valueFn properties are defined, - * the value returned by the valueFn has precedence over the value property, unless it returns undefined, in which + * for cases where the attribute configuration is defined statically, but needs to + * reference the host instance ("this") to obtain an initial value. If both the value and valueFn properties are defined, + * the value returned by the valueFn has precedence over the value property, unless it returns undefined, in which * case the value property is used.

          * *

          valueFn can also be set to a string, representing the name of the instance method to be used to retrieve the value.

          @@ -305,8 +333,8 @@ YUI.add('attribute-core', function (Y, NAME) { * *
          writeOnce <boolean> or <string>
          *
          - * Whether or not the attribute is "write once". Attributes having writeOnce set to true, - * can only have their values set once, be it through the default configuration, + * Whether or not the attribute is "write once". Attributes having writeOnce set to true, + * can only have their values set once, be it through the default configuration, * constructor configuration arguments, or by invoking set. *

          The writeOnce attribute can also be set to the string "initOnly", in which case the attribute can only be set during initialization * (when used with Base, this means it can only be set during construction)

          @@ -314,20 +342,20 @@ YUI.add('attribute-core', function (Y, NAME) { * *
          setter <Function | String>
          *
          - *

          The setter function used to massage or normalize the value passed to the set method for the attribute. + *

          The setter function used to massage or normalize the value passed to the set method for the attribute. * The value returned by the setter will be the final stored value. Returning * Attribute.INVALID_VALUE, from the setter will prevent * the value from being stored. *

          - * + * *

          setter can also be set to a string, representing the name of the instance method to be used as the setter function.

          *
          - * + * *
          getter <Function | String>
          *
          *

          * The getter function used to massage or normalize the value returned by the get method for the attribute. - * The value returned by the getter function is the value which will be returned to the user when they + * The value returned by the getter function is the value which will be returned to the user when they * invoke get. *

          * @@ -340,13 +368,13 @@ YUI.add('attribute-core', function (Y, NAME) { * The validator function invoked prior to setting the stored value. Returning * false from the validator function will prevent the value from being stored. *

          - * + * *

          validator can also be set to a string, representing the name of the instance method to be used as the validator function.

          *
          * *
          lazyAdd <boolean>
          - *
          Whether or not to delay initialization of the attribute until the first call to get/set it. - * This flag can be used to over-ride lazy initialization on a per attribute basis, when adding multiple attributes through + *
          Whether or not to delay initialization of the attribute until the first call to get/set it. + * This flag can be used to over-ride lazy initialization on a per attribute basis, when adding multiple attributes through * the addAttrs method.
          * *
          @@ -354,20 +382,20 @@ YUI.add('attribute-core', function (Y, NAME) { *

          The setter, getter and validator are invoked with the value and name passed in as the first and second arguments, and with * the context ("this") set to the host object.

          * - *

          Configuration properties outside of the list mentioned above are considered private properties used internally by attribute, + *

          Configuration properties outside of the list mentioned above are considered private properties used internally by attribute, * and are not intended for public use.

          - * + * * @method addAttr * * @param {String} name The name of the attribute. * @param {Object} config An object with attribute configuration property/value pairs, specifying the configuration for the attribute. * *

          - * NOTE: The configuration object is modified when adding an attribute, so if you need + * NOTE: The configuration object is modified when adding an attribute, so if you need * to protect the original values, you will need to merge the object. *

          * - * @param {boolean} lazy (optional) Whether or not to add this attribute lazily (on the first call to get/set). + * @param {boolean} lazy (optional) Whether or not to add this attribute lazily (on the first call to get/set). * * @return {Object} A reference to the host object. * @@ -442,7 +470,7 @@ YUI.add('attribute-core', function (Y, NAME) { * * @method get * - * @param {String} name The name of the attribute. If the value of the attribute is an Object, + * @param {String} name The name of the attribute. If the value of the attribute is an Object, * dot notation can be used to obtain the value of a property of the object (e.g. get("x.y.z")) * * @return {Any} The value of the attribute @@ -486,7 +514,7 @@ YUI.add('attribute-core', function (Y, NAME) { * @method set * @chainable * - * @param {String} name The name of the attribute. If the + * @param {String} name The name of the attribute. If the * current value of the attribute is an Object, dot notation can be used * to set the value of a property within the object (e.g. set("x.y.z", 5)). * @@ -504,7 +532,7 @@ YUI.add('attribute-core', function (Y, NAME) { * @method _set * @protected * @chainable - * + * * @param {String} name The name of the attribute. * @param {Any} val The value to set the attribute to. * @return {Object} A reference to the host object. @@ -527,19 +555,19 @@ YUI.add('attribute-core', function (Y, NAME) { * @param {Object} opts (Optional) Optional event data to be mixed into * the event facade passed to subscribers of the attribute's change event. * This is currently a hack. There's no real need for the AttributeCore implementation - * to support this parameter, but breaking it out into AttributeEvents, results in + * to support this parameter, but breaking it out into AttributeObservable, results in * additional function hops for the critical path. - * @param {boolean} force If true, allows the caller to set values for + * @param {boolean} force If true, allows the caller to set values for * readOnly or writeOnce attributes which have already been set. * * @return {Object} A reference to the host object. */ _setAttr : function(name, val, opts, force) { - - // HACK - no real reason core needs to know about opts, but - // it adds fn hops if we want to break it out. + + // HACK - no real reason core needs to know about opts, but + // it adds fn hops if we want to break it out. // Not sure it's worth it for this critical path - + var allowSet = true, state = this._state, stateProxy = this._stateProxy, @@ -561,12 +589,12 @@ YUI.add('attribute-core', function (Y, NAME) { this._addLazyAttr(name); } - cfg = state.getAll(name, true) || {}; + cfg = state.getAll(name, true) || {}; initialSet = (!(VALUE in cfg)); if (stateProxy && name in stateProxy && !cfg._bypassProxy) { - // TODO: Value is always set for proxy. Can we do any better? Maybe take a snapshot as the initial value for the first call to set? + // TODO: Value is always set for proxy. Can we do any better? Maybe take a snapshot as the initial value for the first call to set? initialSet = false; } @@ -610,7 +638,7 @@ YUI.add('attribute-core', function (Y, NAME) { if (!this._fireAttrChange || initializing) { this._setAttrVal(name, strPath, currVal, val); } else { - // HACK - no real reason core needs to know about _fireAttrChange, but + // HACK - no real reason core needs to know about _fireAttrChange, but // it adds fn hops if we want to break it out. Not sure it's worth it for this critical path this._fireAttrChange(name, strPath, currVal, val, opts); } @@ -654,14 +682,14 @@ YUI.add('attribute-core', function (Y, NAME) { delete host._tCfgs[name]; host._addAttrs(cfg, host._tVals); } - + // Lazy Init if (host._isLazyAttr(name)) { host._addLazyAttr(name); } val = host._getStateVal(name); - + getter = state.get(name, GETTER); if (getter && !getter.call) { @@ -675,9 +703,9 @@ YUI.add('attribute-core', function (Y, NAME) { }, /** - * Gets the stored value for the attribute, from either the + * Gets the stored value for the attribute, from either the * internal state object, or the state proxy if it exits - * + * * @method _getStateVal * @private * @param {String} name The name of the attribute @@ -689,7 +717,7 @@ YUI.add('attribute-core', function (Y, NAME) { }, /** - * Sets the stored value for the attribute, in either the + * Sets the stored value for the attribute, in either the * internal state object, or the state proxy if it exits * * @method _setStateVal @@ -716,7 +744,7 @@ YUI.add('attribute-core', function (Y, NAME) { * @param {String} subAttrName The sub-attribute name, if setting a sub-attribute property ("x.y.z"). * @param {Any} prevVal The currently stored value of the attribute. * @param {Any} newVal The value which is going to be stored. - * + * * @return {booolean} true if the new attribute value was stored, false if not. */ _setAttrVal : function(attrName, subAttrName, prevVal, newVal) { @@ -733,7 +761,7 @@ YUI.add('attribute-core', function (Y, NAME) { valid; if (validator) { - if (!validator.call) { + if (!validator.call) { // Assume string - trying to keep critical path tight, so avoiding Lang check validator = this[validator]; } @@ -865,7 +893,7 @@ YUI.add('attribute-core', function (Y, NAME) { * Configures a group of attributes, and sets initial values. * *

          - * NOTE: This method does not isolate the configuration object by merging/cloning. + * NOTE: This method does not isolate the configuration object by merging/cloning. * The caller is responsible for merging/cloning the configuration object if required. *

          * @@ -878,7 +906,7 @@ YUI.add('attribute-core', function (Y, NAME) { * @param {boolean} lazy Whether or not to delay the intialization of these attributes until the first call to get/set. * Individual attributes can over-ride this behavior by defining a lazyAdd configuration property in their configuration. * See addAttr. - * + * * @return {Object} A reference to the host object. */ addAttrs : function(cfgs, values, lazy) { @@ -894,11 +922,11 @@ YUI.add('attribute-core', function (Y, NAME) { }, /** - * Implementation behind the public addAttrs method. - * - * This method is invoked directly by get if it encounters a scenario - * in which an attribute's valueFn attempts to obtain the - * value an attribute in the same group of attributes, which has not yet + * Implementation behind the public addAttrs method. + * + * This method is invoked directly by get if it encounters a scenario + * in which an attribute's valueFn attempts to obtain the + * value an attribute in the same group of attributes, which has not yet * been added (on demand initialization). * * @method _addAttrs @@ -941,45 +969,65 @@ YUI.add('attribute-core', function (Y, NAME) { /** * Utility method to protect an attribute configuration - * hash, by merging the entire object and the individual - * attr config objects. + * hash, by merging the entire object and the individual + * attr config objects. * * @method _protectAttrs * @protected * @param {Object} attrs A hash of attribute to configuration object pairs. * @return {Object} A protected version of the attrs argument. + * @deprecated Use `AttributeCore.protectAttrs()` or + * `Attribute.protectAttrs()` which are the same static utility method. */ - _protectAttrs : function(attrs) { - if (attrs) { - attrs = Y.merge(attrs); - for (var attr in attrs) { - if (attrs.hasOwnProperty(attr)) { - attrs[attr] = Y.merge(attrs[attr]); - } - } - } - return attrs; - }, + _protectAttrs : AttributeCore.protectAttrs, /** - * Utility method to normalize attribute values. The base implementation - * simply merges the hash to protect the original. + * Utility method to split out simple attribute name/value pairs ("x") + * from complex attribute name/value pairs ("x.y.z"), so that complex + * attributes can be keyed by the top level attribute name. * * @method _normAttrVals * @param {Object} valueHash An object with attribute name/value pairs * - * @return {Object} + * @return {Object} An object literal with 2 properties - "simple" and "complex", + * containing simple and complex attribute values respectively keyed + * by the top level attribute name, or null, if valueHash is falsey. * * @private */ _normAttrVals : function(valueHash) { - return (valueHash) ? Y.merge(valueHash) : null; + var vals = {}, + subvals = {}, + path, + attr, + v, k; + + if (valueHash) { + for (k in valueHash) { + if (valueHash.hasOwnProperty(k)) { + if (k.indexOf(DOT) !== -1) { + path = k.split(DOT); + attr = path.shift(); + v = subvals[attr] = subvals[attr] || []; + v[v.length] = { + path : path, + value: valueHash[k] + }; + } else { + vals[k] = valueHash[k]; + } + } + } + return { simple:vals, complex:subvals }; + } else { + return null; + } }, /** * Returns the initial value of the given attribute from - * either the default configuration provided, or the - * over-ridden value if it exists in the set of initValues + * either the default configuration provided, or the + * over-ridden value if it exists in the set of initValues * provided and the attribute is not read-only. * * @param {String} attr The name of the attribute @@ -992,32 +1040,59 @@ YUI.add('attribute-core', function (Y, NAME) { * @private */ _getAttrInitVal : function(attr, cfg, initValues) { - var val, valFn; - // init value is provided by the user if it exists, else, provided by the config - if (!cfg.readOnly && initValues && initValues.hasOwnProperty(attr)) { - val = initValues[attr]; - } else { - val = cfg.value; - valFn = cfg.valueFn; - - if (valFn) { - if (!valFn.call) { - valFn = this[valFn]; - } - if (valFn) { - val = valFn.call(this, attr); - } + + var val = cfg.value, + valFn = cfg.valueFn, + tmpVal, + initValSet = false, + simple, + complex, + i, + l, + path, + subval, + subvals; + + if (!cfg.readOnly && initValues) { + // Simple Attributes + simple = initValues.simple; + if (simple && simple.hasOwnProperty(attr)) { + val = simple[attr]; + initValSet = true; } } - Y.log('initValue for ' + attr + ':' + val, 'info', 'attribute'); + if (valFn && !initValSet) { + if (!valFn.call) { + valFn = this[valFn]; + } + if (valFn) { + tmpVal = valFn.call(this, attr); + val = tmpVal; + } + } + + if (!cfg.readOnly && initValues) { + + // Complex Attributes (complex values applied, after simple, in case both are set) + complex = initValues.complex; + + if (complex && complex.hasOwnProperty(attr) && (val !== undefined) && (val !== null)) { + subvals = complex[attr]; + for (i = 0, l = subvals.length; i < l; ++i) { + path = subvals[i].path; + subval = subvals[i].value; + O.setValue(val, path, subval); + } + } + } return val; }, /** * Utility method to set up initial attributes defined during construction, either through the constructor.ATTRS property, or explicitly passed in. - * + * * @method _initAttrs * @protected * @param attrs {Object} The attributes to add during construction (passed through to addAttrs). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor. @@ -1027,14 +1102,14 @@ YUI.add('attribute-core', function (Y, NAME) { _initAttrs : function(attrs, values, lazy) { // ATTRS support for Node, which is not Base based attrs = attrs || this.constructor.ATTRS; - + var Base = Y.Base, BaseCore = Y.BaseCore, baseInst = (Base && Y.instanceOf(this, Base)), baseCoreInst = (!baseInst && BaseCore && Y.instanceOf(this, BaseCore)); - if ( attrs && !baseInst && !baseCoreInst) { - this.addAttrs(this._protectAttrs(attrs), values, lazy); + if (attrs && !baseInst && !baseCoreInst) { + this.addAttrs(Y.AttributeCore.protectAttrs(attrs), values, lazy); } } }; @@ -1042,4 +1117,4 @@ YUI.add('attribute-core', function (Y, NAME) { Y.AttributeCore = AttributeCore; -}, '3.7.3', {"requires": ["oop"]}); +}, '3.8.0', {"requires": ["oop"]}); diff --git a/lib/yuilib/3.8.0/build/attribute-core/attribute-core-min.js b/lib/yuilib/3.8.0/build/attribute-core/attribute-core-min.js new file mode 100644 index 00000000000..9ac57bba4bf --- /dev/null +++ b/lib/yuilib/3.8.0/build/attribute-core/attribute-core-min.js @@ -0,0 +1,7 @@ +/* +YUI 3.8.0 (build 5744) +Copyright 2012 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ +YUI.add("attribute-core",function(e,t){function E(e,t,n){this._yuievt=null,this._initAttrHost(e,t,n)}e.State=function(){this.data={}},e.State.prototype={add:function(e,t,n){var r=this.data[e];r||(r=this.data[e]={}),r[t]=n},addAll:function(e,t){var n=this.data[e],r;n||(n=this.data[e]={});for(r in t)t.hasOwnProperty(r)&&(n[r]=t[r])},remove:function(e,t){var n=this.data[e];n&&delete n[t]},removeAll:function(t,n){var r;n?e.each(n,function(e,n){this.remove(t,typeof n=="string"?n:e)},this):(r=this.data,t in r&&delete r[t])},get:function(e,t){var n=this.data[e];if(n)return n[t]},getAll:function(e,t){var n=this.data[e],r,i;if(t)i=n;else if(n){i={};for(r in n)n.hasOwnProperty(r)&&(i[r]=n[r])}return i}};var n=e.Object,r=e.Lang,i=".",s="getter",o="setter",u="readOnly",a="writeOnce",f="initOnly",l="validator",c="value",h="valueFn",p="lazyAdd",d="added",v="_bypassProxy",m="initializing",g="initValue",y="lazy",b="isLazyAdd",w;E.INVALID_VALUE={},w=E.INVALID_VALUE,E._ATTR_CFG=[o,s,l,c,h,a,u,p,v],E.protectAttrs=function(t){if(t){t=e.merge(t);for(var n in t)t.hasOwnProperty(n)&&(t[n]=e.merge(t[n]))}return t},E.prototype={_initAttrHost:function(t,n,r){this._state=new e.State,this._initAttrs(t,n,r)},addAttr:function(e,t,n){var r=this,i=r._state,s,o;t=t||{},n=p in t?t[p]:n;if(n&&!r.attrAdded(e))i.addAll(e,{lazy:t,added:!0});else if(!r.attrAdded(e)||i.get(e,b))o=c in t,o&&(s=t.value,delete t.value),t.added=!0,t.initializing=!0,i.addAll(e,t),o&&r.set(e,s),i.remove(e,m);return r},attrAdded:function(e){return!!this._state.get(e,d)},get:function(e){return this._getAttr(e)},_isLazyAttr:function(e){return this._state.get(e,y)},_addLazyAttr:function(e,t){var n=this._state,r=n.get(e,y);n.add(e,b,!0),n.remove(e,y),this.addAttr(e,r)},set:function(e,t){return this._setAttr(e,t)},_set:function(e,t){return this._setAttr(e,t,null,!0)},_setAttr:function(t,r,s,o){var u=!0,a=this._state,l=this._stateProxy,h,p,d,v,m,g,y;return t.indexOf(i)!==-1&&(d=t,v=t.split(i),t=v.shift()),this._isLazyAttr(t)&&this._addLazyAttr(t),h=a.getAll(t,!0)||{},p=!(c in h),l&&t in l&&!h._bypassProxy&&(p=!1),g=h.writeOnce,y=h.initializing,!p&&!o&&(g&&(u=!1),h.readOnly&&(u=!1)),!y&&!o&&g===f&&(u=!1),u&&(p||(m=this.get(t)),v&&(r=n.setValue(e.clone(m),v,r),r===undefined&&(u=!1)),u&&(!this._fireAttrChange||y?this._setAttrVal(t,d,m,r):this._fireAttrChange(t,d,m,r,s))),this},_getAttr:function(e){var t=this,r=e,o=t._state,u,a,f,l;return e.indexOf(i)!==-1&&(u=e.split(i),e=u.shift()),t._tCfgs&&t._tCfgs[e]&&(l={},l[e]=t._tCfgs[e],delete t._tCfgs[e],t._addAttrs(l,t._tVals)),t._isLazyAttr(e)&&t._addLazyAttr(e),f=t._getStateVal(e),a=o.get(e,s),a&&!a.call&&(a=this[a]),f=a?a.call(t,f,r):f,f=u?n.getValue(f,u):f,f},_getStateVal:function(e){var t=this._stateProxy;return t&&e in t&&!this._state.get(e,v)?t[e]:this._state.get(e,c)},_setStateVal:function(e,t){var n=this._stateProxy;n&&e in n&&!this._state.get(e,v)?n[e]=t:this._state.add(e,c,t)},_setAttrVal:function(e,t,n,i){var s=this,o=!0,u=this._state.getAll(e,!0)||{},a=u.validator,f=u.setter,l=u.initializing,c=this._getStateVal(e),h=t||e,p,d;return a&&(a.call||(a=this[a]),a&&(d=a.call(s,i,h),!d&&l&&(i=u.defaultValue,d=!0))),!a||d?(f&&(f.call||(f=this[f]),f&&(p=f.call(s,i,h),p===w?o=!1:p!==undefined&&(i=p))),o&&(!t&&i===c&&!r.isObject(i)?o=!1:(g in u||(u.initValue=i),s._setStateVal(e,i)))):o=!1,o},setAttrs:function(e){return this._setAttrs(e)},_setAttrs:function(e){var t;for(t in e)e.hasOwnProperty(t)&&this.set(t,e[t]);return this},getAttrs:function(e){return this._getAttrs(e)},_getAttrs:function(e){var t={},r,i,s,o=e===!0;if(!e||o)e=n.keys(this._state.data);for(i=0,s=e.length;i - * AttributeCore provides the lightest level of configurable attribute support. It is designed to be - * augmented on to a host class, and provides the host with the ability to configure + * AttributeCore provides the lightest level of configurable attribute support. It is designed to be + * augmented on to a host class, and provides the host with the ability to configure * attributes to store and retrieve state, but without support for attribute change events. *

          *

          For example, attributes added to the host can be configured:

          @@ -216,10 +216,10 @@ YUI.add('attribute-core', function (Y, NAME) { * *

          See the addAttr method, for the complete set of configuration * options available for attributes.

          - * - *

          Object/Classes based on AttributeCore can augment AttributeEvents - * (with true for overwrite) and AttributeExtras to add attribute event and - * additional, less commonly used attribute methods, such as `modifyAttr`, `removeAttr` and `reset`.

          + * + *

          Object/Classes based on AttributeCore can augment AttributeObservable + * (with true for overwrite) and AttributeExtras to add attribute event and + * additional, less commonly used attribute methods, such as `modifyAttr`, `removeAttr` and `reset`.

          * * @class AttributeCore * @param attrs {Object} The attributes to add during construction (passed through to addAttrs). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor. @@ -227,14 +227,20 @@ YUI.add('attribute-core', function (Y, NAME) { * @param lazy {boolean} Whether or not to add attributes lazily (passed through to addAttrs). */ function AttributeCore(attrs, values, lazy) { - this._initAttrHost(attrs, values, lazy); + // HACK: Fix #2531929 + // Complete hack, to make sure the first clone of a node value in IE doesn't doesn't hurt state - maintains 3.4.1 behavior. + // Too late in the release cycle to do anything about the core problem. + // The root issue is that cloning a Y.Node instance results in an object which barfs in IE, when you access it's properties (since 3.3.0). + this._yuievt = null; + + this._initAttrHost(attrs, values, lazy); } /** *

          The value to return from an attribute setter in order to prevent the set from going through.

          * - *

          You can return this value from your setter if you wish to combine validator and setter - * functionality into a single setter function, which either returns the massaged value to be stored or + *

          You can return this value from your setter if you wish to combine validator and setter + * functionality into a single setter function, which either returns the massaged value to be stored or * AttributeCore.INVALID_VALUE to prevent invalid values from being stored.

          * * @property INVALID_VALUE @@ -246,7 +252,7 @@ YUI.add('attribute-core', function (Y, NAME) { INVALID_VALUE = AttributeCore.INVALID_VALUE; /** - * The list of properties which can be configured for + * The list of properties which can be configured for * each attribute (e.g. setter, getter, writeOnce etc.). * * This property is used internally as a whitelist for faster @@ -259,10 +265,32 @@ YUI.add('attribute-core', function (Y, NAME) { */ AttributeCore._ATTR_CFG = [SETTER, GETTER, VALIDATOR, VALUE, VALUE_FN, WRITE_ONCE, READ_ONLY, LAZY_ADD, BYPASS_PROXY]; + /** + * Utility method to protect an attribute configuration hash, by merging the + * entire object and the individual attr config objects. + * + * @method protectAttrs + * @static + * @param {Object} attrs A hash of attribute to configuration object pairs. + * @return {Object} A protected version of the `attrs` argument. + */ + AttributeCore.protectAttrs = function (attrs) { + if (attrs) { + attrs = Y.merge(attrs); + for (var attr in attrs) { + if (attrs.hasOwnProperty(attr)) { + attrs[attr] = Y.merge(attrs[attr]); + } + } + } + + return attrs; + }; + AttributeCore.prototype = { /** - * Constructor logic for attributes. Initializes the host state, and sets up the inital attributes passed to the + * Constructor logic for attributes. Initializes the host state, and sets up the inital attributes passed to the * constructor. * * @method _initAttrHost @@ -283,7 +311,7 @@ YUI.add('attribute-core', function (Y, NAME) { *

          * The config argument object supports the following properties: *

          - * + * *
          *
          value <Any>
          *
          The initial value to set on the attribute
          @@ -291,9 +319,9 @@ YUI.add('attribute-core', function (Y, NAME) { *
          valueFn <Function | String>
          *
          *

          A function, which will return the initial value to set on the attribute. This is useful - * for cases where the attribute configuration is defined statically, but needs to - * reference the host instance ("this") to obtain an initial value. If both the value and valueFn properties are defined, - * the value returned by the valueFn has precedence over the value property, unless it returns undefined, in which + * for cases where the attribute configuration is defined statically, but needs to + * reference the host instance ("this") to obtain an initial value. If both the value and valueFn properties are defined, + * the value returned by the valueFn has precedence over the value property, unless it returns undefined, in which * case the value property is used.

          * *

          valueFn can also be set to a string, representing the name of the instance method to be used to retrieve the value.

          @@ -305,8 +333,8 @@ YUI.add('attribute-core', function (Y, NAME) { * *
          writeOnce <boolean> or <string>
          *
          - * Whether or not the attribute is "write once". Attributes having writeOnce set to true, - * can only have their values set once, be it through the default configuration, + * Whether or not the attribute is "write once". Attributes having writeOnce set to true, + * can only have their values set once, be it through the default configuration, * constructor configuration arguments, or by invoking set. *

          The writeOnce attribute can also be set to the string "initOnly", in which case the attribute can only be set during initialization * (when used with Base, this means it can only be set during construction)

          @@ -314,20 +342,20 @@ YUI.add('attribute-core', function (Y, NAME) { * *
          setter <Function | String>
          *
          - *

          The setter function used to massage or normalize the value passed to the set method for the attribute. + *

          The setter function used to massage or normalize the value passed to the set method for the attribute. * The value returned by the setter will be the final stored value. Returning * Attribute.INVALID_VALUE, from the setter will prevent * the value from being stored. *

          - * + * *

          setter can also be set to a string, representing the name of the instance method to be used as the setter function.

          *
          - * + * *
          getter <Function | String>
          *
          *

          * The getter function used to massage or normalize the value returned by the get method for the attribute. - * The value returned by the getter function is the value which will be returned to the user when they + * The value returned by the getter function is the value which will be returned to the user when they * invoke get. *

          * @@ -340,13 +368,13 @@ YUI.add('attribute-core', function (Y, NAME) { * The validator function invoked prior to setting the stored value. Returning * false from the validator function will prevent the value from being stored. *

          - * + * *

          validator can also be set to a string, representing the name of the instance method to be used as the validator function.

          *
          * *
          lazyAdd <boolean>
          - *
          Whether or not to delay initialization of the attribute until the first call to get/set it. - * This flag can be used to over-ride lazy initialization on a per attribute basis, when adding multiple attributes through + *
          Whether or not to delay initialization of the attribute until the first call to get/set it. + * This flag can be used to over-ride lazy initialization on a per attribute basis, when adding multiple attributes through * the addAttrs method.
          * *
          @@ -354,20 +382,20 @@ YUI.add('attribute-core', function (Y, NAME) { *

          The setter, getter and validator are invoked with the value and name passed in as the first and second arguments, and with * the context ("this") set to the host object.

          * - *

          Configuration properties outside of the list mentioned above are considered private properties used internally by attribute, + *

          Configuration properties outside of the list mentioned above are considered private properties used internally by attribute, * and are not intended for public use.

          - * + * * @method addAttr * * @param {String} name The name of the attribute. * @param {Object} config An object with attribute configuration property/value pairs, specifying the configuration for the attribute. * *

          - * NOTE: The configuration object is modified when adding an attribute, so if you need + * NOTE: The configuration object is modified when adding an attribute, so if you need * to protect the original values, you will need to merge the object. *

          * - * @param {boolean} lazy (optional) Whether or not to add this attribute lazily (on the first call to get/set). + * @param {boolean} lazy (optional) Whether or not to add this attribute lazily (on the first call to get/set). * * @return {Object} A reference to the host object. * @@ -439,7 +467,7 @@ YUI.add('attribute-core', function (Y, NAME) { * * @method get * - * @param {String} name The name of the attribute. If the value of the attribute is an Object, + * @param {String} name The name of the attribute. If the value of the attribute is an Object, * dot notation can be used to obtain the value of a property of the object (e.g. get("x.y.z")) * * @return {Any} The value of the attribute @@ -483,7 +511,7 @@ YUI.add('attribute-core', function (Y, NAME) { * @method set * @chainable * - * @param {String} name The name of the attribute. If the + * @param {String} name The name of the attribute. If the * current value of the attribute is an Object, dot notation can be used * to set the value of a property within the object (e.g. set("x.y.z", 5)). * @@ -501,7 +529,7 @@ YUI.add('attribute-core', function (Y, NAME) { * @method _set * @protected * @chainable - * + * * @param {String} name The name of the attribute. * @param {Any} val The value to set the attribute to. * @return {Object} A reference to the host object. @@ -524,19 +552,19 @@ YUI.add('attribute-core', function (Y, NAME) { * @param {Object} opts (Optional) Optional event data to be mixed into * the event facade passed to subscribers of the attribute's change event. * This is currently a hack. There's no real need for the AttributeCore implementation - * to support this parameter, but breaking it out into AttributeEvents, results in + * to support this parameter, but breaking it out into AttributeObservable, results in * additional function hops for the critical path. - * @param {boolean} force If true, allows the caller to set values for + * @param {boolean} force If true, allows the caller to set values for * readOnly or writeOnce attributes which have already been set. * * @return {Object} A reference to the host object. */ _setAttr : function(name, val, opts, force) { - - // HACK - no real reason core needs to know about opts, but - // it adds fn hops if we want to break it out. + + // HACK - no real reason core needs to know about opts, but + // it adds fn hops if we want to break it out. // Not sure it's worth it for this critical path - + var allowSet = true, state = this._state, stateProxy = this._stateProxy, @@ -558,12 +586,12 @@ YUI.add('attribute-core', function (Y, NAME) { this._addLazyAttr(name); } - cfg = state.getAll(name, true) || {}; + cfg = state.getAll(name, true) || {}; initialSet = (!(VALUE in cfg)); if (stateProxy && name in stateProxy && !cfg._bypassProxy) { - // TODO: Value is always set for proxy. Can we do any better? Maybe take a snapshot as the initial value for the first call to set? + // TODO: Value is always set for proxy. Can we do any better? Maybe take a snapshot as the initial value for the first call to set? initialSet = false; } @@ -603,7 +631,7 @@ YUI.add('attribute-core', function (Y, NAME) { if (!this._fireAttrChange || initializing) { this._setAttrVal(name, strPath, currVal, val); } else { - // HACK - no real reason core needs to know about _fireAttrChange, but + // HACK - no real reason core needs to know about _fireAttrChange, but // it adds fn hops if we want to break it out. Not sure it's worth it for this critical path this._fireAttrChange(name, strPath, currVal, val, opts); } @@ -647,14 +675,14 @@ YUI.add('attribute-core', function (Y, NAME) { delete host._tCfgs[name]; host._addAttrs(cfg, host._tVals); } - + // Lazy Init if (host._isLazyAttr(name)) { host._addLazyAttr(name); } val = host._getStateVal(name); - + getter = state.get(name, GETTER); if (getter && !getter.call) { @@ -668,9 +696,9 @@ YUI.add('attribute-core', function (Y, NAME) { }, /** - * Gets the stored value for the attribute, from either the + * Gets the stored value for the attribute, from either the * internal state object, or the state proxy if it exits - * + * * @method _getStateVal * @private * @param {String} name The name of the attribute @@ -682,7 +710,7 @@ YUI.add('attribute-core', function (Y, NAME) { }, /** - * Sets the stored value for the attribute, in either the + * Sets the stored value for the attribute, in either the * internal state object, or the state proxy if it exits * * @method _setStateVal @@ -709,7 +737,7 @@ YUI.add('attribute-core', function (Y, NAME) { * @param {String} subAttrName The sub-attribute name, if setting a sub-attribute property ("x.y.z"). * @param {Any} prevVal The currently stored value of the attribute. * @param {Any} newVal The value which is going to be stored. - * + * * @return {booolean} true if the new attribute value was stored, false if not. */ _setAttrVal : function(attrName, subAttrName, prevVal, newVal) { @@ -726,7 +754,7 @@ YUI.add('attribute-core', function (Y, NAME) { valid; if (validator) { - if (!validator.call) { + if (!validator.call) { // Assume string - trying to keep critical path tight, so avoiding Lang check validator = this[validator]; } @@ -854,7 +882,7 @@ YUI.add('attribute-core', function (Y, NAME) { * Configures a group of attributes, and sets initial values. * *

          - * NOTE: This method does not isolate the configuration object by merging/cloning. + * NOTE: This method does not isolate the configuration object by merging/cloning. * The caller is responsible for merging/cloning the configuration object if required. *

          * @@ -867,7 +895,7 @@ YUI.add('attribute-core', function (Y, NAME) { * @param {boolean} lazy Whether or not to delay the intialization of these attributes until the first call to get/set. * Individual attributes can over-ride this behavior by defining a lazyAdd configuration property in their configuration. * See addAttr. - * + * * @return {Object} A reference to the host object. */ addAttrs : function(cfgs, values, lazy) { @@ -883,11 +911,11 @@ YUI.add('attribute-core', function (Y, NAME) { }, /** - * Implementation behind the public addAttrs method. - * - * This method is invoked directly by get if it encounters a scenario - * in which an attribute's valueFn attempts to obtain the - * value an attribute in the same group of attributes, which has not yet + * Implementation behind the public addAttrs method. + * + * This method is invoked directly by get if it encounters a scenario + * in which an attribute's valueFn attempts to obtain the + * value an attribute in the same group of attributes, which has not yet * been added (on demand initialization). * * @method _addAttrs @@ -930,45 +958,65 @@ YUI.add('attribute-core', function (Y, NAME) { /** * Utility method to protect an attribute configuration - * hash, by merging the entire object and the individual - * attr config objects. + * hash, by merging the entire object and the individual + * attr config objects. * * @method _protectAttrs * @protected * @param {Object} attrs A hash of attribute to configuration object pairs. * @return {Object} A protected version of the attrs argument. + * @deprecated Use `AttributeCore.protectAttrs()` or + * `Attribute.protectAttrs()` which are the same static utility method. */ - _protectAttrs : function(attrs) { - if (attrs) { - attrs = Y.merge(attrs); - for (var attr in attrs) { - if (attrs.hasOwnProperty(attr)) { - attrs[attr] = Y.merge(attrs[attr]); - } - } - } - return attrs; - }, + _protectAttrs : AttributeCore.protectAttrs, /** - * Utility method to normalize attribute values. The base implementation - * simply merges the hash to protect the original. + * Utility method to split out simple attribute name/value pairs ("x") + * from complex attribute name/value pairs ("x.y.z"), so that complex + * attributes can be keyed by the top level attribute name. * * @method _normAttrVals * @param {Object} valueHash An object with attribute name/value pairs * - * @return {Object} + * @return {Object} An object literal with 2 properties - "simple" and "complex", + * containing simple and complex attribute values respectively keyed + * by the top level attribute name, or null, if valueHash is falsey. * * @private */ _normAttrVals : function(valueHash) { - return (valueHash) ? Y.merge(valueHash) : null; + var vals = {}, + subvals = {}, + path, + attr, + v, k; + + if (valueHash) { + for (k in valueHash) { + if (valueHash.hasOwnProperty(k)) { + if (k.indexOf(DOT) !== -1) { + path = k.split(DOT); + attr = path.shift(); + v = subvals[attr] = subvals[attr] || []; + v[v.length] = { + path : path, + value: valueHash[k] + }; + } else { + vals[k] = valueHash[k]; + } + } + } + return { simple:vals, complex:subvals }; + } else { + return null; + } }, /** * Returns the initial value of the given attribute from - * either the default configuration provided, or the - * over-ridden value if it exists in the set of initValues + * either the default configuration provided, or the + * over-ridden value if it exists in the set of initValues * provided and the attribute is not read-only. * * @param {String} attr The name of the attribute @@ -981,31 +1029,59 @@ YUI.add('attribute-core', function (Y, NAME) { * @private */ _getAttrInitVal : function(attr, cfg, initValues) { - var val, valFn; - // init value is provided by the user if it exists, else, provided by the config - if (!cfg.readOnly && initValues && initValues.hasOwnProperty(attr)) { - val = initValues[attr]; - } else { - val = cfg.value; - valFn = cfg.valueFn; - - if (valFn) { - if (!valFn.call) { - valFn = this[valFn]; - } - if (valFn) { - val = valFn.call(this, attr); - } + + var val = cfg.value, + valFn = cfg.valueFn, + tmpVal, + initValSet = false, + simple, + complex, + i, + l, + path, + subval, + subvals; + + if (!cfg.readOnly && initValues) { + // Simple Attributes + simple = initValues.simple; + if (simple && simple.hasOwnProperty(attr)) { + val = simple[attr]; + initValSet = true; } } + if (valFn && !initValSet) { + if (!valFn.call) { + valFn = this[valFn]; + } + if (valFn) { + tmpVal = valFn.call(this, attr); + val = tmpVal; + } + } + + if (!cfg.readOnly && initValues) { + + // Complex Attributes (complex values applied, after simple, in case both are set) + complex = initValues.complex; + + if (complex && complex.hasOwnProperty(attr) && (val !== undefined) && (val !== null)) { + subvals = complex[attr]; + for (i = 0, l = subvals.length; i < l; ++i) { + path = subvals[i].path; + subval = subvals[i].value; + O.setValue(val, path, subval); + } + } + } return val; }, /** * Utility method to set up initial attributes defined during construction, either through the constructor.ATTRS property, or explicitly passed in. - * + * * @method _initAttrs * @protected * @param attrs {Object} The attributes to add during construction (passed through to addAttrs). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor. @@ -1015,14 +1091,14 @@ YUI.add('attribute-core', function (Y, NAME) { _initAttrs : function(attrs, values, lazy) { // ATTRS support for Node, which is not Base based attrs = attrs || this.constructor.ATTRS; - + var Base = Y.Base, BaseCore = Y.BaseCore, baseInst = (Base && Y.instanceOf(this, Base)), baseCoreInst = (!baseInst && BaseCore && Y.instanceOf(this, BaseCore)); - if ( attrs && !baseInst && !baseCoreInst) { - this.addAttrs(this._protectAttrs(attrs), values, lazy); + if (attrs && !baseInst && !baseCoreInst) { + this.addAttrs(Y.AttributeCore.protectAttrs(attrs), values, lazy); } } }; @@ -1030,4 +1106,4 @@ YUI.add('attribute-core', function (Y, NAME) { Y.AttributeCore = AttributeCore; -}, '3.7.3', {"requires": ["oop"]}); +}, '3.8.0', {"requires": ["oop"]}); diff --git a/lib/yuilib/3.7.3/build/attribute-extras/attribute-extras-coverage.js b/lib/yuilib/3.8.0/build/attribute-extras/attribute-extras-coverage.js similarity index 55% rename from lib/yuilib/3.7.3/build/attribute-extras/attribute-extras-coverage.js rename to lib/yuilib/3.8.0/build/attribute-extras/attribute-extras-coverage.js index 5ee5ed36df5..08f2fb462c4 100644 --- a/lib/yuilib/3.7.3/build/attribute-extras/attribute-extras-coverage.js +++ b/lib/yuilib/3.8.0/build/attribute-extras/attribute-extras-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,17 +32,17 @@ _yuitest_coverage["build/attribute-extras/attribute-extras.js"] = { path: "build/attribute-extras/attribute-extras.js", code: [] }; -_yuitest_coverage["build/attribute-extras/attribute-extras.js"].code=["YUI.add('attribute-extras', function (Y, NAME) {",""," /**"," * The attribute module provides an augmentable Attribute implementation, which "," * adds configurable attributes and attribute change events to the class being "," * augmented. It also provides a State class, which is used internally by Attribute,"," * but can also be used independently to provide a name/property/value data structure to"," * store state."," *"," * @module attribute"," */",""," /**"," * The attribute-extras submodule provides less commonly used attribute methods, and can "," * be augmented/mixed into an implemention which used attribute-core."," *"," * @module attribute"," * @submodule attribute-extras"," */"," var BROADCAST = \"broadcast\","," PUBLISHED = \"published\","," INIT_VALUE = \"initValue\",",""," MODIFIABLE = {"," readOnly:1,"," writeOnce:1,"," getter:1,"," broadcast:1"," };",""," /**"," * A augmentable implementation for AttributeCore, providing less frequently used "," * methods for Attribute management such as modifyAttrs(), removeAttr and reset() "," *"," * @class AttributeExtras"," */"," function AttributeExtras() {}",""," AttributeExtras.prototype = {",""," /**"," * Updates the configuration of an attribute which has already been added."," *

          "," * The properties which can be modified through this interface are limited"," * to the following subset of attributes, which can be safely modified"," * after a value has already been set on the attribute: readOnly, writeOnce, "," * broadcast and getter."," *

          "," * @method modifyAttr"," * @param {String} name The name of the attribute whose configuration is to be updated."," * @param {Object} config An object with configuration property/value pairs, specifying the configuration properties to modify."," */"," modifyAttr: function(name, config) {"," var host = this, // help compression"," prop, state;",""," if (host.attrAdded(name)) {",""," if (host._isLazyAttr(name)) {"," host._addLazyAttr(name);"," }",""," state = host._state;"," for (prop in config) {"," if (MODIFIABLE[prop] && config.hasOwnProperty(prop)) {"," state.add(name, prop, config[prop]);",""," // If we reconfigured broadcast, need to republish"," if (prop === BROADCAST) {"," state.remove(name, PUBLISHED);"," }"," }"," }"," }",""," },",""," /**"," * Removes an attribute from the host object"," *"," * @method removeAttr"," * @param {String} name The name of the attribute to be removed."," */"," removeAttr: function(name) {"," this._state.removeAll(name);"," },",""," /**"," * Resets the attribute (or all attributes) to its initial value, as long as"," * the attribute is not readOnly, or writeOnce."," *"," * @method reset"," * @param {String} name Optional. The name of the attribute to reset. If omitted, all attributes are reset."," * @return {Object} A reference to the host object."," * @chainable"," */"," reset : function(name) {"," var host = this; // help compression",""," if (name) {"," if (host._isLazyAttr(name)) {"," host._addLazyAttr(name);"," }"," host.set(name, host._state.get(name, INIT_VALUE));"," } else {"," Y.each(host._state.data, function(v, n) {"," host.reset(n);"," });"," }"," return host;"," },",""," /**"," * Returns an object with the configuration properties (and value)"," * for the given attribute. If attrName is not provided, returns the"," * configuration properties for all attributes."," *"," * @method _getAttrCfg"," * @protected"," * @param {String} name Optional. The attribute name. If not provided, the method will return the configuration for all attributes."," * @return {Object} The configuration properties for the given attribute, or all attributes."," */"," _getAttrCfg : function(name) {"," var o,"," state = this._state;",""," if (name) {"," o = state.getAll(name) || {};"," } else {"," o = {};"," Y.each(state.data, function(v, n) {"," o[n] = state.getAll(n);"," }); "," }",""," return o;"," }"," };",""," Y.AttributeExtras = AttributeExtras;","","","}, '3.7.3', {\"requires\": [\"oop\"]});"]; -_yuitest_coverage["build/attribute-extras/attribute-extras.js"].lines = {"1":0,"20":0,"37":0,"39":0,"54":0,"57":0,"59":0,"60":0,"63":0,"64":0,"65":0,"66":0,"69":0,"70":0,"85":0,"98":0,"100":0,"101":0,"102":0,"104":0,"106":0,"107":0,"110":0,"124":0,"127":0,"128":0,"130":0,"131":0,"132":0,"136":0,"140":0}; -_yuitest_coverage["build/attribute-extras/attribute-extras.js"].functions = {"AttributeExtras:37":0,"modifyAttr:53":0,"removeAttr:84":0,"(anonymous 2):106":0,"reset:97":0,"(anonymous 3):131":0,"_getAttrCfg:123":0,"(anonymous 1):1":0}; +_yuitest_coverage["build/attribute-extras/attribute-extras.js"].code=["YUI.add('attribute-extras', function (Y, NAME) {",""," /**"," * The attribute module provides an augmentable Attribute implementation, which"," * adds configurable attributes and attribute change events to the class being"," * augmented. It also provides a State class, which is used internally by Attribute,"," * but can also be used independently to provide a name/property/value data structure to"," * store state."," *"," * @module attribute"," */",""," /**"," * The attribute-extras submodule provides less commonly used attribute methods, and can"," * be augmented/mixed into an implemention which used attribute-core."," *"," * @module attribute"," * @submodule attribute-extras"," */"," var BROADCAST = \"broadcast\","," PUBLISHED = \"published\","," INIT_VALUE = \"initValue\",",""," MODIFIABLE = {"," readOnly:1,"," writeOnce:1,"," getter:1,"," broadcast:1"," };",""," /**"," * A augmentable implementation for AttributeCore, providing less frequently used"," * methods for Attribute management such as modifyAttrs(), removeAttr and reset()"," *"," * @class AttributeExtras"," * @extensionfor AttributeCore"," */"," function AttributeExtras() {}",""," AttributeExtras.prototype = {",""," /**"," * Updates the configuration of an attribute which has already been added."," *

          "," * The properties which can be modified through this interface are limited"," * to the following subset of attributes, which can be safely modified"," * after a value has already been set on the attribute: readOnly, writeOnce,"," * broadcast and getter."," *

          "," * @method modifyAttr"," * @param {String} name The name of the attribute whose configuration is to be updated."," * @param {Object} config An object with configuration property/value pairs, specifying the configuration properties to modify."," */"," modifyAttr: function(name, config) {"," var host = this, // help compression"," prop, state;",""," if (host.attrAdded(name)) {",""," if (host._isLazyAttr(name)) {"," host._addLazyAttr(name);"," }",""," state = host._state;"," for (prop in config) {"," if (MODIFIABLE[prop] && config.hasOwnProperty(prop)) {"," state.add(name, prop, config[prop]);",""," // If we reconfigured broadcast, need to republish"," if (prop === BROADCAST) {"," state.remove(name, PUBLISHED);"," }"," }"," }"," }",""," },",""," /**"," * Removes an attribute from the host object"," *"," * @method removeAttr"," * @param {String} name The name of the attribute to be removed."," */"," removeAttr: function(name) {"," this._state.removeAll(name);"," },",""," /**"," * Resets the attribute (or all attributes) to its initial value, as long as"," * the attribute is not readOnly, or writeOnce."," *"," * @method reset"," * @param {String} name Optional. The name of the attribute to reset. If omitted, all attributes are reset."," * @return {Object} A reference to the host object."," * @chainable"," */"," reset : function(name) {"," var host = this; // help compression",""," if (name) {"," if (host._isLazyAttr(name)) {"," host._addLazyAttr(name);"," }"," host.set(name, host._state.get(name, INIT_VALUE));"," } else {"," Y.each(host._state.data, function(v, n) {"," host.reset(n);"," });"," }"," return host;"," },",""," /**"," * Returns an object with the configuration properties (and value)"," * for the given attribute. If attrName is not provided, returns the"," * configuration properties for all attributes."," *"," * @method _getAttrCfg"," * @protected"," * @param {String} name Optional. The attribute name. If not provided, the method will return the configuration for all attributes."," * @return {Object} The configuration properties for the given attribute, or all attributes."," */"," _getAttrCfg : function(name) {"," var o,"," state = this._state;",""," if (name) {"," o = state.getAll(name) || {};"," } else {"," o = {};"," Y.each(state.data, function(v, n) {"," o[n] = state.getAll(n);"," });"," }",""," return o;"," }"," };",""," Y.AttributeExtras = AttributeExtras;","","","}, '3.8.0', {\"requires\": [\"oop\"]});"]; +_yuitest_coverage["build/attribute-extras/attribute-extras.js"].lines = {"1":0,"20":0,"38":0,"40":0,"55":0,"58":0,"60":0,"61":0,"64":0,"65":0,"66":0,"67":0,"70":0,"71":0,"86":0,"99":0,"101":0,"102":0,"103":0,"105":0,"107":0,"108":0,"111":0,"125":0,"128":0,"129":0,"131":0,"132":0,"133":0,"137":0,"141":0}; +_yuitest_coverage["build/attribute-extras/attribute-extras.js"].functions = {"AttributeExtras:38":0,"modifyAttr:54":0,"removeAttr:85":0,"(anonymous 2):107":0,"reset:98":0,"(anonymous 3):132":0,"_getAttrCfg:124":0,"(anonymous 1):1":0}; _yuitest_coverage["build/attribute-extras/attribute-extras.js"].coveredLines = 31; _yuitest_coverage["build/attribute-extras/attribute-extras.js"].coveredFunctions = 8; _yuitest_coverline("build/attribute-extras/attribute-extras.js", 1); YUI.add('attribute-extras', function (Y, NAME) { /** - * The attribute module provides an augmentable Attribute implementation, which - * adds configurable attributes and attribute change events to the class being + * The attribute module provides an augmentable Attribute implementation, which + * adds configurable attributes and attribute change events to the class being * augmented. It also provides a State class, which is used internally by Attribute, * but can also be used independently to provide a name/property/value data structure to * store state. @@ -51,7 +51,7 @@ YUI.add('attribute-extras', function (Y, NAME) { */ /** - * The attribute-extras submodule provides less commonly used attribute methods, and can + * The attribute-extras submodule provides less commonly used attribute methods, and can * be augmented/mixed into an implemention which used attribute-core. * * @module attribute @@ -71,15 +71,16 @@ var BROADCAST = "broadcast", }; /** - * A augmentable implementation for AttributeCore, providing less frequently used - * methods for Attribute management such as modifyAttrs(), removeAttr and reset() + * A augmentable implementation for AttributeCore, providing less frequently used + * methods for Attribute management such as modifyAttrs(), removeAttr and reset() * * @class AttributeExtras + * @extensionfor AttributeCore */ - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 37); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 38); function AttributeExtras() {} - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 39); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 40); AttributeExtras.prototype = { /** @@ -87,7 +88,7 @@ AttributeExtras.prototype = { *

          * The properties which can be modified through this interface are limited * to the following subset of attributes, which can be safely modified - * after a value has already been set on the attribute: readOnly, writeOnce, + * after a value has already been set on the attribute: readOnly, writeOnce, * broadcast and getter. *

          * @method modifyAttr @@ -95,33 +96,33 @@ AttributeExtras.prototype = { * @param {Object} config An object with configuration property/value pairs, specifying the configuration properties to modify. */ modifyAttr: function(name, config) { - _yuitest_coverfunc("build/attribute-extras/attribute-extras.js", "modifyAttr", 53); -_yuitest_coverline("build/attribute-extras/attribute-extras.js", 54); + _yuitest_coverfunc("build/attribute-extras/attribute-extras.js", "modifyAttr", 54); +_yuitest_coverline("build/attribute-extras/attribute-extras.js", 55); var host = this, // help compression prop, state; - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 57); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 58); if (host.attrAdded(name)) { - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 59); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 60); if (host._isLazyAttr(name)) { - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 60); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 61); host._addLazyAttr(name); } - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 63); -state = host._state; _yuitest_coverline("build/attribute-extras/attribute-extras.js", 64); +state = host._state; + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 65); for (prop in config) { - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 65); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 66); if (MODIFIABLE[prop] && config.hasOwnProperty(prop)) { - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 66); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 67); state.add(name, prop, config[prop]); // If we reconfigured broadcast, need to republish - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 69); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 70); if (prop === BROADCAST) { - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 70); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 71); state.remove(name, PUBLISHED); } } @@ -137,8 +138,8 @@ state.remove(name, PUBLISHED); * @param {String} name The name of the attribute to be removed. */ removeAttr: function(name) { - _yuitest_coverfunc("build/attribute-extras/attribute-extras.js", "removeAttr", 84); -_yuitest_coverline("build/attribute-extras/attribute-extras.js", 85); + _yuitest_coverfunc("build/attribute-extras/attribute-extras.js", "removeAttr", 85); +_yuitest_coverline("build/attribute-extras/attribute-extras.js", 86); this._state.removeAll(name); }, @@ -152,28 +153,28 @@ this._state.removeAll(name); * @chainable */ reset : function(name) { - _yuitest_coverfunc("build/attribute-extras/attribute-extras.js", "reset", 97); -_yuitest_coverline("build/attribute-extras/attribute-extras.js", 98); + _yuitest_coverfunc("build/attribute-extras/attribute-extras.js", "reset", 98); +_yuitest_coverline("build/attribute-extras/attribute-extras.js", 99); var host = this; // help compression - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 100); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 101); if (name) { - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 101); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 102); if (host._isLazyAttr(name)) { - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 102); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 103); host._addLazyAttr(name); } - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 104); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 105); host.set(name, host._state.get(name, INIT_VALUE)); } else { - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 106); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 107); Y.each(host._state.data, function(v, n) { - _yuitest_coverfunc("build/attribute-extras/attribute-extras.js", "(anonymous 2)", 106); -_yuitest_coverline("build/attribute-extras/attribute-extras.js", 107); + _yuitest_coverfunc("build/attribute-extras/attribute-extras.js", "(anonymous 2)", 107); +_yuitest_coverline("build/attribute-extras/attribute-extras.js", 108); host.reset(n); }); } - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 110); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 111); return host; }, @@ -188,33 +189,33 @@ return host; * @return {Object} The configuration properties for the given attribute, or all attributes. */ _getAttrCfg : function(name) { - _yuitest_coverfunc("build/attribute-extras/attribute-extras.js", "_getAttrCfg", 123); -_yuitest_coverline("build/attribute-extras/attribute-extras.js", 124); + _yuitest_coverfunc("build/attribute-extras/attribute-extras.js", "_getAttrCfg", 124); +_yuitest_coverline("build/attribute-extras/attribute-extras.js", 125); var o, state = this._state; - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 127); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 128); if (name) { - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 128); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 129); o = state.getAll(name) || {}; } else { - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 130); -o = {}; _yuitest_coverline("build/attribute-extras/attribute-extras.js", 131); +o = {}; + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 132); Y.each(state.data, function(v, n) { - _yuitest_coverfunc("build/attribute-extras/attribute-extras.js", "(anonymous 3)", 131); -_yuitest_coverline("build/attribute-extras/attribute-extras.js", 132); + _yuitest_coverfunc("build/attribute-extras/attribute-extras.js", "(anonymous 3)", 132); +_yuitest_coverline("build/attribute-extras/attribute-extras.js", 133); o[n] = state.getAll(n); - }); + }); } - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 136); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 137); return o; } }; - _yuitest_coverline("build/attribute-extras/attribute-extras.js", 140); + _yuitest_coverline("build/attribute-extras/attribute-extras.js", 141); Y.AttributeExtras = AttributeExtras; -}, '3.7.3', {"requires": ["oop"]}); +}, '3.8.0', {"requires": ["oop"]}); diff --git a/lib/yuilib/3.7.3/build/attribute-extras/attribute-extras-debug.js b/lib/yuilib/3.8.0/build/attribute-extras/attribute-extras-debug.js similarity index 95% rename from lib/yuilib/3.7.3/build/attribute-extras/attribute-extras-debug.js rename to lib/yuilib/3.8.0/build/attribute-extras/attribute-extras-debug.js index 518309ba0f8..bb580aafd1f 100644 --- a/lib/yuilib/3.7.3/build/attribute-extras/attribute-extras-debug.js +++ b/lib/yuilib/3.8.0/build/attribute-extras/attribute-extras-debug.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -7,8 +7,8 @@ http://yuilibrary.com/license/ YUI.add('attribute-extras', function (Y, NAME) { /** - * The attribute module provides an augmentable Attribute implementation, which - * adds configurable attributes and attribute change events to the class being + * The attribute module provides an augmentable Attribute implementation, which + * adds configurable attributes and attribute change events to the class being * augmented. It also provides a State class, which is used internally by Attribute, * but can also be used independently to provide a name/property/value data structure to * store state. @@ -17,7 +17,7 @@ YUI.add('attribute-extras', function (Y, NAME) { */ /** - * The attribute-extras submodule provides less commonly used attribute methods, and can + * The attribute-extras submodule provides less commonly used attribute methods, and can * be augmented/mixed into an implemention which used attribute-core. * * @module attribute @@ -35,10 +35,11 @@ YUI.add('attribute-extras', function (Y, NAME) { }; /** - * A augmentable implementation for AttributeCore, providing less frequently used - * methods for Attribute management such as modifyAttrs(), removeAttr and reset() + * A augmentable implementation for AttributeCore, providing less frequently used + * methods for Attribute management such as modifyAttrs(), removeAttr and reset() * * @class AttributeExtras + * @extensionfor AttributeCore */ function AttributeExtras() {} @@ -49,7 +50,7 @@ YUI.add('attribute-extras', function (Y, NAME) { *

          * The properties which can be modified through this interface are limited * to the following subset of attributes, which can be safely modified - * after a value has already been set on the attribute: readOnly, writeOnce, + * after a value has already been set on the attribute: readOnly, writeOnce, * broadcast and getter. *

          * @method modifyAttr @@ -137,7 +138,7 @@ YUI.add('attribute-extras', function (Y, NAME) { o = {}; Y.each(state.data, function(v, n) { o[n] = state.getAll(n); - }); + }); } return o; @@ -147,4 +148,4 @@ YUI.add('attribute-extras', function (Y, NAME) { Y.AttributeExtras = AttributeExtras; -}, '3.7.3', {"requires": ["oop"]}); +}, '3.8.0', {"requires": ["oop"]}); diff --git a/lib/yuilib/3.7.3/build/attribute-extras/attribute-extras-min.js b/lib/yuilib/3.8.0/build/attribute-extras/attribute-extras-min.js similarity index 87% rename from lib/yuilib/3.7.3/build/attribute-extras/attribute-extras-min.js rename to lib/yuilib/3.8.0/build/attribute-extras/attribute-extras-min.js index 6b268f0fc1d..bf128eabb34 100644 --- a/lib/yuilib/3.7.3/build/attribute-extras/attribute-extras-min.js +++ b/lib/yuilib/3.8.0/build/attribute-extras/attribute-extras-min.js @@ -1,7 +1,7 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ -YUI.add("attribute-extras",function(e,t){function o(){}var n="broadcast",r="published",i="initValue",s={readOnly:1,writeOnce:1,getter:1,broadcast:1};o.prototype={modifyAttr:function(e,t){var i=this,o,u;if(i.attrAdded(e)){i._isLazyAttr(e)&&i._addLazyAttr(e),u=i._state;for(o in t)s[o]&&t.hasOwnProperty(o)&&(u.add(e,o,t[o]),o===n&&u.remove(e,r))}},removeAttr:function(e){this._state.removeAll(e)},reset:function(t){var n=this;return t?(n._isLazyAttr(t)&&n._addLazyAttr(t),n.set(t,n._state.get(t,i))):e.each(n._state.data,function(e,t){n.reset(t)}),n},_getAttrCfg:function(t){var n,r=this._state;return t?n=r.getAll(t)||{}:(n={},e.each(r.data,function(e,t){n[t]=r.getAll(t)})),n}},e.AttributeExtras=o},"3.7.3",{requires:["oop"]}); +YUI.add("attribute-extras",function(e,t){function o(){}var n="broadcast",r="published",i="initValue",s={readOnly:1,writeOnce:1,getter:1,broadcast:1};o.prototype={modifyAttr:function(e,t){var i=this,o,u;if(i.attrAdded(e)){i._isLazyAttr(e)&&i._addLazyAttr(e),u=i._state;for(o in t)s[o]&&t.hasOwnProperty(o)&&(u.add(e,o,t[o]),o===n&&u.remove(e,r))}},removeAttr:function(e){this._state.removeAll(e)},reset:function(t){var n=this;return t?(n._isLazyAttr(t)&&n._addLazyAttr(t),n.set(t,n._state.get(t,i))):e.each(n._state.data,function(e,t){n.reset(t)}),n},_getAttrCfg:function(t){var n,r=this._state;return t?n=r.getAll(t)||{}:(n={},e.each(r.data,function(e,t){n[t]=r.getAll(t)})),n}},e.AttributeExtras=o},"3.8.0",{requires:["oop"]}); diff --git a/lib/yuilib/3.7.3/build/attribute-extras/attribute-extras.js b/lib/yuilib/3.8.0/build/attribute-extras/attribute-extras.js similarity index 95% rename from lib/yuilib/3.7.3/build/attribute-extras/attribute-extras.js rename to lib/yuilib/3.8.0/build/attribute-extras/attribute-extras.js index a8d022cb991..ecd8e94993f 100644 --- a/lib/yuilib/3.7.3/build/attribute-extras/attribute-extras.js +++ b/lib/yuilib/3.8.0/build/attribute-extras/attribute-extras.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -7,8 +7,8 @@ http://yuilibrary.com/license/ YUI.add('attribute-extras', function (Y, NAME) { /** - * The attribute module provides an augmentable Attribute implementation, which - * adds configurable attributes and attribute change events to the class being + * The attribute module provides an augmentable Attribute implementation, which + * adds configurable attributes and attribute change events to the class being * augmented. It also provides a State class, which is used internally by Attribute, * but can also be used independently to provide a name/property/value data structure to * store state. @@ -17,7 +17,7 @@ YUI.add('attribute-extras', function (Y, NAME) { */ /** - * The attribute-extras submodule provides less commonly used attribute methods, and can + * The attribute-extras submodule provides less commonly used attribute methods, and can * be augmented/mixed into an implemention which used attribute-core. * * @module attribute @@ -35,10 +35,11 @@ YUI.add('attribute-extras', function (Y, NAME) { }; /** - * A augmentable implementation for AttributeCore, providing less frequently used - * methods for Attribute management such as modifyAttrs(), removeAttr and reset() + * A augmentable implementation for AttributeCore, providing less frequently used + * methods for Attribute management such as modifyAttrs(), removeAttr and reset() * * @class AttributeExtras + * @extensionfor AttributeCore */ function AttributeExtras() {} @@ -49,7 +50,7 @@ YUI.add('attribute-extras', function (Y, NAME) { *

          * The properties which can be modified through this interface are limited * to the following subset of attributes, which can be safely modified - * after a value has already been set on the attribute: readOnly, writeOnce, + * after a value has already been set on the attribute: readOnly, writeOnce, * broadcast and getter. *

          * @method modifyAttr @@ -136,7 +137,7 @@ YUI.add('attribute-extras', function (Y, NAME) { o = {}; Y.each(state.data, function(v, n) { o[n] = state.getAll(n); - }); + }); } return o; @@ -146,4 +147,4 @@ YUI.add('attribute-extras', function (Y, NAME) { Y.AttributeExtras = AttributeExtras; -}, '3.7.3', {"requires": ["oop"]}); +}, '3.8.0', {"requires": ["oop"]}); diff --git a/lib/yuilib/3.8.0/build/attribute-observable/attribute-observable-coverage.js b/lib/yuilib/3.8.0/build/attribute-observable/attribute-observable-coverage.js new file mode 100644 index 00000000000..650d7128c17 --- /dev/null +++ b/lib/yuilib/3.8.0/build/attribute-observable/attribute-observable-coverage.js @@ -0,0 +1,290 @@ +/* +YUI 3.8.0 (build 5744) +Copyright 2012 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ +if (typeof _yuitest_coverage == "undefined"){ + _yuitest_coverage = {}; + _yuitest_coverline = function(src, line){ + var coverage = _yuitest_coverage[src]; + if (!coverage.lines[line]){ + coverage.calledLines++; + } + coverage.lines[line]++; + }; + _yuitest_coverfunc = function(src, name, line){ + var coverage = _yuitest_coverage[src], + funcId = name + ":" + line; + if (!coverage.functions[funcId]){ + coverage.calledFunctions++; + } + coverage.functions[funcId]++; + }; +} +_yuitest_coverage["build/attribute-observable/attribute-observable.js"] = { + lines: {}, + functions: {}, + coveredLines: 0, + calledLines: 0, + coveredFunctions: 0, + calledFunctions: 0, + path: "build/attribute-observable/attribute-observable.js", + code: [] +}; +_yuitest_coverage["build/attribute-observable/attribute-observable.js"].code=["YUI.add('attribute-observable', function (Y, NAME) {",""," /**"," * The attribute module provides an augmentable Attribute implementation, which"," * adds configurable attributes and attribute change events to the class being"," * augmented. It also provides a State class, which is used internally by Attribute,"," * but can also be used independently to provide a name/property/value data structure to"," * store state."," *"," * @module attribute"," */",""," /**"," * The `attribute-observable` submodule provides augmentable attribute change event support"," * for AttributeCore based implementations."," *"," * @module attribute"," * @submodule attribute-observable"," */"," var EventTarget = Y.EventTarget,",""," CHANGE = \"Change\","," BROADCAST = \"broadcast\","," PUBLISHED = \"published\";",""," /**"," * Provides an augmentable implementation of attribute change events for"," * AttributeCore."," *"," * @class AttributeObservable"," * @extensionfor AttributeCore"," * @uses EventTarget"," */"," function AttributeObservable() {"," // Perf tweak - avoid creating event literals if not required."," this._ATTR_E_FACADE = {};",""," EventTarget.call(this, {emitFacade:true});"," }",""," AttributeObservable._ATTR_CFG = [BROADCAST];",""," AttributeObservable.prototype = {",""," /**"," * Sets the value of an attribute."," *"," * @method set"," * @chainable"," *"," * @param {String} name The name of the attribute. If the"," * current value of the attribute is an Object, dot notation can be used"," * to set the value of a property within the object (e.g. set(\"x.y.z\", 5))."," *"," * @param {Any} value The value to set the attribute to."," *"," * @param {Object} opts (Optional) Optional event data to be mixed into"," * the event facade passed to subscribers of the attribute's change event. This"," * can be used as a flexible way to identify the source of a call to set, allowing"," * the developer to distinguish between set called internally by the host, vs."," * set called externally by the application developer."," *"," * @return {Object} A reference to the host object."," */"," set : function(name, val, opts) {"," return this._setAttr(name, val, opts);"," },",""," /**"," * Allows setting of readOnly/writeOnce attributes. See set for argument details."," *"," * @method _set"," * @protected"," * @chainable"," *"," * @param {String} name The name of the attribute."," * @param {Any} val The value to set the attribute to."," * @param {Object} opts (Optional) Optional event data to be mixed into"," * the event facade passed to subscribers of the attribute's change event."," * @return {Object} A reference to the host object."," */"," _set : function(name, val, opts) {"," return this._setAttr(name, val, opts, true);"," },",""," /**"," * Sets multiple attribute values."," *"," * @method setAttrs"," * @param {Object} attrs An object with attributes name/value pairs."," * @param {Object} opts Properties to mix into the event payload. These are shared and mixed into each set"," * @return {Object} A reference to the host object."," * @chainable"," */"," setAttrs : function(attrs, opts) {"," return this._setAttrs(attrs, opts);"," },",""," /**"," * Implementation behind the public setAttrs method, to set multiple attribute values."," *"," * @method _setAttrs"," * @protected"," * @param {Object} attrs An object with attributes name/value pairs."," * @param {Object} opts Properties to mix into the event payload. These are shared and mixed into each set"," * @return {Object} A reference to the host object."," * @chainable"," */"," _setAttrs : function(attrs, opts) {"," var attr;"," for (attr in attrs) {"," if ( attrs.hasOwnProperty(attr) ) {"," this.set(attr, attrs[attr], opts);"," }"," }"," return this;"," },",""," /**"," * Utility method to help setup the event payload and fire the attribute change event."," *"," * @method _fireAttrChange"," * @private"," * @param {String} attrName The name of the attribute"," * @param {String} subAttrName The full path of the property being changed,"," * if this is a sub-attribute value being change. Otherwise null."," * @param {Any} currVal The current value of the attribute"," * @param {Any} newVal The new value of the attribute"," * @param {Object} opts Any additional event data to mix into the attribute change event's event facade."," */"," _fireAttrChange : function(attrName, subAttrName, currVal, newVal, opts) {"," var host = this,"," eventName = attrName + CHANGE,"," state = host._state,"," facade,"," broadcast,"," evtCfg;",""," if (!state.get(attrName, PUBLISHED)) {",""," evtCfg = {"," queuable:false,"," defaultTargetOnly: true,"," defaultFn:host._defAttrChangeFn,"," silent:true"," };",""," broadcast = state.get(attrName, BROADCAST);"," if (broadcast !== undefined) {"," evtCfg.broadcast = broadcast;"," }",""," host.publish(eventName, evtCfg);",""," state.add(attrName, PUBLISHED, true);"," }",""," facade = (opts) ? Y.merge(opts) : host._ATTR_E_FACADE;",""," // Not using the single object signature for fire({type:..., newVal:...}), since"," // we don't want to override type. Changed to the fire(type, {newVal:...}) signature.",""," // facade.type = eventName;"," facade.attrName = attrName;"," facade.subAttrName = subAttrName;"," facade.prevVal = currVal;"," facade.newVal = newVal;",""," // host.fire(facade);"," host.fire(eventName, facade);"," },",""," /**"," * Default function for attribute change events."," *"," * @private"," * @method _defAttrChangeFn"," * @param {EventFacade} e The event object for attribute change events."," */"," _defAttrChangeFn : function(e) {"," if (!this._setAttrVal(e.attrName, e.subAttrName, e.prevVal, e.newVal)) {"," // Prevent \"after\" listeners from being invoked since nothing changed."," e.stopImmediatePropagation();"," } else {"," e.newVal = this.get(e.attrName);"," }"," }"," };",""," // Basic prototype augment - no lazy constructor invocation."," Y.mix(AttributeObservable, EventTarget, false, null, 1);",""," Y.AttributeObservable = AttributeObservable;",""," /**"," The `AttributeEvents` class extension was deprecated in YUI 3.8.0 and is now"," an alias for the `AttributeObservable` class extension. Use that class"," extnesion instead. This alias will be removed in a future version of YUI.",""," @class AttributeEvents"," @uses EventTarget"," @deprecated Use `AttributeObservable` instead."," @see AttributeObservable"," **/"," Y.AttributeEvents = AttributeObservable;","","","}, '3.8.0', {\"requires\": [\"event-custom\"]});"]; +_yuitest_coverage["build/attribute-observable/attribute-observable.js"].lines = {"1":0,"20":0,"34":0,"36":0,"38":0,"41":0,"43":0,"66":0,"83":0,"96":0,"110":0,"111":0,"112":0,"113":0,"116":0,"132":0,"139":0,"141":0,"148":0,"149":0,"150":0,"153":0,"155":0,"158":0,"164":0,"165":0,"166":0,"167":0,"170":0,"181":0,"183":0,"185":0,"191":0,"193":0,"205":0}; +_yuitest_coverage["build/attribute-observable/attribute-observable.js"].functions = {"AttributeObservable:34":0,"set:65":0,"_set:82":0,"setAttrs:95":0,"_setAttrs:109":0,"_fireAttrChange:131":0,"_defAttrChangeFn:180":0,"(anonymous 1):1":0}; +_yuitest_coverage["build/attribute-observable/attribute-observable.js"].coveredLines = 35; +_yuitest_coverage["build/attribute-observable/attribute-observable.js"].coveredFunctions = 8; +_yuitest_coverline("build/attribute-observable/attribute-observable.js", 1); +YUI.add('attribute-observable', function (Y, NAME) { + + /** + * The attribute module provides an augmentable Attribute implementation, which + * adds configurable attributes and attribute change events to the class being + * augmented. It also provides a State class, which is used internally by Attribute, + * but can also be used independently to provide a name/property/value data structure to + * store state. + * + * @module attribute + */ + + /** + * The `attribute-observable` submodule provides augmentable attribute change event support + * for AttributeCore based implementations. + * + * @module attribute + * @submodule attribute-observable + */ + _yuitest_coverfunc("build/attribute-observable/attribute-observable.js", "(anonymous 1)", 1); +_yuitest_coverline("build/attribute-observable/attribute-observable.js", 20); +var EventTarget = Y.EventTarget, + + CHANGE = "Change", + BROADCAST = "broadcast", + PUBLISHED = "published"; + + /** + * Provides an augmentable implementation of attribute change events for + * AttributeCore. + * + * @class AttributeObservable + * @extensionfor AttributeCore + * @uses EventTarget + */ + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 34); +function AttributeObservable() { + // Perf tweak - avoid creating event literals if not required. + _yuitest_coverfunc("build/attribute-observable/attribute-observable.js", "AttributeObservable", 34); +_yuitest_coverline("build/attribute-observable/attribute-observable.js", 36); +this._ATTR_E_FACADE = {}; + + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 38); +EventTarget.call(this, {emitFacade:true}); + } + + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 41); +AttributeObservable._ATTR_CFG = [BROADCAST]; + + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 43); +AttributeObservable.prototype = { + + /** + * Sets the value of an attribute. + * + * @method set + * @chainable + * + * @param {String} name The name of the attribute. If the + * current value of the attribute is an Object, dot notation can be used + * to set the value of a property within the object (e.g. set("x.y.z", 5)). + * + * @param {Any} value The value to set the attribute to. + * + * @param {Object} opts (Optional) Optional event data to be mixed into + * the event facade passed to subscribers of the attribute's change event. This + * can be used as a flexible way to identify the source of a call to set, allowing + * the developer to distinguish between set called internally by the host, vs. + * set called externally by the application developer. + * + * @return {Object} A reference to the host object. + */ + set : function(name, val, opts) { + _yuitest_coverfunc("build/attribute-observable/attribute-observable.js", "set", 65); +_yuitest_coverline("build/attribute-observable/attribute-observable.js", 66); +return this._setAttr(name, val, opts); + }, + + /** + * Allows setting of readOnly/writeOnce attributes. See set for argument details. + * + * @method _set + * @protected + * @chainable + * + * @param {String} name The name of the attribute. + * @param {Any} val The value to set the attribute to. + * @param {Object} opts (Optional) Optional event data to be mixed into + * the event facade passed to subscribers of the attribute's change event. + * @return {Object} A reference to the host object. + */ + _set : function(name, val, opts) { + _yuitest_coverfunc("build/attribute-observable/attribute-observable.js", "_set", 82); +_yuitest_coverline("build/attribute-observable/attribute-observable.js", 83); +return this._setAttr(name, val, opts, true); + }, + + /** + * Sets multiple attribute values. + * + * @method setAttrs + * @param {Object} attrs An object with attributes name/value pairs. + * @param {Object} opts Properties to mix into the event payload. These are shared and mixed into each set + * @return {Object} A reference to the host object. + * @chainable + */ + setAttrs : function(attrs, opts) { + _yuitest_coverfunc("build/attribute-observable/attribute-observable.js", "setAttrs", 95); +_yuitest_coverline("build/attribute-observable/attribute-observable.js", 96); +return this._setAttrs(attrs, opts); + }, + + /** + * Implementation behind the public setAttrs method, to set multiple attribute values. + * + * @method _setAttrs + * @protected + * @param {Object} attrs An object with attributes name/value pairs. + * @param {Object} opts Properties to mix into the event payload. These are shared and mixed into each set + * @return {Object} A reference to the host object. + * @chainable + */ + _setAttrs : function(attrs, opts) { + _yuitest_coverfunc("build/attribute-observable/attribute-observable.js", "_setAttrs", 109); +_yuitest_coverline("build/attribute-observable/attribute-observable.js", 110); +var attr; + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 111); +for (attr in attrs) { + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 112); +if ( attrs.hasOwnProperty(attr) ) { + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 113); +this.set(attr, attrs[attr], opts); + } + } + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 116); +return this; + }, + + /** + * Utility method to help setup the event payload and fire the attribute change event. + * + * @method _fireAttrChange + * @private + * @param {String} attrName The name of the attribute + * @param {String} subAttrName The full path of the property being changed, + * if this is a sub-attribute value being change. Otherwise null. + * @param {Any} currVal The current value of the attribute + * @param {Any} newVal The new value of the attribute + * @param {Object} opts Any additional event data to mix into the attribute change event's event facade. + */ + _fireAttrChange : function(attrName, subAttrName, currVal, newVal, opts) { + _yuitest_coverfunc("build/attribute-observable/attribute-observable.js", "_fireAttrChange", 131); +_yuitest_coverline("build/attribute-observable/attribute-observable.js", 132); +var host = this, + eventName = attrName + CHANGE, + state = host._state, + facade, + broadcast, + evtCfg; + + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 139); +if (!state.get(attrName, PUBLISHED)) { + + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 141); +evtCfg = { + queuable:false, + defaultTargetOnly: true, + defaultFn:host._defAttrChangeFn, + silent:true + }; + + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 148); +broadcast = state.get(attrName, BROADCAST); + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 149); +if (broadcast !== undefined) { + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 150); +evtCfg.broadcast = broadcast; + } + + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 153); +host.publish(eventName, evtCfg); + + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 155); +state.add(attrName, PUBLISHED, true); + } + + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 158); +facade = (opts) ? Y.merge(opts) : host._ATTR_E_FACADE; + + // Not using the single object signature for fire({type:..., newVal:...}), since + // we don't want to override type. Changed to the fire(type, {newVal:...}) signature. + + // facade.type = eventName; + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 164); +facade.attrName = attrName; + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 165); +facade.subAttrName = subAttrName; + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 166); +facade.prevVal = currVal; + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 167); +facade.newVal = newVal; + + // host.fire(facade); + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 170); +host.fire(eventName, facade); + }, + + /** + * Default function for attribute change events. + * + * @private + * @method _defAttrChangeFn + * @param {EventFacade} e The event object for attribute change events. + */ + _defAttrChangeFn : function(e) { + _yuitest_coverfunc("build/attribute-observable/attribute-observable.js", "_defAttrChangeFn", 180); +_yuitest_coverline("build/attribute-observable/attribute-observable.js", 181); +if (!this._setAttrVal(e.attrName, e.subAttrName, e.prevVal, e.newVal)) { + // Prevent "after" listeners from being invoked since nothing changed. + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 183); +e.stopImmediatePropagation(); + } else { + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 185); +e.newVal = this.get(e.attrName); + } + } + }; + + // Basic prototype augment - no lazy constructor invocation. + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 191); +Y.mix(AttributeObservable, EventTarget, false, null, 1); + + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 193); +Y.AttributeObservable = AttributeObservable; + + /** + The `AttributeEvents` class extension was deprecated in YUI 3.8.0 and is now + an alias for the `AttributeObservable` class extension. Use that class + extnesion instead. This alias will be removed in a future version of YUI. + + @class AttributeEvents + @uses EventTarget + @deprecated Use `AttributeObservable` instead. + @see AttributeObservable + **/ + _yuitest_coverline("build/attribute-observable/attribute-observable.js", 205); +Y.AttributeEvents = AttributeObservable; + + +}, '3.8.0', {"requires": ["event-custom"]}); diff --git a/lib/yuilib/3.7.3/build/attribute-events/attribute-events-debug.js b/lib/yuilib/3.8.0/build/attribute-observable/attribute-observable-debug.js similarity index 82% rename from lib/yuilib/3.7.3/build/attribute-events/attribute-events-debug.js rename to lib/yuilib/3.8.0/build/attribute-observable/attribute-observable-debug.js index d730d7e1944..5375cfe1eff 100644 --- a/lib/yuilib/3.7.3/build/attribute-events/attribute-events-debug.js +++ b/lib/yuilib/3.8.0/build/attribute-observable/attribute-observable-debug.js @@ -1,14 +1,14 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ -YUI.add('attribute-events', function (Y, NAME) { +YUI.add('attribute-observable', function (Y, NAME) { /** - * The attribute module provides an augmentable Attribute implementation, which - * adds configurable attributes and attribute change events to the class being + * The attribute module provides an augmentable Attribute implementation, which + * adds configurable attributes and attribute change events to the class being * augmented. It also provides a State class, which is used internally by Attribute, * but can also be used independently to provide a name/property/value data structure to * store state. @@ -17,11 +17,11 @@ YUI.add('attribute-events', function (Y, NAME) { */ /** - * The attribute-events submodule provides augmentable attribute change event support + * The `attribute-observable` submodule provides augmentable attribute change event support * for AttributeCore based implementations. * * @module attribute - * @submodule attribute-events + * @submodule attribute-observable */ var EventTarget = Y.EventTarget, @@ -30,21 +30,23 @@ YUI.add('attribute-events', function (Y, NAME) { PUBLISHED = "published"; /** - * Provides an augmentable implementation of attribute change events for - * AttributeCore. + * Provides an augmentable implementation of attribute change events for + * AttributeCore. * - * @class AttributeEvents + * @class AttributeObservable + * @extensionfor AttributeCore * @uses EventTarget */ - function AttributeEvents() { + function AttributeObservable() { // Perf tweak - avoid creating event literals if not required. this._ATTR_E_FACADE = {}; + EventTarget.call(this, {emitFacade:true}); } - AttributeEvents._ATTR_CFG = [BROADCAST]; + AttributeObservable._ATTR_CFG = [BROADCAST]; - AttributeEvents.prototype = { + AttributeObservable.prototype = { /** * Sets the value of an attribute. @@ -52,16 +54,16 @@ YUI.add('attribute-events', function (Y, NAME) { * @method set * @chainable * - * @param {String} name The name of the attribute. If the + * @param {String} name The name of the attribute. If the * current value of the attribute is an Object, dot notation can be used * to set the value of a property within the object (e.g. set("x.y.z", 5)). * * @param {Any} value The value to set the attribute to. * * @param {Object} opts (Optional) Optional event data to be mixed into - * the event facade passed to subscribers of the attribute's change event. This - * can be used as a flexible way to identify the source of a call to set, allowing - * the developer to distinguish between set called internally by the host, vs. + * the event facade passed to subscribers of the attribute's change event. This + * can be used as a flexible way to identify the source of a call to set, allowing + * the developer to distinguish between set called internally by the host, vs. * set called externally by the application developer. * * @return {Object} A reference to the host object. @@ -76,7 +78,7 @@ YUI.add('attribute-events', function (Y, NAME) { * @method _set * @protected * @chainable - * + * * @param {String} name The name of the attribute. * @param {Any} val The value to set the attribute to. * @param {Object} opts (Optional) Optional event data to be mixed into @@ -92,7 +94,7 @@ YUI.add('attribute-events', function (Y, NAME) { * * @method setAttrs * @param {Object} attrs An object with attributes name/value pairs. - * @param {Object} opts Properties to mix into the event payload. These are shared and mixed into each set + * @param {Object} opts Properties to mix into the event payload. These are shared and mixed into each set * @return {Object} A reference to the host object. * @chainable */ @@ -106,7 +108,7 @@ YUI.add('attribute-events', function (Y, NAME) { * @method _setAttrs * @protected * @param {Object} attrs An object with attributes name/value pairs. - * @param {Object} opts Properties to mix into the event payload. These are shared and mixed into each set + * @param {Object} opts Properties to mix into the event payload. These are shared and mixed into each set * @return {Object} A reference to the host object. * @chainable */ @@ -122,11 +124,11 @@ YUI.add('attribute-events', function (Y, NAME) { /** * Utility method to help setup the event payload and fire the attribute change event. - * + * * @method _fireAttrChange * @private * @param {String} attrName The name of the attribute - * @param {String} subAttrName The full path of the property being changed, + * @param {String} subAttrName The full path of the property being changed, * if this is a sub-attribute value being change. Otherwise null. * @param {Any} currVal The current value of the attribute * @param {Any} newVal The new value of the attribute @@ -141,11 +143,11 @@ YUI.add('attribute-events', function (Y, NAME) { evtCfg; if (!state.get(attrName, PUBLISHED)) { - + evtCfg = { queuable:false, - defaultTargetOnly: true, - defaultFn:host._defAttrChangeFn, + defaultTargetOnly: true, + defaultFn:host._defAttrChangeFn, silent:true }; @@ -155,13 +157,13 @@ YUI.add('attribute-events', function (Y, NAME) { } host.publish(eventName, evtCfg); - + state.add(attrName, PUBLISHED, true); } facade = (opts) ? Y.merge(opts) : host._ATTR_E_FACADE; - // Not using the single object signature for fire({type:..., newVal:...}), since + // Not using the single object signature for fire({type:..., newVal:...}), since // we don't want to override type. Changed to the fire(type, {newVal:...}) signature. // facade.type = eventName; @@ -193,9 +195,21 @@ YUI.add('attribute-events', function (Y, NAME) { }; // Basic prototype augment - no lazy constructor invocation. - Y.mix(AttributeEvents, EventTarget, false, null, 1); + Y.mix(AttributeObservable, EventTarget, false, null, 1); - Y.AttributeEvents = AttributeEvents; + Y.AttributeObservable = AttributeObservable; + + /** + The `AttributeEvents` class extension was deprecated in YUI 3.8.0 and is now + an alias for the `AttributeObservable` class extension. Use that class + extnesion instead. This alias will be removed in a future version of YUI. + + @class AttributeEvents + @uses EventTarget + @deprecated Use `AttributeObservable` instead. + @see AttributeObservable + **/ + Y.AttributeEvents = AttributeObservable; -}, '3.7.3', {"requires": ["event-custom"]}); +}, '3.8.0', {"requires": ["event-custom"]}); diff --git a/lib/yuilib/3.8.0/build/attribute-observable/attribute-observable-min.js b/lib/yuilib/3.8.0/build/attribute-observable/attribute-observable-min.js new file mode 100644 index 00000000000..b76c5ae5eed --- /dev/null +++ b/lib/yuilib/3.8.0/build/attribute-observable/attribute-observable-min.js @@ -0,0 +1,7 @@ +/* +YUI 3.8.0 (build 5744) +Copyright 2012 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ +YUI.add("attribute-observable",function(e,t){function o(){this._ATTR_E_FACADE={},n.call(this,{emitFacade:!0})}var n=e.EventTarget,r="Change",i="broadcast",s="published";o._ATTR_CFG=[i],o.prototype={set:function(e,t,n){return this._setAttr(e,t,n)},_set:function(e,t,n){return this._setAttr(e,t,n,!0)},setAttrs:function(e,t){return this._setAttrs(e,t)},_setAttrs:function(e,t){var n;for(n in e)e.hasOwnProperty(n)&&this.set(n,e[n],t);return this},_fireAttrChange:function(t,n,o,u,a){var f=this,l=t+r,c=f._state,h,p,d;c.get(t,s)||(d={queuable:!1,defaultTargetOnly:!0,defaultFn:f._defAttrChangeFn,silent:!0},p=c.get(t,i),p!==undefined&&(d.broadcast=p),f.publish(l,d),c.add(t,s,!0)),h=a?e.merge(a):f._ATTR_E_FACADE,h.attrName=t,h.subAttrName=n,h.prevVal=o,h.newVal=u,f.fire(l,h)},_defAttrChangeFn:function(e){this._setAttrVal(e.attrName,e.subAttrName,e.prevVal,e.newVal)?e.newVal=this.get(e.attrName):e.stopImmediatePropagation()}},e.mix(o,n,!1,null,1),e.AttributeObservable=o,e.AttributeEvents=o},"3.8.0",{requires:["event-custom"]}); diff --git a/lib/yuilib/3.7.3/build/attribute-events/attribute-events.js b/lib/yuilib/3.8.0/build/attribute-observable/attribute-observable.js similarity index 81% rename from lib/yuilib/3.7.3/build/attribute-events/attribute-events.js rename to lib/yuilib/3.8.0/build/attribute-observable/attribute-observable.js index 76d12ebb866..428b022c45d 100644 --- a/lib/yuilib/3.7.3/build/attribute-events/attribute-events.js +++ b/lib/yuilib/3.8.0/build/attribute-observable/attribute-observable.js @@ -1,14 +1,14 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ -YUI.add('attribute-events', function (Y, NAME) { +YUI.add('attribute-observable', function (Y, NAME) { /** - * The attribute module provides an augmentable Attribute implementation, which - * adds configurable attributes and attribute change events to the class being + * The attribute module provides an augmentable Attribute implementation, which + * adds configurable attributes and attribute change events to the class being * augmented. It also provides a State class, which is used internally by Attribute, * but can also be used independently to provide a name/property/value data structure to * store state. @@ -17,11 +17,11 @@ YUI.add('attribute-events', function (Y, NAME) { */ /** - * The attribute-events submodule provides augmentable attribute change event support + * The `attribute-observable` submodule provides augmentable attribute change event support * for AttributeCore based implementations. * * @module attribute - * @submodule attribute-events + * @submodule attribute-observable */ var EventTarget = Y.EventTarget, @@ -30,21 +30,23 @@ YUI.add('attribute-events', function (Y, NAME) { PUBLISHED = "published"; /** - * Provides an augmentable implementation of attribute change events for - * AttributeCore. + * Provides an augmentable implementation of attribute change events for + * AttributeCore. * - * @class AttributeEvents + * @class AttributeObservable + * @extensionfor AttributeCore * @uses EventTarget */ - function AttributeEvents() { + function AttributeObservable() { // Perf tweak - avoid creating event literals if not required. this._ATTR_E_FACADE = {}; + EventTarget.call(this, {emitFacade:true}); } - AttributeEvents._ATTR_CFG = [BROADCAST]; + AttributeObservable._ATTR_CFG = [BROADCAST]; - AttributeEvents.prototype = { + AttributeObservable.prototype = { /** * Sets the value of an attribute. @@ -52,16 +54,16 @@ YUI.add('attribute-events', function (Y, NAME) { * @method set * @chainable * - * @param {String} name The name of the attribute. If the + * @param {String} name The name of the attribute. If the * current value of the attribute is an Object, dot notation can be used * to set the value of a property within the object (e.g. set("x.y.z", 5)). * * @param {Any} value The value to set the attribute to. * * @param {Object} opts (Optional) Optional event data to be mixed into - * the event facade passed to subscribers of the attribute's change event. This - * can be used as a flexible way to identify the source of a call to set, allowing - * the developer to distinguish between set called internally by the host, vs. + * the event facade passed to subscribers of the attribute's change event. This + * can be used as a flexible way to identify the source of a call to set, allowing + * the developer to distinguish between set called internally by the host, vs. * set called externally by the application developer. * * @return {Object} A reference to the host object. @@ -76,7 +78,7 @@ YUI.add('attribute-events', function (Y, NAME) { * @method _set * @protected * @chainable - * + * * @param {String} name The name of the attribute. * @param {Any} val The value to set the attribute to. * @param {Object} opts (Optional) Optional event data to be mixed into @@ -92,7 +94,7 @@ YUI.add('attribute-events', function (Y, NAME) { * * @method setAttrs * @param {Object} attrs An object with attributes name/value pairs. - * @param {Object} opts Properties to mix into the event payload. These are shared and mixed into each set + * @param {Object} opts Properties to mix into the event payload. These are shared and mixed into each set * @return {Object} A reference to the host object. * @chainable */ @@ -106,7 +108,7 @@ YUI.add('attribute-events', function (Y, NAME) { * @method _setAttrs * @protected * @param {Object} attrs An object with attributes name/value pairs. - * @param {Object} opts Properties to mix into the event payload. These are shared and mixed into each set + * @param {Object} opts Properties to mix into the event payload. These are shared and mixed into each set * @return {Object} A reference to the host object. * @chainable */ @@ -122,11 +124,11 @@ YUI.add('attribute-events', function (Y, NAME) { /** * Utility method to help setup the event payload and fire the attribute change event. - * + * * @method _fireAttrChange * @private * @param {String} attrName The name of the attribute - * @param {String} subAttrName The full path of the property being changed, + * @param {String} subAttrName The full path of the property being changed, * if this is a sub-attribute value being change. Otherwise null. * @param {Any} currVal The current value of the attribute * @param {Any} newVal The new value of the attribute @@ -141,11 +143,11 @@ YUI.add('attribute-events', function (Y, NAME) { evtCfg; if (!state.get(attrName, PUBLISHED)) { - + evtCfg = { queuable:false, - defaultTargetOnly: true, - defaultFn:host._defAttrChangeFn, + defaultTargetOnly: true, + defaultFn:host._defAttrChangeFn, silent:true }; @@ -155,13 +157,13 @@ YUI.add('attribute-events', function (Y, NAME) { } host.publish(eventName, evtCfg); - + state.add(attrName, PUBLISHED, true); } facade = (opts) ? Y.merge(opts) : host._ATTR_E_FACADE; - // Not using the single object signature for fire({type:..., newVal:...}), since + // Not using the single object signature for fire({type:..., newVal:...}), since // we don't want to override type. Changed to the fire(type, {newVal:...}) signature. // facade.type = eventName; @@ -192,9 +194,21 @@ YUI.add('attribute-events', function (Y, NAME) { }; // Basic prototype augment - no lazy constructor invocation. - Y.mix(AttributeEvents, EventTarget, false, null, 1); + Y.mix(AttributeObservable, EventTarget, false, null, 1); - Y.AttributeEvents = AttributeEvents; + Y.AttributeObservable = AttributeObservable; + + /** + The `AttributeEvents` class extension was deprecated in YUI 3.8.0 and is now + an alias for the `AttributeObservable` class extension. Use that class + extnesion instead. This alias will be removed in a future version of YUI. + + @class AttributeEvents + @uses EventTarget + @deprecated Use `AttributeObservable` instead. + @see AttributeObservable + **/ + Y.AttributeEvents = AttributeObservable; -}, '3.7.3', {"requires": ["event-custom"]}); +}, '3.8.0', {"requires": ["event-custom"]}); diff --git a/lib/yuilib/3.7.3/build/autocomplete-base/autocomplete-base-coverage.js b/lib/yuilib/3.8.0/build/autocomplete-base/autocomplete-base-coverage.js similarity index 99% rename from lib/yuilib/3.7.3/build/autocomplete-base/autocomplete-base-coverage.js rename to lib/yuilib/3.8.0/build/autocomplete-base/autocomplete-base-coverage.js index 8c7e0fce7ba..3cd9c8f9c7c 100644 --- a/lib/yuilib/3.7.3/build/autocomplete-base/autocomplete-base-coverage.js +++ b/lib/yuilib/3.8.0/build/autocomplete-base/autocomplete-base-coverage.js @@ -1,5 +1,5 @@ /* -YUI 3.7.3 (build 5687) +YUI 3.8.0 (build 5744) Copyright 2012 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ @@ -32,7 +32,7 @@ _yuitest_coverage["build/autocomplete-base/autocomplete-base.js"] = { path: "build/autocomplete-base/autocomplete-base.js", code: [] }; -_yuitest_coverage["build/autocomplete-base/autocomplete-base.js"].code=["YUI.add('autocomplete-base', function (Y, NAME) {","","/**","Provides automatic input completion or suggestions for text input fields and","textareas.","","@module autocomplete","@main autocomplete","@since 3.3.0","**/","","/**","`Y.Base` extension that provides core autocomplete logic (but no UI","implementation) for a text input field or textarea. Must be mixed into a","`Y.Base`-derived class to be useful.","","@module autocomplete","@submodule autocomplete-base","**/","","/**","Extension that provides core autocomplete logic (but no UI implementation) for a","text input field or textarea.","","The `AutoCompleteBase` class provides events and attributes that abstract away","core autocomplete logic and configuration, but does not provide a widget","implementation or suggestion UI. For a prepackaged autocomplete widget, see","`AutoCompleteList`.","","This extension cannot be instantiated directly, since it doesn't provide an","actual implementation. It's intended to be mixed into a `Y.Base`-based class or","widget.","","`Y.Widget`-based example:",""," YUI().use('autocomplete-base', 'widget', function (Y) {"," var MyAC = Y.Base.create('myAC', Y.Widget, [Y.AutoCompleteBase], {"," // Custom prototype methods and properties."," }, {"," // Custom static methods and properties."," });",""," // Custom implementation code."," });","","`Y.Base`-based example:",""," YUI().use('autocomplete-base', function (Y) {"," var MyAC = Y.Base.create('myAC', Y.Base, [Y.AutoCompleteBase], {"," initializer: function () {"," this._bindUIACBase();"," this._syncUIACBase();"," },",""," // Custom prototype methods and properties."," }, {"," // Custom static methods and properties."," });",""," // Custom implementation code."," });","","@class AutoCompleteBase","**/","","var Escape = Y.Escape,"," Lang = Y.Lang,"," YArray = Y.Array,"," YObject = Y.Object,",""," isFunction = Lang.isFunction,"," isString = Lang.isString,"," trim = Lang.trim,",""," INVALID_VALUE = Y.Attribute.INVALID_VALUE,",""," _FUNCTION_VALIDATOR = '_functionValidator',"," _SOURCE_SUCCESS = '_sourceSuccess',",""," ALLOW_BROWSER_AC = 'allowBrowserAutocomplete',"," INPUT_NODE = 'inputNode',"," QUERY = 'query',"," QUERY_DELIMITER = 'queryDelimiter',"," REQUEST_TEMPLATE = 'requestTemplate',"," RESULTS = 'results',"," RESULT_LIST_LOCATOR = 'resultListLocator',"," VALUE = 'value',"," VALUE_CHANGE = 'valueChange',",""," EVT_CLEAR = 'clear',"," EVT_QUERY = QUERY,"," EVT_RESULTS = RESULTS;","","function AutoCompleteBase() {}","","AutoCompleteBase.prototype = {"," // -- Lifecycle Methods ----------------------------------------------------"," initializer: function () {"," // AOP bindings."," Y.before(this._bindUIACBase, this, 'bindUI');"," Y.before(this._syncUIACBase, this, 'syncUI');",""," // -- Public Events ----------------------------------------------------",""," /**"," Fires after the query has been completely cleared or no longer meets the"," minimum query length requirement.",""," @event clear"," @param {String} prevVal Value of the query before it was cleared."," @param {String} src Source of the event."," @preventable _defClearFn"," **/"," this.publish(EVT_CLEAR, {"," defaultFn: this._defClearFn"," });",""," /**"," Fires when the contents of the input field have changed and the input"," value meets the criteria necessary to generate an autocomplete query.",""," @event query"," @param {String} inputValue Full contents of the text input field or"," textarea that generated the query."," @param {String} query AutoComplete query. This is the string that will"," be used to request completion results. It may or may not be the same"," as `inputValue`."," @param {String} src Source of the event."," @preventable _defQueryFn"," **/"," this.publish(EVT_QUERY, {"," defaultFn: this._defQueryFn"," });",""," /**"," Fires after query results are received from the source. If no source has"," been set, this event will not fire.",""," @event results"," @param {Array|Object} data Raw, unfiltered result data (if available)."," @param {String} query Query that generated these results."," @param {Object[]} results Array of filtered, formatted, and highlighted"," results. Each item in the array is an object with the following"," properties:",""," @param {Node|HTMLElement|String} results.display Formatted result"," HTML suitable for display to the user. If no custom formatter is"," set, this will be an HTML-escaped version of the string in the"," `text` property."," @param {String} [results.highlighted] Highlighted (but not"," formatted) result text. This property will only be set if a"," highlighter is in use."," @param {Any} results.raw Raw, unformatted result in whatever form it"," was provided by the source."," @param {String} results.text Plain text version of the result,"," suitable for being inserted into the value of a text input field"," or textarea when the result is selected by a user. This value is"," not HTML-escaped and should not be inserted into the page using"," `innerHTML` or `Node#setContent()`.",""," @preventable _defResultsFn"," **/"," this.publish(EVT_RESULTS, {"," defaultFn: this._defResultsFn"," });"," },",""," destructor: function () {"," this._acBaseEvents && this._acBaseEvents.detach();",""," delete this._acBaseEvents;"," delete this._cache;"," delete this._inputNode;"," delete this._rawSource;"," },",""," // -- Public Prototype Methods ---------------------------------------------",""," /**"," Clears the result cache.",""," @method clearCache"," @chainable"," @since 3.5.0"," **/"," clearCache: function () {"," this._cache && (this._cache = {});"," return this;"," },",""," /**"," Sends a request to the configured source. If no source is configured, this"," method won't do anything.",""," Usually there's no reason to call this method manually; it will be called"," automatically when user input causes a `query` event to be fired. The only"," time you'll need to call this method manually is if you want to force a"," request to be sent when no user input has occurred.",""," @method sendRequest"," @param {String} [query] Query to send. If specified, the `query` attribute"," will be set to this query. If not specified, the current value of the"," `query` attribute will be used."," @param {Function} [requestTemplate] Request template function. If not"," specified, the current value of the `requestTemplate` attribute will be"," used."," @chainable"," **/"," sendRequest: function (query, requestTemplate) {"," var request,"," source = this.get('source');",""," if (query || query === '') {"," this._set(QUERY, query);"," } else {"," query = this.get(QUERY) || '';"," }",""," if (source) {"," if (!requestTemplate) {"," requestTemplate = this.get(REQUEST_TEMPLATE);"," }",""," request = requestTemplate ?"," requestTemplate.call(this, query) : query;","",""," source.sendRequest({"," query : query,"," request: request,",""," callback: {"," success: Y.bind(this._onResponse, this, query)"," }"," });"," }",""," return this;"," },",""," // -- Protected Lifecycle Methods ------------------------------------------",""," /**"," Attaches event listeners and behaviors.",""," @method _bindUIACBase"," @protected"," **/"," _bindUIACBase: function () {"," var inputNode = this.get(INPUT_NODE),"," tokenInput = inputNode && inputNode.tokenInput;",""," // If the inputNode has a node-tokeninput plugin attached, bind to the"," // plugin's inputNode instead."," if (tokenInput) {"," inputNode = tokenInput.get(INPUT_NODE);"," this._set('tokenInput', tokenInput);"," }",""," if (!inputNode) {"," Y.error('No inputNode specified.');"," return;"," }",""," this._inputNode = inputNode;",""," this._acBaseEvents = new Y.EventHandle(["," // This is the valueChange event on the inputNode, provided by the"," // event-valuechange module, not our own valueChange."," inputNode.on(VALUE_CHANGE, this._onInputValueChange, this),"," inputNode.on('blur', this._onInputBlur, this),",""," this.after(ALLOW_BROWSER_AC + 'Change', this._syncBrowserAutocomplete),"," this.after('sourceTypeChange', this._afterSourceTypeChange),"," this.after(VALUE_CHANGE, this._afterValueChange)"," ]);"," },",""," /**"," Synchronizes the UI state of the `inputNode`.",""," @method _syncUIACBase"," @protected"," **/"," _syncUIACBase: function () {"," this._syncBrowserAutocomplete();"," this.set(VALUE, this.get(INPUT_NODE).get(VALUE));"," },",""," // -- Protected Prototype Methods ------------------------------------------",""," /**"," Creates a DataSource-like object that simply returns the specified array as"," a response. See the `source` attribute for more details.",""," @method _createArraySource"," @param {Array} source"," @return {Object} DataSource-like object."," @protected"," **/"," _createArraySource: function (source) {"," var that = this;",""," return {"," type: 'array',"," sendRequest: function (request) {"," that[_SOURCE_SUCCESS](source.concat(), request);"," }"," };"," },",""," /**"," Creates a DataSource-like object that passes the query to a custom-defined"," function, which is expected to call the provided callback with an array of"," results. See the `source` attribute for more details.",""," @method _createFunctionSource"," @param {Function} source Function that accepts a query and a callback as"," parameters, and calls the callback with an array of results."," @return {Object} DataSource-like object."," @protected"," **/"," _createFunctionSource: function (source) {"," var that = this;",""," return {"," type: 'function',"," sendRequest: function (request) {"," var value;",""," function afterResults(results) {"," that[_SOURCE_SUCCESS](results || [], request);"," }",""," // Allow both synchronous and asynchronous functions. If we get"," // a truthy return value, assume the function is synchronous."," if ((value = source(request.query, afterResults))) {"," afterResults(value);"," }"," }"," };"," },",""," /**"," Creates a DataSource-like object that looks up queries as properties on the"," specified object, and returns the found value (if any) as a response. See"," the `source` attribute for more details.",""," @method _createObjectSource"," @param {Object} source"," @return {Object} DataSource-like object."," @protected"," **/"," _createObjectSource: function (source) {"," var that = this;",""," return {"," type: 'object',"," sendRequest: function (request) {"," var query = request.query;",""," that[_SOURCE_SUCCESS]("," YObject.owns(source, query) ? source[query] : [],"," request"," );"," }"," };"," },",""," /**"," Returns `true` if _value_ is either a function or `null`.",""," @method _functionValidator"," @param {Function|null} value Value to validate."," @protected"," **/"," _functionValidator: function (value) {"," return value === null || isFunction(value);"," },",""," /**"," Faster and safer alternative to `Y.Object.getValue()`. Doesn't bother"," casting the path to an array (since we already know it's an array) and"," doesn't throw an error if a value in the middle of the object hierarchy is"," neither `undefined` nor an object.",""," @method _getObjectValue"," @param {Object} obj"," @param {Array} path"," @return {Any} Located value, or `undefined` if the value was"," not found at the specified path."," @protected"," **/"," _getObjectValue: function (obj, path) {"," if (!obj) {"," return;"," }",""," for (var i = 0, len = path.length; obj && i < len; i++) {"," obj = obj[path[i]];"," }",""," return obj;"," },",""," /**"," Parses result responses, performs filtering and highlighting, and fires the"," `results` event.",""," @method _parseResponse"," @param {String} query Query that generated these results."," @param {Object} response Response containing results."," @param {Object} data Raw response data."," @protected"," **/"," _parseResponse: function (query, response, data) {"," var facade = {"," data : data,"," query : query,"," results: []"," },",""," listLocator = this.get(RESULT_LIST_LOCATOR),"," results = [],"," unfiltered = response && response.results,",""," filters,"," formatted,"," formatter,"," highlighted,"," highlighter,"," i,"," len,"," maxResults,"," result,"," text,"," textLocator;",""," if (unfiltered && listLocator) {"," unfiltered = listLocator.call(this, unfiltered);"," }",""," if (unfiltered && unfiltered.length) {"," filters = this.get('resultFilters');"," textLocator = this.get('resultTextLocator');",""," // Create a lightweight result object for each result to make them"," // easier to work with. The various properties on the object"," // represent different formats of the result, and will be populated"," // as we go."," for (i = 0, len = unfiltered.length; i < len; ++i) {"," result = unfiltered[i];",""," text = textLocator ?"," textLocator.call(this, result) :"," result.toString();",""," results.push({"," display: Escape.html(text),"," raw : result,"," text : text"," });"," }",""," // Run the results through all configured result filters. Each"," // filter returns an array of (potentially fewer) result objects,"," // which is then passed to the next filter, and so on."," for (i = 0, len = filters.length; i < len; ++i) {"," results = filters[i].call(this, query, results.concat());",""," if (!results) {"," return;"," }",""," if (!results.length) {"," break;"," }"," }",""," if (results.length) {"," formatter = this.get('resultFormatter');"," highlighter = this.get('resultHighlighter');"," maxResults = this.get('maxResults');",""," // If maxResults is set and greater than 0, limit the number of"," // results."," if (maxResults && maxResults > 0 &&"," results.length > maxResults) {"," results.length = maxResults;"," }",""," // Run the results through the configured highlighter (if any)."," // The highlighter returns an array of highlighted strings (not"," // an array of result objects), and these strings are then added"," // to each result object."," if (highlighter) {"," highlighted = highlighter.call(this, query,"," results.concat());",""," if (!highlighted) {"," return;"," }",""," for (i = 0, len = highlighted.length; i < len; ++i) {"," result = results[i];"," result.highlighted = highlighted[i];"," result.display = result.highlighted;"," }"," }",""," // Run the results through the configured formatter (if any) to"," // produce the final formatted results. The formatter returns an"," // array of strings or Node instances (not an array of result"," // objects), and these strings/Nodes are then added to each"," // result object."," if (formatter) {"," formatted = formatter.call(this, query, results.concat());",""," if (!formatted) {"," return;"," }",""," for (i = 0, len = formatted.length; i < len; ++i) {"," results[i].display = formatted[i];"," }"," }"," }"," }",""," facade.results = results;"," this.fire(EVT_RESULTS, facade);"," },",""," /**"," Returns the query portion of the specified input value, or `null` if there"," is no suitable query within the input value.",""," If a query delimiter is defined, the query will be the last delimited part"," of of the string.",""," @method _parseValue"," @param {String} value Input value from which to extract the query."," @return {String|null} query"," @protected"," **/"," _parseValue: function (value) {"," var delim = this.get(QUERY_DELIMITER);",""," if (delim) {"," value = value.split(delim);"," value = value[value.length - 1];"," }",""," return Lang.trimLeft(value);"," },",""," /**"," Setter for the `enableCache` attribute.",""," @method _setEnableCache"," @param {Boolean} value"," @protected"," @since 3.5.0"," **/"," _setEnableCache: function (value) {"," // When `this._cache` is an object, result sources will store cached"," // results in it. When it's falsy, they won't. This way result sources"," // don't need to get the value of the `enableCache` attribute on every"," // request, which would be sloooow."," this._cache = value ? {} : null;"," },",""," /**"," Setter for locator attributes.",""," @method _setLocator"," @param {Function|String|null} locator"," @return {Function|null}"," @protected"," **/"," _setLocator: function (locator) {"," if (this[_FUNCTION_VALIDATOR](locator)) {"," return locator;"," }",""," var that = this;",""," locator = locator.toString().split('.');",""," return function (result) {"," return result && that._getObjectValue(result, locator);"," };"," },",""," /**"," Setter for the `requestTemplate` attribute.",""," @method _setRequestTemplate"," @param {Function|String|null} template"," @return {Function|null}"," @protected"," **/"," _setRequestTemplate: function (template) {"," if (this[_FUNCTION_VALIDATOR](template)) {"," return template;"," }",""," template = template.toString();",""," return function (query) {"," return Lang.sub(template, {query: encodeURIComponent(query)});"," };"," },",""," /**"," Setter for the `resultFilters` attribute.",""," @method _setResultFilters"," @param {Array|Function|String|null} filters `null`, a filter"," function, an array of filter functions, or a string or array of strings"," representing the names of methods on `Y.AutoCompleteFilters`."," @return {Function[]} Array of filter functions (empty if filters is"," `null`)."," @protected"," **/"," _setResultFilters: function (filters) {"," var acFilters, getFilterFunction;",""," if (filters === null) {"," return [];"," }",""," acFilters = Y.AutoCompleteFilters;",""," getFilterFunction = function (filter) {"," if (isFunction(filter)) {"," return filter;"," }",""," if (isString(filter) && acFilters &&"," isFunction(acFilters[filter])) {"," return acFilters[filter];"," }",""," return false;"," };",""," if (Lang.isArray(filters)) {"," filters = YArray.map(filters, getFilterFunction);"," return YArray.every(filters, function (f) { return !!f; }) ?"," filters : INVALID_VALUE;"," } else {"," filters = getFilterFunction(filters);"," return filters ? [filters] : INVALID_VALUE;"," }"," },",""," /**"," Setter for the `resultHighlighter` attribute.",""," @method _setResultHighlighter"," @param {Function|String|null} highlighter `null`, a highlighter function, or"," a string representing the name of a method on"," `Y.AutoCompleteHighlighters`."," @return {Function|null}"," @protected"," **/"," _setResultHighlighter: function (highlighter) {"," var acHighlighters;",""," if (this[_FUNCTION_VALIDATOR](highlighter)) {"," return highlighter;"," }",""," acHighlighters = Y.AutoCompleteHighlighters;",""," if (isString(highlighter) && acHighlighters &&"," isFunction(acHighlighters[highlighter])) {"," return acHighlighters[highlighter];"," }",""," return INVALID_VALUE;"," },",""," /**"," Setter for the `source` attribute. Returns a DataSource or a DataSource-like"," object depending on the type of _source_ and/or the value of the"," `sourceType` attribute.",""," @method _setSource"," @param {Any} source AutoComplete source. See the `source` attribute for"," details."," @return {DataSource|Object}"," @protected"," **/"," _setSource: function (source) {"," var sourceType = this.get('sourceType') || Lang.type(source),"," sourceSetter;",""," if ((source && isFunction(source.sendRequest))"," || source === null"," || sourceType === 'datasource') {",""," // Quacks like a DataSource instance (or null). Make it so!"," this._rawSource = source;"," return source;"," }",""," // See if there's a registered setter for this source type."," if ((sourceSetter = AutoCompleteBase.SOURCE_TYPES[sourceType])) {"," this._rawSource = source;"," return Lang.isString(sourceSetter) ?"," this[sourceSetter](source) : sourceSetter(source);"," }",""," Y.error(\"Unsupported source type '\" + sourceType + \"'. Maybe autocomplete-sources isn't loaded?\");"," return INVALID_VALUE;"," },",""," /**"," Shared success callback for non-DataSource sources.",""," @method _sourceSuccess"," @param {Any} data Response data."," @param {Object} request Request object."," @protected"," **/"," _sourceSuccess: function (data, request) {"," request.callback.success({"," data: data,"," response: {results: data}"," });"," },",""," /**"," Synchronizes the UI state of the `allowBrowserAutocomplete` attribute.",""," @method _syncBrowserAutocomplete"," @protected"," **/"," _syncBrowserAutocomplete: function () {"," var inputNode = this.get(INPUT_NODE);",""," if (inputNode.get('nodeName').toLowerCase() === 'input') {"," inputNode.setAttribute('autocomplete',"," this.get(ALLOW_BROWSER_AC) ? 'on' : 'off');"," }"," },",""," /**"," Updates the query portion of the `value` attribute.",""," If a query delimiter is defined, the last delimited portion of the input"," value will be replaced with the specified _value_.",""," @method _updateValue"," @param {String} newVal New value."," @protected"," **/"," _updateValue: function (newVal) {"," var delim = this.get(QUERY_DELIMITER),"," insertDelim,"," len,"," prevVal;",""," newVal = Lang.trimLeft(newVal);",""," if (delim) {"," insertDelim = trim(delim); // so we don't double up on spaces"," prevVal = YArray.map(trim(this.get(VALUE)).split(delim), trim);"," len = prevVal.length;",""," if (len > 1) {"," prevVal[len - 1] = newVal;"," newVal = prevVal.join(insertDelim + ' ');"," }",""," newVal = newVal + insertDelim + ' ';"," }",""," this.set(VALUE, newVal);"," },",""," // -- Protected Event Handlers ---------------------------------------------",""," /**"," Updates the current `source` based on the new `sourceType` to ensure that"," the two attributes don't get out of sync when they're changed separately.",""," @method _afterSourceTypeChange"," @param {EventFacade} e"," @protected"," **/"," _afterSourceTypeChange: function (e) {"," if (this._rawSource) {"," this.set('source', this._rawSource);"," }"," },",""," /**"," Handles change events for the `value` attribute.",""," @method _afterValueChange"," @param {EventFacade} e"," @protected"," **/"," _afterValueChange: function (e) {"," var newVal = e.newVal,"," self = this,"," uiChange = e.src === AutoCompleteBase.UI_SRC,"," delay, fire, minQueryLength, query;",""," // Update the UI if the value was changed programmatically."," if (!uiChange) {"," self._inputNode.set(VALUE, newVal);"," }","",""," minQueryLength = self.get('minQueryLength');"," query = self._parseValue(newVal) || '';",""," if (minQueryLength >= 0 && query.length >= minQueryLength) {"," // Only query on changes that originate from the UI."," if (uiChange) {"," delay = self.get('queryDelay');",""," fire = function () {"," self.fire(EVT_QUERY, {"," inputValue: newVal,"," query : query,"," src : e.src"," });"," };",""," if (delay) {"," clearTimeout(self._delay);"," self._delay = setTimeout(fire, delay);"," } else {"," fire();"," }"," } else {"," // For programmatic value changes, just update the query"," // attribute without sending a query."," self._set(QUERY, query);"," }"," } else {"," clearTimeout(self._delay);",""," self.fire(EVT_CLEAR, {"," prevVal: e.prevVal ? self._parseValue(e.prevVal) : null,"," src : e.src"," });"," }"," },",""," /**"," Handles `blur` events on the input node.",""," @method _onInputBlur"," @param {EventFacade} e"," @protected"," **/"," _onInputBlur: function (e) {"," var delim = this.get(QUERY_DELIMITER),"," delimPos,"," newVal,"," value;",""," // If a query delimiter is set and the input's value contains one or"," // more trailing delimiters, strip them."," if (delim && !this.get('allowTrailingDelimiter')) {"," delim = Lang.trimRight(delim);"," value = newVal = this._inputNode.get(VALUE);",""," if (delim) {"," while ((newVal = Lang.trimRight(newVal)) &&"," (delimPos = newVal.length - delim.length) &&"," newVal.lastIndexOf(delim) === delimPos) {",""," newVal = newVal.substring(0, delimPos);"," }"," } else {"," // Delimiter is one or more space characters, so just trim the"," // value."," newVal = Lang.trimRight(newVal);"," }",""," if (newVal !== value) {"," this.set(VALUE, newVal);"," }"," }"," },",""," /**"," Handles `valueChange` events on the input node and fires a `query` event"," when the input value meets the configured criteria.",""," @method _onInputValueChange"," @param {EventFacade} e"," @protected"," **/"," _onInputValueChange: function (e) {"," var newVal = e.newVal;",""," // Don't query if the internal value is the same as the new value"," // reported by valueChange."," if (newVal !== this.get(VALUE)) {"," this.set(VALUE, newVal, {src: AutoCompleteBase.UI_SRC});"," }"," },",""," /**"," Handles source responses and fires the `results` event.",""," @method _onResponse"," @param {EventFacade} e"," @protected"," **/"," _onResponse: function (query, e) {"," // Ignore stale responses that aren't for the current query."," if (query === (this.get(QUERY) || '')) {"," this._parseResponse(query || '', e.response, e.data);"," }"," },",""," // -- Protected Default Event Handlers -------------------------------------",""," /**"," Default `clear` event handler. Sets the `results` attribute to an empty"," array and `query` to null.",""," @method _defClearFn"," @protected"," **/"," _defClearFn: function () {"," this._set(QUERY, null);"," this._set(RESULTS, []);"," },",""," /**"," Default `query` event handler. Sets the `query` attribute and sends a"," request to the source if one is configured.",""," @method _defQueryFn"," @param {EventFacade} e"," @protected"," **/"," _defQueryFn: function (e) {"," this.sendRequest(e.query); // sendRequest will set the 'query' attribute"," },",""," /**"," Default `results` event handler. Sets the `results` attribute to the latest"," results.",""," @method _defResultsFn"," @param {EventFacade} e"," @protected"," **/"," _defResultsFn: function (e) {"," this._set(RESULTS, e[RESULTS]);"," }","};","","AutoCompleteBase.ATTRS = {"," /**"," Whether or not to enable the browser's built-in autocomplete functionality"," for input fields.",""," @attribute allowBrowserAutocomplete"," @type Boolean"," @default false"," **/"," allowBrowserAutocomplete: {"," value: false"," },",""," /**"," When a `queryDelimiter` is set, trailing delimiters will automatically be"," stripped from the input value by default when the input node loses focus."," Set this to `true` to allow trailing delimiters.",""," @attribute allowTrailingDelimiter"," @type Boolean"," @default false"," **/"," allowTrailingDelimiter: {"," value: false"," },",""," /**"," Whether or not to enable in-memory caching in result sources that support"," it.",""," @attribute enableCache"," @type Boolean"," @default true"," @since 3.5.0"," **/"," enableCache: {"," lazyAdd: false, // we need the setter to run on init"," setter: '_setEnableCache',"," value: true"," },",""," /**"," Node to monitor for changes, which will generate `query` events when"," appropriate. May be either an `` or a `