Fixed mobile editors

This commit is contained in:
Alexander Yuzhin 2016-09-14 15:04:28 +03:00
parent 5d6df7dfbe
commit 66f4cc1086
2099 changed files with 119659 additions and 176527 deletions

1
.gitignore vendored
View file

@ -8,6 +8,7 @@ apps/presentationeditor/embed/resources/less/node_modules
apps/spreadsheeteditor/embed/resources/less/node_modules
apps/documenteditor/mobile/resources/sass/.sass-cache
apps/spreadsheeteditor/mobile/resources/sass/.sass-cache
apps/presentationeditor/mobile/resources/sass/.sass-cache
# test documents

View file

@ -63,39 +63,5 @@ Ext.define('Common.component.SettingsList', {
}
}
)
},
//
// Workaround Sencha Touch bug
// See https://sencha.jira.com/browse/TOUCH-3718
//
findGroupHeaderIndices: function() {
var me = this,
store = me.getStore(),
storeLn = store.getCount(),
groups = store.getGroups(),
groupLn = groups.length,
headerIndices = me.headerIndices = {},
footerIndices = me.footerIndices = {},
i, previousIndex, firstGroupedRecord, storeIndex;
me.groups = groups;
for (i = 0; i < groupLn; i++) {
firstGroupedRecord = groups[i].children[0];
storeIndex = store.indexOf(firstGroupedRecord);
headerIndices[storeIndex] = true;
previousIndex = storeIndex - 1;
if (previousIndex >= 0) {
footerIndices[previousIndex] = true;
}
}
footerIndices[storeLn - 1] = true;
return headerIndices;
}
});

Binary file not shown.

View file

@ -0,0 +1,16 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
This is a custom SVG font generated by IcoMoon.
<iconset grid="16"></iconset>
</metadata>
<defs>
<font id="icomoon" horiz-adv-x="512" >
<font-face units-per-em="512" ascent="480" descent="-32" />
<missing-glyph horiz-adv-x="512" />
<glyph class="hidden" unicode="&#xf000;" d="M0,480L 512 -32L0 -32 z" horiz-adv-x="0" />
<glyph unicode="&#x21;" d="M 236.48-16.76L 175.652,48.016L 357.208,223.24L 175.652,406.38L 236.48,463.236L 476.48,223.24 z" />
<glyph unicode="&#x22;" d="M 203.884,223.992L 410.68,21.364L 357.32-32L 101.32,223.992L 357.32,480L 409.596,427.74 z" />
<glyph unicode="&#x20;" horiz-adv-x="256" />
</font></defs></svg>

After

Width:  |  Height:  |  Size: 826 B

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 40 KiB

View file

@ -0,0 +1,13 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="icomoon" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" d="" horiz-adv-x="512" />
<glyph unicode="&#x61;" d="M877.714 256v-73.143q0-14.857-10.857-25.714t-25.714-10.857h-804.571q-14.857 0-25.714 10.857t-10.857 25.714v73.143q0 14.857 10.857 25.714t25.714 10.857h804.571q14.857 0 25.714-10.857t10.857-25.714zM877.714 548.571v-73.143q0-14.857-10.857-25.714t-25.714-10.857h-804.571q-14.857 0-25.714 10.857t-10.857 25.714v73.143q0 14.857 10.857 25.714t25.714 10.857h804.571q14.857 0 25.714-10.857t10.857-25.714zM877.714 841.143v-73.143q0-14.857-10.857-25.714t-25.714-10.857h-804.571q-14.857 0-25.714 10.857t-10.857 25.714v73.143q0 14.857 10.857 25.714t25.714 10.857h804.571q14.857 0 25.714-10.857t10.857-25.714z" horiz-adv-x="878" />
<glyph unicode="&#x62;" d="M731.429 475.429v73.143q0 14.857-10.857 25.714t-25.714 10.857h-286.857l108 108q10.857 10.857 10.857 25.714t-10.857 25.714l-52 52q-10.286 10.286-25.714 10.286t-25.714-10.286l-258.857-258.857q-10.286-10.286-10.286-25.714t10.286-25.714l258.857-258.857q10.286-10.286 25.714-10.286t25.714 10.286l52 52q10.286 10.286 10.286 25.714t-10.286 25.714l-108 108h286.857q14.857 0 25.714 10.857t10.857 25.714zM877.714 512q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" horiz-adv-x="878" />
<glyph unicode="&#x63;" d="M409.714 226.857l259.429 259.429q10.857 10.857 10.857 25.714t-10.857 25.714l-259.429 259.429q-10.857 10.857-25.714 10.857t-25.714-10.857l-58.286-58.286q-10.857-10.857-10.857-25.714t10.857-25.714l175.429-175.429-175.429-175.429q-10.857-10.857-10.857-25.714t10.857-25.714l58.286-58.286q10.857-10.857 25.714-10.857t25.714 10.857zM877.714 512q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" horiz-adv-x="878" />
</font></defs></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -17,7 +17,7 @@
position: absolute;
width: $anchor-width;
height: $anchor-height;
-webkit-mask: 0 0 theme_image($theme-name, "tip_top.png") no-repeat;
//-webkit-mask: 0 0 theme_image($theme-name, "tip_top.png") no-repeat;
-webkit-mask-size: $anchor-width $anchor-height;
@include background-gradient($base-color, color_stops(lighten($base-color, 15%), lighten($base-color, 13%)));
top: 1px !important;
@ -38,7 +38,7 @@
position: absolute;
width: $anchor-width;
height: $anchor-height + .1em;
-webkit-mask: 0 0 theme_image($theme-name, "tip_bottom.png") no-repeat;
//-webkit-mask: 0 0 theme_image($theme-name, "tip_bottom.png") no-repeat;
-webkit-mask-size: $anchor-width $anchor-height;
@include background-gradient($base-color, color_stops($base-color, darken($base-color, 5%)));
top: -1px !important;
@ -106,4 +106,17 @@
.round {
@include border-radius($panel-border-radius);
}
// Hide group header
.x-list-header-wrap {
@include border-top-radius($panel-border-radius !important);
.x-innerhtml {
@include border-top-radius($panel-border-radius !important);
}
}
.x-list-header {
display: none;
}
}

View file

