2.9 sec in total
454 ms
2.1 sec
292 ms
Click here to check amazing Mostaqqel content for Egypt. Otherwise, check out these important facts you probably never knew about mostaqqel.com
大家赢【WWW.AG38.CN】为您带来飞一般的体验,即可起登录我们的官网您就可以免费领取88元,无需申请,自动到账,机会不容错过,速度进行注册吧.
Visit mostaqqel.comWe analyzed Mostaqqel.com page load time and found that the first response time was 454 ms and then it took 2.4 sec to load all DOM resources and completely render a web page. This is quite a good result, as only 45% of websites can load faster.
mostaqqel.com performance score
454 ms
99 ms
98 ms
61 ms
27 ms
Our browser made a total of 165 requests to load all elements on the main page. We found that 84% of them (138 requests) were addressed to the original Mostaqqel.com, 6% (10 requests) were made to and 3% (5 requests) were made to Fonts.gstatic.com. The less responsive or slowest element that took the longest time to load (493 ms) relates to the external source Facebook.com.
Page size can be reduced by 3.0 MB (70%)
4.2 MB
1.3 MB
In fact, the total size of Mostaqqel.com main page is 4.2 MB. This result falls beyond the top 1M of websites and identifies a large and not optimized web page that may take ages to load. Only a small number of websites need less resources to load. Javascripts take 2.4 MB which makes up the majority of the site volume.
Potential reduce by 227.8 kB
HTML content can be minified and compressed by a website’s server. The most efficient way is to compress content using GZIP which reduces data amount travelling through the network between server and browser. HTML code on this page is well minified. It is highly recommended that content of this web page should be compressed using GZIP, as it can save up to 227.8 kB or 47% of the original size.
Potential reduce by 0 B
Image size optimization can help to speed up a website loading time. The chart above shows the difference between the size before and after optimization. Mostaqqel images are well optimized though.
Potential reduce by 1.8 MB
It’s better to minify JavaScript in order to improve website performance. The diagram shows the current total size of all JavaScript files against the prospective JavaScript size after its minification and compression. It is highly recommended that all JavaScript files should be compressed and minified as it can save up to 1.8 MB or 76% of the original size.
Potential reduce by 917.8 kB
CSS files minification is very important to reduce a web page rendering time. The faster CSS files can load, the earlier a page can be rendered. Mostaqqel.com needs all CSS files to be minified and compressed as it can save up to 917.8 kB or 89% of the original size.
Number of requests can be reduced by 78 (53%)
147
69
The browser has sent 147 CSS, Javascripts, AJAX and image requests in order to completely render the main page of Mostaqqel. We recommend that multiple CSS and JavaScript files should be merged into one by each type, as it can help reduce assets requests from 56 to 1 for JavaScripts and from 24 to 1 for CSS and as a result speed up the page load time.
mostaqqel.com
454 ms
webcomponents.min.js
99 ms
jquery.min.js
98 ms
jquery.yiiactiveform.js
61 ms
css
27 ms
outdatedbrowser.min.css
60 ms
font-awesome.min.css
61 ms
swiper.min.css
88 ms
animate.min.css
89 ms
drop-theme-arrows.css
90 ms
drop-theme-arrows-bounce.css
236 ms
intlTelInput.css
237 ms
classic.css
239 ms
classic.date.css
240 ms
classic.time.css
240 ms
flag-icon.min.css
241 ms
ion.rangeSlider.css
246 ms
ion.rangeSlider.skinFlat.css
246 ms
hover-min.css
247 ms
perfect-scrollbar.min.css
292 ms
style.css
294 ms
froala_editor.min.css
296 ms
froala_content.min.css
295 ms
froala_style.min.css
299 ms
app.css
303 ms
dev.css
300 ms
AAAAWdJREFUeNrtwTEBAAAAwqD1T20ND6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIB3A0prAAGTNoyTAAAAAElFTkSuQmCC
171 ms
Sp+mOlZ1xQEAAAAASUVORK5CYII=
165 ms
4Ct0u3qZzxEYwAAAAASUVORK5CYII=
198 ms
4AOAAAAAElFTkSuQmCC
185 ms
ua-parser.js
185 ms
director.min.js
183 ms
slideout.min.js
182 ms
jquery-ui.min.js
239 ms
outdatedbrowser.min.js
182 ms
underscore-min.js
180 ms
drop.min.js
234 ms
typed.js
235 ms
jquery.waypoints.min.js
235 ms
progressbar.min.js
233 ms
skrollr.min.js
234 ms
mailcheck.min.js
297 ms
store.min.js
298 ms
modernizr.js
302 ms
foundation.min.js
427 ms
swiper.jquery.min.js
432 ms
vivus.min.js
424 ms
odometer.min.js
425 ms
intlTelInput.min.js
425 ms
flow.min.js
430 ms
fusty-flow.js
427 ms
fusty-flow-factory.js
427 ms
ion.rangeSlider.min.js
427 ms
entropizer.min.js
428 ms
tether.min.js
429 ms
holder.js
430 ms
froala_editor.min.js
434 ms
font_size.min.js
430 ms
socket.io-1.3.0.js
290 ms
fullscreen.min.js
428 ms
lists.min.js
428 ms
tables.min.js
428 ms
urls.min.js
423 ms
char_counter.min.js
422 ms
masonry.pkgd.min.js
422 ms
isotope.pkgd.min.js
337 ms
flowtype.js
336 ms
handlebars.min.js
263 ms
imagesloaded.min.js
262 ms
classie.min.js
263 ms
colorfinder.min.js
262 ms
0006a4bb-5571-45df-a1d4-0fd1a2adde9b.js
257 ms
fbds.js
242 ms
main.js
247 ms
zN7GBFwfMP4uA6AR0HCoLQ.ttf
200 ms
RxZJdnzeo3R5zSexge8UUaCWcynf_cDxXwCLxiixG1c.ttf
200 ms
Hgo13k-tfSpn0qi1SFdUfaCWcynf_cDxXwCLxiixG1c.ttf
203 ms
Jzo62I39jc0gQRrbndN6nfesZW2xOQ-xsNqO47m55DA.ttf
203 ms
d-6IYplOFocCacKzxwXSOKCWcynf_cDxXwCLxiixG1c.ttf
200 ms
gridScrollFx.min.js
217 ms
app.js
214 ms
dev.js
213 ms
touche.js
213 ms
fontawesome-webfont.woff
291 ms
home-top.jpg
322 ms
home-header-arrow.png
152 ms
client.png
150 ms
freelancer.png
222 ms
493 ms
polymer.html
299 ms
core-drawer-panel.html
310 ms
core-menu.html
302 ms
paper-button.html
305 ms
paper-input.html
312 ms
paper-autogrow-textarea.html
314 ms
paper-char-counter.html
316 ms
paper-tabs.html
318 ms
paper-shadow.html
321 ms
paper-checkbox.html
324 ms
paper-dropdown.html
326 ms
paper-dropdown-menu.html
331 ms
paper-item.html
337 ms
paper-fab.html
339 ms
paper-menu-button.html
342 ms
paper-progress.html
344 ms
paper-spinner.html
345 ms
paper-toast.html
347 ms
core-pages.html
346 ms
core-animated-pages.html
348 ms
core-tooltip.html
351 ms
submit-button.html
355 ms
route-button.html
358 ms
en.html
353 ms
sdk.js
289 ms
widgets.js
146 ms
logo.svg
125 ms
232 ms
layout.html
179 ms
core-selector.html
200 ms
core-a11y-keys.html
202 ms
paper-button-base.html
200 ms
core-media-query.html
200 ms
core-input.html
199 ms
paper-input-decorator.html
200 ms
core-style.html
197 ms
paper-icon-button.html
196 ms
core-resizable.html
197 ms
paper-tab.html
198 ms
paper-shadow.css
197 ms
paper-radio-button.html
195 ms
core-dropdown.html
192 ms
paper-dropdown-transition.html
192 ms
core-dropdown-base.html
190 ms
core-focusable.html
190 ms
core-icon.html
190 ms
core-icons.html
196 ms
paper-ripple.html
188 ms
core-range.html
183 ms
core-overlay.html
189 ms
core-transition-css.html
191 ms
hero-transition.html
188 ms
cross-fade.html
188 ms
update.html
147 ms
polymer.js
106 ms
core-selection.html
101 ms
web-animations.html
81 ms
core-iconset.html
78 ms
core-icon.css
80 ms
core-iconset-svg.html
69 ms
core-transition.html
68 ms
core-key-helper.html
69 ms
core-overlay-layer.html
140 ms
core-transition-pages.html
140 ms
118 ms
core-meta.html
82 ms
xd_arbiter.php
163 ms
xd_arbiter.php
297 ms
javascript;charset=utf-8,%0A%20%20%20%20Polymer('core-media-query'%2C%20%7B%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20Boolean%20return%20value%20of%20the%20media%20query%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20queryMatches%0A%20%20%20%20%20%20%20*%20%40type%20Boolean%0A%20%20%20%20%20%20%20*%20%40default%20false%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20queryMatches%3A%20false%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20CSS%20media%20query%20to%20evaulate%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20query%0A%20%20%20%20%20%20%20*%20%40type%20string%0A%20%20%20%20%20%20%20*%20%40default%20''%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20query%3A%20''%2C%0A%20%20%20%20%20%20ready%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20this._mqHandler%20%3D%20this.queryHandler.bind(this)%3B%0A%20%20%20%20%20%20%20%20this._mq%20%3D%20null%3B%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20queryChanged%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this._mq)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this._mq.removeListener(this._mqHandler)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20var%20query%20%3D%20this.query%3B%0A%20%20%20%20%20%20%20%20if%20(query%5B0%5D%20!%3D%3D%20'(')%20%7B%0A%20%20%20%20%20%20%20%20%20%20query%20%3D%20'('%20%2B%20this.query%20%2B%20')'%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this._mq%20%3D%20window.matchMedia(query)%3B%0A%20%20%20%20%20%20%20%20this._mq.addListener(this._mqHandler)%3B%0A%20%20%20%20%20%20%20%20this.queryHandler(this._mq)%3B%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20queryHandler%3A%20function(mq)%20%7B%0A%20%20%20%20%20%20%20%20this.queryMatches%20%3D%20mq.matches%3B%0A%20%20%20%20%20%20%20%20this.asyncFire('core-media-change'%2C%20mq)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D)%3B%0A%20%20%0A%2F%2F%23%20sourceURL%3Dhttp%3A%2F%2Fmostaqqel.com%2Fui-deps%2Fcore-media-query%2Fcore-media-query.html.js%0A
8 ms
javascript;charset=utf-8,%0A%20%20%20%20Polymer('core-selection'%2C%20%7B%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20true%2C%20multiple%20selections%20are%20allowed.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20multi%0A%20%20%20%20%20%20%20*%20%40type%20boolean%0A%20%20%20%20%20%20%20*%20%40default%20false%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20multi%3A%20false%2C%0A%20%20%20%20%20%20ready%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20this.clear()%3B%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20clear%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20this.selection%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Retrieves%20the%20selected%20item(s).%0A%20%20%20%20%20%20%20*%20%40method%20getSelection%0A%20%20%20%20%20%20%20*%20%40returns%20Returns%20the%20selected%20item(s).%20If%20the%20multi%20property%20is%20true%2C%0A%20%20%20%20%20%20%20*%20getSelection%20will%20return%20an%20array%2C%20otherwise%20it%20will%20return%20%0A%20%20%20%20%20%20%20*%20the%20selected%20item%20or%20undefined%20if%20there%20is%20no%20selection.%0A%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20getSelection%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.multi%20%3F%20this.selection%20%3A%20this.selection%5B0%5D%3B%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Indicates%20if%20a%20given%20item%20is%20selected.%0A%20%20%20%20%20%20%20*%20%40method%20isSelected%0A%20%20%20%20%20%20%20*%20%40param%20%7Bany%7D%20item%20The%20item%20whose%20selection%20state%20should%20be%20checked.%0A%20%20%20%20%20%20%20*%20%40returns%20Returns%20true%20if%20%60item%60%20is%20selected.%0A%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20isSelected%3A%20function(item)%20%7B%0A%20%20%20%20%20%20%20%20return%20this.selection.indexOf(item)%20%3E%3D%200%3B%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20setItemSelected%3A%20function(item%2C%20isSelected)%20%7B%0A%20%20%20%20%20%20%20%20if%20(item%20!%3D%3D%20undefined%20%26%26%20item%20!%3D%3D%20null)%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(isSelected)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.selection.push(item)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20i%20%3D%20this.selection.indexOf(item)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(i%20%3E%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.selection.splice(i%2C%201)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20this.fire(%22core-select%22%2C%20%7BisSelected%3A%20isSelected%2C%20item%3A%20item%7D)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20the%20selection%20state%20for%20a%20given%20%60item%60.%20If%20the%20multi%20property%0A%20%20%20%20%20%20%20*%20is%20true%2C%20then%20the%20selected%20state%20of%20%60item%60%20will%20be%20toggled%3B%20otherwise%0A%20%20%20%20%20%20%20*%20the%20%60item%60%20will%20be%20selected.%0A%20%20%20%20%20%20%20*%20%40method%20select%0A%20%20%20%20%20%20%20*%20%40param%20%7Bany%7D%20item%3A%20The%20item%20to%20select.%0A%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20select%3A%20function(item)%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.multi)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.toggle(item)%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20(this.getSelection()%20!%3D%3D%20item)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.setItemSelected(this.getSelection()%2C%20false)%3B%0A%20%20%20%20%20%20%20%20%20%20this.setItemSelected(item%2C%20true)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Toggles%20the%20selection%20state%20for%20%60item%60.%0A%20%20%20%20%20%20%20*%20%40method%20toggle%0A%20%20%20%20%20%20%20*%20%40param%20%7Bany%7D%20item%3A%20The%20item%20to%20toggle.%0A%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20toggle%3A%20function(item)%20%7B%0A%20%20%20%20%20%20%20%20this.setItemSelected(item%2C%20!this.isSelected(item))%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D)%3B%0A%20%20%0A%2F%2F%23%20sourceURL%3Dhttp%3A%2F%2Fmostaqqel.com%2Fui-deps%2Fcore-selection%2Fcore-selection.html.js%0A
1 ms
javascript;charset=utf-8,%0A%0A%20%20%20%20Polymer('core-selector'%2C%20%7B%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Gets%20or%20sets%20the%20selected%20element.%20%20Default%20to%20use%20the%20index%0A%20%20%20%20%20%20%20*%20of%20the%20item%20element.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20you%20want%20a%20specific%20attribute%20value%20of%20the%20element%20to%20be%0A%20%20%20%20%20%20%20*%20used%20instead%20of%20index%2C%20set%20%22valueattr%22%20to%20that%20attribute%20name.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%20%3Ccore-selector%20valueattr%3D%22label%22%20selected%3D%22foo%22%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%3Cdiv%20label%3D%22foo%22%3E%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%3Cdiv%20label%3D%22bar%22%3E%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%3Cdiv%20label%3D%22zot%22%3E%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%3C%2Fcore-selector%3E%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20In%20multi-selection%20this%20should%20be%20an%20array%20of%20values.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%20%3Ccore-selector%20id%3D%22selector%22%20valueattr%3D%22label%22%20multi%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%3Cdiv%20label%3D%22foo%22%3E%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%3Cdiv%20label%3D%22bar%22%3E%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%3Cdiv%20label%3D%22zot%22%3E%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%3C%2Fcore-selector%3E%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%20this.%24.selector.selected%20%3D%20%5B'foo'%2C%20'zot'%5D%3B%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20selected%0A%20%20%20%20%20%20%20*%20%40type%20Object%0A%20%20%20%20%20%20%20*%20%40default%20null%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20selected%3A%20null%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20true%2C%20multiple%20selections%20are%20allowed.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20multi%0A%20%20%20%20%20%20%20*%20%40type%20boolean%0A%20%20%20%20%20%20%20*%20%40default%20false%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20multi%3A%20false%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Specifies%20the%20attribute%20to%20be%20used%20for%20%22selected%22%20attribute.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20valueattr%0A%20%20%20%20%20%20%20*%20%40type%20string%0A%20%20%20%20%20%20%20*%20%40default%20'name'%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20valueattr%3A%20'name'%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Specifies%20the%20CSS%20class%20to%20be%20used%20to%20add%20to%20the%20selected%20element.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20selectedClass%0A%20%20%20%20%20%20%20*%20%40type%20string%0A%20%20%20%20%20%20%20*%20%40default%20'core-selected'%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20selectedClass%3A%20'core-selected'%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Specifies%20the%20property%20to%20be%20used%20to%20set%20on%20the%20selected%20element%0A%20%20%20%20%20%20%20*%20to%20indicate%20its%20active%20state.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20selectedProperty%0A%20%20%20%20%20%20%20*%20%40type%20string%0A%20%20%20%20%20%20%20*%20%40default%20''%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20selectedProperty%3A%20''%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Specifies%20the%20attribute%20to%20set%20on%20the%20selected%20element%20to%20indicate%0A%20%20%20%20%20%20%20*%20its%20active%20state.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20selectedAttribute%0A%20%20%20%20%20%20%20*%20%40type%20string%0A%20%20%20%20%20%20%20*%20%40default%20'active'%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20selectedAttribute%3A%20'active'%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Returns%20the%20currently%20selected%20element.%20In%20multi-selection%20this%20returns%0A%20%20%20%20%20%20%20*%20an%20array%20of%20selected%20elements.%0A%20%20%20%20%20%20%20*%20Note%20that%20you%20should%20not%20use%20this%20to%20set%20the%20selection.%20Instead%20use%0A%20%20%20%20%20%20%20*%20%60selected%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20selectedItem%0A%20%20%20%20%20%20%20*%20%40type%20Object%0A%20%20%20%20%20%20%20*%20%40default%20null%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20selectedItem%3A%20null%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20In%20single%20selection%2C%20this%20returns%20the%20model%20associated%20with%20the%0A%20%20%20%20%20%20%20*%20selected%20element.%0A%20%20%20%20%20%20%20*%20Note%20that%20you%20should%20not%20use%20this%20to%20set%20the%20selection.%20Instead%20use%0A%20%20%20%20%20%20%20*%20%60selected%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20selectedModel%0A%20%20%20%20%20%20%20*%20%40type%20Object%0A%20%20%20%20%20%20%20*%20%40default%20null%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20selectedModel%3A%20null%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20In%20single%20selection%2C%20this%20returns%20the%20selected%20index.%0A%20%20%20%20%20%20%20*%20Note%20that%20you%20should%20not%20use%20this%20to%20set%20the%20selection.%20Instead%20use%0A%20%20%20%20%20%20%20*%20%60selected%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20selectedIndex%0A%20%20%20%20%20%20%20*%20%40type%20number%0A%20%20%20%20%20%20%20*%20%40default%20-1%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20selectedIndex%3A%20-1%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Nodes%20with%20local%20name%20that%20are%20in%20the%20list%20will%20not%20be%20included%0A%20%20%20%20%20%20%20*%20in%20the%20selection%20items.%20%20In%20the%20following%20example%2C%20%60items%60%20returns%20four%0A%20%20%20%20%20%20%20*%20%60core-item%60's%20and%20doesn't%20include%20%60h3%60%20and%20%60hr%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%20%3Ccore-selector%20excludedLocalNames%3D%22h3%20hr%22%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%3Ch3%3EHeader%3C%2Fh3%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%3Ccore-item%3EItem1%3C%2Fcore-item%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%3Ccore-item%3EItem2%3C%2Fcore-item%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%3Chr%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%3Ccore-item%3EItem3%3C%2Fcore-item%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%3Ccore-item%3EItem4%3C%2Fcore-item%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%3C%2Fcore-selector%3E%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20excludedLocalNames%0A%20%20%20%20%20%20%20*%20%40type%20string%0A%20%20%20%20%20%20%20*%20%40default%20''%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20excludedLocalNames%3A%20''%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20target%20element%20that%20contains%20items.%20%20If%20this%20is%20not%20set%0A%20%20%20%20%20%20%20*%20core-selector%20is%20the%20container.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20target%0A%20%20%20%20%20%20%20*%20%40type%20Object%0A%20%20%20%20%20%20%20*%20%40default%20null%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20target%3A%20null%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20This%20can%20be%20used%20to%20query%20nodes%20from%20the%20target%20node%20to%20be%20used%20for%0A%20%20%20%20%20%20%20*%20selection%20items.%20%20Note%20this%20only%20works%20if%20%60target%60%20is%20set%0A%20%20%20%20%20%20%20*%20and%20is%20not%20%60core-selector%60%20itself.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%20%3Ccore-selector%20target%3D%22%7B%7B%24.myForm%7D%7D%22%20itemsSelector%3D%22input%5Btype%3Dradio%5D%22%3E%3C%2Fcore-selector%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%3Cform%20id%3D%22myForm%22%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%3Clabel%3E%3Cinput%20type%3D%22radio%22%20name%3D%22color%22%20value%3D%22red%22%3E%20Red%3C%2Flabel%3E%20%3Cbr%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%3Clabel%3E%3Cinput%20type%3D%22radio%22%20name%3D%22color%22%20value%3D%22green%22%3E%20Green%3C%2Flabel%3E%20%3Cbr%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%3Clabel%3E%3Cinput%20type%3D%22radio%22%20name%3D%22color%22%20value%3D%22blue%22%3E%20Blue%3C%2Flabel%3E%20%3Cbr%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%3Cp%3Ecolor%20%3D%20%7B%7Bcolor%7D%7D%3C%2Fp%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%3C%2Fform%3E%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20itemsSelector%0A%20%20%20%20%20%20%20*%20%40type%20string%0A%20%20%20%20%20%20%20*%20%40default%20''%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20itemsSelector%3A%20''%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20event%20that%20would%20be%20fired%20from%20the%20item%20element%20to%20indicate%0A%20%20%20%20%20%20%20*%20it%20is%20being%20selected.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20activateEvent%0A%20%20%20%20%20%20%20*%20%40type%20string%0A%20%20%20%20%20%20%20*%20%40default%20'tap'%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20activateEvent%3A%20'tap'%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20this%20to%20true%20to%20disallow%20changing%20the%20selection%20via%20the%0A%20%20%20%20%20%20%20*%20%60activateEvent%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20notap%0A%20%20%20%20%20%20%20*%20%40type%20boolean%0A%20%20%20%20%20%20%20*%20%40default%20false%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20notap%3A%20false%2C%0A%0A%20%20%20%20%20%20defaultExcludedLocalNames%3A%20'template'%2C%0A%0A%20%20%20%20%20%20observe%3A%20%7B%0A%20%20%20%20%20%20%20%20'selected%20multi'%3A%20'selectedChanged'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20ready%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20this.activateListener%20%3D%20this.activateHandler.bind(this)%3B%0A%20%20%20%20%20%20%20%20this.itemFilter%20%3D%20this.filterItem.bind(this)%3B%0A%20%20%20%20%20%20%20%20this.excludedLocalNamesChanged()%3B%0A%20%20%20%20%20%20%20%20this.observer%20%3D%20new%20MutationObserver(this.updateSelected.bind(this))%3B%0A%20%20%20%20%20%20%20%20if%20(!this.target)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.target%20%3D%20this%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Returns%20an%20array%20of%20all%20items.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40property%20items%0A%20%20%20%20%20%20%20*%20%40type%20array%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20get%20items()%20%7B%0A%20%20%20%20%20%20%20%20if%20(!this.target)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20var%20nodes%20%3D%20this.target%20!%3D%3D%20this%20%3F%20(this.itemsSelector%20%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20this.target.querySelectorAll(this.itemsSelector)%20%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.target.children)%20%3A%20this.%24.items.getDistributedNodes()%3B%0A%20%20%20%20%20%20%20%20return%20Array.prototype.filter.call(nodes%2C%20this.itemFilter)%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20filterItem%3A%20function(node)%20%7B%0A%20%20%20%20%20%20%20%20return%20!this._excludedNames%5Bnode.localName%5D%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20excludedLocalNamesChanged%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20this._excludedNames%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20var%20s%20%3D%20this.defaultExcludedLocalNames%3B%0A%20%20%20%20%20%20%20%20if%20(this.excludedLocalNames)%20%7B%0A%20%20%20%20%20%20%20%20%20%20s%20%2B%3D%20'%20'%20%2B%20this.excludedLocalNames%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20s.split(%2F%5Cs%2B%2Fg).forEach(function(n)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this._excludedNames%5Bn%5D%20%3D%201%3B%0A%20%20%20%20%20%20%20%20%7D%2C%20this)%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20targetChanged%3A%20function(old)%20%7B%0A%20%20%20%20%20%20%20%20if%20(old)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.removeListener(old)%3B%0A%20%20%20%20%20%20%20%20%20%20this.observer.disconnect()%3B%0A%20%20%20%20%20%20%20%20%20%20this.clearSelection()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(this.target)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.addListener(this.target)%3B%0A%20%20%20%20%20%20%20%20%20%20this.observer.observe(this.target%2C%20%7BchildList%3A%20true%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20this.updateSelected()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20addListener%3A%20function(node)%20%7B%0A%20%20%20%20%20%20%20%20Polymer.addEventListener(node%2C%20this.activateEvent%2C%20this.activateListener)%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20removeListener%3A%20function(node)%20%7B%0A%20%20%20%20%20%20%20%20Polymer.removeEventListener(node%2C%20this.activateEvent%2C%20this.activateListener)%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Returns%20the%20selected%20item(s).%20If%20the%20%60multi%60%20property%20is%20true%2C%0A%20%20%20%20%20%20%20*%20this%20will%20return%20an%20array%2C%20otherwise%20it%20will%20return%0A%20%20%20%20%20%20%20*%20the%20selected%20item%20or%20undefined%20if%20there%20is%20no%20selection.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20get%20selection()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.%24.selection.getSelection()%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20selectedChanged%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20TODO(ffu)%3A%20Right%20now%20this%20is%20the%20only%20way%20to%20know%20that%20the%20%60selected%60%0A%20%20%20%20%20%20%20%20%2F%2F%20is%20an%20array%20and%20was%20mutated%2C%20as%20opposed%20to%20newly%20assigned.%0A%20%20%20%20%20%20%20%20if%20(arguments.length%20%3D%3D%3D%201)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.processSplices(arguments%5B0%5D)%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.updateSelected()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20updateSelected%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20this.validateSelected()%3B%0A%20%20%20%20%20%20%20%20if%20(this.multi)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.clearSelection(this.selected)%3B%0A%20%20%20%20%20%20%20%20%20%20this.selected%20%26%26%20this.selected.forEach(function(s)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.setValueSelected(s%2C%20true)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%20this)%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.valueToSelection(this.selected)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20validateSelected%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20convert%20to%20an%20array%20for%20multi-selection%0A%20%20%20%20%20%20%20%20if%20(this.multi%20%26%26%20!Array.isArray(this.selected)%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20this.selected%20!%3D%20null)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.selected%20%3D%20%5Bthis.selected%5D%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20use%20the%20first%20selected%20in%20the%20array%20for%20single-selection%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20(!this.multi%20%26%26%20Array.isArray(this.selected))%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20s%20%3D%20this.selected%5B0%5D%3B%0A%20%20%20%20%20%20%20%20%20%20this.clearSelection(%5Bs%5D)%3B%0A%20%20%20%20%20%20%20%20%20%20this.selected%20%3D%20s%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20processSplices%3A%20function(splices)%20%7B%0A%20%20%20%20%20%20%20%20for%20(var%20i%20%3D%200%2C%20splice%3B%20splice%20%3D%20splices%5Bi%5D%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20for%20(var%20j%20%3D%200%3B%20j%20%3C%20splice.removed.length%3B%20j%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.setValueSelected(splice.removed%5Bj%5D%2C%20false)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20for%20(var%20j%20%3D%200%3B%20j%20%3C%20splice.addedCount%3B%20j%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.setValueSelected(this.selected%5Bsplice.index%20%2B%20j%5D%2C%20true)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20clearSelection%3A%20function(excludes)%20%7B%0A%20%20%20%20%20%20%20%20this.%24.selection.selection.slice().forEach(function(item)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20v%20%3D%20this.valueForNode(item)%20%7C%7C%20this.items.indexOf(item)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(!excludes%20%7C%7C%20excludes.indexOf(v)%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%24.selection.setItemSelected(item%2C%20false)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%20this)%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20valueToSelection%3A%20function(value)%20%7B%0A%20%20%20%20%20%20%20%20var%20item%20%3D%20this.valueToItem(value)%3B%0A%20%20%20%20%20%20%20%20this.%24.selection.select(item)%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20setValueSelected%3A%20function(value%2C%20isSelected)%20%7B%0A%20%20%20%20%20%20%20%20var%20item%20%3D%20this.valueToItem(value)%3B%0A%20%20%20%20%20%20%20%20if%20(isSelected%20%5E%20this.%24.selection.isSelected(item))%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.%24.selection.setItemSelected(item%2C%20isSelected)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20updateSelectedItem%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20this.selectedItem%20%3D%20this.selection%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20selectedItemChanged%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.selectedItem)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20t%20%3D%20this.selectedItem.templateInstance%3B%0A%20%20%20%20%20%20%20%20%20%20this.selectedModel%20%3D%20t%20%3F%20t.model%20%3A%20undefined%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.selectedModel%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.selectedIndex%20%3D%20this.selectedItem%20%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20parseInt(this.valueToIndex(this.selected))%20%3A%20-1%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20valueToItem%3A%20function(value)%20%7B%0A%20%20%20%20%20%20%20%20return%20(value%20%3D%3D%3D%20null%20%7C%7C%20value%20%3D%3D%3D%20undefined)%20%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20null%20%3A%20this.items%5Bthis.valueToIndex(value)%5D%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20valueToIndex%3A%20function(value)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20find%20an%20item%20with%20value%20%3D%3D%20value%20and%20return%20it's%20index%0A%20%20%20%20%20%20%20%20for%20(var%20i%3D0%2C%20items%3Dthis.items%2C%20c%3B%20(c%3Ditems%5Bi%5D)%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(this.valueForNode(c)%20%3D%3D%20value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20i%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%2F%2F%20if%20no%20item%20found%2C%20the%20value%20itself%20is%20probably%20the%20index%0A%20%20%20%20%20%20%20%20return%20value%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20valueForNode%3A%20function(node)%20%7B%0A%20%20%20%20%20%20%20%20return%20node%5Bthis.valueattr%5D%20%7C%7C%20node.getAttribute(this.valueattr)%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F%2F%20events%20fired%20from%20%3Ccore-selection%3E%20object%0A%20%20%20%20%20%20selectionSelect%3A%20function(e%2C%20detail)%20%7B%0A%20%20%20%20%20%20%20%20this.updateSelectedItem()%3B%0A%20%20%20%20%20%20%20%20if%20(detail.item)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.applySelection(detail.item%2C%20detail.isSelected)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20applySelection%3A%20function(item%2C%20isSelected)%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.selectedClass)%20%7B%0A%20%20%20%20%20%20%20%20%20%20item.classList.toggle(this.selectedClass%2C%20isSelected)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(this.selectedProperty)%20%7B%0A%20%20%20%20%20%20%20%20%20%20item%5Bthis.selectedProperty%5D%20%3D%20isSelected%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(this.selectedAttribute%20%26%26%20item.setAttribute)%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(isSelected)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20item.setAttribute(this.selectedAttribute%2C%20'')%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20item.removeAttribute(this.selectedAttribute)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F%2F%20event%20fired%20from%20host%0A%20%20%20%20%20%20activateHandler%3A%20function(e)%20%7B%0A%20%20%20%20%20%20%20%20if%20(!this.notap)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20i%20%3D%20this.findDistributedTarget(e.target%2C%20this.items)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(i%20%3E%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20item%20%3D%20this.items%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20s%20%3D%20this.valueForNode(item)%20%7C%7C%20i%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.multi)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.selected)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.addRemoveSelected(s)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.selected%20%3D%20%5Bs%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.selected%20%3D%20s%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.asyncFire('core-activate'%2C%20%7Bitem%3A%20item%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20addRemoveSelected%3A%20function(value)%20%7B%0A%20%20%20%20%20%20%20%20var%20i%20%3D%20this.selected.indexOf(value)%3B%0A%20%20%20%20%20%20%20%20if%20(i%20%3E%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.selected.splice(i%2C%201)%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.selected.push(value)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20findDistributedTarget%3A%20function(target%2C%20nodes)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20find%20first%20ancestor%20of%20target%20(including%20itself)%20that%0A%20%20%20%20%20%20%20%20%2F%2F%20is%20in%20nodes%2C%20if%20any%0A%20%20%20%20%20%20%20%20while%20(target%20%26%26%20target%20!%3D%20this)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20i%20%3D%20Array.prototype.indexOf.call(nodes%2C%20target)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(i%20%3E%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20i%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20target%20%3D%20target.parentNode%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20selectIndex%3A%20function(index)%20%7B%0A%20%20%20%20%20%20%20%20var%20item%20%3D%20this.items%5Bindex%5D%3B%0A%20%20%20%20%20%20%20%20if%20(item)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.selected%20%3D%20this.valueForNode(item)%20%7C%7C%20index%3B%0A%20%20%20%20%20%20%20%20%20%20return%20item%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Selects%20the%20previous%20item.%20This%20should%20be%20used%20in%20single%20selection%20only.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40method%20selectPrevious%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7D%20wrapped%20if%20true%20and%20it%20is%20already%20at%20the%20first%20item%2C%0A%20%20%20%20%20%20%20*%20wrap%20to%20the%20end%0A%20%20%20%20%20%20%20*%20%40returns%20the%20previous%20item%20or%20undefined%20if%20there%20is%20none%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20selectPrevious%3A%20function(wrapped)%20%7B%0A%20%20%20%20%20%20%20%20var%20i%20%3D%20wrapped%20%26%26%20!this.selectedIndex%20%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20this.items.length%20-%201%20%3A%20this.selectedIndex%20-%201%3B%0A%20%20%20%20%20%20%20%20return%20this.selectIndex(i)%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Selects%20the%20next%20item.%20%20This%20should%20be%20used%20in%20single%20selection%20only.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40method%20selectNext%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7D%20wrapped%20if%20true%20and%20it%20is%20already%20at%20the%20last%20item%2C%0A%20%20%20%20%20%20%20*%20wrap%20to%20the%20front%0A%20%20%20%20%20%20%20*%20%40returns%20the%20next%20item%20or%20undefined%20if%20there%20is%20none%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20selectNext%3A%20function(wrapped)%20%7B%0A%20%20%20%20%20%20%20%20var%20i%20%3D%20wrapped%20%26%26%20this.selectedIndex%20%3E%3D%20this.items.length%20-%201%20%3F%0A%20%20%20%20%20%20%20%20%20%20%20%200%20%3A%20this.selectedIndex%20%2B%201%3B%0A%20%20%20%20%20%20%20%20return%20this.selectIndex(i)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%7D)%3B%0A%20%20%0A%2F%2F%23%20sourceURL%3Dhttp%3A%2F%2Fmostaqqel.com%2Fui-deps%2Fcore-selector%2Fcore-selector.html.js%0A
4 ms
javascript;charset=utf-8,%0A%0A%20%20Polymer('core-drawer-panel'%2C%20%7B%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Fired%20when%20the%20narrow%20layout%20changes.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40event%20core-responsive-change%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20detail%0A%20%20%20%20%20*%20%40param%20%7Bboolean%7D%20detail.narrow%20true%20if%20the%20panel%20is%20in%20narrow%20layout.%0A%20%20%20%20%20*%2F%0A%20%20%20%20%20%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Fired%20when%20the%20selected%20panel%20changes.%0A%20%20%20%20%20*%20%0A%20%20%20%20%20*%20Listening%20for%20this%20event%20is%20an%20alternative%20to%20observing%20changes%20in%20the%20%60selected%60%20attribute.%0A%20%20%20%20%20*%20This%20event%20is%20fired%20both%20when%20a%20panel%20is%20selected%20and%20deselected.%0A%20%20%20%20%20*%20The%20%60isSelected%60%20detail%20property%20contains%20the%20selection%20state.%0A%20%20%20%20%20*%20%0A%20%20%20%20%20*%20%40event%20core-select%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20detail%0A%20%20%20%20%20*%20%40param%20%7Bboolean%7D%20detail.isSelected%20true%20for%20selection%20and%20false%20for%20deselection%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20detail.item%20the%20panel%20that%20the%20event%20refers%20to%0A%20%20%20%20%20*%2F%0A%0A%20%20%20%20publish%3A%20%7B%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Width%20of%20the%20drawer%20panel.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20drawerWidth%0A%20%20%20%20%20%20%20*%20%40type%20string%0A%20%20%20%20%20%20%20*%20%40default%20'256px'%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20drawerWidth%3A%20'256px'%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Max-width%20when%20the%20panel%20changes%20to%20narrow%20layout.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20responsiveWidth%0A%20%20%20%20%20%20%20*%20%40type%20string%0A%20%20%20%20%20%20%20*%20%40default%20'640px'%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20responsiveWidth%3A%20'640px'%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20panel%20that%20is%20being%20selected.%20%60drawer%60%20for%20the%20drawer%20panel%20and%0A%20%20%20%20%20%20%20*%20%60main%60%20for%20the%20main%20panel.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20selected%0A%20%20%20%20%20%20%20*%20%40type%20string%0A%20%20%20%20%20%20%20*%20%40default%20null%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20selected%3A%20%7Bvalue%3A%20null%2C%20reflect%3A%20true%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20panel%20to%20be%20selected%20when%20%60core-drawer-panel%60%20changes%20to%20narrow%0A%20%20%20%20%20%20%20*%20layout.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20defaultSelected%0A%20%20%20%20%20%20%20*%20%40type%20string%0A%20%20%20%20%20%20%20*%20%40default%20'main'%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20defaultSelected%3A%20'main'%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Returns%20true%20if%20the%20panel%20is%20in%20narrow%20layout.%20%20This%20is%20useful%20if%20you%0A%20%20%20%20%20%20%20*%20need%20to%20show%2Fhide%20elements%20based%20on%20the%20layout.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20narrow%0A%20%20%20%20%20%20%20*%20%40type%20boolean%0A%20%20%20%20%20%20%20*%20%40default%20false%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20narrow%3A%20%7Bvalue%3A%20false%2C%20reflect%3A%20true%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20true%2C%20position%20the%20drawer%20to%20the%20right.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20rightDrawer%0A%20%20%20%20%20%20%20*%20%40type%20boolean%0A%20%20%20%20%20%20%20*%20%40default%20false%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20rightDrawer%3A%20false%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20true%2C%20swipe%20to%20open%2Fclose%20the%20drawer%20is%20disabled.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20disableSwipe%0A%20%20%20%20%20%20%20*%20%40type%20boolean%0A%20%20%20%20%20%20%20*%20%40default%20false%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20disableSwipe%3A%20false%2C%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20true%2C%20ignore%20%60responsiveWidth%60%20setting%20and%20force%20the%20narrow%20layout.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20forceNarrow%0A%20%20%20%20%20%20%20*%20%40type%20boolean%0A%20%20%20%20%20%20%20*%20%40default%20false%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20forceNarrow%3A%20false%2C%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20true%2C%20swipe%20from%20the%20edge%20is%20disabled.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20disableEdgeSwipe%0A%20%20%20%20%20%20%20*%20%40type%20boolean%0A%20%20%20%20%20%20%20*%20%40default%20false%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20disableEdgeSwipe%3A%20false%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20eventDelegates%3A%20%7B%0A%20%20%20%20%20%20trackstart%3A%20'trackStart'%2C%0A%20%20%20%20%20%20trackx%3A%20'trackx'%2C%0A%20%20%20%20%20%20trackend%3A%20'trackEnd'%2C%0A%20%20%20%20%20%20down%3A%20'downHandler'%2C%0A%20%20%20%20%20%20up%3A%20'upHandler'%2C%0A%20%20%20%20%20%20tap%3A%20'tapHandler'%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F%2F%20Whether%20the%20transition%20is%20enabled.%0A%20%20%20%20transition%3A%20false%2C%0A%0A%20%20%20%20%2F%2F%20How%20many%20pixels%20on%20the%20side%20of%20the%20screen%20are%20sensitive%20to%20edge%20swipes%20and%20peek.%0A%20%20%20%20edgeSwipeSensitivity%3A%2015%2C%0A%0A%20%20%20%20%2F%2F%20Whether%20the%20drawer%20is%20peeking%20out%20from%20the%20edge.%0A%20%20%20%20peeking%3A%20false%2C%0A%0A%20%20%20%20%2F%2F%20Whether%20the%20user%20is%20dragging%20the%20drawer%20interactively.%0A%20%20%20%20dragging%3A%20false%2C%0A%0A%20%20%20%20%2F%2F%20Whether%20the%20browser%20has%20support%20for%20the%20transform%20CSS%20property.%0A%20%20%20%20hasTransform%3A%20true%2C%0A%0A%20%20%20%20%2F%2F%20Whether%20the%20browser%20has%20support%20for%20the%20will-change%20CSS%20property.%0A%20%20%20%20hasWillChange%3A%20true%2C%0A%20%20%20%20%0A%20%20%20%20%2F%2F%20The%20attribute%20on%20elements%20that%20should%20toggle%20the%20drawer%20on%20tap%2C%20also%20%0A%20%20%20%20%2F%2F%20elements%20will%20automatically%20be%20hidden%20in%20wide%20layout.%0A%20%20%20%20toggleAttribute%3A%20'core-drawer-toggle'%2C%0A%0A%20%20%20%20created%3A%20function()%20%7B%0A%20%20%20%20%20%20this.hasTransform%20%3D%20'transform'%20in%20this.style%3B%0A%20%20%20%20%20%20this.hasWillChange%20%3D%20'willChange'%20in%20this.style%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20domReady%3A%20function()%20%7B%0A%20%20%20%20%20%20%2F%2F%20to%20avoid%20transition%20at%20the%20beginning%20e.g.%20page%20loads%0A%20%20%20%20%20%20%2F%2F%20NOTE%3A%20domReady%20is%20already%20raf%20delayed%20and%20delaying%20another%20frame%0A%20%20%20%20%20%20%2F%2F%20ensures%20a%20layout%20has%20occurred.%0A%20%20%20%20%20%20this.async(function()%20%7B%0A%20%20%20%20%20%20%20%20this.transition%20%3D%20true%3B%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Toggles%20the%20panel%20open%20and%20closed.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40method%20togglePanel%0A%20%20%20%20%20*%2F%0A%20%20%20%20togglePanel%3A%20function()%20%7B%0A%20%20%20%20%20%20this.selected%20%3D%20this.isMainSelected()%20%3F%20'drawer'%20%3A%20'main'%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Opens%20the%20drawer.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40method%20openDrawer%0A%20%20%20%20%20*%2F%0A%20%20%20%20openDrawer%3A%20function()%20%7B%0A%20%20%20%20%20%20this.selected%20%3D%20'drawer'%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Closes%20the%20drawer.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40method%20closeDrawer%0A%20%20%20%20%20*%2F%0A%20%20%20%20closeDrawer%3A%20function()%20%7B%0A%20%20%20%20%20%20this.selected%20%3D%20'main'%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20queryMatchesChanged%3A%20function()%20%7B%0A%20%20%20%20%20%20this.narrow%20%3D%20this.queryMatches%20%7C%7C%20this.forceNarrow%3B%0A%20%20%20%20%20%20if%20(this.narrow)%20%7B%0A%20%20%20%20%20%20%20%20this.selected%20%3D%20this.defaultSelected%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20this.setAttribute('touch-action'%2C%20this.swipeAllowed()%20%3F%20'pan-y'%20%3A%20'')%3B%0A%20%20%20%20%20%20this.fire('core-responsive-change'%2C%20%7Bnarrow%3A%20this.narrow%7D)%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20%0A%20%20%20%20forceNarrowChanged%3A%20function()%20%7B%0A%20%20%20%20%20%20this.queryMatchesChanged()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20swipeAllowed%3A%20function()%20%7B%0A%20%20%20%20%20%20return%20this.narrow%20%26%26%20!this.disableSwipe%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20%0A%20%20%20%20isMainSelected%3A%20function()%20%7B%0A%20%20%20%20%20%20return%20this.selected%20%3D%3D%3D%20'main'%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20startEdgePeek%3A%20function()%20%7B%0A%20%20%20%20%20%20this.width%20%3D%20this.%24.drawer.offsetWidth%3B%0A%20%20%20%20%20%20this.moveDrawer(this.translateXForDeltaX(this.rightDrawer%20%3F%0A%20%20%20%20%20%20%20%20%20%20-this.edgeSwipeSensitivity%20%3A%20this.edgeSwipeSensitivity))%3B%0A%20%20%20%20%20%20this.peeking%20%3D%20true%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20stopEdgePeak%3A%20function()%20%7B%0A%20%20%20%20%20%20if%20(this.peeking)%20%7B%0A%20%20%20%20%20%20%20%20this.peeking%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20this.moveDrawer(null)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20downHandler%3A%20function(e)%20%7B%0A%20%20%20%20%20%20if%20(!this.dragging%20%26%26%20this.isMainSelected()%20%26%26%20this.isEdgeTouch(e))%20%7B%0A%20%20%20%20%20%20%20%20this.startEdgePeek()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20upHandler%3A%20function(e)%20%7B%0A%20%20%20%20%20%20this.stopEdgePeak()%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20%0A%20%20%20%20tapHandler%3A%20function(e)%20%7B%0A%20%20%20%20%20%20if%20(e.target%20%26%26%20this.toggleAttribute%20%26%26%20%0A%20%20%20%20%20%20%20%20%20%20e.target.hasAttribute(this.toggleAttribute))%20%7B%0A%20%20%20%20%20%20%20%20this.togglePanel()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20isEdgeTouch%3A%20function(e)%20%7B%0A%20%20%20%20%20%20return%20!this.disableEdgeSwipe%20%26%26%20this.swipeAllowed()%20%26%26%0A%20%20%20%20%20%20%20%20(this.rightDrawer%20%3F%0A%20%20%20%20%20%20%20%20%20%20e.pageX%20%3E%3D%20this.offsetWidth%20-%20this.edgeSwipeSensitivity%20%3A%0A%20%20%20%20%20%20%20%20%20%20e.pageX%20%3C%3D%20this.edgeSwipeSensitivity)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20trackStart%20%3A%20function(e)%20%7B%0A%20%20%20%20%20%20if%20(this.swipeAllowed())%20%7B%0A%20%20%20%20%20%20%20%20this.dragging%20%3D%20true%3B%0A%0A%20%20%20%20%20%20%20%20if%20(this.isMainSelected())%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.dragging%20%3D%20this.peeking%20%7C%7C%20this.isEdgeTouch(e)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20(this.dragging)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.width%20%3D%20this.%24.drawer.offsetWidth%3B%0A%20%20%20%20%20%20%20%20%20%20this.transition%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20e.preventTap()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20translateXForDeltaX%3A%20function(deltaX)%20%7B%0A%20%20%20%20%20%20var%20isMain%20%3D%20this.isMainSelected()%3B%0A%20%20%20%20%20%20if%20(this.rightDrawer)%20%7B%0A%20%20%20%20%20%20%20%20return%20Math.max(0%2C%20isMain%20%3F%20this.width%20%2B%20deltaX%20%3A%20deltaX)%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20return%20Math.min(0%2C%20isMain%20%3F%20deltaX%20-%20this.width%20%3A%20deltaX)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20trackx%20%3A%20function(e)%20%7B%0A%20%20%20%20%20%20if%20(this.dragging)%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.peeking)%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(Math.abs(e.dx)%20%3C%3D%20this.edgeSwipeSensitivity)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%3B%20%2F%2F%20Ignore%20trackx%20until%20we%20move%20past%20the%20edge%20peek.%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20this.peeking%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.moveDrawer(this.translateXForDeltaX(e.dx))%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20trackEnd%20%3A%20function(e)%20%7B%0A%20%20%20%20%20%20if%20(this.dragging)%20%7B%0A%20%20%20%20%20%20%20%20this.dragging%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20this.transition%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20this.moveDrawer(null)%3B%0A%0A%20%20%20%20%20%20%20%20if%20(this.rightDrawer)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.selected%20%3D%20e.xDirection%20%3E%200%20%3F%20'main'%20%3A%20'drawer'%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.selected%20%3D%20e.xDirection%20%3E%200%20%3F%20'drawer'%20%3A%20'main'%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20transformForTranslateX%3A%20function(translateX)%20%7B%0A%20%20%20%20%20%20if%20(translateX%20%3D%3D%3D%20null)%20%7B%0A%20%20%20%20%20%20%20%20return%20''%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20this.hasWillChange%20%3F%20'translateX('%20%2B%20translateX%20%2B%20'px)'%20%3A%20%0A%20%20%20%20%20%20%20%20%20%20'translate3d('%20%2B%20translateX%20%2B%20'px%2C%200%2C%200)'%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20moveDrawer%3A%20function(translateX)%20%7B%0A%20%20%20%20%20%20var%20s%20%3D%20this.%24.drawer.style%3B%0A%0A%20%20%20%20%20%20if%20(this.hasTransform)%20%7B%0A%20%20%20%20%20%20%20%20s.transform%20%3D%20this.transformForTranslateX(translateX)%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20s.webkitTransform%20%3D%20this.transformForTranslateX(translateX)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%7D)%3B%0A%0A%0A%2F%2F%23%20sourceURL%3Dhttp%3A%2F%2Fmostaqqel.com%2Fui-deps%2Fcore-drawer-panel%2Fcore-drawer-panel.html.js%0A
1 ms
javascript;charset=utf-8,%0A%20%20(function()%20%7B%0A%20%20%20%20%2F*%0A%20%20%20%20%20*%20Chrome%20uses%20an%20older%20version%20of%20DOM%20Level%203%20Keyboard%20Events%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Most%20keys%20are%20labeled%20as%20text%2C%20but%20some%20are%20Unicode%20codepoints.%0A%20%20%20%20%20*%20Values%20taken%20from%3A%20http%3A%2F%2Fwww.w3.org%2FTR%2F2007%2FWD-DOM-Level-3-Events-20071221%2Fkeyset.html%23KeySet-Set%0A%20%20%20%20%20*%2F%0A%20%20%20%20var%20KEY_IDENTIFIER%20%3D%20%7B%0A%20%20%20%20%20%20'U%2B0009'%3A%20'tab'%2C%0A%20%20%20%20%20%20'U%2B001B'%3A%20'esc'%2C%0A%20%20%20%20%20%20'U%2B0020'%3A%20'space'%2C%0A%20%20%20%20%20%20'U%2B002A'%3A%20'*'%2C%0A%20%20%20%20%20%20'U%2B0030'%3A%20'0'%2C%0A%20%20%20%20%20%20'U%2B0031'%3A%20'1'%2C%0A%20%20%20%20%20%20'U%2B0032'%3A%20'2'%2C%0A%20%20%20%20%20%20'U%2B0033'%3A%20'3'%2C%0A%20%20%20%20%20%20'U%2B0034'%3A%20'4'%2C%0A%20%20%20%20%20%20'U%2B0035'%3A%20'5'%2C%0A%20%20%20%20%20%20'U%2B0036'%3A%20'6'%2C%0A%20%20%20%20%20%20'U%2B0037'%3A%20'7'%2C%0A%20%20%20%20%20%20'U%2B0038'%3A%20'8'%2C%0A%20%20%20%20%20%20'U%2B0039'%3A%20'9'%2C%0A%20%20%20%20%20%20'U%2B0041'%3A%20'a'%2C%0A%20%20%20%20%20%20'U%2B0042'%3A%20'b'%2C%0A%20%20%20%20%20%20'U%2B0043'%3A%20'c'%2C%0A%20%20%20%20%20%20'U%2B0044'%3A%20'd'%2C%0A%20%20%20%20%20%20'U%2B0045'%3A%20'e'%2C%0A%20%20%20%20%20%20'U%2B0046'%3A%20'f'%2C%0A%20%20%20%20%20%20'U%2B0047'%3A%20'g'%2C%0A%20%20%20%20%20%20'U%2B0048'%3A%20'h'%2C%0A%20%20%20%20%20%20'U%2B0049'%3A%20'i'%2C%0A%20%20%20%20%20%20'U%2B004A'%3A%20'j'%2C%0A%20%20%20%20%20%20'U%2B004B'%3A%20'k'%2C%0A%20%20%20%20%20%20'U%2B004C'%3A%20'l'%2C%0A%20%20%20%20%20%20'U%2B004D'%3A%20'm'%2C%0A%20%20%20%20%20%20'U%2B004E'%3A%20'n'%2C%0A%20%20%20%20%20%20'U%2B004F'%3A%20'o'%2C%0A%20%20%20%20%20%20'U%2B0050'%3A%20'p'%2C%0A%20%20%20%20%20%20'U%2B0051'%3A%20'q'%2C%0A%20%20%20%20%20%20'U%2B0052'%3A%20'r'%2C%0A%20%20%20%20%20%20'U%2B0053'%3A%20's'%2C%0A%20%20%20%20%20%20'U%2B0054'%3A%20't'%2C%0A%20%20%20%20%20%20'U%2B0055'%3A%20'u'%2C%0A%20%20%20%20%20%20'U%2B0056'%3A%20'v'%2C%0A%20%20%20%20%20%20'U%2B0057'%3A%20'w'%2C%0A%20%20%20%20%20%20'U%2B0058'%3A%20'x'%2C%0A%20%20%20%20%20%20'U%2B0059'%3A%20'y'%2C%0A%20%20%20%20%20%20'U%2B005A'%3A%20'z'%2C%0A%20%20%20%20%20%20'U%2B007F'%3A%20'del'%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20%2F*%0A%20%20%20%20%20*%20Special%20table%20for%20KeyboardEvent.keyCode.%0A%20%20%20%20%20*%20KeyboardEvent.keyIdentifier%20is%20better%2C%20and%20KeyBoardEvent.key%20is%20even%20better%20than%20that%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Values%20from%3A%20https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FAPI%2FKeyboardEvent.keyCode%23Value_of_keyCode%0A%20%20%20%20%20*%2F%0A%20%20%20%20var%20KEY_CODE%20%3D%20%7B%0A%20%20%20%20%20%209%3A%20'tab'%2C%0A%20%20%20%20%20%2013%3A%20'enter'%2C%0A%20%20%20%20%20%2027%3A%20'esc'%2C%0A%20%20%20%20%20%2033%3A%20'pageup'%2C%0A%20%20%20%20%20%2034%3A%20'pagedown'%2C%0A%20%20%20%20%20%2035%3A%20'end'%2C%0A%20%20%20%20%20%2036%3A%20'home'%2C%0A%20%20%20%20%20%2032%3A%20'space'%2C%0A%20%20%20%20%20%2037%3A%20'left'%2C%0A%20%20%20%20%20%2038%3A%20'up'%2C%0A%20%20%20%20%20%2039%3A%20'right'%2C%0A%20%20%20%20%20%2040%3A%20'down'%2C%0A%20%20%20%20%20%2046%3A%20'del'%2C%0A%20%20%20%20%20%20106%3A%20'*'%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20%2F*%0A%20%20%20%20%20*%20KeyboardEvent.key%20is%20mostly%20represented%20by%20printable%20character%20made%20by%20the%20keyboard%2C%20with%20unprintable%20keys%20labeled%0A%20%20%20%20%20*%20nicely.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20However%2C%20on%20OS%20X%2C%20Alt%2Bchar%20can%20make%20a%20Unicode%20character%20that%20follows%20an%20Apple-specific%20mapping.%20In%20this%20case%2C%20we%0A%20%20%20%20%20*%20fall%20back%20to%20.keyCode.%0A%20%20%20%20%20*%2F%0A%20%20%20%20var%20KEY_CHAR%20%3D%20%2F%5Ba-z0-9*%5D%2F%3B%0A%0A%20%20%20%20function%20transformKey(key)%20%7B%0A%20%20%20%20%20%20var%20validKey%20%3D%20''%3B%0A%20%20%20%20%20%20if%20(key)%20%7B%0A%20%20%20%20%20%20%20%20var%20lKey%20%3D%20key.toLowerCase()%3B%0A%20%20%20%20%20%20%20%20if%20(lKey.length%20%3D%3D%201)%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(KEY_CHAR.test(lKey))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20validKey%20%3D%20lKey%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20(lKey%20%3D%3D%20'multiply')%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20numpad%20'*'%20can%20map%20to%20Multiply%20on%20IE%2FWindows%0A%20%20%20%20%20%20%20%20%20%20validKey%20%3D%20'*'%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20validKey%20%3D%20lKey%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20validKey%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20IDENT_CHAR%20%3D%20%2FU%5C%2B%2F%3B%0A%20%20%20%20function%20transformKeyIdentifier(keyIdent)%20%7B%0A%20%20%20%20%20%20var%20validKey%20%3D%20''%3B%0A%20%20%20%20%20%20if%20(keyIdent)%20%7B%0A%20%20%20%20%20%20%20%20if%20(IDENT_CHAR.test(keyIdent))%20%7B%0A%20%20%20%20%20%20%20%20%20%20validKey%20%3D%20KEY_IDENTIFIER%5BkeyIdent%5D%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20validKey%20%3D%20keyIdent.toLowerCase()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20validKey%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20function%20transformKeyCode(keyCode)%20%7B%0A%20%20%20%20%20%20var%20validKey%20%3D%20''%3B%0A%20%20%20%20%20%20if%20(Number(keyCode))%20%7B%0A%20%20%20%20%20%20%20%20if%20(keyCode%20%3E%3D%2065%20%26%26%20keyCode%20%3C%3D%2090)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20ascii%20a-z%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20lowercase%20is%2032%20offset%20from%20uppercase%0A%20%20%20%20%20%20%20%20%20%20validKey%20%3D%20String.fromCharCode(32%20%2B%20keyCode)%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20(keyCode%20%3E%3D%20112%20%26%26%20keyCode%20%3C%3D%20123)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20function%20keys%20f1-f12%0A%20%20%20%20%20%20%20%20%20%20validKey%20%3D%20'f'%20%2B%20(keyCode%20-%20112)%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20(keyCode%20%3E%3D%2048%20%26%26%20keyCode%20%3C%3D%2057)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20top%200-9%20keys%0A%20%20%20%20%20%20%20%20%20%20validKey%20%3D%20String(48%20-%20keyCode)%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20(keyCode%20%3E%3D%2096%20%26%26%20keyCode%20%3C%3D%20105)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20num%20pad%200-9%0A%20%20%20%20%20%20%20%20%20%20validKey%20%3D%20String(96%20-%20keyCode)%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20validKey%20%3D%20KEY_CODE%5BkeyCode%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20validKey%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20function%20keyboardEventToKey(ev)%20%7B%0A%20%20%20%20%20%20%2F%2F%20fall%20back%20from%20.key%2C%20to%20.keyIdentifier%2C%20to%20.keyCode%2C%20and%20then%20to%20.detail.key%20to%20support%20artificial%20keyboard%20events%0A%20%20%20%20%20%20var%20normalizedKey%20%3D%20transformKey(ev.key)%20%7C%7C%20transformKeyIdentifier(ev.keyIdentifier)%20%7C%7C%20transformKeyCode(ev.keyCode)%20%7C%7C%20transformKey(ev.detail.key)%20%7C%7C%20''%3B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20shift%3A%20ev.shiftKey%2C%0A%20%20%20%20%20%20%20%20ctrl%3A%20ev.ctrlKey%2C%0A%20%20%20%20%20%20%20%20meta%3A%20ev.metaKey%2C%0A%20%20%20%20%20%20%20%20alt%3A%20ev.altKey%2C%0A%20%20%20%20%20%20%20%20key%3A%20normalizedKey%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F*%0A%20%20%20%20%20*%20Input%3A%20ctrl%2Bshift%2Bf7%20%3D%3E%20%7Bctrl%3A%20true%2C%20shift%3A%20true%2C%20key%3A%20'f7'%7D%0A%20%20%20%20%20*%20ctrl%2Fspace%20%3D%3E%20%7Bctrl%3A%20true%7D%20%7C%7C%20%7Bkey%3A%20space%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20function%20stringToKey(keyCombo)%20%7B%0A%20%20%20%20%20%20var%20keys%20%3D%20keyCombo.split('%2B')%3B%0A%20%20%20%20%20%20var%20keyObj%20%3D%20Object.create(null)%3B%0A%20%20%20%20%20%20keys.forEach(function(key)%20%7B%0A%20%20%20%20%20%20%20%20if%20(key%20%3D%3D%20'shift')%20%7B%0A%20%20%20%20%20%20%20%20%20%20keyObj.shift%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20(key%20%3D%3D%20'ctrl')%20%7B%0A%20%20%20%20%20%20%20%20%20%20keyObj.ctrl%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20(key%20%3D%3D%20'alt')%20%7B%0A%20%20%20%20%20%20%20%20%20%20keyObj.alt%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20keyObj.key%20%3D%20key%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20return%20keyObj%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20function%20keyMatches(a%2C%20b)%20%7B%0A%20%20%20%20%20%20return%20Boolean(a.alt)%20%3D%3D%20Boolean(b.alt)%20%26%26%20Boolean(a.ctrl)%20%3D%3D%20Boolean(b.ctrl)%20%26%26%20Boolean(a.shift)%20%3D%3D%20Boolean(b.shift)%20%26%26%20a.key%20%3D%3D%3D%20b.key%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20function%20processKeys(ev)%20%7B%0A%20%20%20%20%20%20var%20current%20%3D%20keyboardEventToKey(ev)%3B%0A%20%20%20%20%20%20for%20(var%20i%20%3D%200%2C%20dk%3B%20i%20%3C%20this._desiredKeys.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20dk%20%3D%20this._desiredKeys%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20if%20(keyMatches(dk%2C%20current))%20%7B%0A%20%20%20%20%20%20%20%20%20%20ev.preventDefault()%3B%0A%20%20%20%20%20%20%20%20%20%20ev.stopPropagation()%3B%0A%20%20%20%20%20%20%20%20%20%20this.fire('keys-pressed'%2C%20current%2C%20this%2C%20false)%3B%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20function%20listen(node%2C%20handler)%20%7B%0A%20%20%20%20%20%20if%20(node%20%26%26%20node.addEventListener)%20%7B%0A%20%20%20%20%20%20%20%20node.addEventListener('keydown'%2C%20handler)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20function%20unlisten(node%2C%20handler)%20%7B%0A%20%20%20%20%20%20if%20(node%20%26%26%20node.removeEventListener)%20%7B%0A%20%20%20%20%20%20%20%20node.removeEventListener('keydown'%2C%20handler)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20Polymer('core-a11y-keys'%2C%20%7B%0A%20%20%20%20%20%20created%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20this._keyHandler%20%3D%20processKeys.bind(this)%3B%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20attached%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20if%20(!this.target)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.target%20%3D%20this.parentNode%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20listen(this.target%2C%20this._keyHandler)%3B%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20detached%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20unlisten(this.target%2C%20this._keyHandler)%3B%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20publish%3A%20%7B%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20The%20set%20of%20key%20combinations%20that%20will%20be%20matched%20(in%20keys%20syntax).%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40attribute%20keys%0A%20%20%20%20%20%20%20%20%20*%20%40type%20string%0A%20%20%20%20%20%20%20%20%20*%20%40default%20''%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20keys%3A%20''%2C%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20The%20node%20that%20will%20fire%20keyboard%20events.%0A%20%20%20%20%20%20%20%20%20*%20Default%20to%20this%20element's%20parentNode%20unless%20one%20is%20assigned%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40attribute%20target%0A%20%20%20%20%20%20%20%20%20*%20%40type%20Node%0A%20%20%20%20%20%20%20%20%20*%20%40default%20this.parentNode%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20target%3A%20null%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20keysChanged%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20*%20can%20have%20multiple%20mappings%3A%20shift%2B8%2C%20*%20on%20numpad%20or%20Multiply%20on%20numpad%0A%20%20%20%20%20%20%20%20var%20normalized%20%3D%20this.keys.replace('*'%2C%20'*%20shift%2B*')%3B%0A%20%20%20%20%20%20%20%20this._desiredKeys%20%3D%20normalized.toLowerCase().split('%20').map(stringToKey)%3B%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20targetChanged%3A%20function(oldTarget)%20%7B%0A%20%20%20%20%20%20%20%20unlisten(oldTarget%2C%20this._keyHandler)%3B%0A%20%20%20%20%20%20%20%20listen(this.target%2C%20this._keyHandler)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D)%3B%0A%20%20%7D)()%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttp%3A%2F%2Fmostaqqel.com%2Fui-deps%2Fcore-a11y-keys%2Fcore-a11y-keys.html.js%0A
9 ms
javascript;charset=utf-8,%0A%20%20Polymer(%7B%0A%0A%20%20%20%20publish%3A%20%7B%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20z-depth%20of%20this%20shadow%2C%20from%200-5.%20Setting%20this%20property%0A%20%20%20%20%20%20%20*%20after%20element%20creation%20has%20no%20effect.%20Use%20%60setZ()%60%20instead.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20z%0A%20%20%20%20%20%20%20*%20%40type%20number%0A%20%20%20%20%20%20%20*%20%40default%201%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20z%3A%201%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20this%20to%20true%20to%20animate%20the%20shadow%20when%20setting%20a%20new%0A%20%20%20%20%20%20%20*%20%60z%60%20value.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20animated%0A%20%20%20%20%20%20%20*%20%40type%20boolean%0A%20%20%20%20%20%20%20*%20%40default%20false%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20animated%3A%20false%0A%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Set%20the%20z-depth%20of%20the%20shadow.%20This%20should%20be%20used%20after%20element%0A%20%20%20%20%20*%20creation%20instead%20of%20setting%20the%20z%20property%20directly.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40method%20setZ%0A%20%20%20%20%20*%20%40param%20%7BNumber%7D%20newZ%0A%20%20%20%20%20*%2F%0A%20%20%20%20setZ%3A%20function(newZ)%20%7B%0A%20%20%20%20%20%20if%20(this.z%20!%3D%3D%20newZ)%20%7B%0A%20%20%20%20%20%20%20%20this.%24%5B'shadow-bottom'%5D.classList.remove('paper-shadow-bottom-z-'%20%2B%20this.z)%3B%0A%20%20%20%20%20%20%20%20this.%24%5B'shadow-bottom'%5D.classList.add('paper-shadow-bottom-z-'%20%2B%20newZ)%3B%0A%20%20%20%20%20%20%20%20this.%24%5B'shadow-top'%5D.classList.remove('paper-shadow-top-z-'%20%2B%20this.z)%3B%0A%20%20%20%20%20%20%20%20this.%24%5B'shadow-top'%5D.classList.add('paper-shadow-top-z-'%20%2B%20newZ)%3B%0A%20%20%20%20%20%20%20%20this.z%20%3D%20newZ%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%7D)%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttp%3A%2F%2Fmostaqqel.com%2Fui-deps%2Fpaper-shadow%2Fpaper-shadow.html.js%0A
1 ms
polymer-mixin.js
32 ms
core-focusable.js
43 ms
mostaqqel.com SEO score
ZH
N/A
UTF-8
Language claimed in HTML meta tag should match the language actually used on the web page. Otherwise Mostaqqel.com can be misinterpreted by Google and other search engines. Our service has detected that Chinese is used on the page, and neither this language nor any other was claimed in <html> or <meta> tags. Our system also found out that Mostaqqel.com main page’s claimed encoding is utf-8. Use of this encoding format is the best practice as the main page visitors from all over the world won’t have any issues with symbol transcription.
mostaqqel.com
Open Graph description is not detected on the main page of Mostaqqel. Lack of Open Graph description can be counter-productive for their social media presence, as such a description allows converting a website homepage (or other pages) into good-looking, rich and well-structured posts, when it is being shared on Facebook and other social media. For example, adding the following code snippet into HTML <head> tag will help to represent this web page correctly in social networks: