added session 75 and changed about

This commit is contained in:
Kiritan Flux 2018-09-11 12:59:44 +02:00
parent 67d2a1ed53
commit 44d1d89fa5
184 changed files with 57277 additions and 51455 deletions

View file

@ -21,7 +21,7 @@ permalink: /about/
<h5>{{ site.title }}</h5> <h5>{{ site.title }}</h5>
<p>{{ site.description }}</p> <p>{{ site.description }}</p>
<p>Doors open from 7pm - Programme starting 8pm</p> <p>Doors open from 6pm - Programme starting 7pm</p>
</div> </div>
</div> </div>
@ -29,65 +29,24 @@ permalink: /about/
<div class="col-md-6"> <div class="col-md-6">
<h5>How to find us</h5> <h5>How to find us</h5>
<p>S-Bahn: S41/S42 (Ring) Wedding U-Bahn: U6 Wedding, U8 Gesundbrunnen Bus: M27 Wedding</p> <p>U-Bahn: U8 Schönleinstraße</p>
<p>Panke e.V. Gerichtstr. 23, Hof 5 13347 Berlin Wedding</p> <p>SomoS, Kottbusser Damm 95, 10967 Berlin</p>
</div> </div>
</div>
<div class="col-md-6">
<h5>Supported by</h5>
<div class="supporters">
<p>Thanks <a class="button hvr-sweep-to-top" href="http://pankeculture.com" target="_blank">Panke</a>, <a class="button hvr-sweep-to-top" href="http://spektrumberlin.de" target="_blank">Spektrum</a>, <a class="button hvr-sweep-to-top" href="http://www.nkprojekt.de/" target="_blank">NK</a> and <a class="button hvr-sweep-to-top" href="http://www.atelier-aeuglein.de/" target="_blank">Atelier Äuglein</a> for hosting our event, <a class="button hvr-sweep-to-top" href="http://www.troikaranch.org/" target="_blank">Troika Ranch</a> for the valuable support, and <a class="button hvr-sweep-to-top" href="http://www.beamround.de" target="_blank">Beamaround</a> for technical assistance.</p>
<ul>
<li>
<a href="http://pankeculture.com" target="_blank">
<img src="/assets/panke_logo.png"></img>
</a>
</li>
<li>
<a href="http://www.nkprojekt.de/" target="_blank">
<img src="/assets/nk_logo.png"></img>
</a>
</li>
<li>
<a href="http://www.atelier-aeuglein.de" target="_blank">
<img src="/assets/aa_logo.png"></img>
</a>
</li>
<li>
<a href="http://www.troikaranch.org/" target="_blank">
<img src="/assets/troika_logo.png"></img>
</a>
</li>
<li>
<a href="http://www.beamround.de" target="_blank">
<img src="/assets/BeamAround_Logo.jpg"></img>
</a>
</li>
<li>
<a href="http://www.spektrumberlin.de" target="_blank">
<img src="/assets/spektrum_logo_small.png"></img>
</a>
</li>
</ul>
</div>
</div>
</div>
<h5>Team</h5>
<p>SCOPE SESSIONS are curated & realised by a team, that shares passion for visual arts, experimental crossovers of sound and video, multimedia experiences, human interactions and computer technologies.</p>
<p>We started in summer 2011 with our first session, developed in cooperation with and hosted by Atelier Überall (now Atelier Äuglein)</p>
<p>Since then we invited artists to share their unique approaches to an increasing audience. Hope you like it! See you at one of our sessions.</p>
<div class="team row"> <div class="team row">
<div class="team-image col-md-7"> <div class="col-md-12">
<img class="transp-bg padded" src="/assets/scope_team.jpg"></img> <h5>Team</h5>
<img class="transp-bg padded" src="/assets/scope_team_2.jpg"></img>
</div>
<div class="team-list col-md-5"> <p>SCOPE SESSIONS are curated & realised by a team, that shares passion for visual arts, experimental crossovers of sound and video, multimedia experiences, human interactions and computer technologies.</p>
<p>We started in summer 2011 with our first session, developed in cooperation with and hosted by Atelier Überall (now Atelier Äuglein)</p>
<p>Since then we invited artists to share their unique approaches to an increasing audience. Hope you like it! See you at one of our sessions.</p>
</div>
</div>
<div class="team row">
<div class="team-list col-md-12">
<ul> <ul>
@ -96,6 +55,11 @@ permalink: /about/
</br>programming, app development</p> </br>programming, app development</p>
</li> </li>
<li>
<p><a>Valeria Barvinska aka Fauty Agatha</a>
</br>video artist, researcher</p>
</li>
<li> <li>
<p><a class="button hvr-sweep-to-top" target="_blank" href="http://aude-f.com/">Aude François aka Auderose</a> <p><a class="button hvr-sweep-to-top" target="_blank" href="http://aude-f.com/">Aude François aka Auderose</a>
</br>video, performance, photography</p> </br>video, performance, photography</p>
@ -107,18 +71,8 @@ permalink: /about/
</li> </li>
<li> <li>
<p><a class="button hvr-sweep-to-top" target="_blank" href="http://daliborknapp.com/">Dalibor Knapp</a> <p><a class="button hvr-sweep-to-top" target="_blank" href="http://flux.vision">Tobias Raayoni Last aka Kiritan Flux</a>
</br>video essays, installations, texts</p> </br>video, sound and media artist</p>
</li>
<li>
<p><a class="button hvr-sweep-to-top" target="_blank" href="http://www.bildpeter.de">Peter A. Kolski aka BildPeter</a>
</br>programming, video, photography</p>
</li>
<li>
<p><a class="button hvr-sweep-to-top" target="_blank" href="http://flux.vision">Tobias Last aka Kiritan Flux</a>
</br>visualist, media artist, developer</p>
</li> </li>
<li> <li>
@ -126,11 +80,6 @@ permalink: /about/
</br>programming, interactive environments</p> </br>programming, interactive environments</p>
</li> </li>
<li>
<a class="button hvr-sweep-to-top" target="_blank" href="http://chrs-smthng.com/">Christian Sonntag aka chrs smthng</a>
</br>projection services, event management</p>
</li>
<li> <li>
<a class="button hvr-sweep-to-top" target="_blank" href="http://jemthemisfit.com/">Jemma Woolmore aka Jem the Misfit.</a> <a class="button hvr-sweep-to-top" target="_blank" href="http://jemthemisfit.com/">Jemma Woolmore aka Jem the Misfit.</a>
</br>Audiovisual and Installation Artist</p> </br>Audiovisual and Installation Artist</p>
@ -141,27 +90,44 @@ permalink: /about/
<h5>Former team members and collaborators</h5> <h5>Former team members and collaborators</h5>
<ul> <ul>
<li>
<p><a class="button hvr-sweep-to-top" target="_blank" href="http://www.storyanddrama.com/storytelling-analyses/">Ludovic Bablon</a>
</br>writer, poet, creative services</a> (2011)
</p>
</li>
<li>
<p><a class="button hvr-sweep-to-top" target="_blank" href="http://lucybenson.net">Lucy Benson</a>
</br>audiovisual artist, researcher</a> (2011)
</p>
</li>
<li>
<p><a class="button hvr-sweep-to-top" target="_blank" href="http://daliborknapp.com/">Dalibor Knapp</a>
</br>video essays, installations, texts</p> (2015)
</li>
<li>
<p><a class="button hvr-sweep-to-top" target="_blank" href="http://www.bildpeter.de">Peter A. Kolski aka BildPeter</a>
</br>programming, video, photography</p> (2014-2018)
</li>
<li> <li>
<p><a class="button hvr-sweep-to-top" target="_blank" href="#">Silke Müller aka Eklis Rellüm</a> <p><a class="button hvr-sweep-to-top" target="_blank" href="#">Silke Müller aka Eklis Rellüm</a>
</br>culture consulting, project manager, producer</p> </br>culture consulting, project manager, producer</p> (2011-2013)
</li>
<li>
<a class="button hvr-sweep-to-top" target="_blank" href="http://chrs-smthng.com/">Christian Sonntag aka chrs smthng</a>
</br>projection services, event management</p> (2011-2017)
</li> </li>
<li> <li>
<p><a class="button hvr-sweep-to-top" target="_blank" href="http://idealpaar.net/">Rosa Teixidor</a> <p><a class="button hvr-sweep-to-top" target="_blank" href="http://idealpaar.net/">Rosa Teixidor</a>
</br>Actress, video artist</p> </br>Actress, video artist</p> (2011-2014)
</li> </li>
<li>
<p><a class="button hvr-sweep-to-top" target="_blank" href="http://lucybenson.net">Lucy Benson</a>
</br>audiovisual artist, researcher</a>
</p>
</li>
<li>
<p><a class="button hvr-sweep-to-top" target="_blank" href="http://www.storyanddrama.com/storytelling-analyses/">Ludovic Bablon</a>
</br>writer, poet, creative services</a>
</p>
</li>
</ul> </ul>
</div> </div>

View file

@ -0,0 +1,37 @@
---
layout: event
categories : [session]
number: 75
title:
date_text: "September 13th, 2018"
date_yyyy_mm_dd: "2018-09-13"
location: "SomoS"
location_website: "http://www.somos-arts.org/"
fb_event_url: "https://www.facebook.com/events/238064036879390/"
fb_gallery_id:
talks:
- title: "Psst.one - Presentation and Discussion"
topics: "YouTube, documentary, interviews"
artist: "Psst.one"
speakers: "Andrea Familiari"
artist_bio: "Psst.one was born with the intent to contribute to the creation of a legacy, related to the field of the 'visualist'. In october 2017 Passt.one was founded as a web channel focused on weekly video interviews about the artists involved in all aspects related to the audio/video field. The purpose of Psst.one project and its presence on the web is to eventually create a digital archive giving the possibility to have a history and at the same time be inspired from the other artistic realities present into the A/V world.
Psst.one is the place where the faces of the visual world are shown."
description: "Andrea Familiari, creator of Psst.one will speak about the intention of his channel. Developments over the last year and plans for the next season. His talk will be followed by a group discussion, where we can gather ideas around the audiovisual community's needs in Berlin in general."
artist_website: "http://www.psst.one/"
media_artist_url: "/images/psst.jpg"
video_artist_url:
talk_video_url:
- title: "In Between the lines. Behind the screen."
topics: "performance"
artist: "Anna Z"
speakers: "Sarah Oh-Mok"
artist_bio: "Born beyond the Arctic Circle in the Komi Republic-USSR Anna Z´s first visual experiences emerged from an environment whose images were marked by the northern lights, the snow, the dark and dense forests and the animals within.
Very early she started taking several art curses, while she enjoyed an education that was specialized on mathematics and physics. She gained a deeper insight into the world of sound, frequencies and music in the most intimate way by learning several instruments with a focus on guitar.
Her art comes from the most different experiments, including, programming, hardware, drawing, photographies, oil and acrylic painting, all this with the music in mind. Besides experimenting with the following programs: quartz composer, max, processing, grasshopper, adobe programs, ableton live. She started making music on her own. Working with Reaktor and Cycling 74, she is creating her own instruments."
description: "Anna will speak about her background, collaboration in different media, the theory of limits in visual art and music and synthesis script of music and visuals."
artist_website: "https://www.instagram.com/anna_z.werk/"
media_artist_url: "/images/annaz.jpg"
video_artist_url:
talk_video_url:
---

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,5 @@
Bootstrap uses [GitHub's Releases feature](https://github.com/blog/1547-release-your-software) for its changelogs.
See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap.
Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release.

View file

@ -0,0 +1,6 @@
source 'https://rubygems.org'
group :development, :test do
gem 'jekyll', '~> 3.1.2'
gem 'jekyll-sitemap', '~> 0.11.0'
end

View file

@ -0,0 +1,43 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.4.0)
colorator (0.1)
ffi (1.9.14-x64-mingw32)
jekyll (3.1.6)
colorator (~> 0.1)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 1.1)
kramdown (~> 1.3)
liquid (~> 3.0)
mercenary (~> 0.3.3)
rouge (~> 1.7)
safe_yaml (~> 1.0)
jekyll-sass-converter (1.4.0)
sass (~> 3.4)
jekyll-sitemap (0.11.0)
addressable (~> 2.4.0)
jekyll-watch (1.4.0)
listen (~> 3.0, < 3.1)
kramdown (1.11.1)
liquid (3.0.6)
listen (3.0.8)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
mercenary (0.3.6)
rb-fsevent (0.9.7)
rb-inotify (0.9.7)
ffi (>= 0.5.0)
rouge (1.11.1)
safe_yaml (1.0.4)
sass (3.4.22)
PLATFORMS
x64-mingw32
DEPENDENCIES
jekyll (~> 3.1.2)
jekyll-sitemap (~> 0.11.0)
BUNDLED WITH
1.12.5

View file