@ -9,6 +9,10 @@ $shadow-width: .065em; // Space between tip and its shadow
$toolbar-border-color: darken($color, 50%);
$toolbar-button-color: darken($color, 5%);
.x-toolbar {
background-color: transparent;
}
.x-toolbar-#{$ui-label} {
@if $ui-label == search {
@include background-gradient($color, color_stops($color, lighten($color, 11%) 20%, lighten($color, 11%)));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -33,18 +33,36 @@ $outline-icon-size : 74px;
$outline-icon-image-width : 148px;
$outline-icon-image-height : 222px;
@import 'sencha-touch/default/all';
@import 'sencha-touch/default';
@include sencha-panel;
@include sencha-buttons;
@include sencha-toolbar;
@include sencha-toolbar-forms;
@include sencha-indexbar;
@include sencha-list;
@include sencha-layout;
@include sencha-form;
@include sencha-msgbox;
@include sencha-loading-spinner;
@import 'sencha-touch/default/src/Class';
@import 'sencha-touch/default/src/Button';
@import 'sencha-touch/default/src/Panel';
@import 'sencha-touch/default/src/Sheet';
@import 'sencha-touch/default/src/MessageBox';
@import 'sencha-touch/default/src/Toolbar';
@import 'sencha-touch/default/src/Toast';
@import 'sencha-touch/default/src/Menu';
//@import 'sencha-touch/default/src/carousel/Carousel';
@import 'sencha-touch/default/src/form/Panel';
@import 'sencha-touch/default/src/form/FieldSet';
@import 'sencha-touch/default/src/field/Field';
@import 'sencha-touch/default/src/field/Checkbox';
@import 'sencha-touch/default/src/field/Radio';
@import 'sencha-touch/default/src/field/Search';
@import 'sencha-touch/default/src/field/Select';
//@import 'sencha-touch/default/src/field/Slider';
@import 'sencha-touch/default/src/field/Spinner';
//@import 'sencha-touch/default/src/field/TextArea';
//@import 'sencha-touch/default/src/dataview/IndexBar';
@import 'sencha-touch/default/src/dataview/List';
@import 'sencha-touch/default/src/picker/Picker';
//@import 'sencha-touch/default/src/plugin/ListPaging';
//@import 'sencha-touch/default/src/plugin/PullRefresh';
//@import 'sencha-touch/default/src/slider/Slider';
@import 'sencha-touch/default/src/slider/Toggle';
//@import 'sencha-touch/default/src/tab/Panel';
//@import 'sencha-touch/default/src/grid/Grid';
@import 'common-buttons';
@import 'common-dataview';

View file

@ -2,7 +2,7 @@
dir = File.dirname(__FILE__)
# Load the sencha-touch framework automatically.
load File.join(dir, '..', '..', '..', '..', '..', '3rdparty', 'touch', 'resources', 'themes')
load File.join(dir, '..', '..', '..', '..', '..', 'vendor', 'touch', 'resources', 'themes')
# Add include path for command styles
add_import_path File.join(dir, '..', '..', '..', '..', '..', 'apps', 'common', 'mobile', 'resources', 'sass')

View file

@ -2,7 +2,7 @@
dir = File.dirname(__FILE__)
# Load the sencha-touch framework automatically.
load File.join(dir, '..', '..', '..', '..', '..', '3rdparty', 'touch', 'resources', 'themes')
load File.join(dir, '..', '..', '..', '..', '..', 'vendor', 'touch', 'resources', 'themes')
# Add include path for command styles
add_import_path File.join(dir, '..', '..', '..', '..', '..', 'apps', 'common', 'mobile', 'resources', 'sass')
@ -10,5 +10,6 @@ add_import_path File.join(dir, '..', '..', '..', '..', '..', 'apps', 'common', '
# Compass configurations
sass_path = dir
css_path = File.join(dir, "..", "css")
fonts_path = File.join(dir, '..', '..', '..', '..', '..', 'apps', 'common', 'mobile', 'resources', 'fonts')
environment = :production
output_style = :compressed

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -13,23 +13,42 @@ $icons-default-size : 24px;
$icons-default-image-width : 72px;
$icons-default-image-height : 144px;
@import 'sencha-touch/default/all';
@import 'sencha-touch/default';
@import 'sencha-touch/default/src/Class';
@import 'sencha-touch/default/src/Button';
//@import 'sencha-touch/default/src/Panel';
@import 'sencha-touch/default/src/Sheet';
@import 'sencha-touch/default/src/MessageBox';
@import 'sencha-touch/default/src/Toolbar';
//@import 'sencha-touch/default/src/Toast';
//@import 'sencha-touch/default/src/Menu';
//@import 'sencha-touch/default/src/carousel/Carousel';
@import 'sencha-touch/default/src/form/Panel';
//@import 'sencha-touch/default/src/form/FieldSet';
//@import 'sencha-touch/default/src/field/Field';
//@import 'sencha-touch/default/src/field/Checkbox';
//@import 'sencha-touch/default/src/field/Radio';
//@import 'sencha-touch/default/src/field/Search';
//@import 'sencha-touch/default/src/field/Select';
//@import 'sencha-touch/default/src/field/Slider';
//@import 'sencha-touch/default/src/field/Spinner';
//@import 'sencha-touch/default/src/field/TextArea';
//@import 'sencha-touch/default/src/dataview/IndexBar';
//@import 'sencha-touch/default/src/dataview/List';
//@import 'sencha-touch/default/src/picker/Picker';
//@import 'sencha-touch/default/src/plugin/ListPaging';
//@import 'sencha-touch/default/src/plugin/PullRefresh';
//@import 'sencha-touch/default/src/slider/Slider';
//@import 'sencha-touch/default/src/slider/Toggle';
//@import 'sencha-touch/default/src/tab/Panel';
//@import 'sencha-touch/default/src/grid/Grid';
@import 'common-buttons';
@import 'common-toolbar';
@import 'application-mixins';
@include sencha-panel;
@include sencha-buttons;
@include sencha-toolbar;
@include sencha-toolbar-forms;
@include sencha-indexbar;
@include sencha-layout;
@include sencha-form;
@include sencha-msgbox;
@include sencha-loading-spinner;
@include common-toolbar-ui('edit', $base-color);
@include common-toolbar-ui('search', $base-color);

View file

@ -10,5 +10,6 @@ add_import_path File.join(dir, '..', '..', '..', '..', '..', 'apps', 'common', '
# Compass configurations
sass_path = dir
css_path = File.join(dir, "..", "css")
environment = :development
output_style = :expanded
fonts_path = File.join(dir, '..', '..', '..', '..', '..', 'apps', 'common', 'mobile', 'resources', 'fonts')
environment = :production
output_style = :compressed

View file

@ -10,5 +10,6 @@ add_import_path File.join(dir, '..', '..', '..', '..', '..', 'apps', 'common', '
# Compass configurations
sass_path = dir
css_path = File.join(dir, "..", "css")
fonts_path = File.join(dir, '..', '..', '..', '..', '..', 'apps', 'common', 'mobile', 'resources', 'fonts')
environment = :production
output_style = :compressed

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -18,18 +18,36 @@ $icons-default-size : 24px;
$icons-default-image-width : 72px;
$icons-default-image-height : 624px;
@import 'sencha-touch/default/all';
@import 'sencha-touch/default';
@include sencha-panel;
@include sencha-buttons;
@include sencha-toolbar;
@include sencha-toolbar-forms;
@include sencha-indexbar;
@include sencha-list;
@include sencha-layout;
@include sencha-form;
@include sencha-msgbox;
@include sencha-loading-spinner;
@import 'sencha-touch/default/src/Class';
@import 'sencha-touch/default/src/Button';
@import 'sencha-touch/default/src/Panel';
@import 'sencha-touch/default/src/Sheet';
@import 'sencha-touch/default/src/MessageBox';
@import 'sencha-touch/default/src/Toolbar';
@import 'sencha-touch/default/src/Toast';
@import 'sencha-touch/default/src/Menu';
//@import 'sencha-touch/default/src/carousel/Carousel';
@import 'sencha-touch/default/src/form/Panel';
@import 'sencha-touch/default/src/form/FieldSet';
@import 'sencha-touch/default/src/field/Field';
@import 'sencha-touch/default/src/field/Checkbox';
@import 'sencha-touch/default/src/field/Radio';
@import 'sencha-touch/default/src/field/Search';
@import 'sencha-touch/default/src/field/Select';
//@import 'sencha-touch/default/src/field/Slider';
//@import 'sencha-touch/default/src/field/Spinner';
//@import 'sencha-touch/default/src/field/TextArea';
//@import 'sencha-touch/default/src/dataview/IndexBar';
@import 'sencha-touch/default/src/dataview/List';
//@import 'sencha-touch/default/src/picker/Picker';
//@import 'sencha-touch/default/src/plugin/ListPaging';
//@import 'sencha-touch/default/src/plugin/PullRefresh';
//@import 'sencha-touch/default/src/slider/Slider';
@import 'sencha-touch/default/src/slider/Toggle';
//@import 'sencha-touch/default/src/tab/Panel';
//@import 'sencha-touch/default/src/grid/Grid';
@import 'common-buttons';
@import 'common-dataview';
@ -48,32 +66,32 @@ $icons-default-image-height : 624px;
@include common-toolbar-ui('edit', $base-color);
@include common-toolbar-ui('search', $base-color);
@include application-icon-normal('save', 0);
@include application-icon-normal('undo', 1);
//@include application-icon-normal('save', 0);
//@include application-icon-normal('undo', 1);
@include application-icon-normal('share', 2);
@include application-icon-normal('font-style', 3);
@include application-icon-normal('font-color', 4);
@include application-icon-normal('bold', 5);
@include application-icon-normal('italic', 6);
@include application-icon-normal('underline', 7);
@include application-icon-normal('align-left', 8);
@include application-icon-normal('align-center', 9);
@include application-icon-normal('align-right', 10);
@include application-icon-normal('align-fill', 11);
//@include application-icon-normal('font-style', 3);
//@include application-icon-normal('font-color', 4);
//@include application-icon-normal('bold', 5);
//@include application-icon-normal('italic', 6);
//@include application-icon-normal('underline', 7);
//@include application-icon-normal('align-left', 8);
//@include application-icon-normal('align-center', 9);
//@include application-icon-normal('align-right', 10);
//@include application-icon-normal('align-fill', 11);
@include application-icon-normal('pages', 12);
@include application-icon-normal('search-prev', 13);
@include application-icon-normal('search-next', 14);
@include application-icon-normal('insert', 15);
//@include application-icon-normal('insert', 15);
@include application-icon-normal('search', 16);
@include application-icon-normal('fullscreen', 17);
@include application-icon-normal('spinner-down', 18);
@include application-icon-normal('spinner-up', 19);
@include application-icon-normal('table', 20);
@include application-icon-normal('picture', 21);
@include application-icon-normal('insert-row', 22);
@include application-icon-normal('insert-column', 23);
@include application-icon-normal('textbigger', 24);
@include application-icon-normal('textless', 25);
//@include application-icon-normal('spinner-down', 18);
//@include application-icon-normal('spinner-up', 19);
//@include application-icon-normal('table', 20);
//@include application-icon-normal('picture', 21);
//@include application-icon-normal('insert-row', 22);
//@include application-icon-normal('insert-column', 23);
//@include application-icon-normal('textbigger', 24);
//@include application-icon-normal('textless', 25);
@include common-button-ui('base', $base-color);

View file

@ -4,8 +4,12 @@ dir = File.dirname(__FILE__)
# Load the sencha-touch framework automatically.
load File.join(dir, '..', '..', '..', '..', '..', 'vendor', 'touch', 'resources', 'themes')
# Add include path for command styles
add_import_path File.join(dir, '..', '..', '..', '..', '..', 'apps', 'common', 'mobile', 'resources', 'sass')
# Compass configurations
sass_path = dir
css_path = File.join(dir, "..", "css")
fonts_path = File.join(dir, '..', '..', '..', '..', '..', 'apps', 'common', 'mobile', 'resources', 'fonts')
environment = :production
output_style = :compressed

78
vendor/touch/SETUP.html vendored Normal file
View file

@ -0,0 +1,78 @@
<!DOCTYPE html>
<head>
<style>
h1 {font-family: Calibri; font-size: 18pt;}
h2 {font-family: Calibri; font-size: 14pt;}
h3 {font-family: Calibri; font-size: 12pt;}
body {font-family: Calibri; font-size: 11pt;}
</style>
</head>
<body style="width: 700px">
<a href="http://sencha.com"><span style="left: 50px"></span><img src="SenchaLogo.png" width="110" height="40" /></a>
<h1>Sencha Touch Setup Guide</h1>
<p><b>Topics:</b></p>
<ul>
<li><a href="Intro">Introduction</a></li>
<li><a href="Install">Installing Sencha Touch</a></li>
<li><a href="Info">Sencha Touch Information</a></li>
</ul>
<a name="Intro"></a>
<h2>Introduction</h2>
<p>Sencha Touch, a high-performance HTML5 mobile application framework, is the cornerstone
of the Sencha HTML5 platform. Built for enabling world-class user experiences,
Sencha Touch is the only framework that enables developers to build powerful apps
that work on iOS, Android, BlackBerry, Windows Phone, and Internet Explorer 10.
<br>Learn more at <a href="http://docs.sencha.com/touch/#!/guide/whats_new">What's New</a>.
<br>Learn about new APIs in the "New in this version"
section near the end of the <a href="http://docs.sencha.com/touch/#!/api">API page</a>.</p>
<a name="Install"></a>
<h2>Installing Sencha Touch</h2>
<p>To install Sencha Touch:</p>
<ol>
<li>Download <a href="http://www.sencha.com/products/sencha-cmd/download">Sencha Cmd</a>.
Sencha Cmd enables you to publish, package, and simulate an application, as well as to upgrade Sencha software.
Sencha Cmd also installs Apache Ant, Compass, and Sass.</li>
<li>Download <a href="http://www.ruby-lang.org/en/downloads/">Ruby</a>
<ul>
<li><b>Mac OS</b>: Ruby is pre-installed. You can verify
it with the <b>ruby -v</b> command.</li>
<li><b>Windows</b> Download the open source <a href="http://www.7-zip.org">7-Zip</a> archiver.
Download Ruby (any version) from <a href="http://rubyinstaller.org/downloads/">rubyinstaller.org</a>.
Set the Path environment variable to point to the directory in which you unzip the installer file.</li>
<li><b>Ubuntu</b>: Use <b>sudo apt-get install ruby2.0.0</b> to download and install Ruby.</li>
</ul>
</li>
<li>Start your web server.
If using the Sencha Cmd web server, change directory to where you want to serve
your application, open a new command line window and start the server with the
<b>sencha&nbsp;web&nbsp;start</b> command. You can stop the server by typing
CTRL+c or opening another command line and typing the <b>sencha&nbsp;web&nbsp;stop</b> command.
You can access the Sencha Cmd web server using
the <code>http://localhost:1841/&lt;app_name&gt;</code> URL.</li>
<li>If you are using Windows and running the IIS web server, add "application/x-json"
as a MIME type; otherwise, IIS returns the JSON file with an error when you preview
your project. In Windows, enable IIS from the add/remove programs or programs and features dialog
(add/remove windows features), you can also add extra functionality by downloading the web platform
toolkit to make config of IIS features extra simple.
For information on adding this MIME type, see this
<a href="http://stackoverflow.com/a/1121114/273985">Stackoverflow article</a>.</li>
<li>Use a modern web browser such as
<a href="https://www.google.com/intl/en/chrome/browser">Chrome</a>
or <a href="http://www.apple.com/safari/">Safari</a>.</li>
</ol>
<a name="Info"></a>
<h2>Sencha Touch Information</h2>
<ul>
<li><a href="http://sencha.com/">Sencha.com</a></li>
<li><a href="http://docs.sencha.com/">Sencha Documentation</a></li>
<li><a href="release-notes.html">Sencha Touch Release Notes</a></li>
<li><a href="examples/">Sencha Touch Examples</a></li>
<li><a href="http://www.sencha.com/products/touch-bundle/">Sencha Touch Bundle</a></li>
<li><a href="http://www.sencha.com/training/">Sencha Training</a></li>
<li><a href="http://www.sencha.com/support/">Sencha Support</a></li>
</ul>
</body>
</html>

BIN
vendor/touch/SenchaLogo.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View file

@ -6,12 +6,7 @@
<title>Welcome to Sencha Touch 2</title>
<script type="text/javascript">
var mobile = (/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase()));
if (mobile) {
window.location = "examples/";
} else {
window.location = "docs/";
}
window.location = "examples/";
</script>
</head>
<body></body>

View file

@ -1,48 +1,28 @@
Sencha Touch & Sencha Touch Charts - JavaScript Libraries
Copyright (c) 2010-2012, Sencha, Inc.
Sencha Touch - JavaScript Library
Copyright (c) 2010-2015, Sencha, Inc.
All rights reserved.
licensing@sencha.com
http://www.sencha.com/products/touch/license.php
Open Source License
Commercial License
------------------------------------------------------------------------------------------
This version of Sencha Touch and Sencha Touch Charts is licensed under the terms of the Open
Source GPL 3.0 license.
http://www.gnu.org/licenses/gpl.html
There are several FLOSS exceptions available for use with this release for
open source applications that are distributed under a license other than the GPL.
* Open Source License Exception for Applications
http://www.sencha.com/products/floss-exception.php
* Open Source License Exception for Development
http://www.sencha.com/products/ux-exception.php
Alternate Licensing for Sencha Touch
------------------------------------------------------------------------------------------
Commercial and OEM Licenses are available for an alternate download of Sencha Touch.
This version of Sencha Touch is licensed commercially.
This is the appropriate option if you are creating proprietary applications and you are
not prepared to distribute and share the source code of your application under the
GPL v3 license. Please visit http://www.sencha.com/store/touch/license.php for more details.
Alternate Licensing for Sencha Touch Charts
OEM / Reseller License
------------------------------------------------------------------------------------------
Commercial and OEM Licenses are available for an alternate download of Sencha Touch Charts.
This is the appropriate option if you are creating proprietary applications and you are
not prepared to distribute and share the source code of your application under the
GPL v3 license.
For more details, please visit: http://www.sencha.com/products/touch/license.php
Sencha Touch Charts is available commercially only as a part of Sencha Complete or Sencha
Complete Team. Please visit http://www.sencha.com/products/complete/license or
http://www.sencha.com/products/complete-team/license for more details.
Open Source Licensing
------------------------------------------------------------------------------------------
Open Source Licensing is available for an alternate download of Sencha Touch.
For more details, please visit http://www.sencha.com/store/touch/license.php for more details.
Third Party Content

185
vendor/touch/microloader/development.js vendored Normal file
View file

@ -0,0 +1,185 @@
/**
* Sencha Blink - Development
* @author Jacky Nguyen <jacky@sencha.com>
*/
(function() {
var head = document.head;
function write(content) {
document.write(content);
}
function addMeta(name, content) {
var meta = document.createElement('meta');
meta.setAttribute('name', name);
meta.setAttribute('content', content);
head.appendChild(meta);
}
var xhr = new XMLHttpRequest();
xhr.open('GET', 'app.json', false);
xhr.send(null);
var options = eval("(" + xhr.responseText + ")"),
scripts = options.js || [],
styleSheets = options.css || [],
i, ln, path, platform, theme, exclude;
if(options.platform && options.platforms && options.platforms[options.platform] && options.platforms[options.platform].js) {
scripts = options.platforms[options.platform].js.concat(scripts);
}
if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
var msViewportStyle = document.createElement("style");
msViewportStyle.appendChild(
document.createTextNode(
"@media screen and (orientation: portrait) {" +
"@-ms-viewport {width: 320px !important;}" +
"}" +
"@media screen and (orientation: landscape) {" +
"@-ms-viewport {width: 560px !important;}" +
"}"
)
);
document.getElementsByTagName("head")[0].appendChild(msViewportStyle);
}
addMeta('viewport', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no');
addMeta('apple-mobile-web-app-capable', 'yes');
addMeta('apple-touch-fullscreen', 'yes');
if (!window.Ext) {
window.Ext = {};
}
Ext.microloaded = true;
var filterPlatform = window.Ext.filterPlatform = function(platform) {
var profileMatch = false,
ua = navigator.userAgent,
j, jln;
platform = [].concat(platform);
function isPhone(ua) {
var isMobile = /Mobile(\/|\s)/.test(ua);
// Either:
// - iOS but not iPad
// - Android 2
// - Android with "Mobile" in the UA
return /(iPhone|iPod)/.test(ua) ||
(!/(Silk)/.test(ua) && (/(Android)/.test(ua) && (/(Android 2)/.test(ua) || isMobile))) ||
(/(BlackBerry|BB)/.test(ua) && isMobile) ||
/(Windows Phone)/.test(ua);
}
function isTablet(ua) {
return !isPhone(ua) && (/iPad/.test(ua) || /Android|Silk/.test(ua) || /(RIM Tablet OS)/.test(ua) ||
(/MSIE 10/.test(ua) && /; Touch/.test(ua)));
}
// Check if the ?platform parameter is set in the URL
var paramsString = window.location.search.substr(1),
paramsArray = paramsString.split("&"),
params = {},
testPlatform, i;
for (i = 0; i < paramsArray.length; i++) {
var tmpArray = paramsArray[i].split("=");
params[tmpArray[0]] = tmpArray[1];
}
testPlatform = params.platform;
if (testPlatform) {
return platform.indexOf(testPlatform) != -1;
}
for (j = 0, jln = platform.length; j < jln; j++) {
switch (platform[j]) {
case 'phone':
profileMatch = isPhone(ua);
break;
case 'tablet':
profileMatch = isTablet(ua);
break;
case 'desktop':
profileMatch = !isPhone(ua) && !isTablet(ua);
break;
case 'ios':
profileMatch = /(iPad|iPhone|iPod)/.test(ua);
break;
case 'android':
profileMatch = /(Android|Silk)/.test(ua);
break;
case 'blackberry':
profileMatch = /(BlackBerry|BB)/.test(ua);
break;
case 'safari':
profileMatch = /Safari/.test(ua) && !(/(BlackBerry|BB)/.test(ua));
break;
case 'chrome':
profileMatch = /Chrome/.test(ua);
break;
case 'ie10':
profileMatch = /MSIE 10/.test(ua);
break;
case 'windows':
profileMatch = /MSIE 10/.test(ua) || /Trident/.test(ua);
break;
case 'tizen':
profileMatch = /Tizen/.test(ua);
break;
case 'firefox':
profileMatch = /Firefox/.test(ua);
}
if (profileMatch) {
return true;
}
}
return false;
};
for (i = 0,ln = styleSheets.length; i < ln; i++) {
path = styleSheets[i];
if (typeof path != 'string') {
platform = path.platform;
exclude = path.exclude;
theme = path.theme;
path = path.path;
}
if (platform) {
if (!filterPlatform(platform) || filterPlatform(exclude)) {
continue;
}
Ext.theme = {
name: theme || 'Default'
};
}
write('<link rel="stylesheet" href="'+path+'">');
}
for (i = 0,ln = scripts.length; i < ln; i++) {
path = scripts[i];
if (typeof path != 'string') {
platform = path.platform;
exclude = path.exclude;
path = path.path;
}
if (platform) {
if (!filterPlatform(platform) || filterPlatform(exclude)) {
continue;
}
}
write('<script src="'+path+'"></'+'script>');
}
})();

742
vendor/touch/microloader/production.js vendored Normal file
View file

@ -0,0 +1,742 @@
/**
* Sencha Blink
* @author Jacky Nguyen <jacky@sencha.com>
*/
(function(global) {
var emptyFn = function(){},
callbacks = [],
doc = global.document,
head = doc.head,
addWindowListener = global.addEventListener,
removeWindowListener = global.removeEventListener,
jsonParse = JSON.parse,
a = doc.createElement('a'),
documentLocation = doc.location,
documentUri = documentLocation.protocol + '//' + documentLocation.hostname + documentLocation.pathname + documentLocation.search,
manifestFile = 'app.json',
isRefreshing = false,
activeManifest, appCache, storage;
try {
storage = global.localStorage;
appCache = global.applicationCache;
}
catch(e) {}
function getManifestStorageKey(id) {
return id + '-' + documentUri + manifestFile;
}
function Manifest(manifest) {
var manifestContent;
if (typeof manifest == 'string') {
manifestContent = manifest;
manifest = jsonParse(manifestContent);
}
else {
manifestContent = JSON.stringify(manifest);
}
var applicationId = manifest.id,
key = getManifestStorageKey(applicationId),
assetMap = {};
function processAsset(asset) {
var uri;
if (typeof asset == 'string') {
asset = {
path: asset
};
}
if (asset.shared) {
asset.version = asset.shared;
uri = asset.shared + asset.path;
}
else {
uri = toAbsoluteUri(asset.path);
}
asset.uri = uri;
asset.key = applicationId + '-' + uri;
assetMap[uri] = asset;
return asset;
}
function processAssets(assets, type) {
var ln = assets.length,
i, asset;
for (i = 0; i < ln; i++) {
asset = assets[i];
assets[i] = asset = processAsset(asset);
asset.type = type;
asset.index = i;
asset.collection = assets;
asset.ready = false;
asset.evaluated = false;
}
return assets;
}
this.key = key;
this.css = processAssets(manifest.css, 'css');
this.js = processAssets(manifest.js, 'js');
Ext.microloaded = true;
var filterPlatform = window.Ext.filterPlatform = function(platform) {
var profileMatch = false,
ua = navigator.userAgent,
j, jln;
platform = [].concat(platform);
function isPhone(ua) {
var isMobile = /Mobile(\/|\s)/.test(ua);
// Either:
// - iOS but not iPad
// - Android 2
// - Android with "Mobile" in the UA
return /(iPhone|iPod)/.test(ua) ||
(!/(Silk)/.test(ua) && (/(Android)/.test(ua) && (/(Android 2)/.test(ua) || isMobile))) ||
(/(BlackBerry|BB)/.test(ua) && isMobile) ||
/(Windows Phone)/.test(ua);
}
function isTablet(ua) {
return !isPhone(ua) && (/iPad/.test(ua) || /Android|Silk/.test(ua) || /(RIM Tablet OS)/.test(ua) ||
(/MSIE 10/.test(ua) && /; Touch/.test(ua)));
}
// Check if the ?platform parameter is set in the URL
var paramsString = window.location.search.substr(1),
paramsArray = paramsString.split("&"),
params = {},
testPlatform, i;
for (i = 0; i < paramsArray.length; i++) {
var tmpArray = paramsArray[i].split("=");
params[tmpArray[0]] = tmpArray[1];
}
testPlatform = params.platform;
if (testPlatform) {
return platform.indexOf(testPlatform) != -1;
}
for (j = 0, jln = platform.length; j < jln; j++) {
switch (platform[j]) {
case 'phone':
profileMatch = isPhone(ua);
break;
case 'tablet':
profileMatch = isTablet(ua);
break;
case 'desktop':
profileMatch = !isPhone(ua) && !isTablet(ua);
break;
case 'ios':
profileMatch = /(iPad|iPhone|iPod)/.test(ua);
break;
case 'android':
profileMatch = /(Android|Silk)/.test(ua);
break;
case 'blackberry':
profileMatch = /(BlackBerry|BB)/.test(ua);
break;
case 'safari':
profileMatch = /Safari/.test(ua) && !(/(BlackBerry|BB)/.test(ua));
break;
case 'chrome':
profileMatch = /Chrome/.test(ua);
break;
case 'ie10':
profileMatch = /MSIE 10/.test(ua);
break;
case 'windows':
profileMatch = /MSIE 10/.test(ua) || /Trident/.test(ua);
break;
case 'tizen':
profileMatch = /Tizen/.test(ua);
break;
case 'firefox':
profileMatch = /Firefox/.test(ua);
}
if (profileMatch) {
return true;
}
}
return false;
};
this.css = this.css.filter(function(css) {
var platform = css.platform,
exclude = css.exclude;
if (platform) {
if (filterPlatform(platform) && !filterPlatform(exclude)) {
Ext.theme = {
name: css.theme || 'Default'
};
return true;
}
css.filtered = true;
return false;
}
return true;
});
this.js = this.js.filter(function(js) {
var platform = js.platform,
exclude = js.exclude;
if (platform) {
if (filterPlatform(platform) && !filterPlatform(exclude)) {
return true;
}
else {
js.filtered = true;
return false;
}
}
return true;
});
this.assets = this.css.concat(this.js);
this.getAsset = function(uri) {
return assetMap[uri];
};
this.store = function() {
store(key, manifestContent);
};
}
if (typeof global.Ext === 'undefined') {
var Ext = global.Ext = {};
}
function toAbsoluteUri(uri) {
a.href = uri;
return a.href;
}
function addMeta(name, content) {
var meta = document.createElement('meta');
meta.setAttribute('name', name);
meta.setAttribute('content', content);
head.appendChild(meta);
}
function request(uri, isShared, onSuccess, onFailure) {
(isShared ? requestIframe : requestXhr)(uri, onSuccess, onFailure);
}
function requestXhr(uri, onSuccess, onFailure) {
var xhr = new XMLHttpRequest();
onFailure = onFailure || emptyFn;
uri = uri + ((uri.indexOf('?') == -1) ? '?' : '&') + Date.now();
try {
xhr.open('GET', uri, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
var status = xhr.status,
content = xhr.responseText;
if ((status >= 200 && status < 300) || status == 304 || (status == 0 && content.length > 0)) {
onSuccess(content);
}
else {
onFailure();
}
}
};
xhr.send(null);
} catch (e) {
onFailure();
}
}
function requestIframe(uri, onSuccess) {
var iframe = doc.createElement('iframe');
callbacks.push({
iframe: iframe,
callback: onSuccess
});
iframe.src = uri + '.html';
iframe.style.cssText = 'width:0;height:0;border:0;position:absolute;z-index:-999;visibility:hidden';
doc.body.appendChild(iframe);
}
function requestAsset(asset, onSuccess, onFailure) {
var isRemote = !!asset.remote,
isShared = !!asset.shared;
if (isRemote) {
onSuccess('');
return;
}
if (!isShared) {
var onRequestSuccess = onSuccess,
version = asset.version,
versionLn = version.length,
checksumFail, checksumType;
onSuccess = function(content) {
checksumType = content.substring(0, 1);
if (checksumType == '/') {
if (content.substring(2, versionLn + 2) !== version) {
checksumFail = true;
}
}
else if (checksumType == 'f') {
if (content.substring(9, versionLn + 9) !== version) {
checksumFail = true;
}
}
else if (checksumType == '.') {
if (content.substring(1, versionLn + 1) !== version) {
checksumFail = true;
}
}
if (checksumFail === true) {
if (confirm("Requested: '" + asset.uri + " seems to have been changed. Attempt to refresh the application?")) {
refresh();
}
return;
}
onRequestSuccess(content);
};
}
request(asset.uri, isShared, onSuccess, onFailure);
}
function onMessage(e) {
var data = e.data,
sourceWindow = e.source.window,
i, ln, callback, iframe;
for (i = 0, ln = callbacks.length; i < ln; i++) {
callback = callbacks[i];
iframe = callback.iframe;
if (iframe.contentWindow === sourceWindow) {
callback.callback(data);
doc.body.removeChild(iframe);
callbacks.splice(i, 1);
return;
}
}
}
function patch(content, delta) {
var output = [],
chunk, i, ln;
if (delta.length === 0) {
return content;
}
for (i = 0,ln = delta.length; i < ln; i++) {
chunk = delta[i];
if (typeof chunk === 'number') {
output.push(content.substring(chunk, chunk + delta[++i]));
}
else {
output.push(chunk);
}
}
return output.join('');
}
function log(message) {
if (typeof console != 'undefined') {
(console.error || console.log).call(console, message);
}
}
function store(key, value) {
try {
storage.setItem(key, value);
}
catch (e) {
if (storage && e.code == e.QUOTA_EXCEEDED_ERR && activeManifest) {
log("LocalStorage Quota exceeded, cannot store " + key + " locally");
// Quota exceeded, clean up unused items
// var items = activeManifest.assets.map(function(asset) {
// return asset.key;
// }),
// i = 0,
// ln = storage.length,
// cleaned = false,
// item;
//
// items.push(activeManifest.key);
//
// while (i <= ln - 1) {
// item = storage.key(i);
//
// if (items.indexOf(item) == -1) {
// storage.removeItem(item);
// cleaned = true;
// ln--;
// }
// else {
// i++;
// }
// }
// Done cleaning up, attempt to store the value again
// If there's still not enough space, no other choice
// but to skip this item from being stored
// if (cleaned) {
// store(key, value);
// }
}
}
}
function retrieve(key) {
try {
return storage.getItem(key);
}
catch (e) {
// Private browsing mode
return null;
}
}
function retrieveAsset(asset) {
return retrieve(asset.key);
}
function storeAsset(asset, content) {
return store(asset.key, content);
}
function refresh() {
if (!isRefreshing) {
isRefreshing = true;
requestXhr(manifestFile, function(content) {
new Manifest(content).store();
global.location.reload();
});
}
}
function blink(currentManifest) {
var currentAssets = currentManifest.assets,
assetsCount = currentAssets.length,
newManifest;
activeManifest = currentManifest;
addWindowListener('message', onMessage, false);
function onAssetReady(asset, content) {
var assets = asset.collection,
index = asset.index,
ln = assets.length,
i;
asset.ready = true;
asset.content = content;
for (i = index - 1; i >= 0; i--) {
asset = assets[i];
if (!asset.filtered && (!asset.ready || !asset.evaluated)) {
return;
}
}
for (i = index; i < ln; i++) {
asset = assets[i];
if (asset.ready) {
if (!asset.evaluated) {
evaluateAsset(asset);
}
}
else {
return;
}
}
}
function evaluateAsset(asset) {
asset.evaluated = true;
if (asset.type == 'js') {
try {
eval(asset.content);
}
catch (e) {
log("Error evaluating " + asset.uri + " with message: " + e);
}
}
else {
var style = doc.createElement('style'),
base;
style.type = 'text/css';
style.textContent = asset.content;
if ('id' in asset) {
style.id = asset.id;
}
if ('disabled' in asset) {
style.disabled = asset.disabled;
}
base = document.createElement('base');
base.href = asset.path.replace(/\/[^\/]*$/, '/');
head.appendChild(base);
head.appendChild(style);
head.removeChild(base);
}
delete asset.content;
if (--assetsCount == 0) {
onReady();
}
}
function onReady() {
var updatingAssets = [],
appCacheReady = false,
onAppCacheIdle = function() {},
onAppCacheReady = function() {
appCache.swapCache();
appCacheReady = true;
onAppCacheIdle();
},
updatingCount;
removeWindowListener('message', onMessage, false);
if (appCache.status == appCache.UPDATEREADY) {
onAppCacheReady();
}
else if (appCache.status == appCache.CHECKING || appCache.status == appCache.DOWNLOADING) {
appCache.onupdateready = onAppCacheReady;
appCache.onnoupdate = appCache.onobsolete = function() {
onAppCacheIdle();
};
}
function notifyUpdateIfAppCacheReady() {
if (appCacheReady) {
notifyUpdate();
}
}
function notifyUpdate() {
var updatedCallback = Ext.onUpdated || emptyFn;
if ('onSetup' in Ext) {
Ext.onSetup(updatedCallback);
}
else {
updatedCallback();
}
}
function doUpdate() {
newManifest.store();
updatingAssets.forEach(function(asset) {
storeAsset(asset, asset.content);
});
notifyUpdate();
}
function onAssetUpdated(asset, content) {
asset.content = content;
if (--updatingCount == 0) {
if (appCache.status == appCache.IDLE) {
doUpdate();
}
else {
onAppCacheIdle = doUpdate;
}
}
}
function checkForUpdate() {
removeWindowListener('online', checkForUpdate, false);
requestXhr(manifestFile, function(manifestContent) {
activeManifest = newManifest = new Manifest(manifestContent);
var assets = newManifest.assets,
currentAsset;
assets.forEach(function(asset) {
currentAsset = currentManifest.getAsset(asset.uri);
if (!currentAsset || asset.version !== currentAsset.version) {
updatingAssets.push(asset);
}
});
updatingCount = updatingAssets.length;
if (updatingCount == 0) {
if (appCache.status == appCache.IDLE) {
notifyUpdateIfAppCacheReady();
}
else {
onAppCacheIdle = notifyUpdateIfAppCacheReady;
}
return;
}
updatingAssets.forEach(function(asset) {
var currentAsset = currentManifest.getAsset(asset.uri),
path = asset.path,
update = asset.update;
function updateFull() {
requestAsset(asset, function(content) {
onAssetUpdated(asset, content);
});
}
// New asset (never used before)
// OR Shared from CDN
// OR Missing local storage
// OR Full update
if (!currentAsset || !update || retrieveAsset(asset) === null || update != 'delta') {
updateFull();
}
else {
requestXhr('deltas/' + path + '/' + currentAsset.version + '.json',
function(content) {
try {
onAssetUpdated(asset, patch(retrieveAsset(asset), jsonParse(content)));
}
catch (e) {
log("Malformed delta content received for " + asset.uri);
}
},
updateFull
);
}
})
});
}
if (navigator.onLine !== false) {
checkForUpdate();
}
else {
addWindowListener('online', checkForUpdate, false);
}
}
if (assetsCount == 0) {
onReady();
return;
}
currentAssets.forEach(function(asset) {
var content = retrieveAsset(asset);
if (content === null) {
requestAsset(asset, function(content) {
if (!asset.remote) {
storeAsset(asset, content);
}
onAssetReady(asset, content);
}, function() {
onAssetReady(asset, '');
});
}
else {
onAssetReady(asset, content);
}
});
}
function blinkOnDomReady(manifest) {
if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
var msViewportStyle = document.createElement("style");
msViewportStyle.appendChild(
document.createTextNode(
"@media screen and (orientation: portrait) {" +
"@-ms-viewport {width: 320px !important;}" +
"}" +
"@media screen and (orientation: landscape) {" +
"@-ms-viewport {width: 560px !important;}" +
"}"
)
);
document.getElementsByTagName("head")[0].appendChild(msViewportStyle);
}
var readyStateRe = (/MSIE 10/.test(navigator.userAgent)) ? /complete|loaded/ : /interactive|complete|loaded/;
if (doc.readyState.match(readyStateRe) !== null) {
blink(manifest);
}
else {
addWindowListener('DOMContentLoaded', function() {
if (navigator.standalone) {
// When running from Home Screen, the splash screen will not disappear until all
// external resource requests finish.
// The first timeout clears the splash screen
// The second timeout allows inital HTML content to be displayed
setTimeout(function() {
setTimeout(function() {
blink(manifest);
}, 1);
}, 1);
}
else {
setTimeout(function() {
blink(manifest);
}, 1);
}
}, false);
}
}
Ext.blink = function(manifest) {
var manifestContent = retrieve(getManifestStorageKey(manifest.id));
addMeta('viewport', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no');
addMeta('apple-mobile-web-app-capable', 'yes');
addMeta('apple-touch-fullscreen', 'yes');
if (manifestContent) {
manifest = new Manifest(manifestContent);
blinkOnDomReady(manifest);
}
else {
requestXhr(manifestFile, function(content) {
manifest = new Manifest(content);
manifest.store();
blinkOnDomReady(manifest);
});
}
};
})(this);

177
vendor/touch/microloader/testing.js vendored Normal file
View file

@ -0,0 +1,177 @@
/**
* Sencha Blink - Testing
* @author Jacky Nguyen <jacky@sencha.com>
*/
(function(global) {
var head = global.document.head,
Ext = global.Ext;
if (typeof Ext == 'undefined') {
global.Ext = Ext = {};
}
function write(content) {
document.write(content);
}
function addMeta(name, content) {
var meta = document.createElement('meta');
meta.setAttribute('name', name);
meta.setAttribute('content', content);
head.appendChild(meta);
}
Ext.blink = function(options) {
var scripts = options.js || [],
styleSheets = options.css || [],
i, ln, path, platform, theme;
if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
var msViewportStyle = document.createElement("style");
msViewportStyle.appendChild(
document.createTextNode(
"@media screen and (orientation: portrait) {" +
"@-ms-viewport {width: 320px !important;}" +
"}" +
"@media screen and (orientation: landscape) {" +
"@-ms-viewport {width: 560px !important;}" +
"}"
)
);
document.getElementsByTagName("head")[0].appendChild(msViewportStyle);
}
addMeta('viewport', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no');
addMeta('apple-mobile-web-app-capable', 'yes');
addMeta('apple-touch-fullscreen', 'yes');
Ext.microloaded = true;
var filterPlatform = window.Ext.filterPlatform = function(platform) {
var profileMatch = false,
ua = navigator.userAgent,
j, jln, exclude;
platform = [].concat(platform);
function isPhone(ua) {
var isMobile = /Mobile(\/|\s)/.test(ua);
// Either:
// - iOS but not iPad
// - Android 2
// - Android with "Mobile" in the UA
return /(iPhone|iPod)/.test(ua) ||
(!/(Silk)/.test(ua) && (/(Android)/.test(ua) && (/(Android 2)/.test(ua) || isMobile))) ||
(/(BlackBerry|BB)/.test(ua) && isMobile) ||
/(Windows Phone)/.test(ua);
}
function isTablet(ua) {
return !isPhone(ua) && (/iPad/.test(ua) || /Android|Silk/.test(ua) || /(RIM Tablet OS)/.test(ua) ||
(/MSIE 10/.test(ua) && /; Touch/.test(ua)));
}
// Check if the ?platform parameter is set in the URL
var paramsString = window.location.search.substr(1),
paramsArray = paramsString.split("&"),
params = {},
testPlatform, i;
for (i = 0; i < paramsArray.length; i++) {
var tmpArray = paramsArray[i].split("=");
params[tmpArray[0]] = tmpArray[1];
}
testPlatform = params.platform;
if (testPlatform) {
return platform.indexOf(testPlatform) != -1;
}
for (j = 0, jln = platform.length; j < jln; j++) {
switch (platform[j]) {
case 'phone':
profileMatch = isPhone(ua);
break;
case 'tablet':
profileMatch = isTablet(ua);
break;
case 'desktop':
profileMatch = !isPhone(ua) && !isTablet(ua);
break;
case 'ios':
profileMatch = /(iPad|iPhone|iPod)/.test(ua);
break;
case 'android':
profileMatch = /(Android|Silk)/.test(ua);
break;
case 'blackberry':
profileMatch = /(BlackBerry|BB)/.test(ua);
break;
case 'safari':
profileMatch = /Safari/.test(ua) && !(/(BlackBerry|BB)/.test(ua));
break;
case 'chrome':
profileMatch = /Chrome/.test(ua);
break;
case 'ie10':
profileMatch = /MSIE 10/.test(ua);
break;
case 'windows':
profileMatch = /MSIE 10/.test(ua) || /Trident/.test(ua);
break;
case 'tizen':
profileMatch = /Tizen/.test(ua);
break;
case 'firefox':
profileMatch = /Firefox/.test(ua);
}
if (profileMatch) {
return true;
}
}
return false;
};
for (i = 0,ln = styleSheets.length; i < ln; i++) {
path = styleSheets[i];
if (typeof path != 'string') {
platform = path.platform;
exclude = path.exclude;
theme = path.theme;
path = path.path;
}
if (platform) {
if (!filterPlatform(platform) || filterPlatform(exclude)) {
continue;
}
Ext.theme = {
name: theme || 'Default'
};
}
write('<link rel="stylesheet" href="'+path+'">');
}
for (i = 0,ln = scripts.length; i < ln; i++) {
path = scripts[i];
if (typeof path != 'string') {
platform = path.platform;
exclude = path.exclude;
path = path.path;
}
if (platform) {
if (!filterPlatform(platform) || filterPlatform(exclude)) {
continue;
}
}
write('<script src="'+path+'"></'+'script>');
}
}
})(this);

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

3697
vendor/touch/resources/css-debug/base.css vendored Normal file

File diff suppressed because one or more lines are too long

6456
vendor/touch/resources/css-debug/bb10.css vendored Normal file

File diff suppressed because one or more lines are too long

5840
vendor/touch/resources/css-debug/bb103.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

6720
vendor/touch/resources/css-debug/tizen.css vendored Normal file

File diff suppressed because one or more lines are too long

6569
vendor/touch/resources/css-debug/wp.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

18
vendor/touch/resources/css/base.css vendored Normal file

File diff suppressed because one or more lines are too long

18
vendor/touch/resources/css/bb10.css vendored Normal file

File diff suppressed because one or more lines are too long

18
vendor/touch/resources/css/bb103.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

18
vendor/touch/resources/css/tizen.css vendored Normal file

File diff suppressed because one or more lines are too long

18
vendor/touch/resources/css/wp.css vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -1,39 +0,0 @@
// Let's start with the basics
$base-color: #333;
$active-color: #ff8100;
$base-gradient: 'flat';
// Buttons
$button-gradient: 'bevel';
// Lists
$list-bg-color: #eee;
$list-color: #333;
$list-pressed-color: #ddd;
$list-active-gradient: 'recessed';
$list-header-bg-color: #999;
$list-header-gradient: 'bevel';
// Tabs
$tabs_dark_color: #000;
@import 'sencha-touch/default/all';
@include sencha-panel;
@include sencha-buttons;
@include sencha-sheet;
@include sencha-picker;
@include sencha-tabs;
@include sencha-toolbar;
@include sencha-toolbar-forms;
@include sencha-carousel;
@include sencha-indexbar;
@include sencha-list;
@include sencha-list-paging;
@include sencha-list-pullrefresh;
@include sencha-layout;
@include sencha-form;
@include sencha-msgbox;
@include sencha-loading-spinner;
@include sencha-draw;
@include sencha-charts;

View file

@ -1,41 +0,0 @@
// Let's start with the basics
$base-color: #7c92ae;
$base-gradient: 'glossy';
// Lists
$list-active-gradient: 'bevel';
$list-header-bg-color: transparentize(saturate($base-color, 10%), .25);
$list-header-gradient: 'matte';
// Tabs
$tabs-dark: #111;
@import 'sencha-touch/default/all';
@include sencha-panel;
@include sencha-buttons;
@include sencha-sheet;
@include sencha-picker;
@include sencha-tabs;
@include sencha-toolbar;
@include sencha-toolbar-forms;
@include sencha-carousel;
@include sencha-indexbar;
@include sencha-list;
@include sencha-list-paging;
@include sencha-list-pullrefresh;
@include sencha-layout;
@include sencha-form;
@include sencha-msgbox;
@include sencha-loading-spinner;
@include sencha-draw;
@include sencha-charts;
.x-toolbar-light .x-title {
color: #fff;
text-shadow: rgba(0, 0, 0, 0.5) 0 -0.08em 0;
}
.x-button-back .x-button-label {
color: #fff;
}

3
vendor/touch/resources/sass/base.scss vendored Normal file
View file

@ -0,0 +1,3 @@
@import 'sencha-touch/base';
@include icon-font('Pictos', inline-font-files('pictos/pictos-web.woff', woff, 'pictos/pictos-web.ttf', truetype,'pictos/pictos-web.svg', svg));

2
vendor/touch/resources/sass/bb10.scss vendored Normal file
View file

@ -0,0 +1,2 @@
@import 'sencha-touch/bb10';
@import 'sencha-touch/bb10/all';

View file

@ -0,0 +1,2 @@
@import 'sencha-touch/bb103';
@import 'sencha-touch/bb103/all';

View file

@ -1,68 +0,0 @@
$include-highlights: false;
$include-border-radius: false;
// Let's start with the basics
$base-color: #393F45;
$active-color: #06f;
$base-gradient: 'none';
// Lists
$list_pressed_color: #09f;
$list_bg_color: #111;
$list_color: #eee;
$list_header_bg_color: #aaa;
$basic-slider: true;
@import 'sencha-touch/default/all';
@include sencha-panel;
@include sencha-buttons;
@include sencha-sheet;
@include sencha-picker;
@include sencha-tabs;
@include sencha-toolbar;
@include sencha-toolbar-forms;
@include sencha-carousel;
@include sencha-indexbar;
@include sencha-list;
@include sencha-list-paging;
@include sencha-list-pullrefresh;
@include sencha-layout;
@include sencha-form;
@include sencha-msgbox;
@include sencha-loading-spinner;
@include sencha-draw;
@include sencha-charts;
.x-indexbar-item {
color: #FFF;
}
.x-scrollbar-dark {
background-color: rgba(255, 255, 255, .6);
border: 1px solid rgba(0, 0, 0, 0.2);
}
//fixing back/forward buttons in BB.
$shadow-width: .065em; // Space between tip and its shadow
$overlap-width: .2em; // how far the mask is clipped
$mask-height: $button-height;
$mask-width: $mask-height/2.5;
$mask-offset: $button-radius - $overlap-width - $button-stroke-weight + $shadow-width - .22em;
.x-button-forward, .x-button-back {
&:before, &:after {
@include insertion($mask-width, $mask-height, -$button-stroke-weight, auto);
z-index: 2;
-webkit-mask: $mask-offset 0 theme_image($theme-name, "tip_left.png") no-repeat;
-webkit-mask-size: $mask-width $mask-height;
overflow: hidden;
}
}
.x-button-forward, .x-toolbar .x-button-forward {
&:before, &:after {
-webkit-mask: -$mask-offset 0 theme_image($theme-name, "tip_right.png") no-repeat;
}
}

View file

@ -7,5 +7,6 @@ load File.join(dir, '..', 'themes')
# Compass configurations
sass_path = dir
css_path = File.join(dir, "..", "css-debug")
fonts_path = File.join(dir, '..', 'themes/fonts/')
environment = :development
output_style = :expanded

View file

@ -5,7 +5,8 @@ dir = File.dirname(__FILE__)
load File.join(dir, '..', 'themes')
# Compass configurations
sass_path = dir
css_path = File.join(dir, "..", "css")
environment = :production
fonts_path = File.join(dir, '..', 'themes/fonts/')
sass_path = dir
css_path = File.join(dir, "..", "css")
environment = :development
output_style = :compressed

View file

@ -0,0 +1,2 @@
@import 'sencha-touch/cupertino-classic';
@import 'sencha-touch/cupertino-classic/all';

View file

@ -0,0 +1,2 @@
@import 'sencha-touch/cupertino';
@import 'sencha-touch/cupertino/all';

View file

@ -0,0 +1,2 @@
@import 'sencha-touch/mountainview';
@import 'sencha-touch/mountainview/all';

View file

@ -1,20 +1,2 @@
@import 'sencha-touch/default';
@import 'sencha-touch/default/all';
@include sencha-panel;
@include sencha-buttons;
@include sencha-sheet;
@include sencha-picker;
@include sencha-tabs;
@include sencha-toolbar;
@include sencha-toolbar-forms;
@include sencha-indexbar;
@include sencha-list;
@include sencha-list-paging;
@include sencha-list-pullrefresh;
@include sencha-layout;
@include sencha-carousel;
@include sencha-form;
@include sencha-msgbox;
@include sencha-loading-spinner;
@include sencha-draw;
@include sencha-charts;

View file

@ -0,0 +1,2 @@
@import 'sencha-touch/tizen';
@import 'sencha-touch/tizen/all';

2
vendor/touch/resources/sass/wp.scss vendored Normal file
View file

@ -0,0 +1,2 @@
@import 'sencha-touch/windows';
@import 'sencha-touch/windows/all';

Binary file not shown.

View file

@ -0,0 +1,16 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
This is a custom SVG font generated by IcoMoon.
<iconset grid="16"></iconset>
</metadata>
<defs>
<font id="icomoon" horiz-adv-x="512" >
<font-face units-per-em="512" ascent="480" descent="-32" />
<missing-glyph horiz-adv-x="512" />
<glyph class="hidden" unicode="&#xf000;" d="M0,480L 512 -32L0 -32 z" horiz-adv-x="0" />
<glyph unicode="&#x21;" d="M 236.48-16.76L 175.652,48.016L 357.208,223.24L 175.652,406.38L 236.48,463.236L 476.48,223.24 z" />
<glyph unicode="&#x22;" d="M 203.884,223.992L 410.68,21.364L 357.32-32L 101.32,223.992L 357.32,480L 409.596,427.74 z" />
<glyph unicode="&#x20;" horiz-adv-x="256" />
</font></defs></svg>

After

Width:  |  Height:  |  Size: 826 B

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,13 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="icomoon" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" d="" horiz-adv-x="512" />
<glyph unicode="&#x61;" d="M877.714 256v-73.143q0-14.857-10.857-25.714t-25.714-10.857h-804.571q-14.857 0-25.714 10.857t-10.857 25.714v73.143q0 14.857 10.857 25.714t25.714 10.857h804.571q14.857 0 25.714-10.857t10.857-25.714zM877.714 548.571v-73.143q0-14.857-10.857-25.714t-25.714-10.857h-804.571q-14.857 0-25.714 10.857t-10.857 25.714v73.143q0 14.857 10.857 25.714t25.714 10.857h804.571q14.857 0 25.714-10.857t10.857-25.714zM877.714 841.143v-73.143q0-14.857-10.857-25.714t-25.714-10.857h-804.571q-14.857 0-25.714 10.857t-10.857 25.714v73.143q0 14.857 10.857 25.714t25.714 10.857h804.571q14.857 0 25.714-10.857t10.857-25.714z" horiz-adv-x="878" />
<glyph unicode="&#x62;" d="M731.429 475.429v73.143q0 14.857-10.857 25.714t-25.714 10.857h-286.857l108 108q10.857 10.857 10.857 25.714t-10.857 25.714l-52 52q-10.286 10.286-25.714 10.286t-25.714-10.286l-258.857-258.857q-10.286-10.286-10.286-25.714t10.286-25.714l258.857-258.857q10.286-10.286 25.714-10.286t25.714 10.286l52 52q10.286 10.286 10.286 25.714t-10.286 25.714l-108 108h286.857q14.857 0 25.714 10.857t10.857 25.714zM877.714 512q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" horiz-adv-x="878" />
<glyph unicode="&#x63;" d="M409.714 226.857l259.429 259.429q10.857 10.857 10.857 25.714t-10.857 25.714l-259.429 259.429q-10.857 10.857-25.714 10.857t-25.714-10.857l-58.286-58.286q-10.857-10.857-10.857-25.714t10.857-25.714l175.429-175.429-175.429-175.429q-10.857-10.857-10.857-25.714t10.857-25.714l58.286-58.286q10.857-10.857 25.714-10.857t25.714 10.857zM877.714 512q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" horiz-adv-x="878" />
</font></defs></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 826 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Some files were not shown because too many files have changed in this diff Show more