mirror of
https://github.com/nunocoracao/blowfish.git
synced 2026-01-30 16:31:52 +01:00
config redirect
This commit is contained in:
11
node_modules/packery/test/.jshintrc
generated
vendored
Normal file
11
node_modules/packery/test/.jshintrc
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"browser": true,
|
||||
"undef": true,
|
||||
"unused": true,
|
||||
"globals": {
|
||||
"appendRandomSizedItems": true,
|
||||
"gimmeAnItemElement": true,
|
||||
"Packery": false,
|
||||
"QUnit": false
|
||||
}
|
||||
}
|
||||
35
node_modules/packery/test/helpers.js
generated
vendored
Normal file
35
node_modules/packery/test/helpers.js
generated
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
( function( window ) {
|
||||
|
||||
'use strict';
|
||||
|
||||
window.appendRandomSizedItems = function( container ) {
|
||||
var frag = document.createDocumentFragment();
|
||||
var item;
|
||||
for ( var i=0; i < 9; i++ ) {
|
||||
item = document.createElement('div');
|
||||
item.className = 'item';
|
||||
var w = Math.floor( Math.random() * Math.random() * 70 ) + 10;
|
||||
var h = Math.floor( Math.random() * Math.random() * 70 ) + 10;
|
||||
item.style.width = w + 'px';
|
||||
item.style.height = h + 'px';
|
||||
frag.appendChild( item );
|
||||
}
|
||||
|
||||
// last one isn't random, but is needed for checking
|
||||
// bigger than colum width and stuff
|
||||
item = document.createElement('div');
|
||||
item.className = 'item';
|
||||
item.style.width = '72px';
|
||||
item.style.height = '25px';
|
||||
frag.appendChild( item );
|
||||
|
||||
container.appendChild( frag );
|
||||
};
|
||||
|
||||
window.gimmeAnItemElement = function() {
|
||||
var elem = document.createElement('div');
|
||||
elem.className = 'item';
|
||||
return elem;
|
||||
};
|
||||
|
||||
})( window );
|
||||
321
node_modules/packery/test/index.html
generated
vendored
Normal file
321
node_modules/packery/test/index.html
generated
vendored
Normal file
@@ -0,0 +1,321 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<title>Packery tests</title>
|
||||
|
||||
<link rel="stylesheet" href="../bower_components/qunit/qunit/qunit.css" />
|
||||
<link rel="stylesheet" href="test.css" />
|
||||
|
||||
<script src="../bower_components/qunit/qunit/qunit.js"></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Packery tests</h1>
|
||||
|
||||
<div id="qunit"></div>
|
||||
|
||||
<div id="empty" class="container"></div>
|
||||
|
||||
<div id="default">
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item h2"></div>
|
||||
</div>
|
||||
|
||||
<div id="filtered" class="container">
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="foobar"></div>
|
||||
</div>
|
||||
|
||||
<div id="found" class="container">
|
||||
<div><div class="item w2"></div></div>
|
||||
<div><div class="item h2"></div></div>
|
||||
<div><div class="item w2"></div></div>
|
||||
<div><div class="item"></div></div>
|
||||
</div>
|
||||
|
||||
<div id="filter-found" class="container">
|
||||
<div class="item h2"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="foobar"></div>
|
||||
<div><div class="item w2"></div></div>
|
||||
<div><div class="item"></div></div>
|
||||
</div>
|
||||
|
||||
<div id="layout" class="container">
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
</div>
|
||||
|
||||
<h2>Layout extra big</h2>
|
||||
|
||||
<div id="layout-extra-big" class="container">
|
||||
<div class="item w5"></div>
|
||||
<div class="item w2"></div>
|
||||
<div class="item w5"></div>
|
||||
<div class="item w2"></div>
|
||||
<div class="item w2"></div>
|
||||
</div>
|
||||
|
||||
<h2>Consecutive</h2>
|
||||
|
||||
<div id="consecutive" class="container">
|
||||
<div class="item i0"></div>
|
||||
<div class="item i1"></div>
|
||||
<div class="item i2"></div>
|
||||
<div class="item i3"></div>
|
||||
</div>
|
||||
|
||||
<div id="gridded1" class="container gridded">
|
||||
<div class="grid-sizer"></div>
|
||||
<div class="gutter-sizer"></div>
|
||||
</div>
|
||||
|
||||
<div id="gridded2" class="container gridded">
|
||||
<div class="grid-sizer"></div>
|
||||
<div class="gutter-sizer"></div>
|
||||
</div>
|
||||
|
||||
<div id="container-size" class="container">
|
||||
<div class="item"></div>
|
||||
<div class="item h2"></div>
|
||||
</div>
|
||||
|
||||
<div id="add-remove" class="container">
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item w2"></div>
|
||||
<div class="item"></div>
|
||||
</div>
|
||||
|
||||
<div id="stamped1" class="container has-stamps place-stamps">
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="stamp stamp1"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="stamp stamp2"></div>
|
||||
<div class="item"></div>
|
||||
</div>
|
||||
|
||||
<div id="stamped2" class="container has-stamps">
|
||||
<div class="item stamp stamp1"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item stamp stamp2"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
</div>
|
||||
|
||||
<div id="stamped3" class="container has-stamps place-stamps">
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="stamp stamp1"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="stamp stamp2"></div>
|
||||
<div class="item"></div>
|
||||
</div>
|
||||
|
||||
<div id="stamped4" class="container has-stamps place-stamps">
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="stamp stamp1"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="stamp stamp2"></div>
|
||||
<div class="item"></div>
|
||||
</div>
|
||||
|
||||
<h2>Placed borders</h2>
|
||||
|
||||
<div id="stamped-borders" class="container has-stamps">
|
||||
<div class="stamp stamp1"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
</div>
|
||||
|
||||
<h2>Adding</h2>
|
||||
|
||||
<div id="adding" class="container">
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
</div>
|
||||
|
||||
<h2>Prepend</h2>
|
||||
|
||||
<div id="prepend" class="container">
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
</div>
|
||||
|
||||
<h2>Draggable</h2>
|
||||
|
||||
<div id="draggable" class="container">
|
||||
<div class="item i0"></div>
|
||||
<div class="item i1"></div>
|
||||
<div class="item i2"></div>
|
||||
<div class="item i3 dragger"></div>
|
||||
<div class="item i4"></div>
|
||||
<div class="item i5"></div>
|
||||
<div class="item i6"></div>
|
||||
<div class="item i7"></div>
|
||||
</div>
|
||||
|
||||
<h2>Fitting</h2>
|
||||
|
||||
<div id="fitting" class="container">
|
||||
<div class="item i0"></div>
|
||||
<div class="item i1"></div>
|
||||
<div class="item i2"></div>
|
||||
<div class="item i3"></div>
|
||||
<div class="item i4"></div>
|
||||
<div class="item i5"></div>
|
||||
<div class="item i6"></div>
|
||||
<div class="item i7"></div>
|
||||
</div>
|
||||
|
||||
<h2>Declarative</h2>
|
||||
|
||||
<div id="declarative" class="container js-packery">
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
</div>
|
||||
|
||||
<!-- wrong quote marks for JSON -->
|
||||
<div id="declarative-bad-json" class="container js-packery" data-packery-options="{ 'columnWidth': 30 }">
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
</div>
|
||||
|
||||
<div id="declarative-good-json" class="container js-packery" data-packery-options='{ "columnWidth": 25, "rowHeight": 30, "transitionDuration": "1.2s", "isResizable": false }'>
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
</div>
|
||||
|
||||
<h2>jQuery</h2>
|
||||
|
||||
<div id="jquery" class="container">
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item h2"></div>
|
||||
</div>
|
||||
|
||||
<h2>isInitLayout option</h2>
|
||||
<div id="is-init-layout" class="container">
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item h2"></div>
|
||||
</div>
|
||||
|
||||
<!-- <h2>isLayoutInstant option</h2>
|
||||
<div id="is-layout-instant" class="container">
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item w2"></div>
|
||||
<div class="item h2"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item h2"></div>
|
||||
</div> -->
|
||||
|
||||
<div id="hidden-items" class="container">
|
||||
<div class="item w2 h2 hidden"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
</div>
|
||||
|
||||
<h2>Sub-pixel fit</h2>
|
||||
|
||||
<div id="sub-pixel-fit" class="container">
|
||||
<div class="grid-sizer"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item w2"></div>
|
||||
<div class="item w2"></div>
|
||||
</div>
|
||||
|
||||
<script src="../bower_components/get-size/get-size.js"></script>
|
||||
<script src="../bower_components/desandro-matches-selector/matches-selector.js"></script>
|
||||
<script src="../bower_components/ev-emitter/ev-emitter.js"></script>
|
||||
<script src="../bower_components/jquery/dist/jquery.min.js"></script>
|
||||
<script src="../bower_components/jquery-bridget/jquery-bridget.js"></script>
|
||||
<script src="../bower_components/fizzy-ui-utils/utils.js"></script>
|
||||
<script src="../bower_components/outlayer/item.js"></script>
|
||||
<script src="../bower_components/outlayer/outlayer.js"></script>
|
||||
<script src="../js/rect.js"></script>
|
||||
<script src="../js/packer.js"></script>
|
||||
<script src="../js/item.js"></script>
|
||||
<script src="../js/packery.js"></script>
|
||||
|
||||
<script src="helpers.js"></script>
|
||||
|
||||
<script src="unit/test-rect.js"></script>
|
||||
<script src="unit/test-packer.js"></script>
|
||||
|
||||
<script src="unit/basics.js"></script>
|
||||
<script src="unit/defaults-empty.js"></script>
|
||||
<script src="unit/get-items.js"></script>
|
||||
<script src="unit/layout.js"></script>
|
||||
<script src="unit/layout-extra-big.js"></script>
|
||||
<script src="unit/consecutive.js"></script>
|
||||
<script src="unit/grid.js"></script>
|
||||
<script src="unit/container-size.js"></script>
|
||||
<script src="unit/remove.js"></script>
|
||||
<script src="unit/stamped.js"></script>
|
||||
<script src="unit/add-items.js"></script>
|
||||
<script src="unit/prepend.js"></script>
|
||||
<script src="unit/draggable.js"></script>
|
||||
<script src="unit/fit.js"></script>
|
||||
<script src="unit/jquery-plugin.js"></script>
|
||||
<script src="unit/declarative.js"></script>
|
||||
<script src="unit/is-init-layout.js"></script>
|
||||
<script src="unit/hidden-items.js"></script>
|
||||
<script src="unit/sub-pixel-fit.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
113
node_modules/packery/test/test.css
generated
vendored
Normal file
113
node_modules/packery/test/test.css
generated
vendored
Normal file
@@ -0,0 +1,113 @@
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 80px;
|
||||
margin-bottom: 20px;
|
||||
background: #EEE;
|
||||
}
|
||||
|
||||
.container:after {
|
||||
content: '';
|
||||
display: table;
|
||||
}
|
||||
|
||||
.item {
|
||||
float: left;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
margin: 1px;
|
||||
background: #444;
|
||||
}
|
||||
|
||||
.item.w2 { width: 38px; }
|
||||
.item.h2 { height: 38px; }
|
||||
.item.w4 { width: 78px; }
|
||||
.item.h4 { height: 78px; }
|
||||
.item.w5 { width: 98px; }
|
||||
|
||||
.gridded .grid-sizer {
|
||||
width: 30px;
|
||||
height: 25px;
|
||||
}
|
||||
|
||||
.gridded .gutter-sizer {
|
||||
width: 10px;
|
||||
}
|
||||
|
||||
.stamp {
|
||||
background: red;
|
||||
}
|
||||
|
||||
.has-stamps {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.place-stamps .stamp {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.place-stamps .stamp1 {
|
||||
width: 30px;
|
||||
height: 25px;
|
||||
left: 22px;
|
||||
top: 10px;
|
||||
}
|
||||
|
||||
.place-stamps .stamp2 {
|
||||
width: 10px;
|
||||
height: 45px;
|
||||
left: 3px;
|
||||
top: 30px;
|
||||
}
|
||||
|
||||
#stamped2 .stamp1 {
|
||||
position: relative;
|
||||
left: 8px;
|
||||
top: 8px;
|
||||
}
|
||||
|
||||
#stamped2 .stamp2 {
|
||||
position: absolute;
|
||||
right: 8px;
|
||||
top: 23px;
|
||||
}
|
||||
|
||||
#stamped-borders {
|
||||
border-left: 10px solid;
|
||||
border-top: 15px solid;
|
||||
}
|
||||
|
||||
#stamped-borders .stamp1 {
|
||||
width: 50px;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
.dragger {
|
||||
background: green;
|
||||
}
|
||||
|
||||
/*#fitting {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
}*/
|
||||
|
||||
#hidden-items .hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#sub-pixel-fit {
|
||||
width: 290px;
|
||||
}
|
||||
|
||||
#sub-pixel-fit .item,
|
||||
#sub-pixel-fit .grid-sizer {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
#sub-pixel-fit .item {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#sub-pixel-fit .item.w2 { width: 40%; }
|
||||
34
node_modules/packery/test/unit/add-items.js
generated
vendored
Normal file
34
node_modules/packery/test/unit/add-items.js
generated
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
QUnit.test( 'addItems', function( assert ) {
|
||||
var container = document.querySelector('#adding');
|
||||
var pckry = new Packery( container, {
|
||||
itemSelector: '.item'
|
||||
});
|
||||
|
||||
var elem = gimmeAnItemElement();
|
||||
var items = pckry.addItems( elem );
|
||||
|
||||
assert.equal( items.length, 1, 'method return array of 1' );
|
||||
assert.equal( pckry.items[2].element, elem, 'item was added, element matches' );
|
||||
assert.equal( items[0] instanceof Packery.Item, true, 'item is instance of Packery.Item' );
|
||||
assert.equal( pckry.items.length, 3, 'item added to items' );
|
||||
|
||||
// try it with an array
|
||||
var elems = [ gimmeAnItemElement(), gimmeAnItemElement(), document.createElement('div') ];
|
||||
items = pckry.addItems( elems );
|
||||
assert.equal( items.length, 2, 'method return array of 2' );
|
||||
assert.equal( pckry.items[3].element, elems[0], 'item was added, element matches' );
|
||||
assert.equal( pckry.items.length, 5, 'two items added to items' );
|
||||
|
||||
// try it with HTMLCollection / NodeList
|
||||
var fragment = document.createDocumentFragment();
|
||||
fragment.appendChild( gimmeAnItemElement() );
|
||||
fragment.appendChild( document.createElement('div') );
|
||||
fragment.appendChild( gimmeAnItemElement() );
|
||||
|
||||
var divs = fragment.querySelectorAll('div');
|
||||
items = pckry.addItems( divs );
|
||||
assert.equal( items.length, 2, 'method return array of 2' );
|
||||
assert.equal( pckry.items[5].element, divs[0], 'item was added, element matches' );
|
||||
assert.equal( pckry.items.length, 7, 'two items added to items' );
|
||||
|
||||
});
|
||||
14
node_modules/packery/test/unit/basics.js
generated
vendored
Normal file
14
node_modules/packery/test/unit/basics.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
QUnit.module('Packery');
|
||||
|
||||
QUnit.test( 'basics', function( assert ) {
|
||||
assert.equal( typeof Packery, 'function', 'Packery is a function' );
|
||||
// TODO pckry should be null or something
|
||||
var pckry1 = new Packery();
|
||||
// console.log( pckry, typeof pckry );
|
||||
assert.ok( !pckry1._isLayoutInited, 'packery not inited on undefined' );
|
||||
|
||||
// var pckry2 = new Packery({});
|
||||
// console.log( pckry, typeof pckry );
|
||||
// FIXME Outlayer should throw error up top
|
||||
// assert.ok( !pckry2._isLayoutInited, 'packery not inited on object' );
|
||||
});
|
||||
36
node_modules/packery/test/unit/consecutive.js
generated
vendored
Normal file
36
node_modules/packery/test/unit/consecutive.js
generated
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
QUnit.test( 'consecutive', function( assert ) {
|
||||
var container = document.querySelector('#consecutive');
|
||||
var pckry = new Packery( container );
|
||||
|
||||
var i0 = container.querySelector('.i0');
|
||||
var i1 = container.querySelector('.i1');
|
||||
var i3 = container.querySelector('.i3');
|
||||
i1.style.width = '28px';
|
||||
i1.style.height = '28px';
|
||||
i1.style.background = 'blue';
|
||||
|
||||
var done = assert.async();
|
||||
|
||||
pckry.once( 'layoutComplete', function() {
|
||||
assert.ok( true, 'layoutComplete triggered' );
|
||||
assert.equal( i3.style.left, '0px', 'i3.style.left' );
|
||||
assert.equal( i3.style.top, '20px', 'i3.style.top' );
|
||||
setTimeout( fit1 );
|
||||
});
|
||||
|
||||
pckry.layout();
|
||||
|
||||
function fit1() {
|
||||
pckry.once( 'layoutComplete', function() {
|
||||
assert.equal( i3.style.left, '60px', 'i3.style.left' );
|
||||
assert.equal( i3.style.top, '30px', 'i3.style.top' );
|
||||
// all done
|
||||
done();
|
||||
});
|
||||
i0.style.width = '38px';
|
||||
i0.style.height = '38px';
|
||||
i0.style.background = 'orange';
|
||||
pckry.layout();
|
||||
}
|
||||
|
||||
});
|
||||
24
node_modules/packery/test/unit/container-size.js
generated
vendored
Normal file
24
node_modules/packery/test/unit/container-size.js
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
QUnit.test( 'container size', function( assert ) {
|
||||
var container = document.querySelector('#container-size');
|
||||
var pckry = new Packery( container );
|
||||
assert.equal( container.style.height, '40px', 'default height' );
|
||||
|
||||
pckry.options.gutter = 4;
|
||||
pckry._getMeasurements();
|
||||
pckry.layout();
|
||||
assert.equal( container.style.height, '40px', 'added gutter, height same' );
|
||||
|
||||
// addPaddingBorders() {
|
||||
container.style.padding = '1px 2px 3px 4px';
|
||||
container.style.borderStyle = 'solid';
|
||||
container.style.borderWidth = '1px 2px 3px 4px';
|
||||
pckry.layout();
|
||||
assert.equal( container.style.height, '40px', 'add padding, height same' );
|
||||
|
||||
// border box
|
||||
container.style.WebkitBoxSizing = 'border-box';
|
||||
container.style.MozBoxSizing = 'border-box';
|
||||
container.style.boxSizing = 'border-box';
|
||||
pckry.layout();
|
||||
assert.equal( container.style.height, '48px', 'border-box, height + padding + border' );
|
||||
});
|
||||
29
node_modules/packery/test/unit/declarative.js
generated
vendored
Normal file
29
node_modules/packery/test/unit/declarative.js
generated
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
QUnit.test( 'declarative', function( assert ) {
|
||||
|
||||
var $ = window.jQuery;
|
||||
|
||||
// no data-packery-options
|
||||
var container1 = document.querySelector('#declarative');
|
||||
var pckry1 = Packery.data( container1 );
|
||||
assert.ok( pckry1 instanceof Packery, 'Packery instance retrieved from element' );
|
||||
assert.deepEqual( pckry1.options, Packery.defaults, 'options match defaults' );
|
||||
assert.ok( pckry1._isLayoutInited, 'Packer was initialized' );
|
||||
|
||||
// has data-packery-options, but bad JSON
|
||||
var container2 = document.querySelector('#declarative-bad-json');
|
||||
var pckry2 = Packery.data( container2 );
|
||||
assert.ok( !pckry2, 'bad JSON in data-packery-options does not init Packery' );
|
||||
assert.ok( !container2.packeryGUID, 'no expando property on element' );
|
||||
|
||||
// has good data-packery-options
|
||||
var container3 = document.querySelector('#declarative-good-json');
|
||||
var pckry3 = Packery.data( container3 );
|
||||
assert.ok( pckry3 instanceof Packery, 'Packery instance retrieved from element, with good JSON in data-packery-options' );
|
||||
assert.strictEqual( pckry3.options.columnWidth, 25, 'columnWidth option was set' );
|
||||
assert.strictEqual( pckry3.options.rowHeight, 30, 'rowHeight option was set' );
|
||||
assert.strictEqual( pckry3.options.transitionDuration, '1.2s', 'transitionDuration option was set' );
|
||||
assert.strictEqual( pckry3.options.isResizable, false, 'isResizable option was set' );
|
||||
|
||||
assert.equal( $.data( container3, 'packery' ), pckry3, '$.data( elem, "packery") returns Packery instance' );
|
||||
|
||||
});
|
||||
21
node_modules/packery/test/unit/defaults-empty.js
generated
vendored
Normal file
21
node_modules/packery/test/unit/defaults-empty.js
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
QUnit.test( 'defaults / empty', function( assert ) {
|
||||
var empty = document.querySelector('#empty');
|
||||
var pckry = new Packery( empty );
|
||||
var done = assert.async();
|
||||
|
||||
assert.deepEqual( pckry.options, Packery.defaults, 'default options match prototype' );
|
||||
assert.equal( pckry.items.length, 0, 'zero items' );
|
||||
assert.equal( pckry.stamps.length, 0, 'zero stamped elements' );
|
||||
assert.equal( Packery.data( empty ), pckry, 'data method returns instance' );
|
||||
assert.ok( pckry.isResizeBound, 'isResizeBound' );
|
||||
|
||||
pckry.once( 'layoutComplete', function( items ) {
|
||||
assert.ok( true, 'layoutComplete triggered with no items' );
|
||||
assert.equal( items.length, 0, 'no items' );
|
||||
done();
|
||||
});
|
||||
|
||||
// add gutter, to check that container size doesn't get negative number
|
||||
pckry.options.gutter = 20;
|
||||
pckry.layout();
|
||||
});
|
||||
84
node_modules/packery/test/unit/draggable.js
generated
vendored
Normal file
84
node_modules/packery/test/unit/draggable.js
generated
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
QUnit.test( 'draggable', function( assert ) {
|
||||
var container = document.querySelector('#draggable');
|
||||
var itemElems = container.querySelectorAll('.item');
|
||||
var dragElem = container.querySelector('.dragger');
|
||||
|
||||
var pckry = new Packery( container, {
|
||||
transitionDuration: '0.2s'
|
||||
});
|
||||
|
||||
var done = assert.async();
|
||||
|
||||
function simulateDrag( x, y ) {
|
||||
pckry.itemDragStart( dragElem );
|
||||
pckry.itemDragMove( dragElem, x, y );
|
||||
pckry.itemDragEnd( dragElem );
|
||||
}
|
||||
|
||||
function checkItemPosition( itemElem, x, y, message ) {
|
||||
var actual = itemElem.style.left + ' ' + itemElem.style.top;
|
||||
var expected = x + 'px ' + y + 'px';
|
||||
message = message || 'item position';
|
||||
assert.equal( actual, expected, message );
|
||||
}
|
||||
|
||||
// simulate drag to middle
|
||||
pckry.once( 'dragItemPositioned', function() {
|
||||
assert.ok( true, 'dragItemPositioned did trigger, 4th item moved to 35, 15' );
|
||||
checkItemPosition( itemElems[0], 0, 0, '1st item' );
|
||||
checkItemPosition( itemElems[1], 20, 0, '2nd item' );
|
||||
checkItemPosition( itemElems[2], 40, 0, '3rd item' );
|
||||
checkItemPosition( itemElems[6], 40, 40, '7th item, moved down below dragged item' );
|
||||
checkItemPosition( itemElems[7], 60, 0, '8th item, moved up' );
|
||||
checkItemPosition( dragElem, 40, 20, 'drag item, 2nd row, 3rd column' );
|
||||
assert.equal( pckry.items[6].element, dragElem, 'dragged elem in now 7th in items' );
|
||||
// HACK setTimeout because of Packery bug
|
||||
setTimeout( dragOutside );
|
||||
});
|
||||
|
||||
simulateDrag( 35, 15 );
|
||||
|
||||
function dragOutside() {
|
||||
pckry.once( 'dragItemPositioned', function() {
|
||||
assert.ok( true, 'dragItemPositioned event did trigger' );
|
||||
checkItemPosition( dragElem, 60, 0, 'drag item, 1st row, 4th column' );
|
||||
checkItemPosition( itemElems[4], 0, 20, '5th item, did not move' );
|
||||
checkItemPosition( itemElems[6], 40, 20, '7th item, moved back up' );
|
||||
checkItemPosition( itemElems[7], 60, 20, '8th item, moved back down' );
|
||||
assert.equal( pckry.items[3].element, dragElem, 'dragged elem in now 4th in items' );
|
||||
|
||||
setTimeout( dragWithGrid );
|
||||
});
|
||||
|
||||
simulateDrag( 300, -60 );
|
||||
}
|
||||
|
||||
function dragWithGrid() {
|
||||
pckry.options.columnWidth = 25;
|
||||
pckry.options.rowHeight = 25;
|
||||
// disable transition, layout, re-enable transition
|
||||
pckry.options.transitionDuration = 0;
|
||||
pckry.layout();
|
||||
pckry.options.transitionDuration = '0.2s';
|
||||
|
||||
pckry.once( 'dragItemPositioned', function() {
|
||||
checkItemPosition( dragElem, 25, 25, 'drag item, 2nd row, 2nd column' );
|
||||
checkItemPosition( itemElems[4], 25, 50, '5th item, 3rd row, 2nd column, moved down' );
|
||||
checkItemPosition( itemElems[5], 50, 25, '6th item, 2nd row, 3rd column, did not move' );
|
||||
checkItemPosition( itemElems[6], 0, 25, '7th item, 2nd row, 1st column, moved up' );
|
||||
checkItemPosition( itemElems[7], 25, 75, '7th item, 4th row, 2nd column, moved down' );
|
||||
|
||||
setTimeout( dragOutsideWithGrid );
|
||||
});
|
||||
simulateDrag( 35, 35 );
|
||||
}
|
||||
|
||||
function dragOutsideWithGrid() {
|
||||
pckry.once( 'dragItemPositioned', function() {
|
||||
checkItemPosition( dragElem, 50, 0, 'dragged, top right corner in grid' );
|
||||
done();
|
||||
});
|
||||
simulateDrag( 300, -30 );
|
||||
}
|
||||
|
||||
});
|
||||
164
node_modules/packery/test/unit/fit.js
generated
vendored
Normal file
164
node_modules/packery/test/unit/fit.js
generated
vendored
Normal file
@@ -0,0 +1,164 @@
|
||||
QUnit.test( '.fit()', function( assert ) {
|
||||
var container = document.querySelector('#fitting');
|
||||
var pckry = new Packery( container, {
|
||||
transitionDuration: '0.2s'
|
||||
});
|
||||
|
||||
var done = assert.async();
|
||||
|
||||
var elem1 = container.querySelector('.i1');
|
||||
var elem2 = container.querySelector('.i2');
|
||||
var elem3 = container.querySelector('.i3');
|
||||
var elem5 = container.querySelector('.i5');
|
||||
var elem6 = container.querySelector('.i6');
|
||||
var item3 = pckry.getItem( elem3 );
|
||||
|
||||
function checkItemPosition( itemElem, x, y, message ) {
|
||||
var actual = itemElem.style.left + ' ' + itemElem.style.top;
|
||||
var expected = x + 'px ' + y + 'px';
|
||||
message = message || 'item position';
|
||||
assert.equal( actual, expected, message );
|
||||
}
|
||||
|
||||
// expand item3
|
||||
elem3.style.width = '48px';
|
||||
elem3.style.height = '28px';
|
||||
elem3.style.background = 'blue';
|
||||
|
||||
// quickie async
|
||||
var isFit, isLaidOut;
|
||||
function resetAsync() {
|
||||
isFit = false;
|
||||
isLaidOut = false;
|
||||
}
|
||||
|
||||
// -------------------------- fit -------------------------- //
|
||||
|
||||
function ready1() {
|
||||
if ( !isFit || !isLaidOut ) {
|
||||
return;
|
||||
}
|
||||
checkItemPosition( elem1, 20, 30, 'elem1 shifted down' );
|
||||
checkItemPosition( elem2, 40, 30, 'elem2 shifted down' );
|
||||
checkItemPosition( elem5, 20, 50, 'elem5 shifted down, 2nd row' );
|
||||
resetAsync();
|
||||
// HACK setTimeout for Packery bug
|
||||
setTimeout( fit2 );
|
||||
}
|
||||
|
||||
pckry.once( 'fitComplete', function( item ) {
|
||||
assert.ok( true, 'fitComplete event emitted' );
|
||||
assert.equal( item, item3, 'item argument returned' );
|
||||
checkItemPosition( elem3, 20, 0, 'fit elem3 shifted into 2nd spot' );
|
||||
isFit = true;
|
||||
ready1();
|
||||
});
|
||||
|
||||
pckry.once( 'layoutComplete', function() {
|
||||
assert.ok( true, 'layoutComplete event emitted' );
|
||||
isLaidOut = true;
|
||||
ready1();
|
||||
});
|
||||
|
||||
// fit it
|
||||
pckry.fit( elem3 );
|
||||
|
||||
// -------------------------- fit into spot -------------------------- //
|
||||
|
||||
function ready2() {
|
||||
if ( !isFit || !isLaidOut ) {
|
||||
return;
|
||||
}
|
||||
resetAsync();
|
||||
|
||||
setTimeout( fit3 );
|
||||
}
|
||||
|
||||
function fit2() {
|
||||
// reset small size
|
||||
elem3.style.width = '18px';
|
||||
elem3.style.height = '18px';
|
||||
|
||||
pckry.once( 'fitComplete', function() {
|
||||
assert.ok( true, 'fitComplete event emitted' );
|
||||
checkItemPosition( elem3, 40, 20, 'fit item in 40, 20' );
|
||||
isFit = true;
|
||||
ready2();
|
||||
});
|
||||
|
||||
pckry.once( 'layoutComplete', function() {
|
||||
assert.ok( true, 'layoutComplete event emitted' );
|
||||
checkItemPosition( elem3, 40, 20, 'fit item in 40, 20' );
|
||||
checkItemPosition( elem1, 20, 0, 'elem1 shifted up' );
|
||||
checkItemPosition( elem2, 40, 0, 'elem2 shifted up' );
|
||||
checkItemPosition( elem5, 20, 20, 'elem5 shifted up' );
|
||||
checkItemPosition( elem6, 40, 40, 'elem6 shifted down' );
|
||||
isLaidOut = true;
|
||||
ready2();
|
||||
});
|
||||
|
||||
// fit to spot
|
||||
pckry.fit( elem3, 40, 20 );
|
||||
}
|
||||
|
||||
// -------------------------- fit outside container -------------------------- //
|
||||
|
||||
function ready3() {
|
||||
if ( !isFit || !isLaidOut ) {
|
||||
return;
|
||||
}
|
||||
resetAsync();
|
||||
|
||||
setTimeout( fit4 );
|
||||
}
|
||||
|
||||
function fit3() {
|
||||
pckry.once( 'fitComplete', function() {
|
||||
checkItemPosition( elem3, 40, 40, 'fit elem in 3rd row, 3rd column' );
|
||||
isFit = true;
|
||||
ready3();
|
||||
});
|
||||
pckry.once( 'layoutComplete', function() {
|
||||
isLaidOut = true;
|
||||
ready3();
|
||||
});
|
||||
|
||||
// try to position item outside container
|
||||
pckry.fit( elem3, 120, 120 );
|
||||
}
|
||||
|
||||
// -------------------------- columnWidth & rowHeight -------------------------- //
|
||||
|
||||
// fit with columnWidth and rowHeight
|
||||
function fit4() {
|
||||
pckry.options.columnWidth = 25;
|
||||
pckry.options.rowHeight = 30;
|
||||
// disable transition, trigger layout, re-enable transition
|
||||
pckry.options.transitionDuration = 0;
|
||||
pckry.layout();
|
||||
pckry.options.transitionDuration = '0.2s';
|
||||
|
||||
function ready4() {
|
||||
if ( !isFit || !isLaidOut ) {
|
||||
return;
|
||||
}
|
||||
done();
|
||||
}
|
||||
|
||||
pckry.on( 'fitComplete', function() {
|
||||
assert.ok( true, 'fitComplete event emitted' );
|
||||
checkItemPosition( elem3, 50, 30, 'fit item, 2nd row, 3rd column' );
|
||||
isFit = true;
|
||||
ready4();
|
||||
});
|
||||
|
||||
pckry.on( 'layoutComplete', function() {
|
||||
checkItemPosition( elem5, 50, 60, 'elem5 shifted down' );
|
||||
isLaidOut = true;
|
||||
ready4();
|
||||
});
|
||||
|
||||
pckry.fit( elem3, 55, 28 );
|
||||
}
|
||||
|
||||
});
|
||||
24
node_modules/packery/test/unit/get-items.js
generated
vendored
Normal file
24
node_modules/packery/test/unit/get-items.js
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
QUnit.test( 'getItems', function( assert ) {
|
||||
var defaultElem = document.querySelector('#default');
|
||||
var defaultPckry = new Packery( defaultElem );
|
||||
|
||||
var filtered = document.querySelector('#filtered');
|
||||
var filteredPckry = new Packery( filtered, {
|
||||
itemSelector: '.item'
|
||||
});
|
||||
|
||||
var found = document.querySelector('#found');
|
||||
var foundPckry = new Packery( found, {
|
||||
itemSelector: '.item'
|
||||
});
|
||||
|
||||
var filterFound = document.querySelector('#filter-found');
|
||||
var filterFoundPckry = new Packery( filterFound, {
|
||||
itemSelector: '.item'
|
||||
});
|
||||
|
||||
assert.equal( defaultPckry.items.length, defaultElem.children.length, 'no itemSelector, all children' );
|
||||
assert.equal( filteredPckry.items.length, 6, 'filtered, itemSelector = .item, not all children' );
|
||||
assert.equal( foundPckry.items.length, 4, 'found itemSelector = .item, querySelectoring' );
|
||||
assert.equal( filterFoundPckry.items.length, 5, 'filter found' );
|
||||
});
|
||||
81
node_modules/packery/test/unit/grid.js
generated
vendored
Normal file
81
node_modules/packery/test/unit/grid.js
generated
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
QUnit.test( 'layout with columnWidth and rowHeight', function( assert ) {
|
||||
var container = document.querySelector('#gridded1');
|
||||
appendRandomSizedItems( container );
|
||||
|
||||
var pckry = new Packery( container, {
|
||||
itemSelector: '.item',
|
||||
columnWidth: 25,
|
||||
rowHeight: 30
|
||||
});
|
||||
|
||||
var done = assert.async();
|
||||
|
||||
function checkPackeryGrid() {
|
||||
var colW = pckry.columnWidth + pckry.gutter;
|
||||
var rowH = pckry.rowHeight + pckry.gutter;
|
||||
for ( var i=0, len = pckry.items.length; i < len; i++ ) {
|
||||
var elem = pckry.items[i].element;
|
||||
var x = parseInt( elem.style.left, 10 );
|
||||
var y = parseInt( elem.style.top, 10 );
|
||||
assert.equal( x % colW, 0, 'item ' + i + ' x position is multiple of columnWidth' );
|
||||
assert.equal( y % rowH, 0, 'item ' + i + ' y position is multiple of rowHeight' );
|
||||
}
|
||||
}
|
||||
|
||||
assert.equal( pckry.options.columnWidth, 25, 'columnWidth option is set' );
|
||||
assert.equal( pckry.options.rowHeight, 30, 'rowHeight option is set' );
|
||||
assert.equal( pckry.columnWidth, 25, 'columnWidth is set' );
|
||||
assert.equal( pckry.rowHeight, 30, 'rowHeight is set' );
|
||||
checkPackeryGrid( pckry );
|
||||
|
||||
var gridSizer = container.querySelector('.grid-sizer');
|
||||
|
||||
pckry.options.columnWidth = gridSizer;
|
||||
pckry.options.rowHeight = gridSizer;
|
||||
pckry.once( 'layoutComplete', function() {
|
||||
checkPackeryGrid( pckry );
|
||||
setTimeout( setGutter );
|
||||
});
|
||||
|
||||
pckry.layout();
|
||||
|
||||
assert.equal( pckry.columnWidth, 30, 'columnWidth is set from element width, in px' );
|
||||
assert.equal( pckry.rowHeight, 25, 'rowHeight is set from element height, in px' );
|
||||
|
||||
function setGutter() {
|
||||
pckry.options.gutter = container.querySelector('.gutter-sizer');
|
||||
pckry.once( 'layoutComplete', function() {
|
||||
checkPackeryGrid( pckry );
|
||||
setTimeout( setPercentageGrid );
|
||||
});
|
||||
pckry.layout();
|
||||
assert.equal( pckry.gutter, 10, 'gutter set from element width, in px' );
|
||||
}
|
||||
|
||||
function setPercentageGrid() {
|
||||
gridSizer.style.width = '40%';
|
||||
pckry.once( 'layoutComplete', function() {
|
||||
checkPackeryGrid( pckry );
|
||||
done();
|
||||
});
|
||||
pckry.layout();
|
||||
assert.equal( pckry.columnWidth, 32, 'columnWidth is set from element width, in percentage' );
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
QUnit.test( 'columnWidth, rowHeight, gutter via selector', function( assert ) {
|
||||
var container = document.querySelector('#gridded2');
|
||||
appendRandomSizedItems( container );
|
||||
|
||||
var pckry = new Packery( container, {
|
||||
itemSelector: '.item',
|
||||
columnWidth: '.grid-sizer',
|
||||
rowHeight: '.grid-sizer',
|
||||
gutter: '.gutter-sizer'
|
||||
});
|
||||
|
||||
assert.equal( pckry.columnWidth, 30, 'columnWidth' );
|
||||
assert.equal( pckry.rowHeight, 25, 'rowHeight' );
|
||||
assert.equal( pckry.gutter, 10, 'gutter' );
|
||||
});
|
||||
8
node_modules/packery/test/unit/hidden-items.js
generated
vendored
Normal file
8
node_modules/packery/test/unit/hidden-items.js
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
QUnit.test( 'hidden items', function( assert ) {
|
||||
var container = document.querySelector('#hidden-items');
|
||||
var pckry = new Packery( container );
|
||||
var itemElem1 = pckry.items[1].element;
|
||||
var itemElem2 = pckry.items[2].element;
|
||||
assert.equal( itemElem1.style.left, '0px', '2nd item on left' );
|
||||
assert.equal( itemElem2.style.top, '0px', '3rd item on top' );
|
||||
});
|
||||
8
node_modules/packery/test/unit/is-init-layout.js
generated
vendored
Normal file
8
node_modules/packery/test/unit/is-init-layout.js
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
QUnit.test( 'initLayout', function( assert ) {
|
||||
var container = document.querySelector('#is-init-layout');
|
||||
var pckry = new Packery( container, {
|
||||
initLayout: false
|
||||
});
|
||||
assert.ok( !pckry._isLayoutInited, 'packy is not layout initialized' );
|
||||
assert.equal( container.children[0].style.left, '', 'no style on first child' );
|
||||
});
|
||||
31
node_modules/packery/test/unit/jquery-plugin.js
generated
vendored
Normal file
31
node_modules/packery/test/unit/jquery-plugin.js
generated
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
QUnit.test( 'jQuery plugin', function( assert ) {
|
||||
var $ = window.jQuery;
|
||||
var done = assert.async();
|
||||
var $elem = $('#jquery');
|
||||
|
||||
assert.ok( $.fn.packery, '.packery is in jQuery.fn namespace' );
|
||||
assert.equal( typeof $elem.packery, 'function', '.packery is a plugin' );
|
||||
$elem.packery();
|
||||
var pckry = $elem.data('packery');
|
||||
assert.ok( pckry, 'packery instance via .data()' );
|
||||
assert.equal( pckry, Packery.data( $elem[0] ), 'instance matches the same one via Packery.data()' );
|
||||
|
||||
var item4 = $elem.children()[4];
|
||||
assert.equal( item4.style.left, '0px', '5th item left' );
|
||||
assert.equal( item4.style.top, '40px', '5th item top' );
|
||||
|
||||
$elem.children().first().css({
|
||||
width: 48,
|
||||
height: 8,
|
||||
background: 'blue'
|
||||
});
|
||||
|
||||
$elem.packery( 'on', 'layoutComplete', function() {
|
||||
assert.ok( true, 'layoutComplete event emitted' );
|
||||
assert.equal( item4.style.left, '20px', '4th item left after layout' );
|
||||
assert.equal( item4.style.top, '30px', '4th item top after layout' );
|
||||
done();
|
||||
});
|
||||
|
||||
$elem.packery();
|
||||
});
|
||||
14
node_modules/packery/test/unit/layout-extra-big.js
generated
vendored
Normal file
14
node_modules/packery/test/unit/layout-extra-big.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
QUnit.test( 'layout extra big', function( assert ) {
|
||||
var container = document.querySelector('#layout-extra-big');
|
||||
var pckry = new Packery( container );
|
||||
|
||||
var elem1 = pckry.items[1].element;
|
||||
var elem2 = pckry.items[2].element;
|
||||
var elem3 = pckry.items[3].element;
|
||||
var elem4 = pckry.items[4].element;
|
||||
|
||||
assert.equal( elem1.style.top, '20px', '2nd item top' );
|
||||
assert.equal( elem2.style.top, '40px', '3rd item top' );
|
||||
assert.equal( elem3.style.top, '20px', '4th item top' );
|
||||
assert.equal( elem4.style.top, '60px', '5th item top' );
|
||||
});
|
||||
55
node_modules/packery/test/unit/layout.js
generated
vendored
Normal file
55
node_modules/packery/test/unit/layout.js
generated
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
QUnit.test( 'layout', function( assert ) {
|
||||
|
||||
var done = assert.async();
|
||||
|
||||
function checkItemPosition( elem, left, top, message ) {
|
||||
message = message || '';
|
||||
var actual = elem.style.left + ' ' + elem.style.top;
|
||||
var expected = left + 'px ' + top + 'px';
|
||||
assert.equal( actual, expected, expected + ' ' + message );
|
||||
}
|
||||
|
||||
var container = document.querySelector('#layout');
|
||||
var pckry = new Packery( container );
|
||||
var elem0 = pckry.items[0].element;
|
||||
var elem1 = pckry.items[1].element;
|
||||
var elem2 = pckry.items[2].element;
|
||||
var elem3 = pckry.items[3].element;
|
||||
|
||||
checkItemPosition( elem0, 0, 0, 'first item' );
|
||||
checkItemPosition( elem1, 40, 0, '2nd item' );
|
||||
checkItemPosition( elem2, 0, 20, '3rd item' );
|
||||
assert.equal( container.style.height, '60px', 'height set' );
|
||||
|
||||
// change size of elems to change layout
|
||||
elem0.style.width = '18px';
|
||||
elem3.style.height = '58px';
|
||||
var items = pckry._getItemsForLayout( pckry.items );
|
||||
pckry.once( 'layoutComplete', function( completeItems ) {
|
||||
assert.equal( true, true, 'layoutComplete event did fire' );
|
||||
assert.equal( completeItems.length, items.length, 'event-emitted items matches layout items length' );
|
||||
assert.strictEqual( completeItems[0], items[0], 'event-emitted items has same first item' );
|
||||
var len = completeItems.length - 1;
|
||||
assert.strictEqual( completeItems[ len ], items[ len ], 'event-emitted items has same last item' );
|
||||
checkItemPosition( elem1, 20, 0, '2nd item' );
|
||||
checkItemPosition( elem2, 40, 0, '3nd item' );
|
||||
|
||||
setTimeout( checkHorizontal );
|
||||
});
|
||||
|
||||
pckry.layout();
|
||||
assert.equal( container.style.height, '80px', 'height set' );
|
||||
|
||||
function checkHorizontal() {
|
||||
// disable transition
|
||||
pckry.options.transitionDuration = 0;
|
||||
pckry.options.horizontal = true;
|
||||
pckry.layout();
|
||||
checkItemPosition( elem0, 0, 0, 'horizontal, first item' );
|
||||
checkItemPosition( elem1, 0, 20, 'horizontal, 2nd item' );
|
||||
checkItemPosition( elem2, 0, 60, 'horizontal, 2nd item' );
|
||||
assert.equal( container.style.width, '60px', 'width set' );
|
||||
|
||||
done();
|
||||
}
|
||||
});
|
||||
35
node_modules/packery/test/unit/prepend.js
generated
vendored
Normal file
35
node_modules/packery/test/unit/prepend.js
generated
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
QUnit.test( 'prepend', function( assert ) {
|
||||
var container = document.querySelector('#prepend');
|
||||
var pckry = new Packery( container );
|
||||
var itemElemA = pckry.items[0].element;
|
||||
var itemElemB = pckry.items[1].element;
|
||||
var itemElemC = gimmeAnItemElement();
|
||||
itemElemC.style.background = 'orange';
|
||||
var itemElemD = gimmeAnItemElement();
|
||||
itemElemD.style.background = 'magenta';
|
||||
|
||||
var done = assert.async();
|
||||
var ticks = 0;
|
||||
|
||||
pckry.on( 'layoutComplete', function() {
|
||||
assert.ok( true, 'layoutComplete triggered' );
|
||||
ticks++;
|
||||
if ( ticks == 2 ) {
|
||||
assert.ok( true, '2 layoutCompletes triggered' );
|
||||
done();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
var fragment = document.createDocumentFragment();
|
||||
fragment.appendChild( itemElemC );
|
||||
fragment.appendChild( itemElemD );
|
||||
container.insertBefore( fragment, container.firstChild );
|
||||
pckry.prepended([ itemElemC, itemElemD ]);
|
||||
|
||||
assert.equal( pckry.items[0].element, itemElemC, 'item C is first' );
|
||||
assert.equal( pckry.items[1].element, itemElemD, 'item D is second' );
|
||||
assert.equal( pckry.items[2].element, itemElemA, 'item A is third' );
|
||||
assert.equal( pckry.items[3].element, itemElemB, 'item B is fourth' );
|
||||
|
||||
});
|
||||
24
node_modules/packery/test/unit/remove.js
generated
vendored
Normal file
24
node_modules/packery/test/unit/remove.js
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
QUnit.test( 'remove', function( assert ) {
|
||||
var done = assert.async();
|
||||
var container = document.querySelector('#add-remove');
|
||||
// packery starts with 4 items
|
||||
var pckry = new Packery( container, {
|
||||
itemSelector: '.item'
|
||||
});
|
||||
// remove two items
|
||||
var w2Elems = container.querySelectorAll('.w2');
|
||||
pckry.on( 'removeComplete', function( removedItems ) {
|
||||
assert.equal( true, true, 'removeComplete event did fire' );
|
||||
assert.equal( removedItems.length, w2Elems.length, 'remove elems length matches 2nd argument length' );
|
||||
for ( var i=0, len = removedItems.length; i < len; i++ ) {
|
||||
assert.equal( removedItems[i].element, w2Elems[i], 'removedItems element matches' );
|
||||
}
|
||||
assert.equal( container.children.length, 2, 'elements removed from DOM' );
|
||||
assert.equal( container.querySelectorAll('.w2').length, 0, 'matched elements were removed' );
|
||||
done();
|
||||
});
|
||||
|
||||
pckry.remove( w2Elems );
|
||||
assert.equal( pckry.items.length, 2, 'items removed from Packery instance' );
|
||||
|
||||
});
|
||||
124
node_modules/packery/test/unit/stamped.js
generated
vendored
Normal file
124
node_modules/packery/test/unit/stamped.js
generated
vendored
Normal file
@@ -0,0 +1,124 @@
|
||||
QUnit.test( 'stamped1', function( assert ) {
|
||||
var container = document.querySelector('#stamped1');
|
||||
var stamps = container.querySelectorAll('.stamp');
|
||||
var pckry = new Packery( container, {
|
||||
itemSelector: '.item',
|
||||
stamp: stamps
|
||||
});
|
||||
|
||||
assert.equal( pckry.stamps.length, 2, '2 stamped elements' );
|
||||
var elem0 = pckry.items[0].element;
|
||||
assert.equal( elem0.style.left, '0px', '1st item left' );
|
||||
assert.equal( elem0.style.top, '0px', '1st item top' );
|
||||
var elem1 = pckry.items[1].element;
|
||||
assert.equal( elem1.style.left, '52px', '2nd item left' );
|
||||
assert.equal( elem1.style.top, '0px', '2nd item top' );
|
||||
var elem2 = pckry.items[2].element;
|
||||
assert.equal( elem2.style.left, '52px', '3rd item left' );
|
||||
assert.equal( elem2.style.top, '20px', '3rd item top' );
|
||||
var elem3 = pckry.items[3].element;
|
||||
assert.equal( elem3.style.left, '13px', '4th item left' );
|
||||
assert.equal( elem3.style.top, '35px', '4th item top' );
|
||||
|
||||
assert.equal( container.style.height, '75px', 'container height' );
|
||||
|
||||
// unstamp first stamp
|
||||
pckry.unstamp( stamps[1] );
|
||||
assert.equal( pckry.stamps.length, 1, 'element was unstamped' );
|
||||
// stamp it back
|
||||
pckry.stamp( stamps[1] );
|
||||
assert.equal( pckry.stamps.length, 2, 'element was stamped back' );
|
||||
|
||||
});
|
||||
|
||||
QUnit.test( 'stamped2, items are stamped', function( assert ) {
|
||||
var container = document.querySelector('#stamped2');
|
||||
var stamps = container.querySelectorAll('.stamp');
|
||||
var pckry = new Packery( container, {
|
||||
itemSelector: '.item',
|
||||
stamp: stamps
|
||||
});
|
||||
|
||||
var done = assert.async();
|
||||
var layoutItems = pckry._getItemsForLayout( pckry.items );
|
||||
|
||||
assert.equal( layoutItems.length, 7, '7 layout items' );
|
||||
var elem0 = layoutItems[0].element;
|
||||
assert.equal( elem0.style.left, '28px', '1st item left' );
|
||||
assert.equal( elem0.style.top, '0px', '1st item top' );
|
||||
var elem3 = layoutItems[3].element;
|
||||
assert.equal( elem3.style.left, '0px', '4th item left' );
|
||||
assert.equal( elem3.style.top, '28px', '4th item top' );
|
||||
var elem4 = layoutItems[4].element;
|
||||
assert.equal( elem4.style.left, '20px', '5th item left' );
|
||||
assert.equal( elem4.style.top, '40px', '5th item top' );
|
||||
|
||||
// unplacing
|
||||
pckry.unstamp( stamps );
|
||||
layoutItems = pckry._getItemsForLayout( pckry.items );
|
||||
assert.equal( layoutItems.length, 9, '9 layout items' );
|
||||
assert.equal( pckry.stamps.length, 0, '0 stamps items' );
|
||||
|
||||
pckry.on( 'layoutComplete', function() {
|
||||
var elem0 = pckry.items[0].element;
|
||||
assert.equal( elem0.style.left, '0px', '1st item left' );
|
||||
assert.equal( elem0.style.top, '0px', '1st item top' );
|
||||
var elem4 = pckry.items[4].element;
|
||||
assert.equal( elem4.style.left, '0px', '5th item left' );
|
||||
assert.equal( elem4.style.top, '20px', '5th item top' );
|
||||
done();
|
||||
});
|
||||
|
||||
pckry.layout();
|
||||
});
|
||||
|
||||
QUnit.test( 'stamped3, stamp with selector string ', function( assert ) {
|
||||
var container3 = document.querySelector('#stamped3');
|
||||
var pckry3 = new Packery( container3, {
|
||||
itemSelector: '.item',
|
||||
stamp: '.stamp'
|
||||
});
|
||||
|
||||
assert.equal( pckry3.stamps.length, 2, '2 stamped elements' );
|
||||
|
||||
assert.equal( pckry3.stamps.length, 2, '2 stamped elements' );
|
||||
var elem0 = pckry3.items[0].element;
|
||||
assert.equal( elem0.style.left, '0px', '1st item left' );
|
||||
assert.equal( elem0.style.top, '0px', '1st item top' );
|
||||
var elem1 = pckry3.items[1].element;
|
||||
assert.equal( elem1.style.left, '52px', '2nd item left' );
|
||||
assert.equal( elem1.style.top, '0px', '2nd item top' );
|
||||
var elem2 = pckry3.items[2].element;
|
||||
assert.equal( elem2.style.left, '52px', '3rd item left' );
|
||||
assert.equal( elem2.style.top, '20px', '3rd item top' );
|
||||
var elem3 = pckry3.items[3].element;
|
||||
assert.equal( elem3.style.left, '13px', '4th item left' );
|
||||
assert.equal( elem3.style.top, '35px', '4th item top' );
|
||||
|
||||
assert.equal( container3.style.height, '75px', 'container height' );
|
||||
|
||||
var container4 = document.querySelector('#stamped4');
|
||||
var pckry4 = new Packery( container4, {
|
||||
itemSelector: '.item',
|
||||
stamp: 'foobar'
|
||||
});
|
||||
|
||||
assert.ok( pckry4._isLayoutInited, 'bad selector didnt cause error' );
|
||||
});
|
||||
|
||||
QUnit.test( 'stamped with borders', function( assert ) {
|
||||
var container = document.querySelector('#stamped-borders');
|
||||
var pckry = new Packery( container, {
|
||||
itemSelector: '.item',
|
||||
stamp: '.stamp'
|
||||
});
|
||||
|
||||
var elem0 = pckry.items[0].element;
|
||||
var elem1 = pckry.items[1].element;
|
||||
var elem2 = pckry.items[2].element;
|
||||
|
||||
assert.equal( elem0.style.left, '50px', '1st item left' );
|
||||
assert.equal( elem1.style.left, '50px', '2nd item left' );
|
||||
assert.equal( elem2.style.top, '30px', '3rd item top' );
|
||||
|
||||
});
|
||||
33
node_modules/packery/test/unit/sub-pixel-fit.js
generated
vendored
Normal file
33
node_modules/packery/test/unit/sub-pixel-fit.js
generated
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
QUnit.test( 'sub-pixel fit', function( assert ) {
|
||||
|
||||
var pckry = new Packery( '#sub-pixel-fit', {
|
||||
itemSelector: '.item',
|
||||
transitionDuration: 0
|
||||
});
|
||||
|
||||
function getItemsTotalY() {
|
||||
var y = 0;
|
||||
for ( var i=0, len = pckry.items.length; i < len; i++ ) {
|
||||
var item = pckry.items[i];
|
||||
y += item.rect.y;
|
||||
}
|
||||
return y;
|
||||
}
|
||||
|
||||
// iterate over multiple container widths
|
||||
for ( var containerWidth = 290; containerWidth < 310; containerWidth++ ) {
|
||||
pckry.element.style.width = containerWidth + 'px';
|
||||
pckry.layout();
|
||||
assert.equal( 0, getItemsTotalY(), 'items fit at ' + containerWidth + 'px' );
|
||||
}
|
||||
|
||||
// set grid sizer and do it again
|
||||
pckry.options.columnWidth = '.grid-sizer';
|
||||
|
||||
for ( containerWidth = 290; containerWidth < 310; containerWidth++ ) {
|
||||
pckry.element.style.width = containerWidth + 'px';
|
||||
pckry.layout();
|
||||
assert.equal( 0, getItemsTotalY(), 'items fit with columnWidth at ' + containerWidth + 'px' );
|
||||
}
|
||||
|
||||
});
|
||||
137
node_modules/packery/test/unit/test-packer.js
generated
vendored
Normal file
137
node_modules/packery/test/unit/test-packer.js
generated
vendored
Normal file
@@ -0,0 +1,137 @@
|
||||
/**
|
||||
* Packer tests
|
||||
*/
|
||||
|
||||
( function() {
|
||||
|
||||
QUnit.module('Packer');
|
||||
|
||||
var Packer = Packery.Packer;
|
||||
var Rect = Packery.Rect;
|
||||
|
||||
QUnit.test( 'basics', function( assert ) {
|
||||
assert.equal( typeof Packer === 'function', true, 'Packery is a function' );
|
||||
});
|
||||
|
||||
QUnit.test( 'packing', function( assert ) {
|
||||
var packr = new Packer( 30, 100 );
|
||||
|
||||
// 112
|
||||
// 352
|
||||
// 344
|
||||
// xxx
|
||||
// xxx
|
||||
|
||||
var rect1 = new Rect({ width: 20, height: 10 });
|
||||
var rect2 = new Rect({ width: 10, height: 20 });
|
||||
var rect3 = new Rect({ width: 10, height: 20 });
|
||||
var rect4 = new Rect({ width: 20, height: 10 });
|
||||
var rect5 = new Rect({ width: 10, height: 10 });
|
||||
|
||||
packr.pack( rect1 );
|
||||
packr.pack( rect2 );
|
||||
packr.pack( rect3 );
|
||||
packr.pack( rect4 );
|
||||
packr.pack( rect5 );
|
||||
|
||||
assert.equal( rect1.x, 0, 'rect1.x top left' );
|
||||
assert.equal( rect1.y, 0, 'rect1.y top left' );
|
||||
assert.equal( rect2.x, 20, 'rect2.x top right' );
|
||||
assert.equal( rect2.y, 0, 'rect2.y top right' );
|
||||
assert.equal( rect3.x, 0, 'rect3.x bottom left' );
|
||||
assert.equal( rect3.y, 10, 'rect3.y bottom left' );
|
||||
assert.equal( rect4.x, 10, 'rect4.x bottom right' );
|
||||
assert.equal( rect4.y, 20, 'rect4.y bottom right' );
|
||||
assert.equal( rect5.x, 10, 'rect5.x packed in center' );
|
||||
assert.equal( rect5.y, 10, 'rect5.y packed in center' );
|
||||
|
||||
// bottom space is open
|
||||
assert.equal( packr.spaces.length, 1, 'one space open' );
|
||||
var space = packr.spaces[0];
|
||||
assert.equal( space.width, 30, 'space.width' );
|
||||
assert.equal( space.height, 70, 'space.height' );
|
||||
assert.equal( space.x, 0, 'space.x' );
|
||||
assert.equal( space.y, 30, 'space.y' );
|
||||
|
||||
});
|
||||
QUnit.test( 'packing with a placed', function( assert ) {
|
||||
var packr = new Packer( 30, 100 );
|
||||
|
||||
// 225
|
||||
// 311
|
||||
// 34x
|
||||
// x4x
|
||||
// xxx
|
||||
// xxx
|
||||
|
||||
var rect1 = new Rect({
|
||||
width: 20,
|
||||
height: 10,
|
||||
x: 10,
|
||||
y: 10
|
||||
});
|
||||
var rect2 = new Rect({ width: 20, height: 10 });
|
||||
var rect3 = new Rect({ width: 10, height: 20 });
|
||||
var rect4 = new Rect({ width: 10, height: 20 });
|
||||
var rect5 = new Rect({ width: 10, height: 10 });
|
||||
|
||||
packr.placed( rect1 );
|
||||
packr.pack( rect2 );
|
||||
packr.pack( rect3 );
|
||||
packr.pack( rect4 );
|
||||
packr.pack( rect5 );
|
||||
|
||||
assert.equal( rect2.x, 0, 'rect2.x top left' );
|
||||
assert.equal( rect2.y, 0, 'rect2.y top left' );
|
||||
assert.equal( rect3.x, 0, 'rect3.x left side' );
|
||||
assert.equal( rect3.y, 10, 'rect3.y left side' );
|
||||
assert.equal( rect4.x, 10, 'rect4.x bottom center' );
|
||||
assert.equal( rect4.y, 20, 'rect4.y bottom center' );
|
||||
assert.equal( rect5.x, 20, 'rect5.x packed in top right' );
|
||||
assert.equal( rect5.y, 0, 'rect5.y packed in top right' );
|
||||
|
||||
assert.equal( packr.spaces.length, 3, '3 spaces left' );
|
||||
|
||||
});
|
||||
|
||||
QUnit.test( 'packing horizontal', function( assert ) {
|
||||
|
||||
function checkRect( rect, x, y ) {
|
||||
assert.equal( rect.x, x, 'x: ' + x );
|
||||
assert.equal( rect.y, y, 'y: ' + y );
|
||||
}
|
||||
|
||||
var packr = new Packer( 100, 30, 'rightwardTopToBottom' );
|
||||
|
||||
// 133xx
|
||||
// 154xx
|
||||
// 224xx
|
||||
|
||||
var rect1 = new Rect({ width: 10, height: 20 });
|
||||
var rect2 = new Rect({ width: 20, height: 10 });
|
||||
var rect3 = new Rect({ width: 20, height: 10 });
|
||||
var rect4 = new Rect({ width: 10, height: 20 });
|
||||
var rect5 = new Rect({ width: 10, height: 10 });
|
||||
|
||||
packr.pack( rect1 );
|
||||
packr.pack( rect2 );
|
||||
packr.pack( rect3 );
|
||||
packr.pack( rect4 );
|
||||
packr.pack( rect5 );
|
||||
|
||||
checkRect( rect1, 0, 0 );
|
||||
checkRect( rect2, 0, 20 );
|
||||
checkRect( rect3, 10, 0 );
|
||||
checkRect( rect4, 20, 10 );
|
||||
checkRect( rect5, 10, 10 );
|
||||
|
||||
// bottom space is open
|
||||
assert.equal( packr.spaces.length, 1, 'one space open' );
|
||||
var space = packr.spaces[0];
|
||||
assert.equal( space.width, 70, 'space.width' );
|
||||
assert.equal( space.height, 30, 'space.height' );
|
||||
checkRect( space, 30, 0 );
|
||||
|
||||
});
|
||||
|
||||
})();
|
||||
150
node_modules/packery/test/unit/test-rect.js
generated
vendored
Normal file
150
node_modules/packery/test/unit/test-rect.js
generated
vendored
Normal file
@@ -0,0 +1,150 @@
|
||||
/**
|
||||
* Rect tests
|
||||
**/
|
||||
|
||||
( function() {
|
||||
|
||||
var Rect = Packery.Rect;
|
||||
|
||||
QUnit.module('Rect');
|
||||
|
||||
QUnit.test( 'Rect defaults', function( assert ) {
|
||||
var rect = new Rect();
|
||||
assert.equal( rect.x, 0, 'rect.x = 0' );
|
||||
assert.equal( rect.y, 0, 'rect.y = 0' );
|
||||
assert.equal( rect.width, 0, 'rect.width = 0' );
|
||||
assert.equal( rect.height, 0, 'rect.height = 0' );
|
||||
});
|
||||
|
||||
QUnit.test( 'set properties with initial argument object', function( assert ) {
|
||||
var rect = new Rect({
|
||||
x: 40,
|
||||
y: 390,
|
||||
width: 103,
|
||||
height: -4
|
||||
});
|
||||
assert.equal( rect.x, 40, 'x' );
|
||||
assert.equal( rect.y, 390, 'y' );
|
||||
assert.equal( rect.width, 103, 'width' );
|
||||
assert.equal( rect.height, -4, 'default height property' );
|
||||
});
|
||||
|
||||
QUnit.test( 'contains', function( assert ) {
|
||||
|
||||
var rectA = new Rect({
|
||||
x: 10,
|
||||
y: 30,
|
||||
width: 100,
|
||||
height: 400
|
||||
});
|
||||
|
||||
var rectB = new Rect({
|
||||
x: 40,
|
||||
y: 60,
|
||||
width: 10,
|
||||
height: 20
|
||||
});
|
||||
|
||||
assert.strictEqual( rectA.contains( rectB ), true, 'A clearly contains B' );
|
||||
|
||||
rectB = new Rect({
|
||||
x: 500,
|
||||
y: 40,
|
||||
width: 40,
|
||||
height: 20
|
||||
});
|
||||
|
||||
assert.strictEqual( rectA.contains( rectB ), false, 'A clearly does not contain B' );
|
||||
|
||||
rectB = new Rect({
|
||||
x: 20,
|
||||
y: 40
|
||||
});
|
||||
|
||||
assert.strictEqual( rectA.contains( rectB ), true,
|
||||
'A contains B, which has no width or height' );
|
||||
|
||||
rectB = new Rect({
|
||||
x: 20,
|
||||
y: 50,
|
||||
width: 60,
|
||||
height: 150
|
||||
});
|
||||
|
||||
assert.strictEqual( rectA.contains( rectB ), true, 'B is at upper left corner of A' );
|
||||
|
||||
rectB = new Rect({
|
||||
x: rectA.x,
|
||||
y: rectA.y,
|
||||
width: rectA.width,
|
||||
height: rectA.height
|
||||
});
|
||||
|
||||
assert.strictEqual( rectA.contains( rectB ), true, 'A contains B. B is equal to A' );
|
||||
|
||||
rectB = new Rect({
|
||||
x: rectA.x - 20,
|
||||
y: rectA.y,
|
||||
width: rectA.width,
|
||||
height: rectA.height
|
||||
});
|
||||
|
||||
assert.strictEqual( rectA.contains( rectB ), false,
|
||||
'A does not contain B. B same size A, but offset' );
|
||||
|
||||
});
|
||||
|
||||
|
||||
QUnit.test( 'overlaps', function( assert ) {
|
||||
|
||||
var rectA = new Rect({
|
||||
x: 100,
|
||||
y: 50,
|
||||
width: 300,
|
||||
height: 200
|
||||
});
|
||||
|
||||
var rectB = new Rect({
|
||||
x: 150,
|
||||
y: 100,
|
||||
width: 100,
|
||||
height: 50
|
||||
});
|
||||
|
||||
assert.strictEqual( rectA.overlaps( rectB ), true, 'B is inside A, A overlaps B' );
|
||||
assert.strictEqual( rectB.overlaps( rectA ), true, 'B is inside A, B overlaps A' );
|
||||
|
||||
rectB.x = 50;
|
||||
|
||||
assert.strictEqual( rectA.overlaps( rectB ), true,
|
||||
'B overlaps left edge of A, A overlaps B' );
|
||||
assert.strictEqual( rectB.overlaps( rectA ), true,
|
||||
'B overlaps left edge of A, B overlaps A' );
|
||||
|
||||
rectB.y = 25;
|
||||
|
||||
assert.strictEqual( rectA.overlaps( rectB ), true,
|
||||
'B overlaps left top corner of A, A overlaps B' );
|
||||
assert.strictEqual( rectB.overlaps( rectA ), true,
|
||||
'B overlaps left top corner of A, B overlaps A' );
|
||||
|
||||
rectB.x = 0;
|
||||
rectB.y = 0;
|
||||
|
||||
assert.strictEqual( rectA.overlaps( rectB ), false,
|
||||
'B bottom right corner meets A top left corner, A DOES NOT overlap B' );
|
||||
assert.strictEqual( rectB.overlaps( rectA ), false,
|
||||
'B bottom right corner meets A top left corner, B DOES NOT overlap A' );
|
||||
|
||||
rectB.x = rectA.x - rectB.width;
|
||||
rectB.y = rectA.y;
|
||||
rectB.height = rectA.height;
|
||||
|
||||
assert.strictEqual( rectA.overlaps( rectB ), false,
|
||||
'B is completely adjacent to A, A DOES NOT overlap B' );
|
||||
assert.strictEqual( rectB.overlaps( rectA ), false,
|
||||
'B is completely adjacent to A, B DOES NOT overlap A' );
|
||||
|
||||
});
|
||||
|
||||
})();
|
||||
Reference in New Issue
Block a user