@ -1,7 +1,7 @@
/*! /*!
* Bootstrap's Gruntfile * Bootstrap's Gruntfile
* http://getbootstrap.com * http://getbootstrap.com
* Copyright 2013-2015 Twitter, Inc. * Copyright 2013-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/ */
@ -17,7 +17,6 @@ module.exports = function (grunt) {
var fs = require('fs'); var fs = require('fs');
var path = require('path'); var path = require('path');
var npmShrinkwrap = require('npm-shrinkwrap');
var generateGlyphiconsData = require('./grunt/bs-glyphicons-data-generator.js'); var generateGlyphiconsData = require('./grunt/bs-glyphicons-data-generator.js');
var BsLessdocParser = require('./grunt/bs-lessdoc-parser.js'); var BsLessdocParser = require('./grunt/bs-lessdoc-parser.js');
var getLessVarsData = function () { var getLessVarsData = function () {
@ -130,7 +129,7 @@ module.exports = function (grunt) {
warnings: false warnings: false
}, },
mangle: true, mangle: true,
preserveComments: 'some' preserveComments: /^!|@preserve|@license|@cc_on/i
}, },
core: { core: {
src: '<%= concat.bootstrap.dest %>', src: '<%= concat.bootstrap.dest %>',
@ -231,6 +230,8 @@ module.exports = function (grunt) {
// and then simplify the fix for https://github.com/twbs/bootstrap/issues/14837 accordingly // and then simplify the fix for https://github.com/twbs/bootstrap/issues/14837 accordingly
compatibility: 'ie8', compatibility: 'ie8',
keepSpecialComments: '*', keepSpecialComments: '*',
sourceMap: true,
sourceMapInlineSources: true,
advanced: false advanced: false
}, },
minifyCore: { minifyCore: {
@ -243,6 +244,7 @@ module.exports = function (grunt) {
}, },
docs: { docs: {
src: [ src: [
'docs/assets/css/ie10-viewport-bug-workaround.css',
'docs/assets/css/src/pygments-manni.css', 'docs/assets/css/src/pygments-manni.css',
'docs/assets/css/src/docs.css' 'docs/assets/css/src/docs.css'
], ],
@ -275,7 +277,7 @@ module.exports = function (grunt) {
copy: { copy: {
fonts: { fonts: {
expand: true, expand: true,
src: 'fonts/*', src: 'fonts/**',
dest: 'dist/' dest: 'dist/'
}, },
docs: { docs: {
@ -299,7 +301,9 @@ module.exports = function (grunt) {
jekyll: { jekyll: {
options: { options: {
config: '_config.yml' bundleExec: true,
config: '_config.yml',
incremental: false
}, },
docs: {}, docs: {},
github: { github: {
@ -312,12 +316,27 @@ module.exports = function (grunt) {
htmlmin: { htmlmin: {
dist: { dist: {
options: { options: {
collapseBooleanAttributes: true,
collapseWhitespace: true, collapseWhitespace: true,
conservativeCollapse: true, conservativeCollapse: true,
minifyCSS: true, decodeEntities: false,
minifyCSS: {
compatibility: 'ie8',
keepSpecialComments: 0
},
minifyJS: true, minifyJS: true,
minifyURLs: false,
processConditionalComments: true,
removeAttributeQuotes: true, removeAttributeQuotes: true,
removeComments: true removeComments: true,
removeOptionalAttributes: true,
removeOptionalTags: true,
removeRedundantAttributes: true,
removeScriptTypeAttributes: true,
removeStyleLinkTypeAttributes: true,
removeTagWhitespace: false,
sortAttributes: true,
sortClassName: true
}, },
expand: true, expand: true,
cwd: '_gh_pages', cwd: '_gh_pages',
@ -329,17 +348,17 @@ module.exports = function (grunt) {
} }
}, },
jade: { pug: {
options: { options: {
pretty: true, pretty: true,
data: getLessVarsData data: getLessVarsData
}, },
customizerVars: { customizerVars: {
src: 'docs/_jade/customizer-variables.jade', src: 'docs/_pug/customizer-variables.pug',
dest: 'docs/_includes/customizer-variables.html' dest: 'docs/_includes/customizer-variables.html'
}, },
customizerNav: { customizerNav: {
src: 'docs/_jade/customizer-nav.jade', src: 'docs/_pug/customizer-nav.pug',
dest: 'docs/_includes/nav/customize.html' dest: 'docs/_includes/nav/customize.html'
} }
}, },
@ -348,7 +367,7 @@ module.exports = function (grunt) {
options: { options: {
ignore: [ ignore: [
'Attribute "autocomplete" not allowed on element "button" at this point.', 'Attribute "autocomplete" not allowed on element "button" at this point.',
'Attribute "autocomplete" not allowed on element "input" at this point.', 'Attribute "autocomplete" is only allowed when the input type is "color", "date", "datetime", "datetime-local", "email", "hidden", "month", "number", "password", "range", "search", "tel", "text", "time", "url", or "week".',
'Element "img" is missing required attribute "src".' 'Element "img" is missing required attribute "src".'
] ]
}, },
@ -370,25 +389,6 @@ module.exports = function (grunt) {
} }
}, },
sed: {
versionNumber: {
pattern: (function () {
var old = grunt.option('oldver');
return old ? RegExp.quote(old) : old;
})(),
replacement: grunt.option('newver'),
exclude: [
'dist/fonts',
'docs/assets',
'fonts',
'js/tests/vendor',
'node_modules',
'test-infra'
],
recursive: true
}
},
'saucelabs-qunit': { 'saucelabs-qunit': {
all: { all: {
options: { options: {
@ -483,16 +483,11 @@ module.exports = function (grunt) {
// Default task. // Default task.
grunt.registerTask('default', ['clean:dist', 'copy:fonts', 'test']); grunt.registerTask('default', ['clean:dist', 'copy:fonts', 'test']);
// Version numbering task.
// grunt change-version-number --oldver=A.B.C --newver=X.Y.Z
// This can be overzealous, so its changes should always be manually reviewed!
grunt.registerTask('change-version-number', 'sed');
grunt.registerTask('build-glyphicons-data', function () { generateGlyphiconsData.call(this, grunt); }); grunt.registerTask('build-glyphicons-data', function () { generateGlyphiconsData.call(this, grunt); });
// task for building customizer // task for building customizer
grunt.registerTask('build-customizer', ['build-customizer-html', 'build-raw-files']); grunt.registerTask('build-customizer', ['build-customizer-html', 'build-raw-files']);
grunt.registerTask('build-customizer-html', 'jade'); grunt.registerTask('build-customizer-html', 'pug');
grunt.registerTask('build-raw-files', 'Add scripts/less files to customizer.', function () { grunt.registerTask('build-raw-files', 'Add scripts/less files to customizer.', function () {
var banner = grunt.template.process('<%= banner %>'); var banner = grunt.template.process('<%= banner %>');
generateRawFiles(grunt, banner); generateRawFiles(grunt, banner);
@ -510,22 +505,7 @@ module.exports = function (grunt) {
grunt.registerTask('docs-js', ['uglify:docsJs', 'uglify:customize']); grunt.registerTask('docs-js', ['uglify:docsJs', 'uglify:customize']);
grunt.registerTask('lint-docs-js', ['jshint:assets', 'jscs:assets']); grunt.registerTask('lint-docs-js', ['jshint:assets', 'jscs:assets']);
grunt.registerTask('docs', ['docs-css', 'lint-docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs', 'build-glyphicons-data', 'build-customizer']); grunt.registerTask('docs', ['docs-css', 'lint-docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs', 'build-glyphicons-data', 'build-customizer']);
grunt.registerTask('docs-github', ['jekyll:github', 'htmlmin']);
grunt.registerTask('prep-release', ['dist', 'docs', 'jekyll:github', 'htmlmin', 'compress']); grunt.registerTask('prep-release', ['dist', 'docs', 'docs-github', 'compress']);
// Task for updating the cached npm packages used by the Travis build (which are controlled by test-infra/npm-shrinkwrap.json).
// This task should be run and the updated file should be committed whenever Bootstrap's dependencies change.
grunt.registerTask('update-shrinkwrap', ['exec:npmUpdate', '_update-shrinkwrap']);
grunt.registerTask('_update-shrinkwrap', function () {
var done = this.async();
npmShrinkwrap({ dev: true, dirname: __dirname }, function (err) {
if (err) {
grunt.fail.warn(err);
}
var dest = 'test-infra/npm-shrinkwrap.json';
fs.renameSync('npm-shrinkwrap.json', dest);
grunt.log.writeln('File ' + dest.cyan + ' updated.');
done();
});
});
}; };

View file

@ -0,0 +1,22 @@
Before opening an issue:
- [Search for duplicate or closed issues](https://github.com/twbs/bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue)
- [Validate](http://validator.w3.org/nu/) and [lint](https://github.com/twbs/bootlint#in-the-browser) any HTML to avoid common problems
- Prepare a [reduced test case](https://css-tricks.com/reduced-test-cases/) for any bugs
- Read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md)
When asking general "how to" questions:
- Please do not open an issue here
- Instead, ask for help on [StackOverflow, IRC, or Slack](https://github.com/twbs/bootstrap/blob/master/README.md#community)
When reporting a bug, include:
- Operating system and version (Windows, Mac OS X, Android, iOS, Win10 Mobile)
- Browser and version (Chrome, Firefox, Safari, IE, MS Edge, Opera 15+, Android Browser)
- Reduced test cases and potential fixes using [JS Bin](https://jsbin.com)
When suggesting a feature, include:
- As much detail as possible for what we should add and why it's important to Bootstrap
- Relevant links to prior art, screenshots, or live demos whenever possible

View file

@ -1,6 +1,6 @@
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2011-2015 Twitter, Inc Copyright (c) 2011-2016 Twitter, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View file

@ -1,36 +1,40 @@
# [Bootstrap](http://getbootstrap.com) # [Bootstrap](http://getbootstrap.com)
[![Slack](https://bootstrap-slack.herokuapp.com/badge.svg)](https://bootstrap-slack.herokuapp.com) [![Slack](https://bootstrap-slack.herokuapp.com/badge.svg)](https://bootstrap-slack.herokuapp.com)
![Bower version](https://img.shields.io/bower/v/bootstrap.svg) ![Bower version](https://img.shields.io/bower/v/bootstrap.svg)
[![npm version](https://img.shields.io/npm/v/bootstrap.svg)](https://www.npmjs.com/package/bootstrap) [![npm version](https://img.shields.io/npm/v/bootstrap.svg)](https://www.npmjs.com/package/bootstrap)
[![Build Status](https://img.shields.io/travis/twbs/bootstrap/master.svg)](https://travis-ci.org/twbs/bootstrap) [![Build Status](https://img.shields.io/travis/twbs/bootstrap/master.svg)](https://travis-ci.org/twbs/bootstrap)
[![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap.svg)](https://david-dm.org/twbs/bootstrap#info=devDependencies) [![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap.svg)](https://david-dm.org/twbs/bootstrap#info=devDependencies)
[![NuGet](https://img.shields.io/nuget/v/bootstrap.svg)](https://www.nuget.org/packages/Bootstrap)
[![Selenium Test Status](https://saucelabs.com/browser-matrix/bootstrap.svg)](https://saucelabs.com/u/bootstrap) [![Selenium Test Status](https://saucelabs.com/browser-matrix/bootstrap.svg)](https://saucelabs.com/u/bootstrap)
Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community. Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community.
To get started, check out <http://getbootstrap.com>! To get started, check out <http://getbootstrap.com>!
## Table of contents ## Table of contents
- [Quick start](#quick-start) * [Quick start](#quick-start)
- [Bugs and feature requests](#bugs-and-feature-requests) * [Bugs and feature requests](#bugs-and-feature-requests)
- [Documentation](#documentation) * [Documentation](#documentation)
- [Contributing](#contributing) * [Contributing](#contributing)
- [Community](#community) * [Community](#community)
- [Versioning](#versioning) * [Versioning](#versioning)
- [Creators](#creators) * [Creators](#creators)
- [Copyright and license](#copyright-and-license) * [Copyright and license](#copyright-and-license)
## Quick start ## Quick start
Several quick start options are available: Several quick start options are available:
- [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.3.5.zip). * [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.3.7.zip).
- Clone the repo: `git clone https://github.com/twbs/bootstrap.git`. * Clone the repo: `git clone https://github.com/twbs/bootstrap.git`.
- Install with [Bower](http://bower.io): `bower install bootstrap`. * Install with [Bower](http://bower.io): `bower install bootstrap`.
- Install with [npm](https://www.npmjs.com): `npm install bootstrap`. * Install with [npm](https://www.npmjs.com): `npm install bootstrap@3`.
- Install with [Meteor](https://www.meteor.com): `meteor add twbs:bootstrap`. * Install with [Meteor](https://www.meteor.com): `meteor add twbs:bootstrap`.
- Install with [Composer](https://getcomposer.org): `composer require twbs/bootstrap`. * Install with [Composer](https://getcomposer.org): `composer require twbs/bootstrap`.
Read the [Getting started page](http://getbootstrap.com/getting-started/) for information on the framework contents, templates and examples, and more. Read the [Getting started page](http://getbootstrap.com/getting-started/) for information on the framework contents, templates and examples, and more.
@ -44,9 +48,11 @@ bootstrap/
│ ├── bootstrap.css │ ├── bootstrap.css
│ ├── bootstrap.css.map │ ├── bootstrap.css.map
│ ├── bootstrap.min.css │ ├── bootstrap.min.css
│ ├── bootstrap.min.css.map
│ ├── bootstrap-theme.css │ ├── bootstrap-theme.css
│ ├── bootstrap-theme.css.map │ ├── bootstrap-theme.css.map
│ └── bootstrap-theme.min.css │ ├── bootstrap-theme.min.css
│ └── bootstrap-theme.min.css.map
├── js/ ├── js/
│ ├── bootstrap.js │ ├── bootstrap.js
│ └── bootstrap.min.js │ └── bootstrap.min.js
@ -61,11 +67,12 @@ bootstrap/
We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developer.chrome.com/devtools/docs/css-preprocessors) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme. We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developer.chrome.com/devtools/docs/css-preprocessors) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme.
## Bugs and feature requests ## Bugs and feature requests
Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new). Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new).
Note that **feature requests must target [Bootstrap v4](https://github.com/twbs/bootstrap/tree/v4-dev),** because Bootstrap v3 is now in maintenance mode and is closed off to new features. This is so that we can focus our efforts on Bootstrap v4.
## Documentation ## Documentation
@ -73,11 +80,10 @@ Bootstrap's documentation, included in this repo in the root directory, is built
### Running documentation locally ### Running documentation locally
1. If necessary, [install Jekyll](http://jekyllrb.com/docs/installation) (requires v2.5.x). 1. If necessary, [install Jekyll](http://jekyllrb.com/docs/installation) and other Ruby dependencies with `bundle install`.
- **Windows users:** Read [this unofficial guide](http://jekyll-windows.juthilo.com/) to get Jekyll up and running without problems. **Note for Windows users:** Read [this unofficial guide](http://jekyll-windows.juthilo.com/) to get Jekyll up and running without problems.
2. Install the Ruby-based syntax highlighter, [Rouge](https://github.com/jneen/rouge), with `gem install rouge`. 2. From the root `/bootstrap` directory, run `bundle exec jekyll serve` in the command line.
3. From the root `/bootstrap` directory, run `jekyll serve` in the command line. 4. Open `http://localhost:9001` in your browser, and voilà.
4. Open <http://localhost:9001> in your browser, and voilà.
Learn more about using Jekyll by reading its [documentation](http://jekyllrb.com/docs/home/). Learn more about using Jekyll by reading its [documentation](http://jekyllrb.com/docs/home/).
@ -88,50 +94,49 @@ Documentation for v2.3.2 has been made available for the time being at <http://g
[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download. [Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download.
## Contributing ## Contributing
Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development. Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.
Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/master/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo). Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/master/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo).
Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at <http://editorconfig.org>. **Bootstrap v3 is now closed off to new features.** It has gone into maintenance mode so that we can focus our efforts on [Bootstrap v4](https://github.com/twbs/bootstrap/tree/v4-dev), the future of the framework. Pull requests which add new features (rather than fix bugs) should target [Bootstrap v4 (the `v4-dev` git branch)](https://github.com/twbs/bootstrap/tree/v4-dev) instead.
Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at <http://editorconfig.org>.
## Community ## Community
Get updates on Bootstrap's development and chat with the project maintainers and community members. Get updates on Bootstrap's development and chat with the project maintainers and community members.
- Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap). * Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap).
- Read and subscribe to [The Official Bootstrap Blog](http://blog.getbootstrap.com). * Read and subscribe to [The Official Bootstrap Blog](http://blog.getbootstrap.com).
- Join [the official Slack room](https://bootstrap-slack.herokuapp.com). * Join [the official Slack room](https://bootstrap-slack.herokuapp.com).
- Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel. * Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel.
- Implementation help may be found at Stack Overflow (tagged [`twitter-bootstrap-3`](https://stackoverflow.com/questions/tagged/twitter-bootstrap-3)). * Implementation help may be found at Stack Overflow (tagged [`twitter-bootstrap-3`](https://stackoverflow.com/questions/tagged/twitter-bootstrap-3)).
- Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability. * Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability.
## Versioning ## Versioning
For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](http://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible. For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](http://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible.
See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release.
## Creators ## Creators
**Mark Otto** **Mark Otto**
- <https://twitter.com/mdo> * <https://twitter.com/mdo>
- <https://github.com/mdo> * <https://github.com/mdo>
**Jacob Thornton** **Jacob Thornton**
- <https://twitter.com/fat> * <https://twitter.com/fat>
- <https://github.com/fat> * <https://github.com/fat>
## Copyright and license ## Copyright and license
Code and documentation copyright 2011-2015 Twitter, Inc. Code released under [the MIT license](https://github.com/twbs/bootstrap/blob/master/LICENSE). Docs released under [Creative Commons](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE). Code and documentation copyright 2011-2016 Twitter, Inc. Code released under [the MIT license](https://github.com/twbs/bootstrap/blob/master/LICENSE). Docs released under [Creative Commons](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE).

View file

@ -29,6 +29,6 @@
"test-infra" "test-infra"
], ],
"dependencies": { "dependencies": {
"jquery": ">= 1.9.1" "jquery": "1.9.1 - 3"
} }
} }

View file

@ -1,6 +1,6 @@
/*! /*!
* Bootstrap v3.3.5 (http://getbootstrap.com) * Bootstrap v3.3.7 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/ */
.btn-default, .btn-default,

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

View file

@ -1,6 +1,6 @@
/*! /*!
* Bootstrap v3.3.5 (http://getbootstrap.com) * Bootstrap v3.3.7 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/ */
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
@ -279,10 +279,10 @@ th {
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
.glyphicon-asterisk:before { .glyphicon-asterisk:before {
content: "\2a"; content: "\002a";
} }
.glyphicon-plus:before { .glyphicon-plus:before {
content: "\2b"; content: "\002b";
} }
.glyphicon-euro:before, .glyphicon-euro:before,
.glyphicon-eur:before { .glyphicon-eur:before {
@ -1106,7 +1106,6 @@ a:focus {
text-decoration: underline; text-decoration: underline;
} }
a:focus { a:focus {
outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color; outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px; outline-offset: -2px;
} }
@ -2537,7 +2536,6 @@ select[size] {
input[type="file"]:focus, input[type="file"]:focus,
input[type="radio"]:focus, input[type="radio"]:focus,
input[type="checkbox"]:focus { input[type="checkbox"]:focus {
outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color; outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px; outline-offset: -2px;
} }
@ -2582,6 +2580,10 @@ output {
.form-control::-webkit-input-placeholder { .form-control::-webkit-input-placeholder {
color: #999; color: #999;
} }
.form-control::-ms-expand {
background-color: transparent;
border: 0;
}
.form-control[disabled], .form-control[disabled],
.form-control[readonly], .form-control[readonly],
fieldset[disabled] .form-control { fieldset[disabled] .form-control {
@ -2988,7 +2990,7 @@ select[multiple].input-lg {
} }
@media (min-width: 768px) { @media (min-width: 768px) {
.form-horizontal .form-group-lg .control-label { .form-horizontal .form-group-lg .control-label {
padding-top: 14.333333px; padding-top: 11px;
font-size: 18px; font-size: 18px;
} }
} }
@ -3025,7 +3027,6 @@ select[multiple].input-lg {
.btn.focus, .btn.focus,
.btn:active.focus, .btn:active.focus,
.btn.active.focus { .btn.active.focus {
outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color; outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px; outline-offset: -2px;
} }
@ -3096,9 +3097,6 @@ fieldset[disabled] a.btn {
.open > .dropdown-toggle.btn-default { .open > .dropdown-toggle.btn-default {
background-image: none; background-image: none;
} }
.btn-default.disabled,
.btn-default[disabled],
fieldset[disabled] .btn-default,
.btn-default.disabled:hover, .btn-default.disabled:hover,
.btn-default[disabled]:hover, .btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover, fieldset[disabled] .btn-default:hover,
@ -3107,13 +3105,7 @@ fieldset[disabled] .btn-default:hover,
fieldset[disabled] .btn-default:focus, fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus, .btn-default.disabled.focus,
.btn-default[disabled].focus, .btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus, fieldset[disabled] .btn-default.focus {
.btn-default.disabled:active,
.btn-default[disabled]:active,
fieldset[disabled] .btn-default:active,
.btn-default.disabled.active,
.btn-default[disabled].active,
fieldset[disabled] .btn-default.active {
background-color: #fff; background-color: #fff;
border-color: #ccc; border-color: #ccc;
} }
@ -3162,9 +3154,6 @@ fieldset[disabled] .btn-default.active {
.open > .dropdown-toggle.btn-primary { .open > .dropdown-toggle.btn-primary {
background-image: none; background-image: none;
} }
.btn-primary.disabled,
.btn-primary[disabled],
fieldset[disabled] .btn-primary,
.btn-primary.disabled:hover, .btn-primary.disabled:hover,
.btn-primary[disabled]:hover, .btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover, fieldset[disabled] .btn-primary:hover,
@ -3173,13 +3162,7 @@ fieldset[disabled] .btn-primary:hover,
fieldset[disabled] .btn-primary:focus, fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus, .btn-primary.disabled.focus,
.btn-primary[disabled].focus, .btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus, fieldset[disabled] .btn-primary.focus {
.btn-primary.disabled:active,
.btn-primary[disabled]:active,
fieldset[disabled] .btn-primary:active,
.btn-primary.disabled.active,
.btn-primary[disabled].active,
fieldset[disabled] .btn-primary.active {
background-color: #337ab7; background-color: #337ab7;
border-color: #2e6da4; border-color: #2e6da4;
} }
@ -3228,9 +3211,6 @@ fieldset[disabled] .btn-primary.active {
.open > .dropdown-toggle.btn-success { .open > .dropdown-toggle.btn-success {
background-image: none; background-image: none;
} }
.btn-success.disabled,
.btn-success[disabled],
fieldset[disabled] .btn-success,
.btn-success.disabled:hover, .btn-success.disabled:hover,
.btn-success[disabled]:hover, .btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover, fieldset[disabled] .btn-success:hover,
@ -3239,13 +3219,7 @@ fieldset[disabled] .btn-success:hover,
fieldset[disabled] .btn-success:focus, fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus, .btn-success.disabled.focus,
.btn-success[disabled].focus, .btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus, fieldset[disabled] .btn-success.focus {
.btn-success.disabled:active,
.btn-success[disabled]:active,
fieldset[disabled] .btn-success:active,
.btn-success.disabled.active,
.btn-success[disabled].active,
fieldset[disabled] .btn-success.active {
background-color: #5cb85c; background-color: #5cb85c;
border-color: #4cae4c; border-color: #4cae4c;
} }
@ -3294,9 +3268,6 @@ fieldset[disabled] .btn-success.active {
.open > .dropdown-toggle.btn-info { .open > .dropdown-toggle.btn-info {
background-image: none; background-image: none;
} }
.btn-info.disabled,
.btn-info[disabled],
fieldset[disabled] .btn-info,
.btn-info.disabled:hover, .btn-info.disabled:hover,
.btn-info[disabled]:hover, .btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover, fieldset[disabled] .btn-info:hover,
@ -3305,13 +3276,7 @@ fieldset[disabled] .btn-info:hover,
fieldset[disabled] .btn-info:focus, fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus, .btn-info.disabled.focus,
.btn-info[disabled].focus, .btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus, fieldset[disabled] .btn-info.focus {
.btn-info.disabled:active,
.btn-info[disabled]:active,
fieldset[disabled] .btn-info:active,
.btn-info.disabled.active,
.btn-info[disabled].active,
fieldset[disabled] .btn-info.active {
background-color: #5bc0de; background-color: #5bc0de;
border-color: #46b8da; border-color: #46b8da;
} }
@ -3360,9 +3325,6 @@ fieldset[disabled] .btn-info.active {
.open > .dropdown-toggle.btn-warning { .open > .dropdown-toggle.btn-warning {
background-image: none; background-image: none;
} }
.btn-warning.disabled,
.btn-warning[disabled],
fieldset[disabled] .btn-warning,
.btn-warning.disabled:hover, .btn-warning.disabled:hover,
.btn-warning[disabled]:hover, .btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover, fieldset[disabled] .btn-warning:hover,
@ -3371,13 +3333,7 @@ fieldset[disabled] .btn-warning:hover,
fieldset[disabled] .btn-warning:focus, fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus, .btn-warning.disabled.focus,
.btn-warning[disabled].focus, .btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus, fieldset[disabled] .btn-warning.focus {
.btn-warning.disabled:active,
.btn-warning[disabled]:active,
fieldset[disabled] .btn-warning:active,
.btn-warning.disabled.active,
.btn-warning[disabled].active,
fieldset[disabled] .btn-warning.active {
background-color: #f0ad4e; background-color: #f0ad4e;
border-color: #eea236; border-color: #eea236;
} }
@ -3426,9 +3382,6 @@ fieldset[disabled] .btn-warning.active {
.open > .dropdown-toggle.btn-danger { .open > .dropdown-toggle.btn-danger {
background-image: none; background-image: none;
} }
.btn-danger.disabled,
.btn-danger[disabled],
fieldset[disabled] .btn-danger,
.btn-danger.disabled:hover, .btn-danger.disabled:hover,
.btn-danger[disabled]:hover, .btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover, fieldset[disabled] .btn-danger:hover,
@ -3437,13 +3390,7 @@ fieldset[disabled] .btn-danger:hover,
fieldset[disabled] .btn-danger:focus, fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus, .btn-danger.disabled.focus,
.btn-danger[disabled].focus, .btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus, fieldset[disabled] .btn-danger.focus {
.btn-danger.disabled:active,
.btn-danger[disabled]:active,
fieldset[disabled] .btn-danger:active,
.btn-danger.disabled.active,
.btn-danger[disabled].active,
fieldset[disabled] .btn-danger.active {
background-color: #d9534f; background-color: #d9534f;
border-color: #d43f3a; border-color: #d43f3a;
} }
@ -3817,6 +3764,7 @@ tbody.collapse.in {
border-radius: 0; border-radius: 0;
} }
.btn-group-vertical > .btn:first-child:not(:last-child) { .btn-group-vertical > .btn:first-child:not(:last-child) {
border-top-left-radius: 4px;
border-top-right-radius: 4px; border-top-right-radius: 4px;
border-bottom-right-radius: 0; border-bottom-right-radius: 0;
border-bottom-left-radius: 0; border-bottom-left-radius: 0;
@ -3824,6 +3772,7 @@ tbody.collapse.in {
.btn-group-vertical > .btn:last-child:not(:first-child) { .btn-group-vertical > .btn:last-child:not(:first-child) {
border-top-left-radius: 0; border-top-left-radius: 0;
border-top-right-radius: 0; border-top-right-radius: 0;
border-bottom-right-radius: 4px;
border-bottom-left-radius: 4px; border-bottom-left-radius: 4px;
} }
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
@ -3881,6 +3830,9 @@ tbody.collapse.in {
width: 100%; width: 100%;
margin-bottom: 0; margin-bottom: 0;
} }
.input-group .form-control:focus {
z-index: 3;
}
.input-group-lg > .form-control, .input-group-lg > .form-control,
.input-group-lg > .input-group-addon, .input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn { .input-group-lg > .input-group-btn > .btn {
@ -4792,7 +4744,7 @@ fieldset[disabled] .navbar-inverse .btn-link:focus {
.pagination > li > span:hover, .pagination > li > span:hover,
.pagination > li > a:focus, .pagination > li > a:focus,
.pagination > li > span:focus { .pagination > li > span:focus {
z-index: 3; z-index: 2;
color: #23527c; color: #23527c;
background-color: #eee; background-color: #eee;
border-color: #ddd; border-color: #ddd;
@ -4803,7 +4755,7 @@ fieldset[disabled] .navbar-inverse .btn-link:focus {
.pagination > .active > span:hover, .pagination > .active > span:hover,
.pagination > .active > a:focus, .pagination > .active > a:focus,
.pagination > .active > span:focus { .pagination > .active > span:focus {
z-index: 2; z-index: 3;
color: #fff; color: #fff;
cursor: default; cursor: default;
background-color: #337ab7; background-color: #337ab7;
@ -5024,6 +4976,8 @@ a.badge:focus {
} }
.container .jumbotron, .container .jumbotron,
.container-fluid .jumbotron { .container-fluid .jumbotron {
padding-right: 15px;
padding-left: 15px;
border-radius: 6px; border-radius: 6px;
} }
.jumbotron .container { .jumbotron .container {
@ -5978,7 +5932,6 @@ button.close {
opacity: .5; opacity: .5;
} }
.modal-header { .modal-header {
min-height: 16.42857143px;
padding: 15px; padding: 15px;
border-bottom: 1px solid #e5e5e5; border-bottom: 1px solid #e5e5e5;
} }
@ -6371,6 +6324,7 @@ button.close {
color: #fff; color: #fff;
text-align: center; text-align: center;
text-shadow: 0 1px 2px rgba(0, 0, 0, .6); text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
background-color: rgba(0, 0, 0, 0);
filter: alpha(opacity=50); filter: alpha(opacity=50);
opacity: .5; opacity: .5;
} }
@ -6484,16 +6438,16 @@ button.close {
.carousel-control .icon-next { .carousel-control .icon-next {
width: 30px; width: 30px;
height: 30px; height: 30px;
margin-top: -15px; margin-top: -10px;
font-size: 30px; font-size: 30px;
} }
.carousel-control .glyphicon-chevron-left, .carousel-control .glyphicon-chevron-left,
.carousel-control .icon-prev { .carousel-control .icon-prev {
margin-left: -15px; margin-left: -10px;
} }
.carousel-control .glyphicon-chevron-right, .carousel-control .glyphicon-chevron-right,
.carousel-control .icon-next { .carousel-control .icon-next {
margin-right: -15px; margin-right: -10px;
} }
.carousel-caption { .carousel-caption {
right: 20%; right: 20%;
@ -6532,6 +6486,8 @@ button.close {
.pager:after, .pager:after,
.panel-body:before, .panel-body:before,
.panel-body:after, .panel-body:after,
.modal-header:before,
.modal-header:after,
.modal-footer:before, .modal-footer:before,
.modal-footer:after { .modal-footer:after {
display: table; display: table;
@ -6551,6 +6507,7 @@ button.close {
.navbar-collapse:after, .navbar-collapse:after,
.pager:after, .pager:after,
.panel-body:after, .panel-body:after,
.modal-header:after,
.modal-footer:after { .modal-footer:after {
clear: both; clear: both;
} }

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

View file

@ -1,6 +1,6 @@
/*! /*!
* Bootstrap v3.3.5 (http://getbootstrap.com) * Bootstrap v3.3.7 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under the MIT license * Licensed under the MIT license
*/ */
@ -11,16 +11,16 @@ if (typeof jQuery === 'undefined') {
+function ($) { +function ($) {
'use strict'; 'use strict';
var version = $.fn.jquery.split(' ')[0].split('.') var version = $.fn.jquery.split(' ')[0].split('.')
if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) { if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher') throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
} }
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: transition.js v3.3.5 * Bootstrap: transition.js v3.3.7
* http://getbootstrap.com/javascript/#transitions * http://getbootstrap.com/javascript/#transitions
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -77,10 +77,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: alert.js v3.3.5 * Bootstrap: alert.js v3.3.7
* http://getbootstrap.com/javascript/#alerts * http://getbootstrap.com/javascript/#alerts
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -96,7 +96,7 @@ if (typeof jQuery === 'undefined') {
$(el).on('click', dismiss, this.close) $(el).on('click', dismiss, this.close)
} }
Alert.VERSION = '3.3.5' Alert.VERSION = '3.3.7'
Alert.TRANSITION_DURATION = 150 Alert.TRANSITION_DURATION = 150
@ -109,7 +109,7 @@ if (typeof jQuery === 'undefined') {
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
} }
var $parent = $(selector) var $parent = $(selector === '#' ? [] : selector)
if (e) e.preventDefault() if (e) e.preventDefault()
@ -172,10 +172,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: button.js v3.3.5 * Bootstrap: button.js v3.3.7
* http://getbootstrap.com/javascript/#buttons * http://getbootstrap.com/javascript/#buttons
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -192,7 +192,7 @@ if (typeof jQuery === 'undefined') {
this.isLoading = false this.isLoading = false
} }
Button.VERSION = '3.3.5' Button.VERSION = '3.3.7'
Button.DEFAULTS = { Button.DEFAULTS = {
loadingText: 'loading...' loadingText: 'loading...'
@ -214,10 +214,10 @@ if (typeof jQuery === 'undefined') {
if (state == 'loadingText') { if (state == 'loadingText') {
this.isLoading = true this.isLoading = true
$el.addClass(d).attr(d, d) $el.addClass(d).attr(d, d).prop(d, true)
} else if (this.isLoading) { } else if (this.isLoading) {
this.isLoading = false this.isLoading = false
$el.removeClass(d).removeAttr(d) $el.removeClass(d).removeAttr(d).prop(d, false)
} }
}, this), 0) }, this), 0)
} }
@ -281,10 +281,15 @@ if (typeof jQuery === 'undefined') {
$(document) $(document)
.on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
var $btn = $(e.target) var $btn = $(e.target).closest('.btn')
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
Plugin.call($btn, 'toggle') Plugin.call($btn, 'toggle')
if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault() if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
// Prevent double click on radios, and the double selections (so cancellation) on checkboxes
e.preventDefault()
// The target component still receive the focus
if ($btn.is('input,button')) $btn.trigger('focus')
else $btn.find('input:visible,button:visible').first().trigger('focus')
}
}) })
.on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
$(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
@ -293,10 +298,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: carousel.js v3.3.5 * Bootstrap: carousel.js v3.3.7
* http://getbootstrap.com/javascript/#carousel * http://getbootstrap.com/javascript/#carousel
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -324,7 +329,7 @@ if (typeof jQuery === 'undefined') {
.on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
} }
Carousel.VERSION = '3.3.5' Carousel.VERSION = '3.3.7'
Carousel.TRANSITION_DURATION = 600 Carousel.TRANSITION_DURATION = 600
@ -531,13 +536,14 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: collapse.js v3.3.5 * Bootstrap: collapse.js v3.3.7
* http://getbootstrap.com/javascript/#collapse * http://getbootstrap.com/javascript/#collapse
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
/* jshint latedef: false */
+function ($) { +function ($) {
'use strict'; 'use strict';
@ -561,7 +567,7 @@ if (typeof jQuery === 'undefined') {
if (this.options.toggle) this.toggle() if (this.options.toggle) this.toggle()
} }
Collapse.VERSION = '3.3.5' Collapse.VERSION = '3.3.7'
Collapse.TRANSITION_DURATION = 350 Collapse.TRANSITION_DURATION = 350
@ -743,10 +749,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: dropdown.js v3.3.5 * Bootstrap: dropdown.js v3.3.7
* http://getbootstrap.com/javascript/#dropdowns * http://getbootstrap.com/javascript/#dropdowns
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -763,7 +769,7 @@ if (typeof jQuery === 'undefined') {
$(element).on('click.bs.dropdown', this.toggle) $(element).on('click.bs.dropdown', this.toggle)
} }
Dropdown.VERSION = '3.3.5' Dropdown.VERSION = '3.3.7'
function getParent($this) { function getParent($this) {
var selector = $this.attr('data-target') var selector = $this.attr('data-target')
@ -795,7 +801,7 @@ if (typeof jQuery === 'undefined') {
if (e.isDefaultPrevented()) return if (e.isDefaultPrevented()) return
$this.attr('aria-expanded', 'false') $this.attr('aria-expanded', 'false')
$parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget) $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
}) })
} }
@ -829,7 +835,7 @@ if (typeof jQuery === 'undefined') {
$parent $parent
.toggleClass('open') .toggleClass('open')
.trigger('shown.bs.dropdown', relatedTarget) .trigger($.Event('shown.bs.dropdown', relatedTarget))
} }
return false return false
@ -909,10 +915,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: modal.js v3.3.5 * Bootstrap: modal.js v3.3.7
* http://getbootstrap.com/javascript/#modals * http://getbootstrap.com/javascript/#modals
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -943,7 +949,7 @@ if (typeof jQuery === 'undefined') {
} }
} }
Modal.VERSION = '3.3.5' Modal.VERSION = '3.3.7'
Modal.TRANSITION_DURATION = 300 Modal.TRANSITION_DURATION = 300
Modal.BACKDROP_TRANSITION_DURATION = 150 Modal.BACKDROP_TRANSITION_DURATION = 150
@ -1050,7 +1056,9 @@ if (typeof jQuery === 'undefined') {
$(document) $(document)
.off('focusin.bs.modal') // guard against infinite focus loop .off('focusin.bs.modal') // guard against infinite focus loop
.on('focusin.bs.modal', $.proxy(function (e) { .on('focusin.bs.modal', $.proxy(function (e) {
if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { if (document !== e.target &&
this.$element[0] !== e.target &&
!this.$element.has(e.target).length) {
this.$element.trigger('focus') this.$element.trigger('focus')
} }
}, this)) }, this))
@ -1247,11 +1255,11 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: tooltip.js v3.3.5 * Bootstrap: tooltip.js v3.3.7
* http://getbootstrap.com/javascript/#tooltip * http://getbootstrap.com/javascript/#tooltip
* Inspired by the original jQuery.tipsy by Jason Frame * Inspired by the original jQuery.tipsy by Jason Frame
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -1274,7 +1282,7 @@ if (typeof jQuery === 'undefined') {
this.init('tooltip', element, options) this.init('tooltip', element, options)
} }
Tooltip.VERSION = '3.3.5' Tooltip.VERSION = '3.3.7'
Tooltip.TRANSITION_DURATION = 150 Tooltip.TRANSITION_DURATION = 150
@ -1565,9 +1573,11 @@ if (typeof jQuery === 'undefined') {
function complete() { function complete() {
if (that.hoverState != 'in') $tip.detach() if (that.hoverState != 'in') $tip.detach()
that.$element if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
.removeAttr('aria-describedby') that.$element
.trigger('hidden.bs.' + that.type) .removeAttr('aria-describedby')
.trigger('hidden.bs.' + that.type)
}
callback && callback() callback && callback()
} }
@ -1610,7 +1620,10 @@ if (typeof jQuery === 'undefined') {
// width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
} }
var elOffset = isBody ? { top: 0, left: 0 } : $element.offset() var isSvg = window.SVGElement && el instanceof window.SVGElement
// Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
// See https://github.com/twbs/bootstrap/issues/20280
var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
@ -1726,6 +1739,7 @@ if (typeof jQuery === 'undefined') {
that.$tip = null that.$tip = null
that.$arrow = null that.$arrow = null
that.$viewport = null that.$viewport = null
that.$element = null
}) })
} }
@ -1762,10 +1776,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: popover.js v3.3.5 * Bootstrap: popover.js v3.3.7
* http://getbootstrap.com/javascript/#popovers * http://getbootstrap.com/javascript/#popovers
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -1782,7 +1796,7 @@ if (typeof jQuery === 'undefined') {
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
Popover.VERSION = '3.3.5' Popover.VERSION = '3.3.7'
Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
placement: 'right', placement: 'right',
@ -1871,10 +1885,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: scrollspy.js v3.3.5 * Bootstrap: scrollspy.js v3.3.7
* http://getbootstrap.com/javascript/#scrollspy * http://getbootstrap.com/javascript/#scrollspy
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -1900,7 +1914,7 @@ if (typeof jQuery === 'undefined') {
this.process() this.process()
} }
ScrollSpy.VERSION = '3.3.5' ScrollSpy.VERSION = '3.3.7'
ScrollSpy.DEFAULTS = { ScrollSpy.DEFAULTS = {
offset: 10 offset: 10
@ -2044,10 +2058,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: tab.js v3.3.5 * Bootstrap: tab.js v3.3.7
* http://getbootstrap.com/javascript/#tabs * http://getbootstrap.com/javascript/#tabs
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -2064,7 +2078,7 @@ if (typeof jQuery === 'undefined') {
// jscs:enable requireDollarBeforejQueryAssignment // jscs:enable requireDollarBeforejQueryAssignment
} }
Tab.VERSION = '3.3.5' Tab.VERSION = '3.3.7'
Tab.TRANSITION_DURATION = 150 Tab.TRANSITION_DURATION = 150
@ -2200,10 +2214,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: affix.js v3.3.5 * Bootstrap: affix.js v3.3.7
* http://getbootstrap.com/javascript/#affix * http://getbootstrap.com/javascript/#affix
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -2229,7 +2243,7 @@ if (typeof jQuery === 'undefined') {
this.checkPosition() this.checkPosition()
} }
Affix.VERSION = '3.3.5' Affix.VERSION = '3.3.7'
Affix.RESET = 'affix affix-top affix-bottom' Affix.RESET = 'affix affix-top affix-bottom'

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,109 @@
#!/usr/bin/env node
'use strict';
/* globals Set */
/*!
* Script to update version number references in the project.
* Copyright 2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
var fs = require('fs');
var path = require('path');
var sh = require('shelljs');
sh.config.fatal = true;
var sed = sh.sed;
// Blame TC39... https://github.com/benjamingr/RegExp.escape/issues/37
RegExp.quote = function (string) {
return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&');
};
RegExp.quoteReplacement = function (string) {
return string.replace(/[$]/g, '$$');
};
var DRY_RUN = false;
function walkAsync(directory, excludedDirectories, fileCallback, errback) {
if (excludedDirectories.has(path.parse(directory).base)) {
return;
}
fs.readdir(directory, function (err, names) {
if (err) {
errback(err);
return;
}
names.forEach(function (name) {
var filepath = path.join(directory, name);
fs.lstat(filepath, function (err, stats) {
if (err) {
process.nextTick(errback, err);
return;
}
if (stats.isSymbolicLink()) {
return;
}
else if (stats.isDirectory()) {
process.nextTick(walkAsync, filepath, excludedDirectories, fileCallback, errback);
}
else if (stats.isFile()) {
process.nextTick(fileCallback, filepath);
}
});
});
});
}
function replaceRecursively(directory, excludedDirectories, allowedExtensions, original, replacement) {
original = new RegExp(RegExp.quote(original), 'g');
replacement = RegExp.quoteReplacement(replacement);
var updateFile = !DRY_RUN ? function (filepath) {
if (allowedExtensions.has(path.parse(filepath).ext)) {
sed('-i', original, replacement, filepath);
}
} : function (filepath) {
if (allowedExtensions.has(path.parse(filepath).ext)) {
console.log('FILE: ' + filepath);
}
else {
console.log('EXCLUDED:' + filepath);
}
};
walkAsync(directory, excludedDirectories, updateFile, function (err) {
console.error('ERROR while traversing directory!:');
console.error(err);
process.exit(1);
});
}
function main(args) {
if (args.length !== 2) {
console.error('USAGE: change-version old_version new_version');
console.error('Got arguments:', args);
process.exit(1);
}
var oldVersion = args[0];
var newVersion = args[1];
var EXCLUDED_DIRS = new Set([
'.git',
'node_modules',
'vendor'
]);
var INCLUDED_EXTENSIONS = new Set([
// This extension whitelist is how we avoid modifying binary files
'',
'.css',
'.html',
'.js',
'.json',
'.less',
'.md',
'.nuspec',
'.ps1',
'.scss',
'.txt',
'.yml'
]);
replaceRecursively('.', EXCLUDED_DIRS, INCLUDED_EXTENSIONS, oldVersion, newVersion);
}
main(process.argv.slice(2));

View file

@ -13,7 +13,7 @@
"docsJs": [ "docsJs": [
"../assets/js/vendor/holder.min.js", "../assets/js/vendor/holder.min.js",
"../assets/js/vendor/ZeroClipboard.min.js", "../assets/js/vendor/ZeroClipboard.min.js",
"../assets/js/vendor/anchor.js", "../assets/js/vendor/anchor.min.js",
"../assets/js/src/application.js" "../assets/js/src/application.js"
] ]
}, },
@ -37,10 +37,10 @@
"+function ($) {", "+function ($) {",
" 'use strict';", " 'use strict';",
" var version = $.fn.jquery.split(' ')[0].split('.')", " var version = $.fn.jquery.split(' ')[0].split('.')",
" if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {", " if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {",
" throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher')", " throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')",
" }", " }",
"}(jQuery);\n\n" "}(jQuery);\n\n"
] ]
} }
} }

File diff suppressed because it is too large Load diff

View file

@ -57,7 +57,7 @@
{ {
browserName: "iphone", browserName: "iphone",
platform: "OS X 10.10", platform: "OS X 10.10",
version: "8.2" version: "9.2"
}, },
# iOS Chrome not currently supported by Sauce Labs # iOS Chrome not currently supported by Sauce Labs

View file

@ -1,8 +1,8 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: affix.js v3.3.5 * Bootstrap: affix.js v3.3.7
* http://getbootstrap.com/javascript/#affix * http://getbootstrap.com/javascript/#affix
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -28,7 +28,7 @@
this.checkPosition() this.checkPosition()
} }
Affix.VERSION = '3.3.5' Affix.VERSION = '3.3.7'
Affix.RESET = 'affix affix-top affix-bottom' Affix.RESET = 'affix affix-top affix-bottom'

View file

@ -1,8 +1,8 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: alert.js v3.3.5 * Bootstrap: alert.js v3.3.7
* http://getbootstrap.com/javascript/#alerts * http://getbootstrap.com/javascript/#alerts
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -18,7 +18,7 @@
$(el).on('click', dismiss, this.close) $(el).on('click', dismiss, this.close)
} }
Alert.VERSION = '3.3.5' Alert.VERSION = '3.3.7'
Alert.TRANSITION_DURATION = 150 Alert.TRANSITION_DURATION = 150
@ -31,7 +31,7 @@
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
} }
var $parent = $(selector) var $parent = $(selector === '#' ? [] : selector)
if (e) e.preventDefault() if (e) e.preventDefault()

View file

@ -1,8 +1,8 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: button.js v3.3.5 * Bootstrap: button.js v3.3.7
* http://getbootstrap.com/javascript/#buttons * http://getbootstrap.com/javascript/#buttons
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -19,7 +19,7 @@
this.isLoading = false this.isLoading = false
} }
Button.VERSION = '3.3.5' Button.VERSION = '3.3.7'
Button.DEFAULTS = { Button.DEFAULTS = {
loadingText: 'loading...' loadingText: 'loading...'
@ -41,10 +41,10 @@
if (state == 'loadingText') { if (state == 'loadingText') {
this.isLoading = true this.isLoading = true
$el.addClass(d).attr(d, d) $el.addClass(d).attr(d, d).prop(d, true)
} else if (this.isLoading) { } else if (this.isLoading) {
this.isLoading = false this.isLoading = false
$el.removeClass(d).removeAttr(d) $el.removeClass(d).removeAttr(d).prop(d, false)
} }
}, this), 0) }, this), 0)
} }
@ -108,10 +108,15 @@
$(document) $(document)
.on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
var $btn = $(e.target) var $btn = $(e.target).closest('.btn')
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
Plugin.call($btn, 'toggle') Plugin.call($btn, 'toggle')
if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault() if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
// Prevent double click on radios, and the double selections (so cancellation) on checkboxes
e.preventDefault()
// The target component still receive the focus
if ($btn.is('input,button')) $btn.trigger('focus')
else $btn.find('input:visible,button:visible').first().trigger('focus')
}
}) })
.on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
$(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))

View file

@ -1,8 +1,8 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: carousel.js v3.3.5 * Bootstrap: carousel.js v3.3.7
* http://getbootstrap.com/javascript/#carousel * http://getbootstrap.com/javascript/#carousel
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -30,7 +30,7 @@
.on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
} }
Carousel.VERSION = '3.3.5' Carousel.VERSION = '3.3.7'
Carousel.TRANSITION_DURATION = 600 Carousel.TRANSITION_DURATION = 600

View file

@ -1,11 +1,12 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: collapse.js v3.3.5 * Bootstrap: collapse.js v3.3.7
* http://getbootstrap.com/javascript/#collapse * http://getbootstrap.com/javascript/#collapse
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
/* jshint latedef: false */
+function ($) { +function ($) {
'use strict'; 'use strict';
@ -29,7 +30,7 @@
if (this.options.toggle) this.toggle() if (this.options.toggle) this.toggle()
} }
Collapse.VERSION = '3.3.5' Collapse.VERSION = '3.3.7'
Collapse.TRANSITION_DURATION = 350 Collapse.TRANSITION_DURATION = 350

View file

@ -1,8 +1,8 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: dropdown.js v3.3.5 * Bootstrap: dropdown.js v3.3.7
* http://getbootstrap.com/javascript/#dropdowns * http://getbootstrap.com/javascript/#dropdowns
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -19,7 +19,7 @@
$(element).on('click.bs.dropdown', this.toggle) $(element).on('click.bs.dropdown', this.toggle)
} }
Dropdown.VERSION = '3.3.5' Dropdown.VERSION = '3.3.7'
function getParent($this) { function getParent($this) {
var selector = $this.attr('data-target') var selector = $this.attr('data-target')
@ -51,7 +51,7 @@
if (e.isDefaultPrevented()) return if (e.isDefaultPrevented()) return
$this.attr('aria-expanded', 'false') $this.attr('aria-expanded', 'false')
$parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget) $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
}) })
} }
@ -85,7 +85,7 @@
$parent $parent
.toggleClass('open') .toggleClass('open')
.trigger('shown.bs.dropdown', relatedTarget) .trigger($.Event('shown.bs.dropdown', relatedTarget))
} }
return false return false

View file

@ -1,8 +1,8 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: modal.js v3.3.5 * Bootstrap: modal.js v3.3.7
* http://getbootstrap.com/javascript/#modals * http://getbootstrap.com/javascript/#modals
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -33,7 +33,7 @@
} }
} }
Modal.VERSION = '3.3.5' Modal.VERSION = '3.3.7'
Modal.TRANSITION_DURATION = 300 Modal.TRANSITION_DURATION = 300
Modal.BACKDROP_TRANSITION_DURATION = 150 Modal.BACKDROP_TRANSITION_DURATION = 150
@ -140,7 +140,9 @@
$(document) $(document)
.off('focusin.bs.modal') // guard against infinite focus loop .off('focusin.bs.modal') // guard against infinite focus loop
.on('focusin.bs.modal', $.proxy(function (e) { .on('focusin.bs.modal', $.proxy(function (e) {
if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { if (document !== e.target &&
this.$element[0] !== e.target &&
!this.$element.has(e.target).length) {
this.$element.trigger('focus') this.$element.trigger('focus')
} }
}, this)) }, this))

View file

@ -1,8 +1,8 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: popover.js v3.3.5 * Bootstrap: popover.js v3.3.7
* http://getbootstrap.com/javascript/#popovers * http://getbootstrap.com/javascript/#popovers
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -19,7 +19,7 @@
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
Popover.VERSION = '3.3.5' Popover.VERSION = '3.3.7'
Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
placement: 'right', placement: 'right',

View file

@ -1,8 +1,8 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: scrollspy.js v3.3.5 * Bootstrap: scrollspy.js v3.3.7
* http://getbootstrap.com/javascript/#scrollspy * http://getbootstrap.com/javascript/#scrollspy
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -28,7 +28,7 @@
this.process() this.process()
} }
ScrollSpy.VERSION = '3.3.5' ScrollSpy.VERSION = '3.3.7'
ScrollSpy.DEFAULTS = { ScrollSpy.DEFAULTS = {
offset: 10 offset: 10

View file

@ -1,8 +1,8 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: tab.js v3.3.5 * Bootstrap: tab.js v3.3.7
* http://getbootstrap.com/javascript/#tabs * http://getbootstrap.com/javascript/#tabs
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -19,7 +19,7 @@
// jscs:enable requireDollarBeforejQueryAssignment // jscs:enable requireDollarBeforejQueryAssignment
} }
Tab.VERSION = '3.3.5' Tab.VERSION = '3.3.7'
Tab.TRANSITION_DURATION = 150 Tab.TRANSITION_DURATION = 150

View file

@ -1,9 +1,9 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: tooltip.js v3.3.5 * Bootstrap: tooltip.js v3.3.7
* http://getbootstrap.com/javascript/#tooltip * http://getbootstrap.com/javascript/#tooltip
* Inspired by the original jQuery.tipsy by Jason Frame * Inspired by the original jQuery.tipsy by Jason Frame
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -26,7 +26,7 @@
this.init('tooltip', element, options) this.init('tooltip', element, options)
} }
Tooltip.VERSION = '3.3.5' Tooltip.VERSION = '3.3.7'
Tooltip.TRANSITION_DURATION = 150 Tooltip.TRANSITION_DURATION = 150
@ -317,9 +317,11 @@
function complete() { function complete() {
if (that.hoverState != 'in') $tip.detach() if (that.hoverState != 'in') $tip.detach()
that.$element if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
.removeAttr('aria-describedby') that.$element
.trigger('hidden.bs.' + that.type) .removeAttr('aria-describedby')
.trigger('hidden.bs.' + that.type)
}
callback && callback() callback && callback()
} }
@ -362,7 +364,10 @@
// width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
} }
var elOffset = isBody ? { top: 0, left: 0 } : $element.offset() var isSvg = window.SVGElement && el instanceof window.SVGElement
// Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
// See https://github.com/twbs/bootstrap/issues/20280
var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
@ -478,6 +483,7 @@
that.$tip = null that.$tip = null
that.$arrow = null that.$arrow = null
that.$viewport = null that.$viewport = null
that.$element = null
}) })
} }

View file

@ -1,8 +1,8 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: transition.js v3.3.5 * Bootstrap: transition.js v3.3.7
* http://getbootstrap.com/javascript/#transitions * http://getbootstrap.com/javascript/#transitions
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */

View file

@ -1,6 +1,6 @@
/*! /*!
* Bootstrap v3.3.5 (http://getbootstrap.com) * Bootstrap v3.3.7 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/ */

View file

@ -59,7 +59,7 @@
.border-right-radius(0); .border-right-radius(0);
} }
} }
// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it // Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it
.btn-group > .btn:last-child:not(:first-child), .btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) { .btn-group > .dropdown-toggle:not(:first-child) {
.border-left-radius(0); .border-left-radius(0);
@ -173,12 +173,12 @@
border-radius: 0; border-radius: 0;
} }
&:first-child:not(:last-child) { &:first-child:not(:last-child) {
border-top-right-radius: @btn-border-radius-base; .border-top-radius(@btn-border-radius-base);
.border-bottom-radius(0); .border-bottom-radius(0);
} }
&:last-child:not(:first-child) { &:last-child:not(:first-child) {
border-bottom-left-radius: @btn-border-radius-base;
.border-top-radius(0); .border-top-radius(0);
.border-bottom-radius(@btn-border-radius-base);
} }
} }
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {

View file

@ -101,6 +101,7 @@
color: @carousel-control-color; color: @carousel-control-color;
text-align: center; text-align: center;
text-shadow: @carousel-text-shadow; text-shadow: @carousel-text-shadow;
background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug
// We can't have this transition here because WebKit cancels the carousel // We can't have this transition here because WebKit cancels the carousel
// animation if you trip this while in the middle of another animation. // animation if you trip this while in the middle of another animation.
@ -240,18 +241,18 @@
.glyphicon-chevron-right, .glyphicon-chevron-right,
.icon-prev, .icon-prev,
.icon-next { .icon-next {
width: 30px; width: (@carousel-control-font-size * 1.5);
height: 30px; height: (@carousel-control-font-size * 1.5);
margin-top: -15px; margin-top: (@carousel-control-font-size / -2);
font-size: 30px; font-size: (@carousel-control-font-size * 1.5);
} }
.glyphicon-chevron-left, .glyphicon-chevron-left,
.icon-prev { .icon-prev {
margin-left: -15px; margin-left: (@carousel-control-font-size / -2);
} }
.glyphicon-chevron-right, .glyphicon-chevron-right,
.icon-next { .icon-next {
margin-right: -15px; margin-right: (@carousel-control-font-size / -2);
} }
} }

View file

@ -132,6 +132,12 @@ output {
// Placeholder // Placeholder
.placeholder(); .placeholder();
// Unstyle the caret on `<select>`s in IE10+.
&::-ms-expand {
border: 0;
background-color: transparent;
}
// Disabled and read-only inputs // Disabled and read-only inputs
// //
// HTML5 says that controls under a fieldset > legend:first-child won't be // HTML5 says that controls under a fieldset > legend:first-child won't be
@ -175,7 +181,7 @@ input[type="search"] {
// set a pixel line-height that matches the given height of the input, but only // set a pixel line-height that matches the given height of the input, but only
// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848 // for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848
// //
// Note that as of 8.3, iOS doesn't support `datetime` or `week`. // Note that as of 9.3, iOS doesn't support `week`.
@media screen and (-webkit-min-device-pixel-ratio: 0) { @media screen and (-webkit-min-device-pixel-ratio: 0) {
input[type="date"], input[type="date"],
@ -433,10 +439,10 @@ input[type="checkbox"] {
.has-feedback label { .has-feedback label {
& ~ .form-control-feedback { & ~ .form-control-feedback {
top: (@line-height-computed + 5); // Height of the `label` and its margin top: (@line-height-computed + 5); // Height of the `label` and its margin
} }
&.sr-only ~ .form-control-feedback { &.sr-only ~ .form-control-feedback {
top: 0; top: 0;
} }
} }
@ -591,7 +597,7 @@ input[type="checkbox"] {
.form-group-lg { .form-group-lg {
@media (min-width: @screen-sm-min) { @media (min-width: @screen-sm-min) {
.control-label { .control-label {
padding-top: ((@padding-large-vertical * @line-height-large) + 1); padding-top: (@padding-large-vertical + 1);
font-size: @font-size-large; font-size: @font-size-large;
} }
} }

View file

@ -32,8 +32,8 @@
} }
// Individual icons // Individual icons
.glyphicon-asterisk { &:before { content: "\2a"; } } .glyphicon-asterisk { &:before { content: "\002a"; } }
.glyphicon-plus { &:before { content: "\2b"; } } .glyphicon-plus { &:before { content: "\002b"; } }
.glyphicon-euro, .glyphicon-euro,
.glyphicon-eur { &:before { content: "\20ac"; } } .glyphicon-eur { &:before { content: "\20ac"; } }
.glyphicon-minus { &:before { content: "\2212"; } } .glyphicon-minus { &:before { content: "\2212"; } }

View file

@ -29,6 +29,10 @@
width: 100%; width: 100%;
margin-bottom: 0; margin-bottom: 0;
&:focus {
z-index: 3;
}
} }
} }
@ -79,18 +83,18 @@
text-align: center; text-align: center;
background-color: @input-group-addon-bg; background-color: @input-group-addon-bg;
border: 1px solid @input-group-addon-border-color; border: 1px solid @input-group-addon-border-color;
border-radius: @border-radius-base; border-radius: @input-border-radius;
// Sizing // Sizing
&.input-sm { &.input-sm {
padding: @padding-small-vertical @padding-small-horizontal; padding: @padding-small-vertical @padding-small-horizontal;
font-size: @font-size-small; font-size: @font-size-small;
border-radius: @border-radius-small; border-radius: @input-border-radius-small;
} }
&.input-lg { &.input-lg {
padding: @padding-large-vertical @padding-large-horizontal; padding: @padding-large-vertical @padding-large-horizontal;
font-size: @font-size-large; font-size: @font-size-large;
border-radius: @border-radius-large; border-radius: @input-border-radius-large;
} }
// Nuke default margins from checkboxes and radios to vertically center within. // Nuke default margins from checkboxes and radios to vertically center within.

View file

@ -28,6 +28,8 @@
.container &, .container &,
.container-fluid & { .container-fluid & {
border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container
padding-left: (@grid-gutter-width / 2);
padding-right: (@grid-gutter-width / 2);
} }
.container { .container {

View file

@ -42,12 +42,9 @@
&.disabled, &.disabled,
&[disabled], &[disabled],
fieldset[disabled] & { fieldset[disabled] & {
&,
&:hover, &:hover,
&:focus, &:focus,
&.focus, &.focus {
&:active,
&.active {
background-color: @background; background-color: @background;
border-color: @border; border-color: @border;
} }

View file

@ -6,8 +6,8 @@
.container-fixed(@gutter: @grid-gutter-width) { .container-fixed(@gutter: @grid-gutter-width) {
margin-right: auto; margin-right: auto;
margin-left: auto; margin-left: auto;
padding-left: (@gutter / 2); padding-left: floor((@gutter / 2));
padding-right: (@gutter / 2); padding-right: ceil((@gutter / 2));
&:extend(.clearfix all); &:extend(.clearfix all);
} }

View file

@ -6,7 +6,7 @@
// //
// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
// Deprecated as of v3.0.1 (will be removed in v4) // Deprecated as of v3.0.1 (has been removed in v4)
.hide-text() { .hide-text() {
font: ~"0/0" a; font: ~"0/0" a;
color: transparent; color: transparent;

View file

@ -1,9 +1,9 @@
// WebKit-style focus // WebKit-style focus
.tab-focus() { .tab-focus() {
// Default // WebKit-specific. Other browsers will keep their default outline style.
outline: thin dotted; // (Initially tried to also force default via `outline: initial`,
// WebKit // but that seems to erroneously remove the outline in Firefox altogether.)
outline: 5px auto -webkit-focus-ring-color; outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px; outline-offset: -2px;
} }

View file

@ -1,7 +1,7 @@
// Vendor Prefixes // Vendor Prefixes
// //
// All vendor mixins are deprecated as of v3.2.0 due to the introduction of // All vendor mixins are deprecated as of v3.2.0 due to the introduction of
// Autoprefixer in our Gruntfile. They will be removed in v4. // Autoprefixer in our Gruntfile. They have been removed in v4.
// - Animations // - Animations
// - Backface visibility // - Backface visibility
@ -54,7 +54,7 @@
// Prevent browsers from flickering when using CSS 3D transforms. // Prevent browsers from flickering when using CSS 3D transforms.
// Default value is `visible`, but can be changed to `hidden` // Default value is `visible`, but can be changed to `hidden`
.backface-visibility(@visibility){ .backface-visibility(@visibility) {
-webkit-backface-visibility: @visibility; -webkit-backface-visibility: @visibility;
-moz-backface-visibility: @visibility; -moz-backface-visibility: @visibility;
backface-visibility: @visibility; backface-visibility: @visibility;

View file

@ -79,7 +79,7 @@
.modal-header { .modal-header {
padding: @modal-title-padding; padding: @modal-title-padding;
border-bottom: 1px solid @modal-header-border-color; border-bottom: 1px solid @modal-header-border-color;
min-height: (@modal-title-padding + @modal-title-line-height); &:extend(.clearfix all);
} }
// Close icon // Close icon
.modal-header .close { .modal-header .close {

View file

@ -40,7 +40,7 @@
> li > span { > li > span {
&:hover, &:hover,
&:focus { &:focus {
z-index: 3; z-index: 2;
color: @pagination-hover-color; color: @pagination-hover-color;
background-color: @pagination-hover-bg; background-color: @pagination-hover-bg;
border-color: @pagination-hover-border; border-color: @pagination-hover-border;
@ -52,7 +52,7 @@
&, &,
&:hover, &:hover,
&:focus { &:focus {
z-index: 2; z-index: 3;
color: @pagination-active-color; color: @pagination-active-color;
background-color: @pagination-active-bg; background-color: @pagination-active-bg;
border-color: @pagination-active-border; border-color: @pagination-active-border;

View file

@ -214,7 +214,7 @@
} }
// Collapsable panels (aka, accordion) // Collapsible panels (aka, accordion)
// //
// Wrap a series of panels in `.panel-group` to turn them into an accordion with // Wrap a series of panels in `.panel-group` to turn them into an accordion with
// the help of our collapse JavaScript plugin. // the help of our collapse JavaScript plugin.

View file

@ -120,7 +120,7 @@ hr {
// Only display content to screen readers // Only display content to screen readers
// //
// See: http://a11yproject.com/posts/how-to-hide-content/ // See: http://a11yproject.com/posts/how-to-hide-content
.sr-only { .sr-only {
position: absolute; position: absolute;

View file

@ -1,6 +1,6 @@
/*! /*!
* Bootstrap v3.3.5 (http://getbootstrap.com) * Bootstrap v3.3.7 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/ */

View file

@ -211,7 +211,7 @@ dd {
&:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present
} }
@media (min-width: @grid-float-breakpoint) { @media (min-width: @dl-horizontal-breakpoint) {
dt { dt {
float: left; float: left;
width: (@dl-horizontal-offset - 20); width: (@dl-horizontal-offset - 20);

View file

@ -111,7 +111,7 @@
//** Global background color for active items (e.g., navs or dropdowns). //** Global background color for active items (e.g., navs or dropdowns).
@component-active-bg: @brand-primary; @component-active-bg: @brand-primary;
//** Width of the `border` for generating carets that indicator dropdowns. //** Width of the `border` for generating carets that indicate dropdowns.
@caret-width-base: 4px; @caret-width-base: 4px;
//** Carets increase slightly in size for larger components. //** Carets increase slightly in size for larger components.
@caret-width-large: 5px; @caret-width-large: 5px;
@ -863,5 +863,7 @@
@page-header-border-color: @gray-lighter; @page-header-border-color: @gray-lighter;
//** Width of horizontal description list titles //** Width of horizontal description list titles
@dl-horizontal-offset: @component-offset-horizontal; @dl-horizontal-offset: @component-offset-horizontal;
//** Point at which .dl-horizontal becomes horizontal
@dl-horizontal-breakpoint: @grid-float-breakpoint;
//** Horizontal line color. //** Horizontal line color.
@hr-border: @gray-lighter; @hr-border: @gray-lighter;

View file

@ -0,0 +1,8 @@
$nuget = $env:NuGet
# parse the version number out of package.json
$bsversion = ((Get-Content $env:SourcesPath\package.json) -join "`n" | ConvertFrom-Json).version
# create packages
& $nuget pack "nuget\bootstrap.nuspec" -Verbosity detailed -NonInteractive -NoPackageAnalysis -BasePath $env:SourcesPath -Version $bsversion
& $nuget pack "nuget\bootstrap.less.nuspec" -Verbosity detailed -NonInteractive -NoPackageAnalysis -BasePath $env:SourcesPath -Version $bsversion

View file

@ -0,0 +1,28 @@
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>bootstrap.less</id>
<version>3.3.7</version>
<title>Bootstrap Less</title>
<authors>Twitter, Inc.</authors>
<owners>bootstrap</owners>
<description>The most popular front-end framework for developing responsive, mobile first projects on the web.</description>
<releaseNotes>http://blog.getbootstrap.com</releaseNotes>
<summary>Bootstrap framework in Less. Includes fonts and JavaScript</summary>
<language>en-us</language>
<projectUrl>http://getbootstrap.com</projectUrl>
<iconUrl>http://getbootstrap.com/apple-touch-icon.png</iconUrl>
<licenseUrl>https://github.com/twbs/bootstrap/blob/master/LICENSE</licenseUrl>
<copyright>Copyright 2016</copyright>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<dependencies>
<dependency id="jQuery" version="[1.9.1,4)" />
</dependencies>
<tags>css js less mobile-first responsive front-end framework web</tags>
</metadata>
<files>
<file src="less\**\*.less" target="content\Content\bootstrap" />
<file src="fonts\*.*" target="content\Content\fonts" />
<file src="dist\js\bootstrap*.js" target="content\Scripts" />
</files>
</package>

View file

@ -0,0 +1,28 @@
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>bootstrap</id>
<version>3.3.7</version>
<title>Bootstrap CSS</title>
<authors>Twitter, Inc.</authors>
<owners>bootstrap</owners>
<description>The most popular front-end framework for developing responsive, mobile first projects on the web.</description>
<releaseNotes>http://blog.getbootstrap.com</releaseNotes>
<summary>Bootstrap framework in CSS. Includes fonts and JavaScript</summary>
<language>en-us</language>
<projectUrl>http://getbootstrap.com</projectUrl>
<iconUrl>http://getbootstrap.com/apple-touch-icon.png</iconUrl>
<licenseUrl>https://github.com/twbs/bootstrap/blob/master/LICENSE</licenseUrl>
<copyright>Copyright 2016</copyright>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<dependencies>
<dependency id="jQuery" version="[1.9.1,4)" />
</dependencies>
<tags>css js less mobile-first responsive front-end framework web</tags>
</metadata>
<files>
<file src="dist\css\*.*" target="content\Content" />
<file src="dist\fonts\*.*" target="content\fonts" />
<file src="dist\js\bootstrap*.js" target="content\Scripts" />
</files>
</package>

View file

@ -6,19 +6,26 @@
Package.describe({ Package.describe({
name: 'twbs:bootstrap', // http://atmospherejs.com/twbs/bootstrap name: 'twbs:bootstrap', // http://atmospherejs.com/twbs/bootstrap
summary: 'The most popular front-end framework for developing responsive, mobile first projects on the web.', summary: 'The most popular front-end framework for developing responsive, mobile first projects on the web.',
version: '3.3.5', version: '3.3.7',
git: 'https://github.com/twbs/bootstrap.git' git: 'https://github.com/twbs/bootstrap.git'
}); });
Package.onUse(function (api) { Package.onUse(function (api) {
api.versionsFrom('METEOR@1.0'); api.versionsFrom('METEOR@1.0');
api.use('jquery', 'client'); api.use('jquery', 'client');
api.addFiles([ var assets = [
'dist/fonts/glyphicons-halflings-regular.eot', 'dist/fonts/glyphicons-halflings-regular.eot',
'dist/fonts/glyphicons-halflings-regular.svg', 'dist/fonts/glyphicons-halflings-regular.svg',
'dist/fonts/glyphicons-halflings-regular.ttf', 'dist/fonts/glyphicons-halflings-regular.ttf',
'dist/fonts/glyphicons-halflings-regular.woff', 'dist/fonts/glyphicons-halflings-regular.woff',
'dist/fonts/glyphicons-halflings-regular.woff2', 'dist/fonts/glyphicons-halflings-regular.woff2'
];
if (api.addAssets) {
api.addAssets(assets, 'client');
} else {
api.addFiles(assets, 'client', { isAsset: true });
}
api.addFiles([
'dist/css/bootstrap.css', 'dist/css/bootstrap.css',
'dist/js/bootstrap.js' 'dist/js/bootstrap.js'
], 'client'); ], 'client');

View file

@ -1,7 +1,7 @@
{ {
"name": "bootstrap", "name": "bootstrap",
"description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
"version": "3.3.5", "version": "3.3.7",
"keywords": [ "keywords": [
"css", "css",
"less", "less",
@ -14,6 +14,8 @@
"homepage": "http://getbootstrap.com", "homepage": "http://getbootstrap.com",
"author": "Twitter, Inc.", "author": "Twitter, Inc.",
"scripts": { "scripts": {
"change-version": "node grunt/change-version.js",
"update-shrinkwrap": "npm shrinkwrap --dev && shx mv ./npm-shrinkwrap.json ./grunt/npm-shrinkwrap.json",
"test": "grunt test" "test": "grunt test"
}, },
"style": "dist/css/bootstrap.css", "style": "dist/css/bootstrap.css",
@ -29,34 +31,34 @@
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"btoa": "~1.1.2", "btoa": "~1.1.2",
"glob": "~5.0.5", "glob": "~7.0.3",
"grunt": "~0.4.5", "grunt": "~1.0.1",
"grunt-autoprefixer": "~3.0.0", "grunt-autoprefixer": "~3.0.4",
"grunt-contrib-clean": "~0.6.0", "grunt-contrib-clean": "~1.0.0",
"grunt-contrib-compress": "~0.13.0", "grunt-contrib-compress": "~1.3.0",
"grunt-contrib-concat": "~0.5.1", "grunt-contrib-concat": "~1.0.0",
"grunt-contrib-connect": "~0.10.1", "grunt-contrib-connect": "~1.0.0",
"grunt-contrib-copy": "~0.8.0", "grunt-contrib-copy": "~1.0.0",
"grunt-contrib-csslint": "~0.4.0", "grunt-contrib-csslint": "~1.0.0",
"grunt-contrib-cssmin": "~0.12.3", "grunt-contrib-cssmin": "~1.0.0",
"grunt-contrib-htmlmin": "~0.4.0", "grunt-contrib-htmlmin": "~1.5.0",
"grunt-contrib-jade": "~0.14.1", "grunt-contrib-jshint": "~1.0.0",
"grunt-contrib-jshint": "~0.11.2", "grunt-contrib-less": "~1.3.0",
"grunt-contrib-less": "~1.0.1", "grunt-contrib-pug": "~1.0.0",
"grunt-contrib-qunit": "~0.7.0", "grunt-contrib-qunit": "~0.7.0",
"grunt-contrib-uglify": "~0.9.1", "grunt-contrib-uglify": "~1.0.0",
"grunt-contrib-watch": "~0.6.1", "grunt-contrib-watch": "~1.0.0",
"grunt-csscomb": "~3.0.0", "grunt-csscomb": "~3.1.0",
"grunt-exec": "~0.4.6", "grunt-exec": "~1.0.0",
"grunt-html": "~4.0.3", "grunt-html": "~8.0.1",
"grunt-jekyll": "~0.4.2", "grunt-jekyll": "~0.4.4",
"grunt-jscs": "~1.8.0", "grunt-jscs": "~3.0.1",
"grunt-saucelabs": "~8.6.1", "grunt-saucelabs": "~9.0.0",
"grunt-sed": "twbs/grunt-sed#v0.2.0", "load-grunt-tasks": "~3.5.0",
"load-grunt-tasks": "~3.2.0", "markdown-it": "^7.0.0",
"markdown-it": "^4.2.1", "shelljs": "^0.7.0",
"npm-shrinkwrap": "^200.4.0", "shx": "^0.1.2",
"time-grunt": "^1.2.0" "time-grunt": "^1.3.0"
}, },
"engines": { "engines": {
"node": ">=0.10.1" "node": ">=0.10.1"

View file

@ -1,5 +1,5 @@
/** /**
* matchesSelector v2.0.1 * matchesSelector v2.0.2
* matchesSelector( element, '.selector' ) * matchesSelector( element, '.selector' )
* MIT license * MIT license
*/ */
@ -25,7 +25,7 @@
'use strict'; 'use strict';
var matchesMethod = ( function() { var matchesMethod = ( function() {
var ElemProto = Element.prototype; var ElemProto = window.Element.prototype;
// check for the standard method name first // check for the standard method name first
if ( ElemProto.matches ) { if ( ElemProto.matches ) {
return 'matches'; return 'matches';

View file

@ -17,7 +17,7 @@ MyClass.prototype = Object.create( EvEmitter.prototype );
_.extend( MyClass.prototype, EvEmitter.prototype ); _.extend( MyClass.prototype, EvEmitter.prototype );
// single instance // single instance
var emitter = new EventEmitter(); var emitter = new EvEmitter();
``` ```
### on ### on
@ -58,6 +58,14 @@ emitter.emitEvent( eventName, args )
+ `eventName` - _String_ - name of the event + `eventName` - _String_ - name of the event
+ `args` - _Array_ - arguments passed to listeners + `args` - _Array_ - arguments passed to listeners
### allOff
Removes all event listeners.
``` js
emitter.allOff()
```
## Code example ## Code example
``` js ``` js

View file

@ -23,6 +23,7 @@
"bower_components", "bower_components",
"test", "test",
"tests", "tests",
"sandbox" "sandbox",
"package.json"
] ]
} }

View file

@ -1,5 +1,5 @@
/** /**
* EvEmitter v1.0.3 * EvEmitter v1.1.0
* Lil' event emitter * Lil' event emitter
* MIT License * MIT License
*/ */
@ -79,13 +79,14 @@ proto.emitEvent = function( eventName, args ) {
if ( !listeners || !listeners.length ) { if ( !listeners || !listeners.length ) {
return; return;
} }
var i = 0; // copy over to avoid interference if .off() in listener
var listener = listeners[i]; listeners = listeners.slice(0);
args = args || []; args = args || [];
// once stuff // once stuff
var onceListeners = this._onceEvents && this._onceEvents[ eventName ]; var onceListeners = this._onceEvents && this._onceEvents[ eventName ];
while ( listener ) { for ( var i=0; i < listeners.length; i++ ) {
var listener = listeners[i]
var isOnce = onceListeners && onceListeners[ listener ]; var isOnce = onceListeners && onceListeners[ listener ];
if ( isOnce ) { if ( isOnce ) {
// remove listener // remove listener
@ -96,14 +97,16 @@ proto.emitEvent = function( eventName, args ) {
} }
// trigger listener // trigger listener
listener.apply( this, args ); listener.apply( this, args );
// get next listener
i += isOnce ? 0 : 1;
listener = listeners[i];
} }
return this; return this;
}; };
proto.allOff = function() {
delete this._events;
delete this._onceEvents;
};
return EvEmitter; return EvEmitter;
})); }));

View file

@ -1,27 +0,0 @@
{
"name": "ev-emitter",
"version": "1.0.3",
"description": "lil' event emitter",
"main": "ev-emitter.js",
"scripts": {
"test": "mocha test/test"
},
"repository": {
"type": "git",
"url": "git+https://github.com/metafizzy/ev-emitter.git"
},
"keywords": [
"event",
"emitter",
"pubsub"
],
"author": "David DeSandro",
"license": "MIT",
"bugs": {
"url": "https://github.com/metafizzy/ev-emitter/issues"
},
"homepage": "https://github.com/metafizzy/ev-emitter#readme",
"directories": {
"test": "test"
}
}

View file

@ -6,7 +6,7 @@
"description": "UI utilities", "description": "UI utilities",
"main": "utils.js", "main": "utils.js",
"dependencies": { "dependencies": {
"desandro-matches-selector": "~2.0.0" "desandro-matches-selector": "^2.0.0"
}, },
"moduleType": [ "moduleType": [
"amd", "amd",

View file

@ -1,5 +1,5 @@
/** /**
* Fizzy UI utils v2.0.3 * Fizzy UI utils v2.0.7
* MIT license * MIT license
*/ */
@ -54,22 +54,27 @@ utils.modulo = function( num, div ) {
// ----- makeArray ----- // // ----- makeArray ----- //
var arraySlice = Array.prototype.slice;
// turn element or nodeList into an array // turn element or nodeList into an array
utils.makeArray = function( obj ) { utils.makeArray = function( obj ) {
var ary = [];
if ( Array.isArray( obj ) ) { if ( Array.isArray( obj ) ) {
// use object if already an array // use object if already an array
ary = obj; return obj;
} else if ( obj && typeof obj.length == 'number' ) {
// convert nodeList to array
for ( var i=0; i < obj.length; i++ ) {
ary.push( obj[i] );
}
} else {
// array of single index
ary.push( obj );
} }
return ary; // return empty array if undefined or null. #6
if ( obj === null || obj === undefined ) {
return [];
}
var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';
if ( isArrayLike ) {
// convert nodeList to array
return arraySlice.call( obj );
}
// array of single index
return [ obj ];
}; };
// ----- removeFrom ----- // // ----- removeFrom ----- //
@ -84,7 +89,7 @@ utils.removeFrom = function( ary, obj ) {
// ----- getParent ----- // // ----- getParent ----- //
utils.getParent = function( elem, selector ) { utils.getParent = function( elem, selector ) {
while ( elem != document.body ) { while ( elem.parentNode && elem != document.body ) {
elem = elem.parentNode; elem = elem.parentNode;
if ( matchesSelector( elem, selector ) ) { if ( matchesSelector( elem, selector ) ) {
return elem; return elem;
@ -148,22 +153,21 @@ utils.filterFindElements = function( elems, selector ) {
// ----- debounceMethod ----- // // ----- debounceMethod ----- //
utils.debounceMethod = function( _class, methodName, threshold ) { utils.debounceMethod = function( _class, methodName, threshold ) {
threshold = threshold || 100;
// original method // original method
var method = _class.prototype[ methodName ]; var method = _class.prototype[ methodName ];
var timeoutName = methodName + 'Timeout'; var timeoutName = methodName + 'Timeout';
_class.prototype[ methodName ] = function() { _class.prototype[ methodName ] = function() {
var timeout = this[ timeoutName ]; var timeout = this[ timeoutName ];
if ( timeout ) { clearTimeout( timeout );
clearTimeout( timeout );
}
var args = arguments;
var args = arguments;
var _this = this; var _this = this;
this[ timeoutName ] = setTimeout( function() { this[ timeoutName ] = setTimeout( function() {
method.apply( _this, args ); method.apply( _this, args );
delete _this[ timeoutName ]; delete _this[ timeoutName ];
}, threshold || 100 ); }, threshold );
}; };
}; };

View file

@ -1,25 +1,33 @@
# getSize # getSize
Get the size of elements. Get the size of elements. Used in [Masonry](https://masonry.desandro.com), [Isotope](https://isotope.metafizzy.co), & [Flickity](https://flickity.metafizzy.co).
``` js ``` js
var size = getSize( elem ); var size = getSize( elem );
// elem can be an element // elem can be an element
var size = getSize( document.querySelector('#selector') ) var size = getSize( document.querySelector('.selector') )
// elem can be a string, used as a query selector // elem can be a selector string
var size = getSize('#selector') var size = getSize('.selector')
``` ```
Returns an object with: `width`, `height`, `innerWidth/Height`, `outerWidth/Height`, `paddingLeft/Top/Right/Bottom`, `marginLeft/Top/Right/Bottom`, `borderLeft/Top/Right/BottomWidth` and `isBorderBox`. Returns an object with:
+ width, height
+ innerWidth, innerHeight
+ outerWidth, outerHeight
+ paddingLeft, paddingTop, paddingRight, paddingBottom
+ marginLeft, marginTop, marginRight, marginBottom
+ borderLeftWidth, borderTopWidth, borderRightWidth, borderBottomWidth
+ isBorderBox
Browser support: IE10+, Android 4.0+, iOS 5+, and modern browsers Browser support: IE10+, Android 4.0+, iOS 5+, and modern browsers
## Install ## Install
Install with [Bower](http://bower.io): `bower install get-size`
Install with npm: `npm install get-size` Install with npm: `npm install get-size`
Install with [Bower](https://bower.io): `bower install get-size`
## Firefox hidden iframe bug ## Firefox hidden iframe bug
[Firefox has an old bug](https://bugzilla.mozilla.org/show_bug.cgi?id=548397) that occurs within iframes that are hidden with `display: none`. To resolve this, you can use alternate CSS to hide the iframe off-screen, with out `display: none`. [Firefox has an old bug](https://bugzilla.mozilla.org/show_bug.cgi?id=548397) that occurs within iframes that are hidden with `display: none`. To resolve this, you can use alternate CSS to hide the iframe off-screen, with out `display: none`.
@ -34,4 +42,4 @@ Install with npm: `npm install get-size`
## MIT License ## MIT License
getSize is released under the [MIT License](http://desandro.mit-license.org/). getSize is released under the [MIT License](https://desandro.mit-license.org/).

View file

@ -1,15 +1,17 @@
{ {
"name": "get-size", "name": "get-size",
"version": "2.0.2",
"main": "get-size.js",
"description": "measures element size", "description": "measures element size",
"dependencies": { "main": "get-size.js",
}, "authors": [
"devDependencies": { "David DeSandro"
"qunit": "~1.10" ],
}, "license": "MIT",
"keywords": [
"size",
"DOM"
],
"homepage": "https://github.com/desandro/get-size",
"ignore": [ "ignore": [
"test/",
"**/.*", "**/.*",
"package.json", "package.json",
"node_modules", "node_modules",
@ -17,21 +19,5 @@
"test", "test",
"tests", "tests",
"sandbox.html" "sandbox.html"
], ]
"homepage": "https://github.com/desandro/get-size",
"authors": [
"David DeSandro <desandrocodes@gmail.com>"
],
"moduleType": [
"amd",
"globals",
"node"
],
"keywords": [
"size",
"dom",
"width",
"height"
],
"license": "MIT"
} }

View file

@ -1,20 +1,17 @@
/*! /*!
* getSize v2.0.2 * getSize v2.0.3
* measure size of elements * measure size of elements
* MIT license * MIT license
*/ */
/*jshint browser: true, strict: true, undef: true, unused: true */ /* jshint browser: true, strict: true, undef: true, unused: true */
/*global define: false, module: false, console: false */ /* globals console: false */
( function( window, factory ) { ( function( window, factory ) {
'use strict'; /* jshint strict: false */ /* globals define, module */
if ( typeof define == 'function' && define.amd ) { if ( typeof define == 'function' && define.amd ) {
// AMD // AMD
define( function() { define( factory );
return factory();
});
} else if ( typeof module == 'object' && module.exports ) { } else if ( typeof module == 'object' && module.exports ) {
// CommonJS // CommonJS
module.exports = factory(); module.exports = factory();
@ -89,7 +86,7 @@ function getStyle( elem ) {
if ( !style ) { if ( !style ) {
logError( 'Style returned ' + style + logError( 'Style returned ' + style +
'. Are you running this code in a hidden iframe on Firefox? ' + '. Are you running this code in a hidden iframe on Firefox? ' +
'See http://bit.ly/getsizebug1' ); 'See https://bit.ly/getsizebug1' );
} }
return style; return style;
} }
@ -115,8 +112,8 @@ function setup() {
// -------------------------- box sizing -------------------------- // // -------------------------- box sizing -------------------------- //
/** /**
* WebKit measures the outer-width on style.width on border-box elems * Chrome & Safari measure the outer-width on style.width on border-box elems
* IE & Firefox<29 measures the inner-width * IE11 & Firefox<29 measures the inner-width
*/ */
var div = document.createElement('div'); var div = document.createElement('div');
div.style.width = '200px'; div.style.width = '200px';
@ -128,10 +125,11 @@ function setup() {
var body = document.body || document.documentElement; var body = document.body || document.documentElement;
body.appendChild( div ); body.appendChild( div );
var style = getStyle( div ); var style = getStyle( div );
// round value for browser zoom. desandro/masonry#928
isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;
getSize.isBoxSizeOuter = isBoxSizeOuter;
getSize.isBoxSizeOuter = isBoxSizeOuter = getStyleSize( style.width ) == 200;
body.removeChild( div ); body.removeChild( div );
} }
// -------------------------- getSize -------------------------- // // -------------------------- getSize -------------------------- //

View file

@ -6,6 +6,9 @@ See demo and documentation at the [project page](http://johnpolacek.github.io/im
Requires imagesLoaded - https://github.com/desandro/imagesloaded Requires imagesLoaded - https://github.com/desandro/imagesloaded
For a jQuery-free version of this plugin, go to:
https://github.com/StudioThick/imagefill.js
* * * * * *
#### follow [@johnpolacek](https://twitter.com/johnpolacek) #### follow [@johnpolacek](https://twitter.com/johnpolacek)
* * * * * *

View file

@ -2,42 +2,42 @@
_Filter & sort magical layouts_ _Filter & sort magical layouts_
See [isotope.metafizzy.co](http://isotope.metafizzy.co) for complete docs and demos. See [isotope.metafizzy.co](https://isotope.metafizzy.co) for complete docs and demos.
## Install ## Install
### Download ### Download
+ [isotope.pkgd.js](https://npmcdn.com/isotope-layout@3/dist/isotope.pkgd.js) un-minified, or + [isotope.pkgd.js](https://unpkg.com/isotope-layout@3/dist/isotope.pkgd.js) un-minified, or
+ [isotope.pkgd.min.js](https://npmcdn.com/isotope-layout@3/dist/isotope.pkgd.min.js) minified + [isotope.pkgd.min.js](https://unpkg.com/isotope-layout@3/dist/isotope.pkgd.min.js) minified
### CDN ### CDN
Link directly to Isotope files on [npmcdn](https://npmcdn.com). Link directly to Isotope files on [unpkg](https://unpkg.com).
``` html ``` html
<script src="https://npmcdn.com/isotope-layout@3.0/dist/isotope.pkgd.min.js"></script> <script src="https://unpkg.com/isotope-layout@3/dist/isotope.pkgd.min.js"></script>
<!-- or --> <!-- or -->
<script src="https://npmcdn.com/isotope-layout@3.0/dist/isotope.pkgd.js"></script> <script src="https://unpkg.com/isotope-layout@3/dist/isotope.pkgd.js"></script>
``` ```
### Package managers ### Package managers
npm: `npm install isotope-layout --save` npm: `npm install isotope-layout --save`
Bower: `bower install isotope --save` Bower: `bower install isotope-layout --save`
## License ## License
### Commercial license ### Commercial license
If you want to use Isotope to develop commercial sites, themes, projects, and applications, the Commercial license is the appropriate license. With this option, your source code is kept proprietary. Purchase an Isotope Commercial License at [isotope.metafizzy.co](http://isotope.metafizzy.co/#commercial-license) If you want to use Isotope to develop commercial sites, themes, projects, and applications, the Commercial license is the appropriate license. With this option, your source code is kept proprietary. Purchase an Isotope Commercial License at [isotope.metafizzy.co](https://isotope.metafizzy.co/#commercial-license)
### Open source license ### Open source license
If you are creating an open source application under a license compatible with the [GNU GPL license v3](https://www.gnu.org/licenses/gpl-3.0.html), you may use Isotope under the terms of the GPLv3. If you are creating an open source application under a license compatible with the [GNU GPL license v3](https://www.gnu.org/licenses/gpl-3.0.html), you may use Isotope under the terms of the GPLv3.
[Read more about Isotope's license](http://isotope.metafizzy.co/license.html). [Read more about Isotope's license](https://isotope.metafizzy.co/license.html).
## Initialize ## Initialize
@ -82,4 +82,4 @@ Add a `data-isotope` attribute to your element. Options can be set in JSON in th
* * * * * *
By [Metafizzy](http://metafizzy.co), 20102016 By [Metafizzy 🌈🐻](https://metafizzy.co), 20102018

View file

@ -1,18 +1,18 @@
{ {
"name": "isotope", "name": "isotope-layout",
"description": "Filter and sort magical layouts", "description": "Filter and sort magical layouts",
"main": "js/isotope.js", "main": "js/isotope.js",
"dependencies": { "dependencies": {
"desandro-matches-selector": "^2.0.0", "desandro-matches-selector": "^2.0.0",
"fizzy-ui-utils": "^2.0.0", "fizzy-ui-utils": "^2.0.4",
"get-size": "^2.0.0", "get-size": "^2.0.0",
"masonry": "^4.1.0", "masonry-layout": "^4.1.0",
"outlayer": "^2.1.0" "outlayer": "^2.1.0"
}, },
"devDependencies": { "devDependencies": {
"jquery": "2 < 4", "jquery": "^3.3.1",
"jquery-bridget": "^2", "jquery-bridget": "^2",
"qunit": "^1.15" "qunit": "^2.6.0"
}, },
"ignore": [ "ignore": [
"test/", "test/",
@ -25,7 +25,7 @@
"test", "test",
"tests" "tests"
], ],
"homepage": "http://isotope.metafizzy.co", "homepage": "https://isotope.metafizzy.co",
"authors": [ "authors": [
"David DeSandro" "David DeSandro"
], ],

View file

@ -1,29 +1,28 @@
/*! /*!
* Isotope PACKAGED v3.0.1 * Isotope PACKAGED v3.0.6
* *
* Licensed GPLv3 for open source use * Licensed GPLv3 for open source use
* or Isotope Commercial License for commercial use * or Isotope Commercial License for commercial use
* *
* http://isotope.metafizzy.co * https://isotope.metafizzy.co
* Copyright 2016 Metafizzy * Copyright 2010-2018 Metafizzy
*/ */
/** /**
* Bridget makes jQuery widgets * Bridget makes jQuery widgets
* v2.0.0 * v2.0.1
* MIT license * MIT license
*/ */
/* jshint browser: true, strict: true, undef: true, unused: true */ /* jshint browser: true, strict: true, undef: true, unused: true */
( function( window, factory ) { ( function( window, factory ) {
'use strict'; // universal module definition
/* globals define: false, module: false, require: false */ /*jshint strict: false */ /* globals define, module, require */
if ( typeof define == 'function' && define.amd ) { if ( typeof define == 'function' && define.amd ) {
// AMD // AMD
define( 'jquery-bridget/jquery-bridget',[ 'jquery' ], function( jQuery ) { define( 'jquery-bridget/jquery-bridget',[ 'jquery' ], function( jQuery ) {
factory( window, jQuery ); return factory( window, jQuery );
}); });
} else if ( typeof module == 'object' && module.exports ) { } else if ( typeof module == 'object' && module.exports ) {
// CommonJS // CommonJS
@ -154,7 +153,7 @@ return jQueryBridget;
})); }));
/** /**
* EvEmitter v1.0.3 * EvEmitter v1.1.0
* Lil' event emitter * Lil' event emitter
* MIT License * MIT License
*/ */
@ -234,13 +233,14 @@ proto.emitEvent = function( eventName, args ) {
if ( !listeners || !listeners.length ) { if ( !listeners || !listeners.length ) {
return; return;
} }
var i = 0; // copy over to avoid interference if .off() in listener
var listener = listeners[i]; listeners = listeners.slice(0);
args = args || []; args = args || [];
// once stuff // once stuff
var onceListeners = this._onceEvents && this._onceEvents[ eventName ]; var onceListeners = this._onceEvents && this._onceEvents[ eventName ];
while ( listener ) { for ( var i=0; i < listeners.length; i++ ) {
var listener = listeners[i]
var isOnce = onceListeners && onceListeners[ listener ]; var isOnce = onceListeners && onceListeners[ listener ];
if ( isOnce ) { if ( isOnce ) {
// remove listener // remove listener
@ -251,35 +251,34 @@ proto.emitEvent = function( eventName, args ) {
} }
// trigger listener // trigger listener
listener.apply( this, args ); listener.apply( this, args );
// get next listener
i += isOnce ? 0 : 1;
listener = listeners[i];
} }
return this; return this;
}; };
proto.allOff = function() {
delete this._events;
delete this._onceEvents;
};
return EvEmitter; return EvEmitter;
})); }));
/*! /*!
* getSize v2.0.2 * getSize v2.0.3
* measure size of elements * measure size of elements
* MIT license * MIT license
*/ */
/*jshint browser: true, strict: true, undef: true, unused: true */ /* jshint browser: true, strict: true, undef: true, unused: true */
/*global define: false, module: false, console: false */ /* globals console: false */
( function( window, factory ) { ( function( window, factory ) {
'use strict'; /* jshint strict: false */ /* globals define, module */
if ( typeof define == 'function' && define.amd ) { if ( typeof define == 'function' && define.amd ) {
// AMD // AMD
define( 'get-size/get-size',[],function() { define( 'get-size/get-size',factory );
return factory();
});
} else if ( typeof module == 'object' && module.exports ) { } else if ( typeof module == 'object' && module.exports ) {
// CommonJS // CommonJS
module.exports = factory(); module.exports = factory();
@ -354,7 +353,7 @@ function getStyle( elem ) {
if ( !style ) { if ( !style ) {
logError( 'Style returned ' + style + logError( 'Style returned ' + style +
'. Are you running this code in a hidden iframe on Firefox? ' + '. Are you running this code in a hidden iframe on Firefox? ' +
'See http://bit.ly/getsizebug1' ); 'See https://bit.ly/getsizebug1' );
} }
return style; return style;
} }
@ -380,8 +379,8 @@ function setup() {
// -------------------------- box sizing -------------------------- // // -------------------------- box sizing -------------------------- //
/** /**
* WebKit measures the outer-width on style.width on border-box elems * Chrome & Safari measure the outer-width on style.width on border-box elems
* IE & Firefox<29 measures the inner-width * IE11 & Firefox<29 measures the inner-width
*/ */
var div = document.createElement('div'); var div = document.createElement('div');
div.style.width = '200px'; div.style.width = '200px';
@ -393,10 +392,11 @@ function setup() {
var body = document.body || document.documentElement; var body = document.body || document.documentElement;
body.appendChild( div ); body.appendChild( div );
var style = getStyle( div ); var style = getStyle( div );
// round value for browser zoom. desandro/masonry#928
isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;
getSize.isBoxSizeOuter = isBoxSizeOuter;
getSize.isBoxSizeOuter = isBoxSizeOuter = getStyleSize( style.width ) == 200;
body.removeChild( div ); body.removeChild( div );
} }
// -------------------------- getSize -------------------------- // // -------------------------- getSize -------------------------- //
@ -474,7 +474,7 @@ return getSize;
}); });
/** /**
* matchesSelector v2.0.1 * matchesSelector v2.0.2
* matchesSelector( element, '.selector' ) * matchesSelector( element, '.selector' )
* MIT license * MIT license
*/ */
@ -500,7 +500,7 @@ return getSize;
'use strict'; 'use strict';
var matchesMethod = ( function() { var matchesMethod = ( function() {
var ElemProto = Element.prototype; var ElemProto = window.Element.prototype;
// check for the standard method name first // check for the standard method name first
if ( ElemProto.matches ) { if ( ElemProto.matches ) {
return 'matches'; return 'matches';
@ -528,7 +528,7 @@ return getSize;
})); }));
/** /**
* Fizzy UI utils v2.0.2 * Fizzy UI utils v2.0.7
* MIT license * MIT license
*/ */
@ -583,22 +583,27 @@ utils.modulo = function( num, div ) {
// ----- makeArray ----- // // ----- makeArray ----- //
var arraySlice = Array.prototype.slice;
// turn element or nodeList into an array // turn element or nodeList into an array
utils.makeArray = function( obj ) { utils.makeArray = function( obj ) {
var ary = [];
if ( Array.isArray( obj ) ) { if ( Array.isArray( obj ) ) {
// use object if already an array // use object if already an array
ary = obj; return obj;
} else if ( obj && typeof obj.length == 'number' ) {
// convert nodeList to array
for ( var i=0; i < obj.length; i++ ) {
ary.push( obj[i] );
}
} else {
// array of single index
ary.push( obj );
} }
return ary; // return empty array if undefined or null. #6
if ( obj === null || obj === undefined ) {
return [];
}
var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';
if ( isArrayLike ) {
// convert nodeList to array
return arraySlice.call( obj );
}
// array of single index
return [ obj ];
}; };
// ----- removeFrom ----- // // ----- removeFrom ----- //
@ -613,7 +618,7 @@ utils.removeFrom = function( ary, obj ) {
// ----- getParent ----- // // ----- getParent ----- //
utils.getParent = function( elem, selector ) { utils.getParent = function( elem, selector ) {
while ( elem != document.body ) { while ( elem.parentNode && elem != document.body ) {
elem = elem.parentNode; elem = elem.parentNode;
if ( matchesSelector( elem, selector ) ) { if ( matchesSelector( elem, selector ) ) {
return elem; return elem;
@ -677,22 +682,21 @@ utils.filterFindElements = function( elems, selector ) {
// ----- debounceMethod ----- // // ----- debounceMethod ----- //
utils.debounceMethod = function( _class, methodName, threshold ) { utils.debounceMethod = function( _class, methodName, threshold ) {
threshold = threshold || 100;
// original method // original method
var method = _class.prototype[ methodName ]; var method = _class.prototype[ methodName ];
var timeoutName = methodName + 'Timeout'; var timeoutName = methodName + 'Timeout';
_class.prototype[ methodName ] = function() { _class.prototype[ methodName ] = function() {
var timeout = this[ timeoutName ]; var timeout = this[ timeoutName ];
if ( timeout ) { clearTimeout( timeout );
clearTimeout( timeout );
}
var args = arguments;
var args = arguments;
var _this = this; var _this = this;
this[ timeoutName ] = setTimeout( function() { this[ timeoutName ] = setTimeout( function() {
method.apply( _this, args ); method.apply( _this, args );
delete _this[ timeoutName ]; delete _this[ timeoutName ];
}, threshold || 100 ); }, threshold );
}; };
}; };
@ -701,7 +705,8 @@ utils.debounceMethod = function( _class, methodName, threshold ) {
utils.docReady = function( callback ) { utils.docReady = function( callback ) {
var readyState = document.readyState; var readyState = document.readyState;
if ( readyState == 'complete' || readyState == 'interactive' ) { if ( readyState == 'complete' || readyState == 'interactive' ) {
callback(); // do async to allow for other scripts to run. metafizzy/flickity#441
setTimeout( callback );
} else { } else {
document.addEventListener( 'DOMContentLoaded', callback ); document.addEventListener( 'DOMContentLoaded', callback );
} }
@ -749,7 +754,7 @@ utils.htmlInit = function( WidgetClass, namespace ) {
} }
// initialize // initialize
var instance = new WidgetClass( elem, options ); var instance = new WidgetClass( elem, options );
// make available via $().data('layoutname') // make available via $().data('namespace')
if ( jQuery ) { if ( jQuery ) {
jQuery.data( elem, namespace, instance ); jQuery.data( elem, namespace, instance );
} }
@ -899,13 +904,16 @@ proto.getPosition = function() {
var isOriginTop = this.layout._getOption('originTop'); var isOriginTop = this.layout._getOption('originTop');
var xValue = style[ isOriginLeft ? 'left' : 'right' ]; var xValue = style[ isOriginLeft ? 'left' : 'right' ];
var yValue = style[ isOriginTop ? 'top' : 'bottom' ]; var yValue = style[ isOriginTop ? 'top' : 'bottom' ];
var x = parseFloat( xValue );
var y = parseFloat( yValue );
// convert percent to pixels // convert percent to pixels
var layoutSize = this.layout.size; var layoutSize = this.layout.size;
var x = xValue.indexOf('%') != -1 ? if ( xValue.indexOf('%') != -1 ) {
( parseFloat( xValue ) / 100 ) * layoutSize.width : parseInt( xValue, 10 ); x = ( x / 100 ) * layoutSize.width;
var y = yValue.indexOf('%') != -1 ? }
( parseFloat( yValue ) / 100 ) * layoutSize.height : parseInt( yValue, 10 ); if ( yValue.indexOf('%') != -1 ) {
y = ( y / 100 ) * layoutSize.height;
}
// clean up 'auto' or other non-integer values // clean up 'auto' or other non-integer values
x = isNaN( x ) ? 0 : x; x = isNaN( x ) ? 0 : x;
y = isNaN( y ) ? 0 : y; y = isNaN( y ) ? 0 : y;
@ -968,9 +976,7 @@ proto._transitionTo = function( x, y ) {
var curX = this.position.x; var curX = this.position.x;
var curY = this.position.y; var curY = this.position.y;
var compareX = parseInt( x, 10 ); var didNotMove = x == this.position.x && y == this.position.y;
var compareY = parseInt( y, 10 );
var didNotMove = compareX === this.position.x && compareY === this.position.y;
// save end position // save end position
this.setPosition( x, y ); this.setPosition( x, y );
@ -1013,8 +1019,8 @@ proto.goTo = function( x, y ) {
proto.moveTo = proto._transitionTo; proto.moveTo = proto._transitionTo;
proto.setPosition = function( x, y ) { proto.setPosition = function( x, y ) {
this.position.x = parseInt( x, 10 ); this.position.x = parseFloat( x );
this.position.y = parseInt( y, 10 ); this.position.y = parseFloat( y );
}; };
// ----- transition ----- // // ----- transition ----- //
@ -1319,7 +1325,7 @@ return Item;
})); }));
/*! /*!
* Outlayer v2.1.0 * Outlayer v2.1.1
* the brains and guts of a layout library * the brains and guts of a layout library
* MIT license * MIT license
*/ */
@ -2267,7 +2273,7 @@ return Outlayer;
/* jshint strict: false */ /*globals define, module, require */ /* jshint strict: false */ /*globals define, module, require */
if ( typeof define == 'function' && define.amd ) { if ( typeof define == 'function' && define.amd ) {
// AMD // AMD
define( 'isotope/js/item',[ define( 'isotope-layout/js/item',[
'outlayer/outlayer' 'outlayer/outlayer'
], ],
factory ); factory );
@ -2345,7 +2351,7 @@ return Item;
/* jshint strict: false */ /*globals define, module, require */ /* jshint strict: false */ /*globals define, module, require */
if ( typeof define == 'function' && define.amd ) { if ( typeof define == 'function' && define.amd ) {
// AMD // AMD
define( 'isotope/js/layout-mode',[ define( 'isotope-layout/js/layout-mode',[
'get-size/get-size', 'get-size/get-size',
'outlayer/outlayer' 'outlayer/outlayer'
], ],
@ -2495,9 +2501,9 @@ return Item;
})); }));
/*! /*!
* Masonry v4.1.0 * Masonry v4.2.1
* Cascading grid layout library * Cascading grid layout library
* http://masonry.desandro.com * https://masonry.desandro.com
* MIT License * MIT License
* by David DeSandro * by David DeSandro
*/ */
@ -2507,7 +2513,7 @@ return Item;
/* jshint strict: false */ /*globals define, module, require */ /* jshint strict: false */ /*globals define, module, require */
if ( typeof define == 'function' && define.amd ) { if ( typeof define == 'function' && define.amd ) {
// AMD // AMD
define( 'masonry/masonry',[ define( 'masonry-layout/masonry',[
'outlayer/outlayer', 'outlayer/outlayer',
'get-size/get-size' 'get-size/get-size'
], ],
@ -2537,7 +2543,9 @@ return Item;
// isFitWidth -> fitWidth // isFitWidth -> fitWidth
Masonry.compatOptions.fitWidth = 'isFitWidth'; Masonry.compatOptions.fitWidth = 'isFitWidth';
Masonry.prototype._resetLayout = function() { var proto = Masonry.prototype;
proto._resetLayout = function() {
this.getSize(); this.getSize();
this._getMeasurement( 'columnWidth', 'outerWidth' ); this._getMeasurement( 'columnWidth', 'outerWidth' );
this._getMeasurement( 'gutter', 'outerWidth' ); this._getMeasurement( 'gutter', 'outerWidth' );
@ -2550,9 +2558,10 @@ return Item;
} }
this.maxY = 0; this.maxY = 0;
this.horizontalColIndex = 0;
}; };
Masonry.prototype.measureColumns = function() { proto.measureColumns = function() {
this.getContainerWidth(); this.getContainerWidth();
// if columnWidth is 0, default to outerWidth of first item // if columnWidth is 0, default to outerWidth of first item
if ( !this.columnWidth ) { if ( !this.columnWidth ) {
@ -2577,7 +2586,7 @@ return Item;
this.cols = Math.max( cols, 1 ); this.cols = Math.max( cols, 1 );
}; };
Masonry.prototype.getContainerWidth = function() { proto.getContainerWidth = function() {
// container is parent if fit width // container is parent if fit width
var isFitWidth = this._getOption('fitWidth'); var isFitWidth = this._getOption('fitWidth');
var container = isFitWidth ? this.element.parentNode : this.element; var container = isFitWidth ? this.element.parentNode : this.element;
@ -2587,7 +2596,7 @@ return Item;
this.containerWidth = size && size.innerWidth; this.containerWidth = size && size.innerWidth;
}; };
Masonry.prototype._getItemLayoutPosition = function( item ) { proto._getItemLayoutPosition = function( item ) {
item.getSize(); item.getSize();
// how many columns does this brick span // how many columns does this brick span
var remainder = item.size.outerWidth % this.columnWidth; var remainder = item.size.outerWidth % this.columnWidth;
@ -2595,33 +2604,41 @@ return Item;
// round if off by 1 pixel, otherwise use ceil // round if off by 1 pixel, otherwise use ceil
var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth ); var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth );
colSpan = Math.min( colSpan, this.cols ); colSpan = Math.min( colSpan, this.cols );
// use horizontal or top column position
var colGroup = this._getColGroup( colSpan ); var colPosMethod = this.options.horizontalOrder ?
// get the minimum Y value from the columns '_getHorizontalColPosition' : '_getTopColPosition';
var minimumY = Math.min.apply( Math, colGroup ); var colPosition = this[ colPosMethod ]( colSpan, item );
var shortColIndex = colGroup.indexOf( minimumY );
// position the brick // position the brick
var position = { var position = {
x: this.columnWidth * shortColIndex, x: this.columnWidth * colPosition.col,
y: minimumY y: colPosition.y
}; };
// apply setHeight to necessary columns // apply setHeight to necessary columns
var setHeight = minimumY + item.size.outerHeight; var setHeight = colPosition.y + item.size.outerHeight;
var setSpan = this.cols + 1 - colGroup.length; var setMax = colSpan + colPosition.col;
for ( var i = 0; i < setSpan; i++ ) { for ( var i = colPosition.col; i < setMax; i++ ) {
this.colYs[ shortColIndex + i ] = setHeight; this.colYs[i] = setHeight;
} }
return position; return position;
}; };
proto._getTopColPosition = function( colSpan ) {
var colGroup = this._getTopColGroup( colSpan );
// get the minimum Y value from the columns
var minimumY = Math.min.apply( Math, colGroup );
return {
col: colGroup.indexOf( minimumY ),
y: minimumY,
};
};
/** /**
* @param {Number} colSpan - number of columns the element spans * @param {Number} colSpan - number of columns the element spans
* @returns {Array} colGroup * @returns {Array} colGroup
*/ */
Masonry.prototype._getColGroup = function( colSpan ) { proto._getTopColGroup = function( colSpan ) {
if ( colSpan < 2 ) { if ( colSpan < 2 ) {
// if brick spans only one column, use all the column Ys // if brick spans only one column, use all the column Ys
return this.colYs; return this.colYs;
@ -2632,15 +2649,38 @@ return Item;
var groupCount = this.cols + 1 - colSpan; var groupCount = this.cols + 1 - colSpan;
// for each group potential horizontal position // for each group potential horizontal position
for ( var i = 0; i < groupCount; i++ ) { for ( var i = 0; i < groupCount; i++ ) {
// make an array of colY values for that one group colGroup[i] = this._getColGroupY( i, colSpan );
var groupColYs = this.colYs.slice( i, i + colSpan );
// and get the max value of the array
colGroup[i] = Math.max.apply( Math, groupColYs );
} }
return colGroup; return colGroup;
}; };
Masonry.prototype._manageStamp = function( stamp ) { proto._getColGroupY = function( col, colSpan ) {
if ( colSpan < 2 ) {
return this.colYs[ col ];
}
// make an array of colY values for that one group
var groupColYs = this.colYs.slice( col, col + colSpan );
// and get the max value of the array
return Math.max.apply( Math, groupColYs );
};
// get column position based on horizontal index. #873
proto._getHorizontalColPosition = function( colSpan, item ) {
var col = this.horizontalColIndex % this.cols;
var isOver = colSpan > 1 && col + colSpan > this.cols;
// shift to next row if item can't fit on current row
col = isOver ? 0 : col;
// don't let zero-size items take up space
var hasSize = item.size.outerWidth && item.size.outerHeight;
this.horizontalColIndex = hasSize ? col + colSpan : this.horizontalColIndex;
return {
col: col,
y: this._getColGroupY( col, colSpan ),
};
};
proto._manageStamp = function( stamp ) {
var stampSize = getSize( stamp ); var stampSize = getSize( stamp );
var offset = this._getElementOffset( stamp ); var offset = this._getElementOffset( stamp );
// get the columns that this stamp affects // get the columns that this stamp affects
@ -2663,7 +2703,7 @@ return Item;
} }
}; };
Masonry.prototype._getContainerSize = function() { proto._getContainerSize = function() {
this.maxY = Math.max.apply( Math, this.colYs ); this.maxY = Math.max.apply( Math, this.colYs );
var size = { var size = {
height: this.maxY height: this.maxY
@ -2676,7 +2716,7 @@ return Item;
return size; return size;
}; };
Masonry.prototype._getContainerFitWidth = function() { proto._getContainerFitWidth = function() {
var unusedCols = 0; var unusedCols = 0;
// count unused columns // count unused columns
var i = this.cols; var i = this.cols;
@ -2690,7 +2730,7 @@ return Item;
return ( this.cols - unusedCols ) * this.columnWidth - this.gutter; return ( this.cols - unusedCols ) * this.columnWidth - this.gutter;
}; };
Masonry.prototype.needsResizeLayout = function() { proto.needsResizeLayout = function() {
var previousWidth = this.containerWidth; var previousWidth = this.containerWidth;
this.getContainerWidth(); this.getContainerWidth();
return previousWidth != this.containerWidth; return previousWidth != this.containerWidth;
@ -2703,7 +2743,7 @@ return Item;
/*! /*!
* Masonry layout mode * Masonry layout mode
* sub-classes Masonry * sub-classes Masonry
* http://masonry.desandro.com * https://masonry.desandro.com
*/ */
( function( window, factory ) { ( function( window, factory ) {
@ -2711,9 +2751,9 @@ return Item;
/* jshint strict: false */ /*globals define, module, require */ /* jshint strict: false */ /*globals define, module, require */
if ( typeof define == 'function' && define.amd ) { if ( typeof define == 'function' && define.amd ) {
// AMD // AMD
define( 'isotope/js/layout-modes/masonry',[ define( 'isotope-layout/js/layout-modes/masonry',[
'../layout-mode', '../layout-mode',
'masonry/masonry' 'masonry-layout/masonry'
], ],
factory ); factory );
} else if ( typeof module == 'object' && module.exports ) { } else if ( typeof module == 'object' && module.exports ) {
@ -2784,7 +2824,7 @@ return Item;
/* jshint strict: false */ /*globals define, module, require */ /* jshint strict: false */ /*globals define, module, require */
if ( typeof define == 'function' && define.amd ) { if ( typeof define == 'function' && define.amd ) {
// AMD // AMD
define( 'isotope/js/layout-modes/fit-rows',[ define( 'isotope-layout/js/layout-modes/fit-rows',[
'../layout-mode' '../layout-mode'
], ],
factory ); factory );
@ -2853,7 +2893,7 @@ return FitRows;
/* jshint strict: false */ /*globals define, module, require */ /* jshint strict: false */ /*globals define, module, require */
if ( typeof define == 'function' && define.amd ) { if ( typeof define == 'function' && define.amd ) {
// AMD // AMD
define( 'isotope/js/layout-modes/vertical',[ define( 'isotope-layout/js/layout-modes/vertical',[
'../layout-mode' '../layout-mode'
], ],
factory ); factory );
@ -2900,13 +2940,13 @@ return Vertical;
})); }));
/*! /*!
* Isotope v3.0.1 * Isotope v3.0.6
* *
* Licensed GPLv3 for open source use * Licensed GPLv3 for open source use
* or Isotope Commercial License for commercial use * or Isotope Commercial License for commercial use
* *
* http://isotope.metafizzy.co * https://isotope.metafizzy.co
* Copyright 2016 Metafizzy * Copyright 2010-2018 Metafizzy
*/ */
( function( window, factory ) { ( function( window, factory ) {
@ -2919,12 +2959,12 @@ return Vertical;
'get-size/get-size', 'get-size/get-size',
'desandro-matches-selector/matches-selector', 'desandro-matches-selector/matches-selector',
'fizzy-ui-utils/utils', 'fizzy-ui-utils/utils',
'isotope/js/item', 'isotope-layout/js/item',
'isotope/js/layout-mode', 'isotope-layout/js/layout-mode',
// include default layout modes // include default layout modes
'isotope/js/layout-modes/masonry', 'isotope-layout/js/layout-modes/masonry',
'isotope/js/layout-modes/fit-rows', 'isotope-layout/js/layout-modes/fit-rows',
'isotope/js/layout-modes/vertical' 'isotope-layout/js/layout-modes/vertical'
], ],
function( Outlayer, getSize, matchesSelector, utils, Item, LayoutMode ) { function( Outlayer, getSize, matchesSelector, utils, Item, LayoutMode ) {
return factory( window, Outlayer, getSize, matchesSelector, utils, Item, LayoutMode ); return factory( window, Outlayer, getSize, matchesSelector, utils, Item, LayoutMode );
@ -2937,12 +2977,12 @@ return Vertical;
require('get-size'), require('get-size'),
require('desandro-matches-selector'), require('desandro-matches-selector'),
require('fizzy-ui-utils'), require('fizzy-ui-utils'),
require('isotope/js/item'), require('isotope-layout/js/item'),
require('isotope/js/layout-mode'), require('isotope-layout/js/layout-mode'),
// include default layout modes // include default layout modes
require('isotope/js/layout-modes/masonry'), require('isotope-layout/js/layout-modes/masonry'),
require('isotope/js/layout-modes/fit-rows'), require('isotope-layout/js/layout-modes/fit-rows'),
require('isotope/js/layout-modes/vertical') require('isotope-layout/js/layout-modes/vertical')
); );
} else { } else {
// browser global // browser global
@ -3303,20 +3343,28 @@ var trim = String.prototype.trim ?
// sort filteredItem order // sort filteredItem order
proto._sort = function() { proto._sort = function() {
var sortByOpt = this.options.sortBy; if ( !this.options.sortBy ) {
if ( !sortByOpt ) {
return; return;
} }
// concat all sortBy and sortHistory
var sortBys = [].concat.apply( sortByOpt, this.sortHistory );
// sort magic
var itemSorter = getItemSorter( sortBys, this.options.sortAscending );
this.filteredItems.sort( itemSorter );
// keep track of sortBy History // keep track of sortBy History
if ( sortByOpt != this.sortHistory[0] ) { var sortBys = utils.makeArray( this.options.sortBy );
// add to front, oldest goes in last if ( !this._getIsSameSortBy( sortBys ) ) {
this.sortHistory.unshift( sortByOpt ); // concat all sortBy and sortHistory, add to front, oldest goes in last
this.sortHistory = sortBys.concat( this.sortHistory );
} }
// sort magic
var itemSorter = getItemSorter( this.sortHistory, this.options.sortAscending );
this.filteredItems.sort( itemSorter );
};
// check if sortBys is same as start of sortHistory
proto._getIsSameSortBy = function( sortBys ) {
for ( var i=0; i < sortBys.length; i++ ) {
if ( sortBys[i] != this.sortHistory[i] ) {
return false;
}
}
return true;
}; };
// returns a function used for sorting // returns a function used for sorting

File diff suppressed because one or more lines are too long

View file

@ -56,7 +56,7 @@ function addBanner( str ) {
var rjsOptimize = require('gulp-requirejs-optimize'); var rjsOptimize = require('gulp-requirejs-optimize');
gulp.task( 'requirejs', function() { gulp.task( 'requirejs', function() {
var definitionRE = /define\(\s*'isotope\/isotope'(.|\n)+\],/; var definitionRE = /define\(\s*'isotope\-layout\/\js\/isotope'(.|\n)+\],/;
var banner = getBanner(); var banner = getBanner();
// HACK src is not needed // HACK src is not needed
// should refactor rjsOptimize to produce src // should refactor rjsOptimize to produce src
@ -66,21 +66,20 @@ gulp.task( 'requirejs', function() {
optimize: 'none', optimize: 'none',
include: [ include: [
'jquery-bridget/jquery-bridget', 'jquery-bridget/jquery-bridget',
'isotope/isotope' 'isotope-layout/js/isotope'
], ],
paths: { paths: {
isotope: '../js/', 'isotope-layout': '../',
jquery: 'empty:' jquery: 'empty:'
} }
}) ) }) )
// munge AMD definition // munge AMD definition
.pipe( replace( definitionRE, function( definition ) { .pipe( replace( definitionRE, function( definition ) {
// remove named module // remove named module
return definition.replace( "'isotope/isotope',", '' ) return definition.replace( "'isotope-layout/js/isotope',", '' )
// use explicit file paths, './item' -> 'isotope/js/item' // use explicit file paths, './item' -> 'isotope-layout/js/item'
.replace( /'.\//g, "'isotope/js/" ); .replace( /'.\//g, "'isotope-layout/js/" );
}) ) }) )
.pipe( replace( "define( 'isotope/", "define( 'isotope/js/" ) )
// add banner // add banner
.pipe( addBanner( banner ) ) .pipe( addBanner( banner ) )
.pipe( rename('isotope.pkgd.js') ) .pipe( rename('isotope.pkgd.js') )
@ -121,17 +120,12 @@ gulp.task( 'version', function() {
gutil.log( 'ticking version to ' + chalk.green( version ) ); gutil.log( 'ticking version to ' + chalk.green( version ) );
gulp.src('js/isotope.js') gulp.src('js/isotope.js')
.pipe( replace( /Packery v\d\.\d+\.\d+/, 'Isotope v' + version ) ) .pipe( replace( /Isotope v\d\.\d+\.\d+/, 'Isotope v' + version ) )
.pipe( gulp.dest('js') ); .pipe( gulp.dest('js') );
gulp.src( [ 'package.json' ] ) gulp.src( [ 'package.json' ] )
.pipe( replace( /"version": "\d\.\d+\.\d+"/, '"version": "' + version + '"' ) ) .pipe( replace( /"version": "\d\.\d+\.\d+"/, '"version": "' + version + '"' ) )
.pipe( gulp.dest('.') ); .pipe( gulp.dest('.') );
// replace CDN links in README
var minorVersion = version.match( /^\d\.\d+/ )[0];
gulp.src('README.md')
.pipe( replace( /isotope-layout@\d\.\d+/g, 'isotope-layout@' + minorVersion ))
.pipe( gulp.dest('.') );
}); });
// ----- default ----- // // ----- default ----- //

View file

@ -1,11 +1,11 @@
/*! /*!
* Isotope v3.0.1 * Isotope v3.0.6
* *
* Licensed GPLv3 for open source use * Licensed GPLv3 for open source use
* or Isotope Commercial License for commercial use * or Isotope Commercial License for commercial use
* *
* http://isotope.metafizzy.co * https://isotope.metafizzy.co
* Copyright 2016 Metafizzy * Copyright 2010-2018 Metafizzy
*/ */
( function( window, factory ) { ( function( window, factory ) {
@ -402,20 +402,28 @@ var trim = String.prototype.trim ?
// sort filteredItem order // sort filteredItem order
proto._sort = function() { proto._sort = function() {
var sortByOpt = this.options.sortBy; if ( !this.options.sortBy ) {
if ( !sortByOpt ) {
return; return;
} }
// concat all sortBy and sortHistory
var sortBys = [].concat.apply( sortByOpt, this.sortHistory );
// sort magic
var itemSorter = getItemSorter( sortBys, this.options.sortAscending );
this.filteredItems.sort( itemSorter );
// keep track of sortBy History // keep track of sortBy History
if ( sortByOpt != this.sortHistory[0] ) { var sortBys = utils.makeArray( this.options.sortBy );
// add to front, oldest goes in last if ( !this._getIsSameSortBy( sortBys ) ) {
this.sortHistory.unshift( sortByOpt ); // concat all sortBy and sortHistory, add to front, oldest goes in last
this.sortHistory = sortBys.concat( this.sortHistory );
} }
// sort magic
var itemSorter = getItemSorter( this.sortHistory, this.options.sortAscending );
this.filteredItems.sort( itemSorter );
};
// check if sortBys is same as start of sortHistory
proto._getIsSameSortBy = function( sortBys ) {
for ( var i=0; i < sortBys.length; i++ ) {
if ( sortBys[i] != this.sortHistory[i] ) {
return false;
}
}
return true;
}; };
// returns a function used for sorting // returns a function used for sorting

View file

@ -1,7 +1,7 @@
/*! /*!
* Masonry layout mode * Masonry layout mode
* sub-classes Masonry * sub-classes Masonry
* http://masonry.desandro.com * https://masonry.desandro.com
*/ */
( function( window, factory ) { ( function( window, factory ) {
@ -11,7 +11,7 @@
// AMD // AMD
define( [ define( [
'../layout-mode', '../layout-mode',
'masonry/masonry' 'masonry-layout/masonry'
], ],
factory ); factory );
} else if ( typeof module == 'object' && module.exports ) { } else if ( typeof module == 'object' && module.exports ) {

View file

@ -4,31 +4,35 @@ _Cascading grid layout library_
Masonry works by placing elements in optimal position based on available vertical space, sort of like a mason fitting stones in a wall. Youve probably seen it in use all over the Internet. Masonry works by placing elements in optimal position based on available vertical space, sort of like a mason fitting stones in a wall. Youve probably seen it in use all over the Internet.
See [masonry.desandro.com](http://masonry.desandro.com) for complete docs and demos. See [masonry.desandro.com](https://masonry.desandro.com) for complete docs and demos.
## Install ## Install
### Download ### Download
+ [masonry.pkgd.js](https://github.com/desandro/masonry/raw/master/dist/masonry.pkgd.js) un-minified, or + [masonry.pkgd.js](https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.js) un-minified, or
+ [masonry.pkgd.min.js](https://github.com/desandro/masonry/raw/master/dist/masonry.pkgd.min.js) minified + [masonry.pkgd.min.js](https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.min.js) minified
### CDN ### CDN
Link directly to Masonry files on [npmcdn](https://npmcdn.com/). Link directly to Masonry files on [unpkg](https://unpkg.com/).
``` html ``` html
<script src="https://npmcdn.com/masonry-layout@4.1/dist/masonry.pkgd.js"></script> <script src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.js"></script>
<!-- or --> <!-- or -->
<script src="https://npmcdn.com/masonry-layout@4.1/dist/masonry.pkgd.min.js"></script> <script src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.min.js"></script>
``` ```
### Package managers ### Package managers
Bower: `bower install masonry --save`
[npm](https://www.npmjs.com/package/masonry-layout): `npm install masonry-layout --save` [npm](https://www.npmjs.com/package/masonry-layout): `npm install masonry-layout --save`
Bower: `bower install masonry-layout --save`
## Support Masonry development
Masonry has been actively maintained and improved upon for 8 years, with 900 GitHub issues closed. Please consider supporting its development by [purchasing a license for one of Metafizzy's commercial libraries](https://metafizzy.co).
## Initialize ## Initialize
With jQuery With jQuery

View file

@ -1,5 +1,5 @@
{ {
"name": "masonry", "name": "masonry-layout",
"description": "Cascading grid layout library", "description": "Cascading grid layout library",
"main": "masonry.js", "main": "masonry.js",
"dependencies": { "dependencies": {
@ -22,7 +22,7 @@
"package.json", "package.json",
"composer.json" "composer.json"
], ],
"homepage": "http://masonry.desandro.com", "homepage": "https://masonry.desandro.com",
"authors": [ "authors": [
"David DeSandro" "David DeSandro"
], ],

View file

@ -1,7 +1,7 @@
/*! /*!
* Masonry PACKAGED v4.1.1 * Masonry PACKAGED v4.2.2
* Cascading grid layout library * Cascading grid layout library
* http://masonry.desandro.com * https://masonry.desandro.com
* MIT License * MIT License
* by David DeSandro * by David DeSandro
*/ */
@ -151,7 +151,7 @@ return jQueryBridget;
})); }));
/** /**
* EvEmitter v1.0.3 * EvEmitter v1.1.0
* Lil' event emitter * Lil' event emitter
* MIT License * MIT License
*/ */
@ -231,13 +231,14 @@ proto.emitEvent = function( eventName, args ) {
if ( !listeners || !listeners.length ) { if ( !listeners || !listeners.length ) {
return; return;
} }
var i = 0; // copy over to avoid interference if .off() in listener
var listener = listeners[i]; listeners = listeners.slice(0);
args = args || []; args = args || [];
// once stuff // once stuff
var onceListeners = this._onceEvents && this._onceEvents[ eventName ]; var onceListeners = this._onceEvents && this._onceEvents[ eventName ];
while ( listener ) { for ( var i=0; i < listeners.length; i++ ) {
var listener = listeners[i]
var isOnce = onceListeners && onceListeners[ listener ]; var isOnce = onceListeners && onceListeners[ listener ];
if ( isOnce ) { if ( isOnce ) {
// remove listener // remove listener
@ -248,35 +249,34 @@ proto.emitEvent = function( eventName, args ) {
} }
// trigger listener // trigger listener
listener.apply( this, args ); listener.apply( this, args );
// get next listener
i += isOnce ? 0 : 1;
listener = listeners[i];
} }
return this; return this;
}; };
proto.allOff = function() {
delete this._events;
delete this._onceEvents;
};
return EvEmitter; return EvEmitter;
})); }));
/*! /*!
* getSize v2.0.2 * getSize v2.0.3
* measure size of elements * measure size of elements
* MIT license * MIT license
*/ */
/*jshint browser: true, strict: true, undef: true, unused: true */ /* jshint browser: true, strict: true, undef: true, unused: true */
/*global define: false, module: false, console: false */ /* globals console: false */
( function( window, factory ) { ( function( window, factory ) {
'use strict'; /* jshint strict: false */ /* globals define, module */
if ( typeof define == 'function' && define.amd ) { if ( typeof define == 'function' && define.amd ) {
// AMD // AMD
define( 'get-size/get-size',[],function() { define( 'get-size/get-size',factory );
return factory();
});
} else if ( typeof module == 'object' && module.exports ) { } else if ( typeof module == 'object' && module.exports ) {
// CommonJS // CommonJS
module.exports = factory(); module.exports = factory();
@ -351,7 +351,7 @@ function getStyle( elem ) {
if ( !style ) { if ( !style ) {
logError( 'Style returned ' + style + logError( 'Style returned ' + style +
'. Are you running this code in a hidden iframe on Firefox? ' + '. Are you running this code in a hidden iframe on Firefox? ' +
'See http://bit.ly/getsizebug1' ); 'See https://bit.ly/getsizebug1' );
} }
return style; return style;
} }
@ -377,8 +377,8 @@ function setup() {
// -------------------------- box sizing -------------------------- // // -------------------------- box sizing -------------------------- //
/** /**
* WebKit measures the outer-width on style.width on border-box elems * Chrome & Safari measure the outer-width on style.width on border-box elems
* IE & Firefox<29 measures the inner-width * IE11 & Firefox<29 measures the inner-width
*/ */
var div = document.createElement('div'); var div = document.createElement('div');
div.style.width = '200px'; div.style.width = '200px';
@ -390,10 +390,11 @@ function setup() {
var body = document.body || document.documentElement; var body = document.body || document.documentElement;
body.appendChild( div ); body.appendChild( div );
var style = getStyle( div ); var style = getStyle( div );
// round value for browser zoom. desandro/masonry#928
isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;
getSize.isBoxSizeOuter = isBoxSizeOuter;
getSize.isBoxSizeOuter = isBoxSizeOuter = getStyleSize( style.width ) == 200;
body.removeChild( div ); body.removeChild( div );
} }
// -------------------------- getSize -------------------------- // // -------------------------- getSize -------------------------- //
@ -471,7 +472,7 @@ return getSize;
}); });
/** /**
* matchesSelector v2.0.1 * matchesSelector v2.0.2
* matchesSelector( element, '.selector' ) * matchesSelector( element, '.selector' )
* MIT license * MIT license
*/ */
@ -497,7 +498,7 @@ return getSize;
'use strict'; 'use strict';
var matchesMethod = ( function() { var matchesMethod = ( function() {
var ElemProto = Element.prototype; var ElemProto = window.Element.prototype;
// check for the standard method name first // check for the standard method name first
if ( ElemProto.matches ) { if ( ElemProto.matches ) {
return 'matches'; return 'matches';
@ -525,7 +526,7 @@ return getSize;
})); }));
/** /**
* Fizzy UI utils v2.0.2 * Fizzy UI utils v2.0.7
* MIT license * MIT license
*/ */
@ -580,22 +581,27 @@ utils.modulo = function( num, div ) {
// ----- makeArray ----- // // ----- makeArray ----- //
var arraySlice = Array.prototype.slice;
// turn element or nodeList into an array // turn element or nodeList into an array
utils.makeArray = function( obj ) { utils.makeArray = function( obj ) {
var ary = [];
if ( Array.isArray( obj ) ) { if ( Array.isArray( obj ) ) {
// use object if already an array // use object if already an array
ary = obj; return obj;
} else if ( obj && typeof obj.length == 'number' ) {
// convert nodeList to array
for ( var i=0; i < obj.length; i++ ) {
ary.push( obj[i] );
}
} else {
// array of single index
ary.push( obj );
} }
return ary; // return empty array if undefined or null. #6
if ( obj === null || obj === undefined ) {
return [];
}
var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';
if ( isArrayLike ) {
// convert nodeList to array
return arraySlice.call( obj );
}
// array of single index
return [ obj ];
}; };
// ----- removeFrom ----- // // ----- removeFrom ----- //
@ -610,7 +616,7 @@ utils.removeFrom = function( ary, obj ) {
// ----- getParent ----- // // ----- getParent ----- //
utils.getParent = function( elem, selector ) { utils.getParent = function( elem, selector ) {
while ( elem != document.body ) { while ( elem.parentNode && elem != document.body ) {
elem = elem.parentNode; elem = elem.parentNode;
if ( matchesSelector( elem, selector ) ) { if ( matchesSelector( elem, selector ) ) {
return elem; return elem;
@ -674,22 +680,21 @@ utils.filterFindElements = function( elems, selector ) {
// ----- debounceMethod ----- // // ----- debounceMethod ----- //
utils.debounceMethod = function( _class, methodName, threshold ) { utils.debounceMethod = function( _class, methodName, threshold ) {
threshold = threshold || 100;
// original method // original method
var method = _class.prototype[ methodName ]; var method = _class.prototype[ methodName ];
var timeoutName = methodName + 'Timeout'; var timeoutName = methodName + 'Timeout';
_class.prototype[ methodName ] = function() { _class.prototype[ methodName ] = function() {
var timeout = this[ timeoutName ]; var timeout = this[ timeoutName ];
if ( timeout ) { clearTimeout( timeout );
clearTimeout( timeout );
}
var args = arguments;
var args = arguments;
var _this = this; var _this = this;
this[ timeoutName ] = setTimeout( function() { this[ timeoutName ] = setTimeout( function() {
method.apply( _this, args ); method.apply( _this, args );
delete _this[ timeoutName ]; delete _this[ timeoutName ];
}, threshold || 100 ); }, threshold );
}; };
}; };
@ -698,7 +703,8 @@ utils.debounceMethod = function( _class, methodName, threshold ) {
utils.docReady = function( callback ) { utils.docReady = function( callback ) {
var readyState = document.readyState; var readyState = document.readyState;
if ( readyState == 'complete' || readyState == 'interactive' ) { if ( readyState == 'complete' || readyState == 'interactive' ) {
callback(); // do async to allow for other scripts to run. metafizzy/flickity#441
setTimeout( callback );
} else { } else {
document.addEventListener( 'DOMContentLoaded', callback ); document.addEventListener( 'DOMContentLoaded', callback );
} }
@ -746,7 +752,7 @@ utils.htmlInit = function( WidgetClass, namespace ) {
} }
// initialize // initialize
var instance = new WidgetClass( elem, options ); var instance = new WidgetClass( elem, options );
// make available via $().data('layoutname') // make available via $().data('namespace')
if ( jQuery ) { if ( jQuery ) {
jQuery.data( elem, namespace, instance ); jQuery.data( elem, namespace, instance );
} }
@ -896,13 +902,16 @@ proto.getPosition = function() {
var isOriginTop = this.layout._getOption('originTop'); var isOriginTop = this.layout._getOption('originTop');
var xValue = style[ isOriginLeft ? 'left' : 'right' ]; var xValue = style[ isOriginLeft ? 'left' : 'right' ];
var yValue = style[ isOriginTop ? 'top' : 'bottom' ]; var yValue = style[ isOriginTop ? 'top' : 'bottom' ];
var x = parseFloat( xValue );
var y = parseFloat( yValue );
// convert percent to pixels // convert percent to pixels
var layoutSize = this.layout.size; var layoutSize = this.layout.size;
var x = xValue.indexOf('%') != -1 ? if ( xValue.indexOf('%') != -1 ) {
( parseFloat( xValue ) / 100 ) * layoutSize.width : parseInt( xValue, 10 ); x = ( x / 100 ) * layoutSize.width;
var y = yValue.indexOf('%') != -1 ? }
( parseFloat( yValue ) / 100 ) * layoutSize.height : parseInt( yValue, 10 ); if ( yValue.indexOf('%') != -1 ) {
y = ( y / 100 ) * layoutSize.height;
}
// clean up 'auto' or other non-integer values // clean up 'auto' or other non-integer values
x = isNaN( x ) ? 0 : x; x = isNaN( x ) ? 0 : x;
y = isNaN( y ) ? 0 : y; y = isNaN( y ) ? 0 : y;
@ -965,9 +974,7 @@ proto._transitionTo = function( x, y ) {
var curX = this.position.x; var curX = this.position.x;
var curY = this.position.y; var curY = this.position.y;
var compareX = parseInt( x, 10 ); var didNotMove = x == this.position.x && y == this.position.y;
var compareY = parseInt( y, 10 );
var didNotMove = compareX === this.position.x && compareY === this.position.y;
// save end position // save end position
this.setPosition( x, y ); this.setPosition( x, y );
@ -1010,8 +1017,8 @@ proto.goTo = function( x, y ) {
proto.moveTo = proto._transitionTo; proto.moveTo = proto._transitionTo;
proto.setPosition = function( x, y ) { proto.setPosition = function( x, y ) {
this.position.x = parseInt( x, 10 ); this.position.x = parseFloat( x );
this.position.y = parseInt( y, 10 ); this.position.y = parseFloat( y );
}; };
// ----- transition ----- // // ----- transition ----- //
@ -1316,7 +1323,7 @@ return Item;
})); }));
/*! /*!
* Outlayer v2.1.0 * Outlayer v2.1.1
* the brains and guts of a layout library * the brains and guts of a layout library
* MIT license * MIT license
*/ */
@ -2256,9 +2263,9 @@ return Outlayer;
})); }));
/*! /*!
* Masonry v4.1.1 * Masonry v4.2.2
* Cascading grid layout library * Cascading grid layout library
* http://masonry.desandro.com * https://masonry.desandro.com
* MIT License * MIT License
* by David DeSandro * by David DeSandro
*/ */
@ -2298,7 +2305,9 @@ return Outlayer;
// isFitWidth -> fitWidth // isFitWidth -> fitWidth
Masonry.compatOptions.fitWidth = 'isFitWidth'; Masonry.compatOptions.fitWidth = 'isFitWidth';
Masonry.prototype._resetLayout = function() { var proto = Masonry.prototype;
proto._resetLayout = function() {
this.getSize(); this.getSize();
this._getMeasurement( 'columnWidth', 'outerWidth' ); this._getMeasurement( 'columnWidth', 'outerWidth' );
this._getMeasurement( 'gutter', 'outerWidth' ); this._getMeasurement( 'gutter', 'outerWidth' );
@ -2311,9 +2320,10 @@ return Outlayer;
} }
this.maxY = 0; this.maxY = 0;
this.horizontalColIndex = 0;
}; };
Masonry.prototype.measureColumns = function() { proto.measureColumns = function() {
this.getContainerWidth(); this.getContainerWidth();
// if columnWidth is 0, default to outerWidth of first item // if columnWidth is 0, default to outerWidth of first item
if ( !this.columnWidth ) { if ( !this.columnWidth ) {
@ -2338,7 +2348,7 @@ return Outlayer;
this.cols = Math.max( cols, 1 ); this.cols = Math.max( cols, 1 );
}; };
Masonry.prototype.getContainerWidth = function() { proto.getContainerWidth = function() {
// container is parent if fit width // container is parent if fit width
var isFitWidth = this._getOption('fitWidth'); var isFitWidth = this._getOption('fitWidth');
var container = isFitWidth ? this.element.parentNode : this.element; var container = isFitWidth ? this.element.parentNode : this.element;
@ -2348,7 +2358,7 @@ return Outlayer;
this.containerWidth = size && size.innerWidth; this.containerWidth = size && size.innerWidth;
}; };
Masonry.prototype._getItemLayoutPosition = function( item ) { proto._getItemLayoutPosition = function( item ) {
item.getSize(); item.getSize();
// how many columns does this brick span // how many columns does this brick span
var remainder = item.size.outerWidth % this.columnWidth; var remainder = item.size.outerWidth % this.columnWidth;
@ -2356,33 +2366,41 @@ return Outlayer;
// round if off by 1 pixel, otherwise use ceil // round if off by 1 pixel, otherwise use ceil
var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth ); var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth );
colSpan = Math.min( colSpan, this.cols ); colSpan = Math.min( colSpan, this.cols );
// use horizontal or top column position
var colGroup = this._getColGroup( colSpan ); var colPosMethod = this.options.horizontalOrder ?
// get the minimum Y value from the columns '_getHorizontalColPosition' : '_getTopColPosition';
var minimumY = Math.min.apply( Math, colGroup ); var colPosition = this[ colPosMethod ]( colSpan, item );
var shortColIndex = colGroup.indexOf( minimumY );
// position the brick // position the brick
var position = { var position = {
x: this.columnWidth * shortColIndex, x: this.columnWidth * colPosition.col,
y: minimumY y: colPosition.y
}; };
// apply setHeight to necessary columns // apply setHeight to necessary columns
var setHeight = minimumY + item.size.outerHeight; var setHeight = colPosition.y + item.size.outerHeight;
var setSpan = this.cols + 1 - colGroup.length; var setMax = colSpan + colPosition.col;
for ( var i = 0; i < setSpan; i++ ) { for ( var i = colPosition.col; i < setMax; i++ ) {
this.colYs[ shortColIndex + i ] = setHeight; this.colYs[i] = setHeight;
} }
return position; return position;
}; };
proto._getTopColPosition = function( colSpan ) {
var colGroup = this._getTopColGroup( colSpan );
// get the minimum Y value from the columns
var minimumY = Math.min.apply( Math, colGroup );
return {
col: colGroup.indexOf( minimumY ),
y: minimumY,
};
};
/** /**
* @param {Number} colSpan - number of columns the element spans * @param {Number} colSpan - number of columns the element spans
* @returns {Array} colGroup * @returns {Array} colGroup
*/ */
Masonry.prototype._getColGroup = function( colSpan ) { proto._getTopColGroup = function( colSpan ) {
if ( colSpan < 2 ) { if ( colSpan < 2 ) {
// if brick spans only one column, use all the column Ys // if brick spans only one column, use all the column Ys
return this.colYs; return this.colYs;
@ -2393,15 +2411,38 @@ return Outlayer;
var groupCount = this.cols + 1 - colSpan; var groupCount = this.cols + 1 - colSpan;
// for each group potential horizontal position // for each group potential horizontal position
for ( var i = 0; i < groupCount; i++ ) { for ( var i = 0; i < groupCount; i++ ) {
// make an array of colY values for that one group colGroup[i] = this._getColGroupY( i, colSpan );
var groupColYs = this.colYs.slice( i, i + colSpan );
// and get the max value of the array
colGroup[i] = Math.max.apply( Math, groupColYs );
} }
return colGroup; return colGroup;
}; };
Masonry.prototype._manageStamp = function( stamp ) { proto._getColGroupY = function( col, colSpan ) {
if ( colSpan < 2 ) {
return this.colYs[ col ];
}
// make an array of colY values for that one group
var groupColYs = this.colYs.slice( col, col + colSpan );
// and get the max value of the array
return Math.max.apply( Math, groupColYs );
};
// get column position based on horizontal index. #873
proto._getHorizontalColPosition = function( colSpan, item ) {
var col = this.horizontalColIndex % this.cols;
var isOver = colSpan > 1 && col + colSpan > this.cols;
// shift to next row if item can't fit on current row
col = isOver ? 0 : col;
// don't let zero-size items take up space
var hasSize = item.size.outerWidth && item.size.outerHeight;
this.horizontalColIndex = hasSize ? col + colSpan : this.horizontalColIndex;
return {
col: col,
y: this._getColGroupY( col, colSpan ),
};
};
proto._manageStamp = function( stamp ) {
var stampSize = getSize( stamp ); var stampSize = getSize( stamp );
var offset = this._getElementOffset( stamp ); var offset = this._getElementOffset( stamp );
// get the columns that this stamp affects // get the columns that this stamp affects
@ -2424,7 +2465,7 @@ return Outlayer;
} }
}; };
Masonry.prototype._getContainerSize = function() { proto._getContainerSize = function() {
this.maxY = Math.max.apply( Math, this.colYs ); this.maxY = Math.max.apply( Math, this.colYs );
var size = { var size = {
height: this.maxY height: this.maxY
@ -2437,7 +2478,7 @@ return Outlayer;
return size; return size;
}; };
Masonry.prototype._getContainerFitWidth = function() { proto._getContainerFitWidth = function() {
var unusedCols = 0; var unusedCols = 0;
// count unused columns // count unused columns
var i = this.cols; var i = this.cols;
@ -2451,7 +2492,7 @@ return Outlayer;
return ( this.cols - unusedCols ) * this.columnWidth - this.gutter; return ( this.cols - unusedCols ) * this.columnWidth - this.gutter;
}; };
Masonry.prototype.needsResizeLayout = function() { proto.needsResizeLayout = function() {
var previousWidth = this.containerWidth; var previousWidth = this.containerWidth;
this.getContainerWidth(); this.getContainerWidth();
return previousWidth != this.containerWidth; return previousWidth != this.containerWidth;

File diff suppressed because one or more lines are too long

View file

@ -1,7 +1,7 @@
/*! /*!
* Masonry v4.1.1 * Masonry v4.2.2
* Cascading grid layout library * Cascading grid layout library
* http://masonry.desandro.com * https://masonry.desandro.com
* MIT License * MIT License
* by David DeSandro * by David DeSandro
*/ */
@ -41,7 +41,9 @@
// isFitWidth -> fitWidth // isFitWidth -> fitWidth
Masonry.compatOptions.fitWidth = 'isFitWidth'; Masonry.compatOptions.fitWidth = 'isFitWidth';
Masonry.prototype._resetLayout = function() { var proto = Masonry.prototype;
proto._resetLayout = function() {
this.getSize(); this.getSize();
this._getMeasurement( 'columnWidth', 'outerWidth' ); this._getMeasurement( 'columnWidth', 'outerWidth' );
this._getMeasurement( 'gutter', 'outerWidth' ); this._getMeasurement( 'gutter', 'outerWidth' );
@ -54,9 +56,10 @@
} }
this.maxY = 0; this.maxY = 0;
this.horizontalColIndex = 0;
}; };
Masonry.prototype.measureColumns = function() { proto.measureColumns = function() {
this.getContainerWidth(); this.getContainerWidth();
// if columnWidth is 0, default to outerWidth of first item // if columnWidth is 0, default to outerWidth of first item
if ( !this.columnWidth ) { if ( !this.columnWidth ) {
@ -81,7 +84,7 @@
this.cols = Math.max( cols, 1 ); this.cols = Math.max( cols, 1 );
}; };
Masonry.prototype.getContainerWidth = function() { proto.getContainerWidth = function() {
// container is parent if fit width // container is parent if fit width
var isFitWidth = this._getOption('fitWidth'); var isFitWidth = this._getOption('fitWidth');
var container = isFitWidth ? this.element.parentNode : this.element; var container = isFitWidth ? this.element.parentNode : this.element;
@ -91,7 +94,7 @@
this.containerWidth = size && size.innerWidth; this.containerWidth = size && size.innerWidth;
}; };
Masonry.prototype._getItemLayoutPosition = function( item ) { proto._getItemLayoutPosition = function( item ) {
item.getSize(); item.getSize();
// how many columns does this brick span // how many columns does this brick span
var remainder = item.size.outerWidth % this.columnWidth; var remainder = item.size.outerWidth % this.columnWidth;
@ -99,33 +102,41 @@
// round if off by 1 pixel, otherwise use ceil // round if off by 1 pixel, otherwise use ceil
var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth ); var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth );
colSpan = Math.min( colSpan, this.cols ); colSpan = Math.min( colSpan, this.cols );
// use horizontal or top column position
var colGroup = this._getColGroup( colSpan ); var colPosMethod = this.options.horizontalOrder ?
// get the minimum Y value from the columns '_getHorizontalColPosition' : '_getTopColPosition';
var minimumY = Math.min.apply( Math, colGroup ); var colPosition = this[ colPosMethod ]( colSpan, item );
var shortColIndex = colGroup.indexOf( minimumY );
// position the brick // position the brick
var position = { var position = {
x: this.columnWidth * shortColIndex, x: this.columnWidth * colPosition.col,
y: minimumY y: colPosition.y
}; };
// apply setHeight to necessary columns // apply setHeight to necessary columns
var setHeight = minimumY + item.size.outerHeight; var setHeight = colPosition.y + item.size.outerHeight;
var setSpan = this.cols + 1 - colGroup.length; var setMax = colSpan + colPosition.col;
for ( var i = 0; i < setSpan; i++ ) { for ( var i = colPosition.col; i < setMax; i++ ) {
this.colYs[ shortColIndex + i ] = setHeight; this.colYs[i] = setHeight;
} }
return position; return position;
}; };
proto._getTopColPosition = function( colSpan ) {
var colGroup = this._getTopColGroup( colSpan );
// get the minimum Y value from the columns
var minimumY = Math.min.apply( Math, colGroup );
return {
col: colGroup.indexOf( minimumY ),
y: minimumY,
};
};
/** /**
* @param {Number} colSpan - number of columns the element spans * @param {Number} colSpan - number of columns the element spans
* @returns {Array} colGroup * @returns {Array} colGroup
*/ */
Masonry.prototype._getColGroup = function( colSpan ) { proto._getTopColGroup = function( colSpan ) {
if ( colSpan < 2 ) { if ( colSpan < 2 ) {
// if brick spans only one column, use all the column Ys // if brick spans only one column, use all the column Ys
return this.colYs; return this.colYs;
@ -136,15 +147,38 @@
var groupCount = this.cols + 1 - colSpan; var groupCount = this.cols + 1 - colSpan;
// for each group potential horizontal position // for each group potential horizontal position
for ( var i = 0; i < groupCount; i++ ) { for ( var i = 0; i < groupCount; i++ ) {
// make an array of colY values for that one group colGroup[i] = this._getColGroupY( i, colSpan );
var groupColYs = this.colYs.slice( i, i + colSpan );
// and get the max value of the array
colGroup[i] = Math.max.apply( Math, groupColYs );
} }
return colGroup; return colGroup;
}; };
Masonry.prototype._manageStamp = function( stamp ) { proto._getColGroupY = function( col, colSpan ) {
if ( colSpan < 2 ) {
return this.colYs[ col ];
}
// make an array of colY values for that one group
var groupColYs = this.colYs.slice( col, col + colSpan );
// and get the max value of the array
return Math.max.apply( Math, groupColYs );
};
// get column position based on horizontal index. #873
proto._getHorizontalColPosition = function( colSpan, item ) {
var col = this.horizontalColIndex % this.cols;
var isOver = colSpan > 1 && col + colSpan > this.cols;
// shift to next row if item can't fit on current row
col = isOver ? 0 : col;
// don't let zero-size items take up space
var hasSize = item.size.outerWidth && item.size.outerHeight;
this.horizontalColIndex = hasSize ? col + colSpan : this.horizontalColIndex;
return {
col: col,
y: this._getColGroupY( col, colSpan ),
};
};
proto._manageStamp = function( stamp ) {
var stampSize = getSize( stamp ); var stampSize = getSize( stamp );
var offset = this._getElementOffset( stamp ); var offset = this._getElementOffset( stamp );
// get the columns that this stamp affects // get the columns that this stamp affects
@ -167,7 +201,7 @@
} }
}; };
Masonry.prototype._getContainerSize = function() { proto._getContainerSize = function() {
this.maxY = Math.max.apply( Math, this.colYs ); this.maxY = Math.max.apply( Math, this.colYs );
var size = { var size = {
height: this.maxY height: this.maxY
@ -180,7 +214,7 @@
return size; return size;
}; };
Masonry.prototype._getContainerFitWidth = function() { proto._getContainerFitWidth = function() {
var unusedCols = 0; var unusedCols = 0;
// count unused columns // count unused columns
var i = this.cols; var i = this.cols;
@ -194,7 +228,7 @@
return ( this.cols - unusedCols ) * this.columnWidth - this.gutter; return ( this.cols - unusedCols ) * this.columnWidth - this.gutter;
}; };
Masonry.prototype.needsResizeLayout = function() { proto.needsResizeLayout = function() {
var previousWidth = this.containerWidth; var previousWidth = this.containerWidth;
this.getContainerWidth(); this.getContainerWidth();
return previousWidth != this.containerWidth; return previousWidth != this.containerWidth;

File diff suppressed because one or more lines are too long

View file

@ -133,13 +133,16 @@ proto.getPosition = function() {
var isOriginTop = this.layout._getOption('originTop'); var isOriginTop = this.layout._getOption('originTop');
var xValue = style[ isOriginLeft ? 'left' : 'right' ]; var xValue = style[ isOriginLeft ? 'left' : 'right' ];
var yValue = style[ isOriginTop ? 'top' : 'bottom' ]; var yValue = style[ isOriginTop ? 'top' : 'bottom' ];
var x = parseFloat( xValue );
var y = parseFloat( yValue );
// convert percent to pixels // convert percent to pixels
var layoutSize = this.layout.size; var layoutSize = this.layout.size;
var x = xValue.indexOf('%') != -1 ? if ( xValue.indexOf('%') != -1 ) {
( parseFloat( xValue ) / 100 ) * layoutSize.width : parseInt( xValue, 10 ); x = ( x / 100 ) * layoutSize.width;
var y = yValue.indexOf('%') != -1 ? }
( parseFloat( yValue ) / 100 ) * layoutSize.height : parseInt( yValue, 10 ); if ( yValue.indexOf('%') != -1 ) {
y = ( y / 100 ) * layoutSize.height;
}
// clean up 'auto' or other non-integer values // clean up 'auto' or other non-integer values
x = isNaN( x ) ? 0 : x; x = isNaN( x ) ? 0 : x;
y = isNaN( y ) ? 0 : y; y = isNaN( y ) ? 0 : y;
@ -202,9 +205,7 @@ proto._transitionTo = function( x, y ) {
var curX = this.position.x; var curX = this.position.x;
var curY = this.position.y; var curY = this.position.y;
var compareX = parseInt( x, 10 ); var didNotMove = x == this.position.x && y == this.position.y;
var compareY = parseInt( y, 10 );
var didNotMove = compareX === this.position.x && compareY === this.position.y;
// save end position // save end position
this.setPosition( x, y ); this.setPosition( x, y );
@ -247,8 +248,8 @@ proto.goTo = function( x, y ) {
proto.moveTo = proto._transitionTo; proto.moveTo = proto._transitionTo;
proto.setPosition = function( x, y ) { proto.setPosition = function( x, y ) {
this.position.x = parseInt( x, 10 ); this.position.x = parseFloat( x );
this.position.y = parseInt( y, 10 ); this.position.y = parseFloat( y );
}; };
// ----- transition ----- // // ----- transition ----- //

View file

@ -1,5 +1,5 @@
/*! /*!
* Outlayer v2.1.0 * Outlayer v2.1.1
* the brains and guts of a layout library * the brains and guts of a layout library
* MIT license * MIT license
*/ */

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,24 @@
[ [
{
"title": "Psst.one - Presentation and Discussion",
"description": "Andrea Familiari, creator of Psst.one will speak about the intention of his channel. Developments over the last year and plans for the next season. His talk will be followed by a group discussion, where we can gather ideas around the audiovisual community's needs in Berlin in general.",
"artist": "Psst.one",
"talk_video_url": "",
"topics": "YouTube, documentary, interviews"
},
{
"title": "In Between the lines. Behind the screen.",
"description": "Anna will speak about her background, collaboration in different media, the theory of limits in visual art and music and synthesis script of music and visuals.",
"artist": "Anna Z",
"talk_video_url": "",
"topics": "performance"
}
,
{ {
"title": "MYRIADS OF MEMORIES - Live AV session", "title": "MYRIADS OF MEMORIES - Live AV session",
"description": "'Myriads of Memories' is the audiovisual performance by Mila Chiral and Optic Veil to explore a feeling of fleeting memories. Audio recordings of a clarinet meet analogue synthesizers and digitally produced sounds in a four-dimensional arrangement. The visual element, created with analog video hardware, breathes together with the music. The result is a dreamy science fiction fairy tale, where each aspect of the whole complements each other.", "description": "'Myriads of Memories' is the audiovisual performance by Mila Chiral and Optic Veil to explore a feeling of fleeting memories. Audio recordings of a clarinet meet analogue synthesizers and digitally produced sounds in a four-dimensional arrangement. The visual element, created with analog video hardware, breathes together with the music. The result is a dreamy science fiction fairy tale, where each aspect of the whole complements each other.",

View file

@ -6,9 +6,21 @@
</description> </description>
<link>http://scopesessions.org/</link> <link>http://scopesessions.org/</link>
<atom:link href="http://scopesessions.org /feed.xml " rel="self" type="application/rss+xml" /> <atom:link href="http://scopesessions.org /feed.xml " rel="self" type="application/rss+xml" />
<pubDate>Fri, 15 Jun 2018 11:22:16 +0200</pubDate> <pubDate>Tue, 11 Sep 2018 12:59:14 +0200</pubDate>
<lastBuildDate>Fri, 15 Jun 2018 11:22:16 +0200</lastBuildDate> <lastBuildDate>Tue, 11 Sep 2018 12:59:14 +0200</lastBuildDate>
<generator>Jekyll v3.1.6</generator> <generator>Jekyll v3.3.1</generator>
<item>
<title>075</title>
<description>
</description>
<pubDate>Thu, 13 Sep 2018 00:00:00 +0200</pubDate>
<link>http://scopesessions.org/session/2018/09/13/075.html</link>
<guid isPermaLink="true">http://scopesessions.org/session/2018/09/13/075.html</guid>
<category>session</category>
</item>
<item> <item>
<title>Scope turns 7!</title> <title>Scope turns 7!</title>
@ -118,17 +130,5 @@
</item> </item>
<item>
<title>Scope&#39;s summer BBQ 2017</title>
<description>
</description>
<pubDate>Wed, 31 May 2017 00:00:00 +0200</pubDate>
<link>http://scopesessions.org/session/2017/05/31/066.html</link>
<guid isPermaLink="true">http://scopesessions.org/session/2017/05/31/066.html</guid>
<category>session</category>
</item>
</channel> </channel>
</rss> </rss>

BIN
_site/images/annaz.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
_site/images/psst.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -16,7 +16,7 @@
<tbody> <tbody>
<tr> <tr>
<td class="mcnImageContent" style="padding-right: 9px;padding-left: 9px;padding-top: 0;padding-bottom: 0;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" valign="top"> <td class="mcnImageContent" style="padding-right: 9px;padding-left: 9px;padding-top: 0;padding-bottom: 0;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" valign="top">
<img alt="" src="http://scopesessions.org/images/tumblr_pa994mAmKb1s7hy5vo1_1280.jpg" style="max-width: 3786px;padding-bottom: 0;display: inline !important;vertical-align: bottom;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" class="mcnImage" <img alt="" src="http://scopesessions.org/images/psst.jpg" style="max-width: 3786px;padding-bottom: 0;display: inline !important;vertical-align: bottom;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" class="mcnImage"
width="564" align="left"> width="564" align="left">
</td> </td>
</tr> </tr>
@ -40,18 +40,18 @@
valign="top"> valign="top">
<h3 class="null" style="margin: 0;padding: 0;display: block;font-family: Helvetica;font-size: 18px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: -.5px;text-align: left;color: #606060 !important;"> <h3 class="null" style="margin: 0;padding: 0;display: block;font-family: Helvetica;font-size: 18px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: -.5px;text-align: left;color: #606060 !important;">
<span class="fsl">20:00 / MYRIADS OF MEMORIES - Live AV session</span> <span class="fsl">20:00 / Psst.one - Presentation and Discussion</span>
</h3> </h3>
<h4 class="null" style="margin: 0;padding: 0;display: block;font-family: Helvetica;font-size: 16px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;color: #808080 !important;"> <h4 class="null" style="margin: 0;padding: 0;display: block;font-family: Helvetica;font-size: 16px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;color: #808080 !important;">
<a href="http://opticveil.com" target="_blank" style="word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #6DC6DD;font-weight: normal;text-decoration: underline;"> <a href="http://www.psst.one/" target="_blank" style="word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #6DC6DD;font-weight: normal;text-decoration: underline;">
<span class="fsl">Mila Chiral and Optic Veil</span> <span class="fsl">Psst.one</span>
</a> </a>
</h4> </h4>
<span class="fsl">Mila Chiral is a Berlin-based dancer-choreographer and electronic musician and DJ, who works in composing sounds and poetry as well as bodies and movements in time and space. Her music is colorful, multi-layered and four-dimensional. Sounds and poetry create clear rhythmical patterns, repetitive or accentuated always longing for moving bodies in the spaces and ambience she creates. Referring to chirality in three-dimensional objects as molecules Milas musical and poetic compositions might be seen as chiral (distinguishable asymmetric) to her choreographic approach. Optic Veil Optic Veil uses analog and digital video hardware to create dreamy-like patterns and shapes that morph as they follow the sound. Inspired by the cinematography of Andrei Tarkovsky and Ingmar Bergman, she is especially interested in creating illusions of visual perception and time distortion.</span> <span class="fsl">Psst.one was born with the intent to contribute to the creation of a legacy, related to the field of the 'visualist'. In october 2017 Passt.one was founded as a web channel focused on weekly video interviews about the artists involved in all aspects related to the audio/video field. The purpose of Psst.one project and its presence on the web is to eventually create a digital archive giving the possibility to have a history and at the same time be inspired from the other artistic realities present into the A/V world. Psst.one is the place where the faces of the visual world are shown.</span>
<br> <br>
<br> <br>
<span class="fsl">'Myriads of Memories' is the audiovisual performance by Mila Chiral and Optic Veil to explore a feeling of fleeting memories. Audio recordings of a clarinet meet analogue synthesizers and digitally produced sounds in a four-dimensional arrangement. The visual element, created with analog video hardware, breathes together with the music. The result is a dreamy science fiction fairy tale, where each aspect of the whole complements each other.</span> <span class="fsl">Andrea Familiari, creator of Psst.one will speak about the intention of his channel. Developments over the last year and plans for the next season. His talk will be followed by a group discussion, where we can gather ideas around the audiovisual community's needs in Berlin in general.</span>
</td> </td>
</tr> </tr>
</tbody> </tbody>
@ -96,7 +96,7 @@
<tbody> <tbody>
<tr> <tr>
<td class="mcnImageContent" style="padding-right: 9px;padding-left: 9px;padding-top: 0;padding-bottom: 0;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" valign="top"> <td class="mcnImageContent" style="padding-right: 9px;padding-left: 9px;padding-top: 0;padding-bottom: 0;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" valign="top">
<img alt="" src="http://scopesessions.org/images/IMG_4114_preview.jpeg" style="max-width: 3786px;padding-bottom: 0;display: inline !important;vertical-align: bottom;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" class="mcnImage" <img alt="" src="http://scopesessions.org/images/annaz.jpg" style="max-width: 3786px;padding-bottom: 0;display: inline !important;vertical-align: bottom;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" class="mcnImage"
width="564" align="left"> width="564" align="left">
</td> </td>
</tr> </tr>
@ -120,18 +120,19 @@
valign="top"> valign="top">
<h3 class="null" style="margin: 0;padding: 0;display: block;font-family: Helvetica;font-size: 18px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: -.5px;text-align: left;color: #606060 !important;"> <h3 class="null" style="margin: 0;padding: 0;display: block;font-family: Helvetica;font-size: 18px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: -.5px;text-align: left;color: #606060 !important;">
<span class="fsl">21:00 / (MIND) WAVES - Live AV session</span> <span class="fsl">21:00 / In Between the lines. Behind the screen.</span>
</h3> </h3>
<h4 class="null" style="margin: 0;padding: 0;display: block;font-family: Helvetica;font-size: 16px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;color: #808080 !important;"> <h4 class="null" style="margin: 0;padding: 0;display: block;font-family: Helvetica;font-size: 16px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;color: #808080 !important;">
<a href="https://saharhomami.com/" target="_blank" style="word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #6DC6DD;font-weight: normal;text-decoration: underline;"> <a href="https://www.instagram.com/anna_z.werk/" target="_blank" style="word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #6DC6DD;font-weight: normal;text-decoration: underline;">
<span class="fsl">MENION + A-li-ce</span> <span class="fsl">Anna Z</span>
</a> </a>
</h4> </h4>
<span class="fsl">Sahar Homami is a multidisciplinary artist based in Berlin and Montreal. Born and raised in Tehran, she discovered calligraphy at a young age and obtained the Mastery level in Persian calligraphy by the age of 18. Then pursued 3 years of engineering in Material Science, moved countries and completed a B.F.A in Computation Arts, in her second home in Montreal, Canada. As a consequence of this chosen path, she often finds herself researching and exploring, expressing her ideas through multi-media platforms: video/animation direction, real-time visuals, analogue/digital calligraphy, and photography/videography. Her projects are inspired by an ongoing research on the intersection of art, science, spirituality and technology; focused on being the process and seeing in relationships. Our inner universe is concealed to us much like the outer world. The visual communication can be utilized as a medium to traverse certain inner and outer worlds simultaneously and diminish the seeming barriers. She invites the spectator to perceive, reflect, ponder or conceivably challenge themselves. Employing the tools accessible to us today, she dissolves the boundaries and hopes to expand our art of seeing. Menion is a project created by Stefano Ferrari - Guitarist, Producer and Composer. The project originates from the need of telling stories, experiences and impressions through sounds. His music brings together visionary Electronic and Post Rock, with Glitch and Ambient influences. Menion's performances range from Ferrari's solos to full band concerts and stage collaborations. His sound has been influenced by Nine Inch Nails, Shellac, Sonic Youth, Christian Fennesz, Alva Noto and many others. Menion does not feel compelled to experiment or display an aseptic avant-garde taste; what he's eager to do is to share and research his own art, experiencing music as an opportunity for self-improvement. A-li-ce (FR - Berlin) is a video artist creating mainly her visual worlds into the performative and the installation fields. She composes her works with some traditionnal techniques such as drawing, mixed together with video and digital creation tools to create her bybrid collages in motion. Her work questions the key moments of lifechange: how to overcome the moment of the fall, and how to live in critical times. Inspired by micro and macro biological systems, she deconstructs our social and inner mind structures to propose some potential stories to live through, using dramaturgy as a weapon to create what she calls » live organic editing » in her performances. A-li-ce has showcased her work in many international audiovisual festivals and art institutions (Mapping Festival (CH), Mira Festival (ES), Vidéoformes (FR), RoBOt Festival (IT), etc.), with solo and collective projects. Concerned by transmission, she also teaches in art universities and spaces across Europe, leading courses on live video creation processes, including Spektrum since 2017. In Berlin, she is part of the audiovisual art curation team Scope Sessions, and co-founded in 2017 the VJ Open Lab community which offers a monthly meeting to the media artists in Spektrum. Engaged with gender issues and ecology, she recently took part to the international Symposium Trans//Border, organized in Marseille (Mucem, FR), and dedicated to the media theory researcher Nathalie Magnan and the work of the philosopher Donna Haraway.</span> <span class="fsl">Born beyond the Arctic Circle in the Komi Republic-USSR Anna Z´s first visual experiences emerged from an environment whose images were marked by the northern lights, the snow, the dark and dense forests and the animals within. Very early she started taking several art curses, while she enjoyed an education that was specialized on mathematics and physics. She gained a deeper insight into the world of sound, frequencies and music in the most intimate way by learning several instruments with a focus on guitar.
Her art comes from the most different experiments, including, programming, hardware, drawing, photographies, oil and acrylic painting, all this with the music in mind. Besides experimenting with the following programs: quartz composer, max, processing, grasshopper, adobe programs, ableton live. She started making music on her own. Working with Reaktor and Cycling 74, she is creating her own instruments.</span>
<br> <br>
<br> <br>
<span class="fsl">A-li-ce & Menion collaborate for the first time tonight for a special improvisation session based on their common interest for connections between our minds, our memories, and its visual and musical respresentations. The sound concept is based on an analogue processing of the electric guitar to transform the identity of the original source, creating pulsing textures that build evocative and suspended atmospheres. A-li-ce builds hybrid visual landscapes using biological structures' drawings and rough video footages to create a memory puzzle. Get ready for a surprising live session !</span> <span class="fsl">Anna will speak about her background, collaboration in different media, the theory of limits in visual art and music and synthesis script of music and visuals.</span>
</td> </td>
</tr> </tr>
</tbody> </tbody>
@ -160,87 +161,7 @@
</tbody> </tbody>
</table> </table>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<table class="mcnImageBlock" width="100%" border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody class="mcnImageBlockOuter">
<tr>
<td style="padding: 9px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" class="mcnImageBlockInner" valign="top">
<table class="mcnImageContentContainer" width="100%" align="left" border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody>
<tr>
<td class="mcnImageContent" style="padding-right: 9px;padding-left: 9px;padding-top: 0;padding-bottom: 0;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" valign="top">
<img alt="" src="http://scopesessions.org/images/Hoshen-Guy_Briller-Georg_Werner.jpg" style="max-width: 3786px;padding-bottom: 0;display: inline !important;vertical-align: bottom;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" class="mcnImage"
width="564" align="left">
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table class="mcnTextBlock" width="100%" border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody class="mcnTextBlockOuter">
<tr>
<td class="mcnTextBlockInner" valign="top" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<table class="mcnTextContentContainer" width="600" align="left" border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody>
<tr>
<td class="mcnTextContent" style="padding-top: 9px;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #606060;font-family: Helvetica;font-size: 15px;line-height: 150%;text-align: left;"
valign="top">
<h3 class="null" style="margin: 0;padding: 0;display: block;font-family: Helvetica;font-size: 18px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: -.5px;text-align: left;color: #606060 !important;">
<span class="fsl">22:00 / Hoshen - upcycling illumination</span>
</h3>
<h4 class="null" style="margin: 0;padding: 0;display: block;font-family: Helvetica;font-size: 16px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;color: #808080 !important;">
<a href="http://en.georgwerner.de/" target="_blank" style="word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #6DC6DD;font-weight: normal;text-decoration: underline;">
<span class="fsl">Guy Briller + Georg Werner</span>
</a>
</h4>
<span class="fsl">Georg Werner, born 1980 in Dresden, and on the search for sounds and ways of making them ever since. Obtained a degree in cultural studies and aesthetic practice at the University of Hildesheim, studied experimental media design at the UDK Berlin and was a master student in sound art with Ulrich Eller at the HBK Braunschweig. As of 2007, he has been teaching courses on issues concerning sound art, sound installation and integrating technological artefacts into art-related contexts. Furthermore, he continues to work with various theatre groups. His work is characterised by the creative use of technology, found objects and spaces, which he modifies to change how they are perceived</span>
<br>
<br>
<span class="fsl">Audioreactive light installation - Originally Hoshen was a wearable sacred object that was used by the high priests in ancient jewish ceremonies.</span>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table class="mcnDividerBlock" border="0" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody class="mcnDividerBlockOuter">
<tr>
<td class="mcnDividerBlockInner" style="padding: 18px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<table style="border-top: 1px solid #999999;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" class="mcnDividerContent" border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<span></span>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

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