Compare commits
1548 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9376a7c221 | |||
| cacc213762 | |||
| b9292ff90c | |||
| 3bd9a26c01 | |||
| 820a3b27b6 | |||
| 1747caf19d | |||
| 437654030a | |||
| 10e72e158d | |||
| 91fbadad5b | |||
| c362e72660 | |||
| 66b70016d0 | |||
| 2526c3fdbe | |||
| a7eb9c294a | |||
| 1c5b8e967e | |||
| be45a821bb | |||
| 1413f976ae | |||
| cc6fda2262 | |||
| 2c7ab23d7a | |||
| 2877f84579 | |||
| f4466dd9c7 | |||
| 81679981c5 | |||
| 306c1b4914 | |||
| ed74992853 | |||
| 12916b06aa | |||
| e31c7fb8a5 | |||
| 8b959cacbc | |||
| 0f2a423b8d | |||
| 15a4399015 | |||
| 869b69c66c | |||
| 06582edb2a | |||
| d470fb72da | |||
| 68cbba347b | |||
| eca23e9b0f | |||
| f514c87d6b | |||
| 30d6a71ccd | |||
| 439ff09701 | |||
| c8862d91bc | |||
| 139f1be49d | |||
| ea61cdb740 | |||
| 32d425967a | |||
| 85c57c6ba8 | |||
| e8b3c36068 | |||
| dbb244cb97 | |||
| fbec803b55 | |||
| bca3ff4ed6 | |||
| f087b3428c | |||
| fe7b6decb1 | |||
| 322a56354f | |||
| 721b568303 | |||
| c5173cdb92 | |||
| 52e669d619 | |||
| 38c546c785 | |||
| 12aa060efd | |||
| e9c32fdf6d | |||
| acc037de15 | |||
| ddd154481b | |||
| fa6a6dbb92 | |||
| 78390d12af | |||
| cb69aa976f | |||
| fe8df5022b | |||
| f1349a2450 | |||
| 8fb36cb3dd | |||
| 296b838405 | |||
| bf3a5df371 | |||
| 783120dffa | |||
| 014d3cedf5 | |||
| bfc97fdaf6 | |||
| 693fd0db2a | |||
| fda5bb135e | |||
| 74f51105e9 | |||
| 942f9c5df4 | |||
| 02097700e8 | |||
| dc10e6bbf8 | |||
| e6e4d93d5e | |||
| 701f871e7d | |||
| e0d0190803 | |||
| 5d1b4206b1 | |||
| 8df2811d49 | |||
| 8b417c39e7 | |||
| ace6dc0c25 | |||
| a10d68f291 | |||
| a367fd4938 | |||
| 88c2497368 | |||
| 5702e1be6e | |||
| 4d593618e0 | |||
| 05655ff4ff | |||
| 1700e48e7f | |||
| 0df0b5f1f5 | |||
| cd1f72f484 | |||
| 303767350c | |||
| 6ec7c72e5b | |||
| 41889f74d0 | |||
| c8856eeff3 | |||
| 54486de88c | |||
| f2bbee2075 | |||
| ddf5ceccce | |||
| cf7d7a7b5d | |||
| 02c0b788cd | |||
| 0a1d296e19 | |||
| 79b7017227 | |||
| d38bda1480 | |||
| 62c78e46f8 | |||
| 91bcccd9a8 | |||
| ebed09ec01 | |||
| f3b3814606 | |||
| 823b5accd3 | |||
| 7e6cc0bf7e | |||
| 76f9c9128e | |||
| 51f293ba4c | |||
| 075e320a83 | |||
| 21957a3d9e | |||
| 953dc3a6f2 | |||
| fb51efcbd4 | |||
| 2320a09898 | |||
| 22d1506d23 | |||
| 28da31218f | |||
| 68f26d959f | |||
| e4866c4b3c | |||
| 5d6cf2ee19 | |||
| 2c93190283 | |||
| a8b9342aea | |||
| c9dbd2d601 | |||
| 72e2d4bb77 | |||
| 7ea343d570 | |||
| ead5dbeba5 | |||
| 2f39f86bd7 | |||
| 381d967ec8 | |||
| 46b5e0cbc6 | |||
| fc42ac6a56 | |||
| 46d38b10b8 | |||
| d0c75bbc83 | |||
| d350f577e9 | |||
| 46347fff01 | |||
| be03a53086 | |||
| 14b941744c | |||
| bf48c31406 | |||
| 64326322b4 | |||
| d5697fcf6b | |||
| 3b3dd3ac3c | |||
| 404e4d9e9a | |||
| cbf1dace2f | |||
| b5af762ef5 | |||
| 68cfedb34a | |||
| f1136228a7 | |||
| bf10a43ed9 | |||
| 5bb6c42405 | |||
| a6968c4934 | |||
| 9352fe1750 | |||
| f595e146d6 | |||
| 31c1eba51b | |||
| 92e7f166e7 | |||
| 81c3c1c68c | |||
| 41ad16fe40 | |||
| 233e050adf | |||
| c33169a6ba | |||
| ba2a99e7c4 | |||
| 45046544a6 | |||
| 0b9d4e78ad | |||
| 7f3b94c453 | |||
| d6ac499ca8 | |||
| 280d4aeb30 | |||
| 7426ced0fb | |||
| 24b5e6cb14 | |||
| a2fc01444e | |||
| edc3eee5ea | |||
| 21f29a7682 | |||
| 8e6697f2b2 | |||
| ac6625de5f | |||
| 0a3e034891 | |||
| 97bf02d787 | |||
| 3074737d90 | |||
| e0a007b929 | |||
| b06724a1a4 | |||
| 709870aa3e | |||
| 57eb2a8018 | |||
| 0ac50d28b5 | |||
| 78f7ad95f4 | |||
| bf78333531 | |||
| 463eae25b0 | |||
| e24b46b7f3 | |||
| ae0ba0686e | |||
| cd55963930 | |||
| 432eaff29c | |||
| 0048446db9 | |||
| 6b017b9bea | |||
| fda641fb6c | |||
| ed5c5994a7 | |||
| d19ca23f8f | |||
| fa778792c5 | |||
| df9a1c29f4 | |||
| 31007c01d8 | |||
| 5af5c2ed36 | |||
| b18c009051 | |||
| 48a8dd2a23 | |||
| 4702e75410 | |||
| ec8394cb6e | |||
| 7e534ce98a | |||
| e4f522990e | |||
| 6203535d2f | |||
| d76c305cbb | |||
| 7d649c9d4a | |||
| 3726ce24bb | |||
| 11ee1633b4 | |||
| dd8b745b88 | |||
| e73cd15fc8 | |||
| 630a88d3ce | |||
| a2369021ce | |||
| 1bd4723038 | |||
| b892a37320 | |||
| 7c9597f4e7 | |||
| 1b814458c9 | |||
| 7763cab608 | |||
| 5cf7c803e2 | |||
| d36e37214b | |||
| 86d5ed6f4f | |||
| fd1e9b1498 | |||
| f8ac403d8b | |||
| bc4f5d565e | |||
| 5035592988 | |||
| c6c1ada600 | |||
| a90334eebb | |||
| 239ce24f92 | |||
| 085d6d185d | |||
| 32181816f7 | |||
| c77d4266c0 | |||
| 46764a7165 | |||
| da43c7c27c | |||
| 40a8a93b22 | |||
| d49dd766c8 | |||
| a4a6244eb7 | |||
| 82715ae96d | |||
| a2690c6d86 | |||
| 57f8dbe25c | |||
| f8374a754d | |||
| 8ecffcb32f | |||
| e1f6458e36 | |||
| 0944e036ae | |||
| ecbb0ed4df | |||
| e9a648cd39 | |||
| 474471b831 | |||
| 24e277b85a | |||
| 498a28b4cd | |||
| b29d947477 | |||
| 0540b63ab0 | |||
| aec8b08930 | |||
| 88b1e44dd6 | |||
| 4a2443901f | |||
| bda3d57a00 | |||
| 003fcccceb | |||
| f4d3d7da2e | |||
| a4bf6ef0a0 | |||
| af871d57c9 | |||
| c3ea955661 | |||
| a419e70a42 | |||
| ebf94c53a5 | |||
| 1716b0fdb5 | |||
| fe38d12f12 | |||
| 667179f406 | |||
| c92a75999f | |||
| 532ee08213 | |||
| 443c43f6c4 | |||
| 67585bd34e | |||
| 6c3cd6fd9d | |||
| a6206c98d5 | |||
| 2d90c816ac | |||
| 2769241aeb | |||
| 37460e58d3 | |||
| cc3de8bd6e | |||
| 13be8b2031 | |||
| c15877445c | |||
| 78992bbf42 | |||
| 2a20761f07 | |||
| 3b3def4898 | |||
| 239e6a7d21 | |||
| cedb3c7c56 | |||
| 783f4885ab | |||
| 26ca131a95 | |||
| 143fef9f95 | |||
| 917b46a343 | |||
| caa79ed594 | |||
| 6881c193ca | |||
| 03a406d920 | |||
| f69e244a60 | |||
| cd876fb659 | |||
| 6f3bef195a | |||
| 1ea09b751e | |||
| 6e25aacc91 | |||
| 6aa15eb01f | |||
| 6c4b276cd4 | |||
| 7857089065 | |||
| 0bcbcf69ec | |||
| e4e2e37c5c | |||
| 5aa1018496 | |||
| faa760f563 | |||
| 2ead9a5bc3 | |||
| 5331fe39df | |||
| 595e1a189c | |||
| a40ab1cd66 | |||
| 15bb78ce80 | |||
| e1deba30aa | |||
| 537c5cc33d | |||
| 65d322958c | |||
| 38303dd997 | |||
| bbadd429a8 | |||
| 2c8eff0eec | |||
| 0489c708c7 | |||
| 39791a8ea8 | |||
| cd2b12f788 | |||
| 10faf28aef | |||
| 76e42edb29 | |||
| f29f98501c | |||
| 1f8e2d2617 | |||
| 61332d727e | |||
| f2bd7d9f27 | |||
| 6c5c3c81ec | |||
| 7a0f5c6c00 | |||
| cc4f8b9f6c | |||
| 501a2d69e1 | |||
| 7762a77c21 | |||
| 138b5a8c05 | |||
| d4a16d35eb | |||
| 3fa4ca2d87 | |||
| dfb3175d4b | |||
| 08b8571cb8 | |||
| 5ff5d351bf | |||
| c52368d3c5 | |||
| df8e3c6ee3 | |||
| bc4ecd9984 | |||
| 9341bb756b | |||
| 9d890a8412 | |||
| 7e4629fbbe | |||
| 73ef263d5f | |||
| bf590d8c81 | |||
| a1d2ee6542 | |||
| de36456f5d | |||
| 1f0043a7f5 | |||
| acf2a64016 | |||
| 8cda830eaf | |||
| f25129361b | |||
| f46813a8c8 | |||
| 9d5f9eca85 | |||
| 69d4c3f9a1 | |||
| 3737904859 | |||
| 209852c805 | |||
| 02f6bd65f5 | |||
| e8c5b3c9a5 | |||
| b1bdca0fdb | |||
| 00d6f26270 | |||
| 0f85e8b7f8 | |||
| beb0b64096 | |||
| afd931262c | |||
| 2da2169a56 | |||
| 2137cd65fb | |||
| 010a5dd84d | |||
| 8878facc67 | |||
| a976a1583c | |||
| e27b1355b5 | |||
| b5373d8561 | |||
| 66ad3d62c6 | |||
| 545edf5459 | |||
| 609142eee2 | |||
| 3568146b28 | |||
| 215d92bacd | |||
| 4751a0a274 | |||
| 7d412b1e14 | |||
| 55982664d0 | |||
| 1eaf1cf418 | |||
| 601e252074 | |||
| d797a5fbd7 | |||
| 17d8c78e52 | |||
| 438f745ea2 | |||
| b5a8c0a45e | |||
| 2719ac3e9b | |||
| 67eae2a503 | |||
| 96a1797af1 | |||
| 1b7a3ca416 | |||
| 303a33f15c | |||
| 3b67ece2d1 | |||
| 4674945fa8 | |||
| b444582ccd | |||
| 8610fd9b2b | |||
| 85dcbd0b34 | |||
| cf9334bd7d | |||
| 22c4f3d058 | |||
| 15317419f4 | |||
| 8a5dde556b | |||
| 1c9d5c43b0 | |||
| a2b9a5e1fe | |||
| fcd08fce8f | |||
| 54e3a26dda | |||
| 96542f14ab | |||
| 12d5c88c20 | |||
| bdc3ff99f3 | |||
| 72f176d1f5 | |||
| 1b8f4f5bc5 | |||
| f15eb7b499 | |||
| cfa039d2e0 | |||
| eb8aad85b8 | |||
| f744ad57fc | |||
| ec6b320003 | |||
| bb9d1af1ca | |||
| aa07523e69 | |||
| d9593e217d | |||
| 0682780cd8 | |||
| d9fe9af966 | |||
| 5cbb826961 | |||
| 019d9bf0f3 | |||
| be64955e25 | |||
| 3424df22ee | |||
| ac4420237c | |||
| 4775bc910c | |||
| 5da217b96e | |||
| 582b178723 | |||
| 535dfc2153 | |||
| 6160667b19 | |||
| 5f97e04aa3 | |||
| 115c7b82c4 | |||
| a9764c34a7 | |||
| 361889def9 | |||
| 5d41742f17 | |||
| 8d00fe4c03 | |||
| 1973c64342 | |||
| 46c10c8b58 | |||
| 190d3c9c3e | |||
| e2ecd2df6c | |||
| 45978b6674 | |||
| b1c93c2700 | |||
| 6e7ba4e24a | |||
| 311c00a29b | |||
| 13199c0020 | |||
| 6dc13573bf | |||
| 1c134d9a7f | |||
| b52d29095a | |||
| 4f918ce52c | |||
| 94f9f9de73 | |||
| e5060b8d92 | |||
| 8a2b9f4a5f | |||
| 099cec1ca7 | |||
| 06c718b1d3 | |||
| 55facf1f2e | |||
| 6477ad1acf | |||
| 5fc5d26917 | |||
| fe3ed433e4 | |||
| 320b75de63 | |||
| 9e0d87a4dd | |||
| 471d913ab6 | |||
| cbc7873bb4 | |||
| 2b5e09038a | |||
| 5d63e8e2a8 | |||
| aa2cec6f2f | |||
| 01572f00bb | |||
| 58dd1f20ae | |||
| 6cf3752b9b | |||
| 78cb09b440 | |||
| ed13ec50f8 | |||
| e59642838f | |||
| 2fda6a45aa | |||
| 47697c5f35 | |||
| afaee0ca13 | |||
| 73cf9c4db8 | |||
| a1951ed7c0 | |||
| e510306196 | |||
| a12c19b3c8 | |||
| a667fd93ab | |||
| 4e979f084d | |||
| e4d4ef43b0 | |||
| e71e2b4be2 | |||
| 94ba211c40 | |||
| b745b7768a | |||
| 887f11d47f | |||
| 47cf3cc62f | |||
| bb85bbc657 | |||
| 7ed82c1223 | |||
| 8e271d664b | |||
| c531a75ff0 | |||
| 1e190d8036 | |||
| c9cef741f6 | |||
| 45dddc59a1 | |||
| 44e35e9dfa | |||
| 937cfa6a88 | |||
| 1166b39630 | |||
| e79eb75e09 | |||
| e6e0e2ac9b | |||
| 4d2f584fdd | |||
| 9ae137aede | |||
| 80ced60778 | |||
| 50638530e6 | |||
| dda951d1e1 | |||
| ae275dccb8 | |||
| b7233a49dd | |||
| 3f12c746e5 | |||
| 2327d30ef5 | |||
| 8b763286df | |||
| d71efb855b | |||
| 97247a157c | |||
| d8eb75d6e8 | |||
| f1854a3cec | |||
| 2ab0c8de1a | |||
| 04a20fb402 | |||
| 7b7a02542b | |||
| 41253fb073 | |||
| a3c474c404 | |||
| f4f6783cc0 | |||
| 263ed4e239 | |||
| f37d4b0918 | |||
| 01dadc05f4 | |||
| 663fd4ff62 | |||
| a8b18b6f54 | |||
| 25f8ef3260 | |||
| c8b8d914b8 | |||
| 7f5aa177f5 | |||
| 0c24f51d2a | |||
| 05571db109 | |||
| 1ae194597c | |||
| 256a25f25c | |||
| 5b947b8a2f | |||
| f9deb8017a | |||
| 2b22c0c56e | |||
| 9e6322dbab | |||
| 077577c7f3 | |||
| b86e1fb62a | |||
| b8715ddfd0 | |||
| 79e05d0c0e | |||
| 51b43acf20 | |||
| 39f779b5d3 | |||
| ded21ebc91 | |||
| bb61175eba | |||
| 54c645e33d | |||
| fd509cb370 | |||
| ada5589184 | |||
| 74bda55d4c | |||
| 48f5626499 | |||
| 27e9214e05 | |||
| ddefdbf31f | |||
| 6bfa58ea4d | |||
| 6a1521327b | |||
| b0437bef76 | |||
| ff38c14948 | |||
| ae9a2bd93a | |||
| dee57462e2 | |||
| e1659b2c4e | |||
| 2ee035403d | |||
| 61a8ef2feb | |||
| 9c72246d49 | |||
| f3479a3953 | |||
| f933a41c7b | |||
| 780636d955 | |||
| b14d946afb | |||
| 41093a328e | |||
| a80dafbb18 | |||
| 5144c77b27 | |||
| 50df524ba1 | |||
| dbcd87331d | |||
| 662fface3b | |||
| 0b0d7f104c | |||
| 2a6deb92b1 | |||
| 75e5279e01 | |||
| f6ac297903 | |||
| e9b04acb92 | |||
| 57ea6fea76 | |||
| 2df0a0fdeb | |||
| 4bf93a2d76 | |||
| 97a23ef2e6 | |||
| d684607976 | |||
| 0040a78058 | |||
| 41f4c60a91 | |||
| cf33664b0c | |||
| d96047f45f | |||
| a74457a203 | |||
| cf4fd1abbe | |||
| e31f06b857 | |||
| 9f8ce77751 | |||
| 5df1e2c00a | |||
| e06c257e6b | |||
| f6c7ac51f2 | |||
| 08e4475f00 | |||
| 3c89f7bb5f | |||
| 85f1f2257b | |||
| 03eee23952 | |||
| 4eee78e051 | |||
| a525a6fe33 | |||
| 8ed77c41f0 | |||
| 0cb3ba6b23 | |||
| aeed751a7f | |||
| 80a645b52a | |||
| 3823d29c04 | |||
| f61dd7239b | |||
| 25c6175311 | |||
| fa38ab573b | |||
| 88deb08ff2 | |||
| 2b2b3303e1 | |||
| 33c6ab9b20 | |||
| d27dcf3b07 | |||
| 1482030679 | |||
| 1e2edaef48 | |||
| fc7ecd78c8 | |||
| 4a84145c43 | |||
| 86a577d76b | |||
| 48546c2735 | |||
| 7ec1778103 | |||
| 6977d35eed | |||
| 225d0e0af3 | |||
| 1bb7c0e669 | |||
| 3c742fc08b | |||
| 72323051c3 | |||
| c2e899f2a0 | |||
| fe93b926b4 | |||
| fbc053692d | |||
| b979cd9e67 | |||
| 7aaf141371 | |||
| e8fd7e6c96 | |||
| 735001cb26 | |||
| 5637c6fb70 | |||
| fab1a80dcb | |||
| 060e216712 | |||
| 6905dbe98d | |||
| 1f70dd71c8 | |||
| 31b30ab88e | |||
| e191964ff8 | |||
| 9795e9bbe6 | |||
| 196fb1d86a | |||
| 59eba9afbc | |||
| 0e62011da0 | |||
| 364dbb7931 | |||
| be8d5243f4 | |||
| a9bf1e6e35 | |||
| 1f30faac73 | |||
| b2ebd5c46c | |||
| 7fa99fb1fe | |||
| 178397ae5e | |||
| 6bf661aceb | |||
| 04164e4367 | |||
| b63543181a | |||
| cfac4bb59d | |||
| 84a9c74efd | |||
| 22a9a83656 | |||
| d63ebe3f3c | |||
| 87ce3489d3 | |||
| 761429d88a | |||
| 134d11b528 | |||
| e56a700849 | |||
| 5184da39f4 | |||
| a30045daef | |||
| fe6a4b0b54 | |||
| 16b4ac0d8f | |||
| 9d5c431223 | |||
| 1e9b450619 | |||
| 6474190746 | |||
| 79067721b1 | |||
| 4bb2a13776 | |||
| f75277e62d | |||
| 880bdbc4dd | |||
| c10a357bb3 | |||
| fa6a131eb6 | |||
| b7b4fd5c82 | |||
| 7590e65f6f | |||
| e2fc202df2 | |||
| c98b75c979 | |||
| 394922a1bf | |||
| 87aa61001e | |||
| c37aa99e28 | |||
| 4912dd441d | |||
| e38fa4b1f4 | |||
| 5b2f2ed821 | |||
| 4ea7c47235 | |||
| 7ce048bccd | |||
| cd441e082f | |||
| 6245886b26 | |||
| 802ced9ca5 | |||
| f085dbadd1 | |||
| 2a0cf0f131 | |||
| 0dda2c4659 | |||
| 614d52bd7f | |||
| 5247b15411 | |||
| 685785d2c2 | |||
| 5b8838aeac | |||
| b05fc00d59 | |||
| 76cfe17002 | |||
| e25bcb93fc | |||
| dcf75697ec | |||
| cf70fb629f | |||
| fa1e1e34df | |||
| fae6c36874 | |||
| 48fc0ad569 | |||
| d76c899142 | |||
| e9f374f041 | |||
| 5b8ff7061b | |||
| 393f4a7b42 | |||
| 8281a9023a | |||
| 77dea2c5eb | |||
| 6c2fa9430c | |||
| b9105b98f9 | |||
| ee750bbce1 | |||
| 117f65d431 | |||
| 1d4660beea | |||
| 3c1a0fbda4 | |||
| 89d7ec5290 | |||
| 6c23fff4d6 | |||
| c8fa2600f2 | |||
| aac3736eea | |||
| cb1a59caa0 | |||
| ba90d0fc5e | |||
| 326b665065 | |||
| a8316c780d | |||
| 39f8996d6a | |||
| 51c9fa1697 | |||
| 6a663081a7 | |||
| a1ad6d124a | |||
| 62f6368344 | |||
| 25bc298aff | |||
| 4008d666a5 | |||
| 16fa610ea4 | |||
| 478396fd4e | |||
| 2ee9b2717b | |||
| 426e7d9fbd | |||
| 9581cbfe32 | |||
| 40ab928315 | |||
| e20d2dfe9d | |||
| 750badabf7 | |||
| 74b167b86d | |||
| 463de252a9 | |||
| 6e622ee763 | |||
| 93b1519017 | |||
| 5cb116beb8 | |||
| 2d4f5eb5a4 | |||
| fae691c3d9 | |||
| f22b06097a | |||
| f36060dab5 | |||
| 9343e1e933 | |||
| a12f0e551f | |||
| 549d61fc28 | |||
| 7d324ee35b | |||
| 3c775f2432 | |||
| 280dfda6ed | |||
| c884d6eaa6 | |||
| 338c7ef2b6 | |||
| 5b5352c92d | |||
| f0ed383e51 | |||
| 713105774f | |||
| a750551fee | |||
| 5d8e78e0fa | |||
| 83846ba0d6 | |||
| 75d952ffd8 | |||
| 0ca210395c | |||
| 3ea309568f | |||
| c74dddd02e | |||
| 6f8226a393 | |||
| 64e87a85f5 | |||
| f4877c2369 | |||
| 148e5a3d89 | |||
| f495a8d0cc | |||
| 413c05a09d | |||
| 93be608bf0 | |||
| dbea3e2784 | |||
| 646c87c151 | |||
| 7800fee7e0 | |||
| 07f80e6fd8 | |||
| 50a945e084 | |||
| 25d0b341a9 | |||
| 9887d3cf4a | |||
| 410decafad | |||
| 16cf6b30cd | |||
| 8b696ad0b5 | |||
| db9925510b | |||
| 20676ddd4d | |||
| 5f861ef517 | |||
| 7d1c8c2a0c | |||
| 3f2f96b0d7 | |||
| e2b777d9a3 | |||
| 7cc916d137 | |||
| c7f6499235 | |||
| e2336ef02a | |||
| 6d447079a4 | |||
| 7ff1b074ea | |||
| dc6eaafb00 | |||
| 19ea4668e5 | |||
| 3d770ab7bd | |||
| 095e052606 | |||
| cd6915cdb4 | |||
| 68146db004 | |||
| 3c07eaa251 | |||
| c6ee96c025 | |||
| a645664e50 | |||
| 62c386259b | |||
| b4125748b0 | |||
| 4d6434a2c7 | |||
| 26dad5f56d | |||
| 3ad52ca632 | |||
| 70e81e6f55 | |||
| fb29075926 | |||
| cd2d82150c | |||
| 98ebd54800 | |||
| 6f4360c47b | |||
| c31a4e5131 | |||
| c09e8473e2 | |||
| a683497dbc | |||
| 2e3306d5dd | |||
| b77ed4a3a3 | |||
| 244a9ab79d | |||
| 3761d50c5a | |||
| a85499749a | |||
| e7e183e55d | |||
| d65e815a48 | |||
| 94a3d4eb14 | |||
| 8c2db7d7d6 | |||
| 78849cf52e | |||
| cd466f1d0b | |||
| 27845e4492 | |||
| 508a93d9e3 | |||
| 6662f62236 | |||
| 87af5d3bbe | |||
| 71669dda63 | |||
| e80f37b600 | |||
| 160fe7ca59 | |||
| 59153205b3 | |||
| 3875a9f31b | |||
| b353565d4e | |||
| f2dadecbf3 | |||
| 7301931a6d | |||
| f5a2d82a3a | |||
| 83e46b8df9 | |||
| 5bd9217f9b | |||
| 1e717991e8 | |||
| eb62c977cd | |||
| 3a5b4cc7df | |||
| b2b000b750 | |||
| 089f42a07f | |||
| d704d6f0ed | |||
| ce140662a0 | |||
| 9df832b4bb | |||
| 40298ddbf1 | |||
| ff92344f0d | |||
| b54264cde0 | |||
| 64ba423b6d | |||
| d14f06fc4e | |||
| 143b6ae2de | |||
| 9aa5a6db12 | |||
| af88f54e5d | |||
| 47e0647086 | |||
| 6a974f9ff7 | |||
| bae3cfd183 | |||
| 3add79c071 | |||
| 36e78bd7ac | |||
| 626b45d691 | |||
| fb31cdba9c | |||
| b1cb556503 | |||
| 7b726f974f | |||
| cda48d41ba | |||
| 3ead14a1e0 | |||
| 2cbff258b9 | |||
| 1db72f8d77 | |||
| 2e6d4e9439 | |||
| bf875d9e36 | |||
| c7ffe6edc8 | |||
| f453909f39 | |||
| 5dd47f1196 | |||
| 7ed02b461b | |||
| 97cbefa72f | |||
| bd19b42c15 | |||
| 681b601561 | |||
| a0cd886c56 | |||
| c90c66e61f | |||
| 081a07c168 | |||
| 017b7cb804 | |||
| 0c817bf5e2 | |||
| 3985379cca | |||
| f2e39233f5 | |||
| 4a907709ba | |||
| 5ef2b6561a | |||
| fc2481b8e5 | |||
| c65006601e | |||
| ca63ea2f26 | |||
| aff3694f28 | |||
| 550e375af0 | |||
| c028e33358 | |||
| 269ce715f1 | |||
| 97c7a83a8f | |||
| bba0b34c36 | |||
| c1c7528dd9 | |||
| df869f1eb0 | |||
| c3f5d7c62d | |||
| f8d68002dc | |||
| ff6dd0cf56 | |||
| 860a96939a | |||
| f109be4e8a | |||
| 857b8fb8be | |||
| a1aa2b188a | |||
| 2ecbd36cbf | |||
| 10d68406fe | |||
| 2c5ac562d2 | |||
| 5a614fb86d | |||
| 09ec0b843e | |||
| 8ee0679522 | |||
| 53cec198c0 | |||
| 22918f8f92 | |||
| dd127611e1 | |||
| 094e65eb9d | |||
| de53f62a04 | |||
| 47e2c43401 | |||
| b8d8704f90 | |||
| 446f9199c6 | |||
| f0ff20ec40 | |||
| 257890f839 | |||
| 060100cf3a | |||
| 094e12f68d | |||
| c44bd1edf4 | |||
| 632c6d22a2 | |||
| eef87c96af | |||
| 348668ec13 | |||
| 589242604f | |||
| b79c100967 | |||
| c56eb0962a | |||
| 8df906e641 | |||
| 9cceb0bba7 | |||
| 5563b8448e | |||
| 8eb1488861 | |||
| 37ba0eba02 | |||
| eb3a4b8f75 | |||
| 82ea5847a7 | |||
| 041b8bdfd3 | |||
| 31e8a358c3 | |||
| ad9bfeef7a | |||
| 9a4ee790e1 | |||
| 9a3a297a47 | |||
| 2d3a0babd2 | |||
| 4a276b1620 | |||
| af14f6db5d | |||
| 91a7274a43 | |||
| a38bc90b48 | |||
| ebc1fe907d | |||
| 3a751a63d4 | |||
| 555a3b0478 | |||
| 0b827965d3 | |||
| 354f99f0bd | |||
| b8a8927b0c | |||
| 4ca1cba3f8 | |||
| b07b869b26 | |||
| 806a82ef83 | |||
| 037107480d | |||
| f836473129 | |||
| fc96bc8bba | |||
| 5b401a8c16 | |||
| 5e5965ca6f | |||
| ebc6935663 | |||
| 5657ab46c5 | |||
| 4eaeea81fd | |||
| bcd5097c02 | |||
| 7875e4833c | |||
| f53a038088 | |||
| 6fc5674466 | |||
| 9699e1d707 | |||
| 241cbd478d | |||
| a85c8fe74e | |||
| 8a06339501 | |||
| 287086758b | |||
| cc8b260ed8 | |||
| a7529e158b | |||
| 7dbcd0be9a | |||
| aaf1825b49 | |||
| fe30bd6055 | |||
| 76ee212343 | |||
| c1c679b644 | |||
| 7fa9f605d6 | |||
| 72e3b3beb3 | |||
| 34e5bc5f1d | |||
| 19489496c1 | |||
| 5d27fbb32d | |||
| 3b6b6eb242 | |||
| 642f75141d | |||
| 8dda83906d | |||
| e388a5e475 | |||
| faf2866f96 | |||
| 78790da03c | |||
| e5187e12c4 | |||
| 1dbf4c92ce | |||
| b1d7c34086 | |||
| 9889948f58 | |||
| a7b49a7d92 | |||
| 10c6db4b14 | |||
| 4b53778150 | |||
| a404ac33bb | |||
| 5ecab6112c | |||
| e009ed23fc | |||
| 67f81a2ed5 | |||
| 0679f24606 | |||
| 3a27b4e6f6 | |||
| 6be09df1bf | |||
| a9d4b667ff | |||
| 532569fe59 | |||
| ecf84bdac5 | |||
| 87f6e426b3 | |||
| c8cafa5d5a | |||
| e28efd7da0 | |||
| a0809ceebe | |||
| 33061a8e0b | |||
| 1b537c6f9c | |||
| e9a7d26d06 | |||
| 826a8714e2 | |||
| ea15660973 | |||
| 332d2a7384 | |||
| a2fb9ed42f | |||
| c02c3c60c9 | |||
| 8f44245850 | |||
| 23401e811f | |||
| 1a8561d084 | |||
| 7de65e0a62 | |||
| d09db29039 | |||
| 6f61c96f02 | |||
| 6a89659727 | |||
| 3a21891824 | |||
| 526d77af61 | |||
| 839ec86ac7 | |||
| 20eae67147 | |||
| 452d8c1df0 | |||
| ca369c4b2a | |||
| dcc89e7400 | |||
| 5ffb6d6706 | |||
| ef368f0076 | |||
| b6b354ceaa | |||
| 51153766f5 | |||
| 59ec4c7154 | |||
| c204bc66d6 | |||
| 6e9756ebb6 | |||
| ad46b0980c | |||
| ec56940c51 | |||
| bf9d8fcc07 | |||
| ab178060be | |||
| b261f9781b | |||
| ffb4d9025b | |||
| fc509e14b2 | |||
| a29e5a9dd6 | |||
| 99c3b7810b | |||
| aaabe2a46c | |||
| 3aa89ded21 | |||
| 4fbb400754 | |||
| 66ac6e14db | |||
| 7b282798a3 | |||
| 5be84ad0b7 | |||
| f9744ff522 | |||
| e659dc7e1b | |||
| 839ef3a030 | |||
| 79d7092a39 | |||
| d8aaf50798 | |||
| fc871a4821 | |||
| 73453c7f79 | |||
| 1c2db11d58 | |||
| 805ca03457 | |||
| 7f6f3ff462 | |||
| f805a6080c | |||
| 419e50e339 | |||
| b8b1ffde05 | |||
| c408d8961b | |||
| c896a182e1 | |||
| 091a97c01c | |||
| 176e0b1169 | |||
| 99a916d5eb | |||
| 192cb575da | |||
| f5fd5e7523 | |||
| f84882122e | |||
| 03f78f7a60 | |||
| 1160935446 | |||
| de9271bfd1 | |||
| c99dcd2e93 | |||
| fd009597b6 | |||
| f89394b8ef | |||
| edb52a82d8 | |||
| bc07e2adae | |||
| b627898919 | |||
| 8f98c4fbf6 | |||
| 47b6e6bd80 | |||
| 62a0f5fdcb | |||
| 178a9f3b51 | |||
| 48e6d88889 | |||
| c09602d172 | |||
| f3cf4cbaae | |||
| ba202d77ba | |||
| 031fa47f68 | |||
| d5a95315eb | |||
| 8e8b1ad03d | |||
| 2881269e16 | |||
| a3ec868ac2 | |||
| 457859feba | |||
| 498b7d984a | |||
| 5fa0fcc888 | |||
| 41b695b8cd | |||
| a184806538 | |||
| 6cf9906a60 | |||
| 5c5310dc87 | |||
| b67a2d8a59 | |||
| d374fe92e5 | |||
| 6506ede632 | |||
| 0b8042656f | |||
| 13e4d1d5ac | |||
| cad8f2b43a | |||
| e985681758 | |||
| 2a6894d834 | |||
| 6c221d65e3 | |||
| a4c2332eb1 | |||
| c262ead6ed | |||
| be0efcfcfc | |||
| 1ca1ef94ee | |||
| 9e9be2dc0d | |||
| cf4924764c | |||
| 19469aa52c | |||
| b14455b03a | |||
| 2dbce887df | |||
| a6f27ebed4 | |||
| c7dc4cc573 | |||
| 8dc1a0eade | |||
| ce94442104 | |||
| d65f7f204a | |||
| 490eb1bd16 | |||
| 3bc7553f66 | |||
| 16855b920e | |||
| fc7ae48c95 | |||
| def7ae7798 | |||
| 4bcb89946b | |||
| d8acc062c1 | |||
| 2486033754 | |||
| 82267d48ff | |||
| 34132f0e89 | |||
| ce30d19c15 | |||
| dbde2dc9e4 | |||
| 3408064d00 | |||
| d5063e5dc8 | |||
| 81a296d06a | |||
| c291e4d786 | |||
| 575f18aaf4 | |||
| 8575a45294 | |||
| a7d8145a32 | |||
| c710f03995 | |||
| 0e6f12af86 | |||
| 5b85ed181a | |||
| 48063afb3a | |||
| 0b2d23d443 | |||
| 28c4ed824e | |||
| 5bc601d9a8 | |||
| 08fee005a8 | |||
| 11064c4d34 | |||
| a20cd66ba4 | |||
| 3ecf109835 | |||
| 1d30225e2c | |||
| 0a71f171bc | |||
| f563b1db43 | |||
| 5591a9b966 | |||
| 798363eda7 | |||
| 10ff5f16a6 | |||
| 4b81c0dff3 | |||
| fedce0cec7 | |||
| 4953629ccd | |||
| 83febb3452 | |||
| 4bd611884a | |||
| ff57f59562 | |||
| 2ea437f353 | |||
| 4462f24753 | |||
| 2988de6377 | |||
| 030265eaec | |||
| 7bf4c8e76e | |||
| 574592cba5 | |||
| 647f1c98ed | |||
| fe05f9aeb2 | |||
| 33fa705c7f | |||
| d652af1097 | |||
| 452ddc0f0d | |||
| f37d9aeaef | |||
| 2355fd224d | |||
| 56ecc6ba96 | |||
| 37745cd899 | |||
| 2f4810e72f | |||
| 2dc979a202 | |||
| 0665c3ebf7 | |||
| 422d04cb2b | |||
| 30b3f47e31 | |||
| 8ea8c312ea | |||
| 6564afbe73 | |||
| 2bbc9a1cb2 | |||
| a9f9949b3e | |||
| 04baa07547 | |||
| feccc6e705 | |||
| 3308d1968f | |||
| d6680a50b9 | |||
| 369ca13c75 | |||
| 66743676ce | |||
| 93d42ca80e | |||
| e41584afb5 | |||
| 2165ab2620 | |||
| 0fe68de1a4 | |||
| 5b3268317c | |||
| d27fc24aa0 | |||
| 155a7c1067 | |||
| 5d2062a3cc | |||
| 917f11e679 | |||
| d4914f47c3 | |||
| cffadd8c71 | |||
| 4449c4e9e0 | |||
| 473e5714f7 | |||
| ea437351ed | |||
| 4893928310 | |||
| 825227474b | |||
| 3e2e111b17 | |||
| 519384fae8 | |||
| 95c2877ffc | |||
| 998c8a6e3d | |||
| 8d52e6d458 | |||
| 4c3e7690ba | |||
| cbd77d0aeb | |||
| d0526e31fa | |||
| c0f28d81b0 | |||
| a62810918f | |||
| a5552a1d70 | |||
| b81a082cd1 | |||
| 6c5c29ada2 | |||
| a7b8e52f8e | |||
| d1864b3608 | |||
| 1837b8ef2c | |||
| 223c8358ce | |||
| 3e7920820a | |||
| 0dfff052cb | |||
| f02d017ffa | |||
| 6dc59a9c3e | |||
| bccc2cb719 | |||
| ef5ac02b69 | |||
| de0aaff433 | |||
| f9f03d8976 | |||
| c7afe382a2 | |||
| f87e4c60e9 | |||
| 035b85eeba | |||
| a57554222f | |||
| 0b41984920 | |||
| eb4f708b91 | |||
| 5179df1928 | |||
| de7aee2465 | |||
| 622b8fa3f0 | |||
| e84161076b | |||
| f330de0b5c | |||
| 281e058ef2 | |||
| ee3fc11add | |||
| 2729d15742 | |||
| b8d8ab1aad | |||
| 81f31d95c8 | |||
| a28fa20018 | |||
| c4fb703269 | |||
| 7ea34ae0ef | |||
| 7376eef378 | |||
| 303ba1326b | |||
| ac64d9405b | |||
| 50b2245be5 | |||
| 20da2c8ea0 | |||
| ab068f6fda | |||
| bdf8a6966b | |||
| dbadac183d | |||
| 1852d077bf | |||
| b011daf67f | |||
| 254bb40f00 | |||
| edca6f28f0 | |||
| b7b84c7a0d | |||
| ceab161324 | |||
| 1a6a1828bf | |||
| 42f636032c | |||
| e0c85fb69c | |||
| 78e37e7d21 | |||
| 89ea238c32 | |||
| b59cb505f8 | |||
| fa1b3bdda4 | |||
| 0e73a0e94b | |||
| d839bf961b | |||
| d7af2714c6 | |||
| 239c178b68 | |||
| cfce34e300 | |||
| 0f57bdab75 | |||
| d335adf644 | |||
| b3bf223617 | |||
| 20e085723b | |||
| 706ee46b73 | |||
| 94b24aaa47 | |||
| 22963d7346 | |||
| d5fb653914 | |||
| 2f06366399 | |||
| 02a67ea59e | |||
| a0203bc8e0 | |||
| cb8dcfcebf | |||
| 663e41d74f | |||
| 63bd7cb478 | |||
| bce33bbb09 | |||
| 630ff4ff7d | |||
| 07d23b927e | |||
| 384a082e8d | |||
| 05e0d5f3d9 | |||
| 67f199678c | |||
| 83a7a69893 | |||
| bf59220b87 | |||
| 5a2c7eb50a | |||
| d115d169b7 | |||
| cdd158c571 | |||
| 4c0905c5f2 | |||
| 527fb87dad | |||
| 2c4230e2d3 | |||
| 99e96f64f7 | |||
| bf09c979ca | |||
| 51f37cbb81 | |||
| 1a1cab2d06 | |||
| d3873b0fc7 | |||
| 8e0afbeaa4 | |||
| 6a61e81b7a | |||
| ffa0d2f180 | |||
| 59503e71ff | |||
| 8182b1ef69 | |||
| 1f7a64aa3d | |||
| 664a838cd6 | |||
| 6d4867e799 | |||
| 56fe54df43 | |||
| cd89c34d99 | |||
| 7f3a2b3813 | |||
| e12c66aabe | |||
| 40fddffeec | |||
| 5dff63d767 | |||
| 685039d608 | |||
| c35b04cccd | |||
| debc4b752f | |||
| f4b51b373b | |||
| d36f3d0a59 | |||
| 7c2ed0c095 | |||
| 5eed370856 | |||
| 58cb7c631d | |||
| 91eef351e4 | |||
| 0630cd62b3 | |||
| 0090fa1a6e | |||
| ac7f571e53 | |||
| e5a284d442 | |||
| 1a11c526b9 | |||
| 5a28bd1e78 | |||
| ee5d2ec91a | |||
| c8f4325c19 | |||
| 67714d8347 | |||
| 0f23883283 | |||
| 2e52946fd3 | |||
| 4109c62cf7 | |||
| 7154e378b2 | |||
| 95cb6f07a8 | |||
| 8fd126ba1b | |||
| ce292a8bb8 | |||
| a97b9c1122 | |||
| 354252b4b5 | |||
| bf6cdff88a | |||
| ffbed0980c | |||
| ad1e9697ae | |||
| e8ef7d5e7b | |||
| 349bdc12a7 | |||
| 635ee36e11 | |||
| 6e72760de5 | |||
| 6a2c519152 | |||
| 5de8b277c6 | |||
| a3e9fc547c | |||
| f4ac080f9e | |||
| 1dbb942d5b | |||
| 95a3cd8732 | |||
| cecfe72060 | |||
| 145a36323c | |||
| 9c1d8e032b | |||
| 700457c62a | |||
| 67aa00d0bb | |||
| aef230d40a | |||
| f7d4fb61ce | |||
| dd5cffc308 | |||
| c7eb1ab49a | |||
| a07851d6af | |||
| 04851652db | |||
| 1fd5e55881 | |||
| 1a8d7576e0 | |||
| 922b5fba53 | |||
| 9ebc6b4c97 | |||
| 5d961eaeb3 | |||
| f4e879a936 | |||
| c414e57dcc | |||
| 305374ab1a | |||
| b410eeb6dd | |||
| 3ff78d138a | |||
| aa8e6b081c | |||
| 1cc1852a9a | |||
| 1562381114 | |||
| af1dbf6581 | |||
| d3721c504e | |||
| bcef12dfcc | |||
| 26e683f1d0 | |||
| 426feeef6a | |||
| 203d75770c | |||
| d0120c94a0 | |||
| 933136d382 | |||
| a613a8ebd0 | |||
| 27c3d5a90b | |||
| 69e4522a4e | |||
| 6b9f70797d | |||
| 03bdf82ca2 | |||
| 738fac18de | |||
| 492ccedcab | |||
| 79090ac121 | |||
| bcd9294cc4 | |||
| d98a2e9234 | |||
| ac6eff280d | |||
| 9c2b2c589d | |||
| 20b10b5d66 | |||
| eaf464a2c5 | |||
| cb9234ba46 | |||
| 7a8d6b1976 | |||
| fb1d4a0f04 | |||
| 1fa42e2f71 | |||
| 235811cd8a | |||
| a95c15a530 | |||
| d3e922f0c8 | |||
| 3cbc40b129 | |||
| 29c63fdb6a | |||
| 3524aa909c | |||
| 2f598e35a0 | |||
| 1aeca545c8 | |||
| efd5e29ff4 | |||
| 0112b56c9c | |||
| 6a839fb2c3 | |||
| ff8b997a1f | |||
| 7bf3419647 | |||
| bd55824827 | |||
| 2087339035 | |||
| a397130669 | |||
| 15759d9e7c | |||
| fbebb046f7 | |||
| 6c9547f411 | |||
| 9ee77f2c11 | |||
| a7b96b3e59 | |||
| 5cc4fcf6a2 | |||
| 0b78033f0b | |||
| d12737719f | |||
| 2c98e18724 | |||
| 4e17b1975e | |||
| ca9588c896 | |||
| 7525aac830 | |||
| d57598827f | |||
| af8261af93 | |||
| 7bdd9551ed | |||
| 8615987243 | |||
| ae3382d797 | |||
| 163f58ff81 | |||
| dd94f8d509 | |||
| 1a781a707e | |||
| ccf7697185 | |||
| 0a8efd5320 | |||
| 43760eb202 | |||
| fb74018ae2 | |||
| 6abb2059eb | |||
| 4309153051 | |||
| be9ae70060 | |||
| 591908eccf | |||
| 1562a8a010 | |||
| 34268672be | |||
| 74a3c763b4 | |||
| 0e8427e7b1 | |||
| 3a6f58598c | |||
| 70fecd1115 | |||
| 80d03e143c | |||
| 8609a77bd2 | |||
| 0ed6d3b28e | |||
| 6f3b4b857f | |||
| a0ec422444 | |||
| b86969f762 | |||
| 4410ede8ed | |||
| 92a54a7b72 | |||
| f3b6cf1d6d | |||
| 5ad5dde1e2 | |||
| a139167489 | |||
| 9b524a16e9 | |||
| 917df6703c | |||
| 8bd67bb124 | |||
| 20221a67c2 | |||
| b4cc6c74f5 | |||
| e3ae517555 | |||
| 8665fa8c50 | |||
| 575072b74b | |||
| bb16b9bef2 | |||
| 664a5c4438 | |||
| 1cfb3fd03a | |||
| 45cec4a6fa | |||
| d908731566 | |||
| 187b3bd4bd | |||
| a78faee589 | |||
| 80abc50d3e | |||
| f3ad4c7183 | |||
| e423fc2629 | |||
| f50b2c9b92 | |||
| dfd0326186 | |||
| d149a131c1 | |||
| f046c12bd2 | |||
| 06d4756114 | |||
| d2630ff84e | |||
| 143b3db2c9 | |||
| 331c85724a | |||
| 9c74f21966 | |||
| 91fe8bc0f4 | |||
| 2b8fc018ba | |||
| e18a35784a | |||
| 7ef7547a14 | |||
| 6df925bc75 | |||
| 9f608411cb | |||
| f81e5fbe9f | |||
| 9b09d1de86 | |||
| 1c7d346767 | |||
| 8247cb3362 | |||
| f4f34ab12f | |||
| 59d570fc16 | |||
| 3470c0dc49 | |||
| 89ccbdf8d1 | |||
| 5f2d2893d2 | |||
| 8482cc4cb3 | |||
| adbbf17ee4 | |||
| 16d12396d0 | |||
| 532242e626 | |||
| f28140897e | |||
| e145619f6d | |||
| 82457603b6 | |||
| ad546c9631 | |||
| 51ec513b5c | |||
| c1775da187 | |||
| f08b407667 | |||
| df757fb040 | |||
| ac6e667ad9 | |||
| 3d58b46226 | |||
| 1948e985a3 | |||
| ba97f56912 | |||
| bbb2fb3395 | |||
| fed3b59e46 | |||
| dc4a864aaa | |||
| 29e6ef7c70 | |||
| db940b3d8f | |||
| 1a1816b5bd | |||
| c900d72857 | |||
| 2068b74ea8 | |||
| 7609fd4dc6 | |||
| f5bd4b3c8f | |||
| b776cae902 | |||
| ec05ebc5ed | |||
| 1455bc9f8f | |||
| b559f2b8d0 | |||
| e7d45184f1 | |||
| 5d02b8c3c6 | |||
| 7fa1578c49 | |||
| 1e6d386b8d | |||
| 18760393d7 | |||
| 60826077e7 | |||
| 19b70dc414 | |||
| 97b3057824 | |||
| 918a17a30b |
@@ -6,12 +6,14 @@
|
||||
*.rej
|
||||
*.swo
|
||||
*.swp
|
||||
*.zip
|
||||
*.vi
|
||||
*~
|
||||
*.sass-cache
|
||||
|
||||
# OS or Editor folders
|
||||
.DS_Store
|
||||
._*
|
||||
Thumbs.db
|
||||
.cache
|
||||
.project
|
||||
@@ -30,4 +32,6 @@ nbproject
|
||||
.hg
|
||||
.svn
|
||||
.CVS
|
||||
.idea
|
||||
.idea
|
||||
node_modules
|
||||
dist
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- 0.6
|
||||
@@ -0,0 +1,75 @@
|
||||
# Contributing to Bootstrap
|
||||
|
||||
Looking to contribute something to Bootstrap? **Here's how you can help.**
|
||||
|
||||
|
||||
|
||||
## Reporting issues
|
||||
|
||||
We only accept issues that are bug reports or feature requests. Bugs must be isolated and reproducible problems that we can fix within the Bootstrap core. Please read the following guidelines before opening any issue.
|
||||
|
||||
1. **Search for existing issues.** We get a lot of duplicate issues, and you'd help us out a lot by first checking if someone else has reported the same issue. Moreover, the issue may have already been resolved with a fix available.
|
||||
2. **Create an isolated and reproducible test case.** Be sure the problem exists in Bootstrap's code with a [reduced test cases](http://css-tricks.com/reduced-test-cases/) that should be included in each bug report.
|
||||
3. **Include a live example.** Make use of jsFiddle or jsBin to share your isolated test cases.
|
||||
4. **Share as much information as possible.** Include operating system and version, browser and version, version of Bootstrap, customized or vanilla build, etc. where appropriate. Also include steps to reproduce the bug.
|
||||
|
||||
|
||||
|
||||
## Key branches
|
||||
|
||||
- `master` is the latest, deployed version.
|
||||
- `gh-pages` is the hosted docs (not to be used for pull requests).
|
||||
- `*-wip` is the official work in progress branch for the next release.
|
||||
|
||||
|
||||
|
||||
## Notes on the repo
|
||||
|
||||
As of v2.0.0, Bootstrap's documentation is powered by Mustache templates and built via `make` before each commit and release. This was done to enable internationalization (translation) in a future release by uploading our strings to the [Twitter Translation Center](http://translate.twttr.com/). Any edits to the docs should be first done in the Mustache files and then recompiled into the HTML.
|
||||
|
||||
|
||||
|
||||
## Pull requests
|
||||
|
||||
- Try to submit pull requests against the latest `*-wip` branch for easier merging
|
||||
- Any changes to the docs must be made to the Mustache templates, not just the compiled HTML pages
|
||||
- CSS changes must be done in .less files first, never just the compiled files
|
||||
- If modifying the .less files, always recompile and commit the compiled files bootstrap.css and bootstrap.min.css
|
||||
- Try not to pollute your pull request with unintended changes--keep them simple and small
|
||||
- Try to share which browsers your code has been tested in before submitting a pull request
|
||||
|
||||
|
||||
|
||||
## Coding standards: HTML
|
||||
|
||||
- Two spaces for indentation, never tabs
|
||||
- Double quotes only, never single quotes
|
||||
- Always use proper indentation
|
||||
- Use tags and elements appropriate for an HTML5 doctype (e.g., self-closing tags)
|
||||
|
||||
|
||||
|
||||
## Coding standards: CSS
|
||||
|
||||
- Adhere to the [Recess CSS property order](http://markdotto.com/2011/11/29/css-property-order/)
|
||||
- Multiple-line approach (one property and value per line)
|
||||
- Always a space after a property's colon (.e.g, `display: block;` and not `display:block;`)
|
||||
- End all lines with a semi-colon
|
||||
- For multiple, comma-separated selectors, place each selector on it's own line
|
||||
- Attribute selectors, like `input[type="text"]` should always wrap the attribute's value in double quotes, for consistency and safety (see this [blog post on unquoted attribute values](http://mathiasbynens.be/notes/unquoted-attribute-values) that can lead to XSS attacks).
|
||||
|
||||
|
||||
|
||||
## Coding standards: JS
|
||||
|
||||
- No semicolons
|
||||
- Comma first
|
||||
- 2 spaces (no tabs)
|
||||
- strict mode
|
||||
- "Attractive"
|
||||
|
||||
|
||||
|
||||
## License
|
||||
|
||||
By contributing your code, you agree to license your contribution under the terms of the APLv2: https://github.com/twitter/bootstrap/blob/master/LICENSE
|
||||
@@ -1,13 +1,176 @@
|
||||
Copyright 2012 Twitter, Inc.
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
1. Definitions.
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
@@ -2,28 +2,64 @@ BOOTSTRAP = ./docs/assets/css/bootstrap.css
|
||||
BOOTSTRAP_LESS = ./less/bootstrap.less
|
||||
BOOTSTRAP_RESPONSIVE = ./docs/assets/css/bootstrap-responsive.css
|
||||
BOOTSTRAP_RESPONSIVE_LESS = ./less/responsive.less
|
||||
LESS_COMPRESSOR ?= `which lessc`
|
||||
WATCHR ?= `which watchr`
|
||||
DATE=$(shell date +%I:%M%p)
|
||||
CHECK=\033[32m✔\033[39m
|
||||
HR=\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#
|
||||
|
||||
|
||||
#
|
||||
# BUILD DOCS
|
||||
#
|
||||
|
||||
docs: bootstrap
|
||||
rm docs/assets/bootstrap.zip
|
||||
zip -r docs/assets/bootstrap.zip bootstrap
|
||||
build:
|
||||
@echo "\n${HR}"
|
||||
@echo "Building Bootstrap..."
|
||||
@echo "${HR}\n"
|
||||
@jshint js/*.js --config js/.jshintrc
|
||||
@jshint js/tests/unit/*.js --config js/.jshintrc
|
||||
@echo "Running JSHint on javascript... ${CHECK} Done"
|
||||
@recess --compile ${BOOTSTRAP_LESS} > ${BOOTSTRAP}
|
||||
@recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > ${BOOTSTRAP_RESPONSIVE}
|
||||
@echo "Compiling LESS with Recess... ${CHECK} Done"
|
||||
@node docs/build
|
||||
@cp img/* docs/assets/img/
|
||||
@cp js/*.js docs/assets/js/
|
||||
@cp js/tests/vendor/jquery.js docs/assets/js/
|
||||
@echo "Compiling documentation... ${CHECK} Done"
|
||||
@cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js js/bootstrap-affix.js > docs/assets/js/bootstrap.js
|
||||
@uglifyjs docs/assets/js/bootstrap.js -nc > docs/assets/js/bootstrap.min.tmp.js
|
||||
@echo "/**\n* Bootstrap.js v2.2.2 by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > docs/assets/js/copyright.js
|
||||
@cat docs/assets/js/copyright.js docs/assets/js/bootstrap.min.tmp.js > docs/assets/js/bootstrap.min.js
|
||||
@rm docs/assets/js/copyright.js docs/assets/js/bootstrap.min.tmp.js
|
||||
@echo "Compiling and minifying javascript... ${CHECK} Done"
|
||||
@echo "\n${HR}"
|
||||
@echo "Bootstrap successfully built at ${DATE}."
|
||||
@echo "${HR}\n"
|
||||
@echo "Thanks for using Bootstrap,"
|
||||
@echo "<3 @mdo and @fat\n"
|
||||
|
||||
#
|
||||
# RUN JSHINT & QUNIT TESTS IN PHANTOMJS
|
||||
#
|
||||
|
||||
test:
|
||||
jshint js/*.js --config js/.jshintrc
|
||||
jshint js/tests/unit/*.js --config js/.jshintrc
|
||||
node js/tests/server.js &
|
||||
phantomjs js/tests/phantom.js "http://localhost:3000/js/tests"
|
||||
kill -9 `cat js/tests/pid.txt`
|
||||
rm js/tests/pid.txt
|
||||
|
||||
#
|
||||
# CLEANS THE ROOT DIRECTORY OF PRIOR BUILDS
|
||||
#
|
||||
|
||||
clean:
|
||||
rm -r bootstrap
|
||||
lessc ${BOOTSTRAP_LESS} > ${BOOTSTRAP}
|
||||
lessc ${BOOTSTRAP_RESPONSIVE_LESS} > ${BOOTSTRAP_RESPONSIVE}
|
||||
node docs/build
|
||||
cp img/* docs/assets/img/
|
||||
cp js/*.js docs/assets/js/
|
||||
cp js/tests/vendor/jquery.js docs/assets/js/
|
||||
cp js/tests/vendor/jquery.js docs/assets/js/
|
||||
|
||||
#
|
||||
# BUILD SIMPLE BOOTSTRAP DIRECTORY
|
||||
# lessc & uglifyjs are required
|
||||
# recess & uglifyjs are required
|
||||
#
|
||||
|
||||
bootstrap:
|
||||
@@ -31,18 +67,24 @@ bootstrap:
|
||||
mkdir -p bootstrap/css
|
||||
mkdir -p bootstrap/js
|
||||
cp img/* bootstrap/img/
|
||||
lessc ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.css
|
||||
lessc --compress ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.min.css
|
||||
lessc ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.css
|
||||
lessc --compress ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.min.css
|
||||
cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js > bootstrap/js/bootstrap.js
|
||||
uglifyjs -nc bootstrap/js/bootstrap.js > bootstrap/js/bootstrap.min.js
|
||||
recess --compile ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.css
|
||||
recess --compress ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.min.css
|
||||
recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.css
|
||||
recess --compress ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.min.css
|
||||
cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js js/bootstrap-affix.js > bootstrap/js/bootstrap.js
|
||||
uglifyjs bootstrap/js/bootstrap.js -nc > bootstrap/js/bootstrap.min.tmp.js
|
||||
echo "/*!\n* Bootstrap.js by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > bootstrap/js/copyright.js
|
||||
cat bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js > bootstrap/js/bootstrap.min.js
|
||||
rm bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js
|
||||
|
||||
#
|
||||
# MAKE FOR GH-PAGES 4 FAT & MDO ONLY (O_O )
|
||||
#
|
||||
|
||||
gh-pages: docs
|
||||
gh-pages: bootstrap docs
|
||||
rm -f docs/assets/bootstrap.zip
|
||||
zip -r docs/assets/bootstrap.zip bootstrap
|
||||
rm -r bootstrap
|
||||
rm -f ../bootstrap-gh-pages/assets/bootstrap.zip
|
||||
node docs/build production
|
||||
cp -r docs/* ../bootstrap-gh-pages
|
||||
@@ -56,4 +98,4 @@ watch:
|
||||
watchr -e "watch('less/.*\.less') { system 'make' }"
|
||||
|
||||
|
||||
.PHONY: dist docs watch gh-pages
|
||||
.PHONY: docs watch gh-pages
|
||||
@@ -1,80 +1,92 @@
|
||||
TWITTER BOOTSTRAP
|
||||
=================
|
||||
# [Twitter Bootstrap v2.2.2](http://twitter.github.com/bootstrap) [](http://travis-ci.org/twitter/bootstrap)
|
||||
|
||||
Bootstrap is Twitter's toolkit for kickstarting CSS for websites, apps, and more. It includes base CSS styles for typography, forms, buttons, tables, grids, navigation, alerts, and more.
|
||||
Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created and maintained by [Mark Otto](http://twitter.com/mdo) and [Jacob Thornton](http://twitter.com/fat).
|
||||
|
||||
To get started -- checkout http://twitter.github.com/bootstrap!
|
||||
To get started, checkout http://getbootstrap.com!
|
||||
|
||||
|
||||
Versioning
|
||||
----------
|
||||
|
||||
## Quick start
|
||||
|
||||
Three quick start options are available:
|
||||
|
||||
* [Download the latest release](https://github.com/twitter/bootstrap/zipball/master).
|
||||
* Clone the repo: `git clone git://github.com/twitter/bootstrap.git`.
|
||||
* Install with Twitter's [Bower](http://twitter.github.com/bower): `bower install bootstrap`.
|
||||
|
||||
|
||||
|
||||
## Versioning
|
||||
|
||||
For transparency and insight into our release cycle, and for striving to maintain backward compatibility, Bootstrap will be maintained under the Semantic Versioning guidelines as much as possible.
|
||||
|
||||
Releases will be numbered with the follow format:
|
||||
Releases will be numbered with the following format:
|
||||
|
||||
`<major>.<minor>.<patch>`
|
||||
|
||||
And constructed with the following guidelines:
|
||||
|
||||
* Breaking backward compatibility bumps the major
|
||||
* New additions without breaking backward compatibility bumps the minor
|
||||
* Bug fixes and misc changes bump the patch
|
||||
* Breaking backward compatibility bumps the major (and resets the minor and patch)
|
||||
* New additions without breaking backward compatibility bumps the minor (and resets the patch)
|
||||
* Bug fixes and misc changes bumps the patch
|
||||
|
||||
For more information on SemVer, please visit http://semver.org/.
|
||||
|
||||
|
||||
Bug tracker
|
||||
-----------
|
||||
|
||||
Have a bug? Please create an issue here on GitHub!
|
||||
## Bug tracker
|
||||
|
||||
https://github.com/twitter/bootstrap/issues
|
||||
Have a bug or a feature request? [Please open a new issue](https://github.com/twitter/bootstrap/issues). Before opening any issue, please search for existing issues and read the [Issue Guidelines](https://github.com/necolas/issue-guidelines), written by [Nicolas Gallagher](https://github.com/necolas/).
|
||||
|
||||
|
||||
Twitter account
|
||||
---------------
|
||||
|
||||
Keep up to date on announcements and more by following Bootstrap on Twitter, <a href="http://twitter.com/TwBootstrap">@TwBootstrap</a>.
|
||||
## Community
|
||||
|
||||
Keep track of development and community news.
|
||||
|
||||
* Follow [@twbootstrap on Twitter](http://twitter.com/twbootstrap).
|
||||
* Read and subscribe to the [The Official Twitter Bootstrap Blog](http://blog.getbootstrap.com).
|
||||
* Have a question that's not a feature request or bug report? [Ask on the mailing list.](http://groups.google.com/group/twitter-bootstrap)
|
||||
* Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##twitter-bootstrap` channel.
|
||||
|
||||
|
||||
Mailing list
|
||||
------------
|
||||
|
||||
Have a question? Ask on our mailing list!
|
||||
|
||||
twitter-bootstrap@googlegroups.com
|
||||
|
||||
http://groups.google.com/group/twitter-bootstrap
|
||||
|
||||
|
||||
IRC
|
||||
---
|
||||
|
||||
Server: irc.freenode.net
|
||||
|
||||
Channel: ##twitter-bootstrap (the double ## is not a typo)
|
||||
|
||||
|
||||
Developers
|
||||
----------
|
||||
## Developers
|
||||
|
||||
We have included a makefile with convenience methods for working with the Bootstrap library.
|
||||
|
||||
+ **dependencies**
|
||||
Our makefile depends on you having recess, connect, uglify.js, and jshint installed. To install, just run the following command in npm:
|
||||
|
||||
```
|
||||
$ npm install recess connect uglify-js jshint -g
|
||||
```
|
||||
|
||||
+ **build** - `make`
|
||||
Runs the LESS compiler to rebuild the `/less` files and compiles the docs pages. Requires lessc and uglify-js. <a href="http://twitter.github.com/bootstrap/less.html#compiling">Read more in our docs »</a>
|
||||
Runs the recess compiler to rebuild the `/less` files and compiles the docs pages. Requires recess and uglify-js. <a href="http://twitter.github.com/bootstrap/extend.html#compiling">Read more in our docs »</a>
|
||||
|
||||
+ **test** - `make test`
|
||||
Runs jshint and qunit tests headlessly in [phantomjs](http://code.google.com/p/phantomjs/) (used for ci). Depends on having phantomjs installed.
|
||||
|
||||
+ **watch** - `make watch`
|
||||
This is a convenience method for watching just Less files and automatically building them whenever you save. Requires the Watchr gem.
|
||||
|
||||
|
||||
Authors
|
||||
-------
|
||||
|
||||
## Contributing
|
||||
|
||||
Please submit all pull requests against *-wip branches. If your pull request contains JavaScript patches or features, you must include relevant unit tests. All HTML and CSS should conform to the [Code Guide](http://github.com/mdo/code-guide), maintained by [Mark Otto](http://github.com/mdo).
|
||||
|
||||
Thanks!
|
||||
|
||||
|
||||
|
||||
## Authors
|
||||
|
||||
**Mark Otto**
|
||||
|
||||
+ http://twitter.com/mdo
|
||||
+ http://github.com/markdotto
|
||||
+ http://github.com/mdo
|
||||
|
||||
**Jacob Thornton**
|
||||
|
||||
@@ -82,8 +94,8 @@ Authors
|
||||
+ http://github.com/fat
|
||||
|
||||
|
||||
Copyright and license
|
||||
---------------------
|
||||
|
||||
## Copyright and license
|
||||
|
||||
Copyright 2012 Twitter, Inc.
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "bootstrap",
|
||||
"version": "2.2.2",
|
||||
"main": ["./docs/assets/js/bootstrap.js", "./docs/assets/css/bootstrap.css"],
|
||||
"dependencies": {
|
||||
"jquery": "~1.8.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"name": "twitter/bootstrap"
|
||||
, "description": "Sleek, intuitive, and powerful front-end framework for faster and easier web development."
|
||||
, "keywords": ["bootstrap", "css"]
|
||||
, "homepage": "http://twitter.github.com/bootstrap/"
|
||||
, "author": "Twitter Inc."
|
||||
, "license": "Apache-2.0"
|
||||
, "target-dir": "twitter/bootstrap"
|
||||
|
||||
}
|
||||
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 486 B |
|
Before Width: | Height: | Size: 564 B |
|
Before Width: | Height: | Size: 369 B |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 133 KiB |
|
Before Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 75 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 172 KiB |
|
After Width: | Height: | Size: 205 KiB |
|
After Width: | Height: | Size: 81 KiB |
|
After Width: | Height: | Size: 134 KiB |
|
After Width: | Height: | Size: 134 KiB |
|
Before Width: | Height: | Size: 398 B |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 316 B |
|
Before Width: | Height: | Size: 305 B |
|
Before Width: | Height: | Size: 213 B |
|
Before Width: | Height: | Size: 345 B |
|
Before Width: | Height: | Size: 117 B |
|
Before Width: | Height: | Size: 172 B |
|
Before Width: | Height: | Size: 301 B |
|
Before Width: | Height: | Size: 292 B |
|
Before Width: | Height: | Size: 405 B |
|
After Width: | Height: | Size: 84 B |
|
Before Width: | Height: | Size: 370 B |
|
Before Width: | Height: | Size: 312 B |
|
Before Width: | Height: | Size: 452 B |
|
Before Width: | Height: | Size: 264 B |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1008 B |
@@ -17,7 +17,7 @@ To target a specific plugin, just include the plugins name as a namespace along
|
||||
|
||||
---
|
||||
|
||||
### PROGRAMATIC API
|
||||
### PROGRAMMATIC API
|
||||
|
||||
We also believe you should be able to use all plugins provided by Bootstrap purely through the JS API.
|
||||
|
||||
|
||||
@@ -6,11 +6,21 @@
|
||||
|
||||
$(function(){
|
||||
|
||||
var $window = $(window)
|
||||
|
||||
// Disable certain links in docs
|
||||
$('section [href^=#]').click(function (e) {
|
||||
e.preventDefault()
|
||||
})
|
||||
|
||||
// side bar
|
||||
$('.bs-docs-sidenav').affix({
|
||||
offset: {
|
||||
top: function () { return $window.width() <= 980 ? 290 : 210 }
|
||||
, bottom: 270
|
||||
}
|
||||
})
|
||||
|
||||
// make code pretty
|
||||
window.prettyPrint && prettyPrint()
|
||||
|
||||
@@ -21,51 +31,16 @@
|
||||
$(this).parents('.add-on')[method]('active')
|
||||
})
|
||||
|
||||
// position static twipsies for components page
|
||||
if ($(".twipsies a").length) {
|
||||
$(window).on('load resize', function () {
|
||||
$(".twipsies a").each(function () {
|
||||
$(this)
|
||||
.tooltip({
|
||||
placement: $(this).attr('title')
|
||||
, trigger: 'manual'
|
||||
})
|
||||
.tooltip('show')
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// add tipsies to grid for scaffolding
|
||||
if ($('#grid-system').length) {
|
||||
$('#grid-system').tooltip({
|
||||
if ($('#gridSystem').length) {
|
||||
$('#gridSystem').tooltip({
|
||||
selector: '.show-grid > div'
|
||||
, title: function () { return $(this).width() + 'px' }
|
||||
})
|
||||
}
|
||||
|
||||
// fix sub nav on scroll
|
||||
var $win = $(window)
|
||||
, $nav = $('.subnav')
|
||||
, navTop = $('.subnav').length && $('.subnav').offset().top - 40
|
||||
, isFixed = 0
|
||||
|
||||
processScroll()
|
||||
|
||||
$win.on('scroll', processScroll)
|
||||
|
||||
function processScroll() {
|
||||
var i, scrollTop = $win.scrollTop()
|
||||
if (scrollTop >= navTop && !isFixed) {
|
||||
isFixed = 1
|
||||
$nav.addClass('subnav-fixed')
|
||||
} else if (scrollTop <= navTop && isFixed) {
|
||||
isFixed = 0
|
||||
$nav.removeClass('subnav-fixed')
|
||||
}
|
||||
}
|
||||
|
||||
// tooltip demo
|
||||
$('.tooltip-demo.well').tooltip({
|
||||
$('.tooltip-demo').tooltip({
|
||||
selector: "a[rel=tooltip]"
|
||||
})
|
||||
|
||||
@@ -114,7 +89,7 @@
|
||||
})
|
||||
|
||||
// request built javascript
|
||||
$('.download-btn').on('click', function () {
|
||||
$('.download-btn .btn').on('click', function () {
|
||||
|
||||
var css = $("#components.download input:checked")
|
||||
.map(function () { return this.value })
|
||||
@@ -132,7 +107,7 @@
|
||||
|
||||
$.ajax({
|
||||
type: 'POST'
|
||||
, url: 'http://bootstrap.herokuapp.com'
|
||||
, url: /\?dev/.test(window.location) ? 'http://localhost:3000' : 'http://bootstrap.herokuapp.com'
|
||||
, dataType: 'jsonpi'
|
||||
, params: {
|
||||
js: js
|
||||
@@ -142,7 +117,6 @@
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
// Modified from the original jsonpi https://github.com/benvinegar/jquery-jsonpi
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
/* ==========================================================
|
||||
* bootstrap-affix.js v2.2.2
|
||||
* http://twitter.github.com/bootstrap/javascript.html#affix
|
||||
* ==========================================================
|
||||
* Copyright 2012 Twitter, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ========================================================== */
|
||||
|
||||
|
||||
!function ($) {
|
||||
|
||||
"use strict"; // jshint ;_;
|
||||
|
||||
|
||||
/* AFFIX CLASS DEFINITION
|
||||
* ====================== */
|
||||
|
||||
var Affix = function (element, options) {
|
||||
this.options = $.extend({}, $.fn.affix.defaults, options)
|
||||
this.$window = $(window)
|
||||
.on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
|
||||
.on('click.affix.data-api', $.proxy(function () { setTimeout($.proxy(this.checkPosition, this), 1) }, this))
|
||||
this.$element = $(element)
|
||||
this.checkPosition()
|
||||
}
|
||||
|
||||
Affix.prototype.checkPosition = function () {
|
||||
if (!this.$element.is(':visible')) return
|
||||
|
||||
var scrollHeight = $(document).height()
|
||||
, scrollTop = this.$window.scrollTop()
|
||||
, position = this.$element.offset()
|
||||
, offset = this.options.offset
|
||||
, offsetBottom = offset.bottom
|
||||
, offsetTop = offset.top
|
||||
, reset = 'affix affix-top affix-bottom'
|
||||
, affix
|
||||
|
||||
if (typeof offset != 'object') offsetBottom = offsetTop = offset
|
||||
if (typeof offsetTop == 'function') offsetTop = offset.top()
|
||||
if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
|
||||
|
||||
affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ?
|
||||
false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ?
|
||||
'bottom' : offsetTop != null && scrollTop <= offsetTop ?
|
||||
'top' : false
|
||||
|
||||
if (this.affixed === affix) return
|
||||
|
||||
this.affixed = affix
|
||||
this.unpin = affix == 'bottom' ? position.top - scrollTop : null
|
||||
|
||||
this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : ''))
|
||||
}
|
||||
|
||||
|
||||
/* AFFIX PLUGIN DEFINITION
|
||||
* ======================= */
|
||||
|
||||
var old = $.fn.affix
|
||||
|
||||
$.fn.affix = function (option) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
, data = $this.data('affix')
|
||||
, options = typeof option == 'object' && option
|
||||
if (!data) $this.data('affix', (data = new Affix(this, options)))
|
||||
if (typeof option == 'string') data[option]()
|
||||
})
|
||||
}
|
||||
|
||||
$.fn.affix.Constructor = Affix
|
||||
|
||||
$.fn.affix.defaults = {
|
||||
offset: 0
|
||||
}
|
||||
|
||||
|
||||
/* AFFIX NO CONFLICT
|
||||
* ================= */
|
||||
|
||||
$.fn.affix.noConflict = function () {
|
||||
$.fn.affix = old
|
||||
return this
|
||||
}
|
||||
|
||||
|
||||
/* AFFIX DATA-API
|
||||
* ============== */
|
||||
|
||||
$(window).on('load', function () {
|
||||
$('[data-spy="affix"]').each(function () {
|
||||
var $spy = $(this)
|
||||
, data = $spy.data()
|
||||
|
||||
data.offset = data.offset || {}
|
||||
|
||||
data.offsetBottom && (data.offset.bottom = data.offsetBottom)
|
||||
data.offsetTop && (data.offset.top = data.offsetTop)
|
||||
|
||||
$spy.affix(data)
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
}(window.jQuery);
|
||||
@@ -1,5 +1,5 @@
|
||||
/* ==========================================================
|
||||
* bootstrap-alert.js v2.0.1
|
||||
* bootstrap-alert.js v2.2.2
|
||||
* http://twitter.github.com/bootstrap/javascript.html#alerts
|
||||
* ==========================================================
|
||||
* Copyright 2012 Twitter, Inc.
|
||||
@@ -18,61 +18,59 @@
|
||||
* ========================================================== */
|
||||
|
||||
|
||||
!function( $ ){
|
||||
!function ($) {
|
||||
|
||||
"use strict"; // jshint ;_;
|
||||
|
||||
"use strict"
|
||||
|
||||
/* ALERT CLASS DEFINITION
|
||||
* ====================== */
|
||||
|
||||
var dismiss = '[data-dismiss="alert"]'
|
||||
, Alert = function ( el ) {
|
||||
, Alert = function (el) {
|
||||
$(el).on('click', dismiss, this.close)
|
||||
}
|
||||
|
||||
Alert.prototype = {
|
||||
Alert.prototype.close = function (e) {
|
||||
var $this = $(this)
|
||||
, selector = $this.attr('data-target')
|
||||
, $parent
|
||||
|
||||
constructor: Alert
|
||||
|
||||
, close: function ( e ) {
|
||||
var $this = $(this)
|
||||
, selector = $this.attr('data-target')
|
||||
, $parent
|
||||
|
||||
if (!selector) {
|
||||
selector = $this.attr('href')
|
||||
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
|
||||
}
|
||||
|
||||
$parent = $(selector)
|
||||
$parent.trigger('close')
|
||||
|
||||
e && e.preventDefault()
|
||||
|
||||
$parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
|
||||
|
||||
$parent
|
||||
.trigger('close')
|
||||
.removeClass('in')
|
||||
|
||||
function removeElement() {
|
||||
$parent
|
||||
.trigger('closed')
|
||||
.remove()
|
||||
}
|
||||
|
||||
$.support.transition && $parent.hasClass('fade') ?
|
||||
$parent.on($.support.transition.end, removeElement) :
|
||||
removeElement()
|
||||
if (!selector) {
|
||||
selector = $this.attr('href')
|
||||
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
|
||||
}
|
||||
|
||||
$parent = $(selector)
|
||||
|
||||
e && e.preventDefault()
|
||||
|
||||
$parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
|
||||
|
||||
$parent.trigger(e = $.Event('close'))
|
||||
|
||||
if (e.isDefaultPrevented()) return
|
||||
|
||||
$parent.removeClass('in')
|
||||
|
||||
function removeElement() {
|
||||
$parent
|
||||
.trigger('closed')
|
||||
.remove()
|
||||
}
|
||||
|
||||
$.support.transition && $parent.hasClass('fade') ?
|
||||
$parent.on($.support.transition.end, removeElement) :
|
||||
removeElement()
|
||||
}
|
||||
|
||||
|
||||
/* ALERT PLUGIN DEFINITION
|
||||
* ======================= */
|
||||
|
||||
$.fn.alert = function ( option ) {
|
||||
var old = $.fn.alert
|
||||
|
||||
$.fn.alert = function (option) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
, data = $this.data('alert')
|
||||
@@ -84,11 +82,18 @@
|
||||
$.fn.alert.Constructor = Alert
|
||||
|
||||
|
||||
/* ALERT NO CONFLICT
|
||||
* ================= */
|
||||
|
||||
$.fn.alert.noConflict = function () {
|
||||
$.fn.alert = old
|
||||
return this
|
||||
}
|
||||
|
||||
|
||||
/* ALERT DATA-API
|
||||
* ============== */
|
||||
|
||||
$(function () {
|
||||
$('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
|
||||
})
|
||||
$(document).on('click.alert.data-api', dismiss, Alert.prototype.close)
|
||||
|
||||
}( window.jQuery );
|
||||
}(window.jQuery);
|
||||
@@ -1,5 +1,5 @@
|
||||
/* ============================================================
|
||||
* bootstrap-button.js v2.0.1
|
||||
* bootstrap-button.js v2.2.2
|
||||
* http://twitter.github.com/bootstrap/javascript.html#buttons
|
||||
* ============================================================
|
||||
* Copyright 2012 Twitter, Inc.
|
||||
@@ -17,58 +17,56 @@
|
||||
* limitations under the License.
|
||||
* ============================================================ */
|
||||
|
||||
!function( $ ){
|
||||
|
||||
"use strict"
|
||||
!function ($) {
|
||||
|
||||
"use strict"; // jshint ;_;
|
||||
|
||||
|
||||
/* BUTTON PUBLIC CLASS DEFINITION
|
||||
* ============================== */
|
||||
|
||||
var Button = function ( element, options ) {
|
||||
var Button = function (element, options) {
|
||||
this.$element = $(element)
|
||||
this.options = $.extend({}, $.fn.button.defaults, options)
|
||||
}
|
||||
|
||||
Button.prototype = {
|
||||
Button.prototype.setState = function (state) {
|
||||
var d = 'disabled'
|
||||
, $el = this.$element
|
||||
, data = $el.data()
|
||||
, val = $el.is('input') ? 'val' : 'html'
|
||||
|
||||
constructor: Button
|
||||
state = state + 'Text'
|
||||
data.resetText || $el.data('resetText', $el[val]())
|
||||
|
||||
, setState: function ( state ) {
|
||||
var d = 'disabled'
|
||||
, $el = this.$element
|
||||
, data = $el.data()
|
||||
, val = $el.is('input') ? 'val' : 'html'
|
||||
$el[val](data[state] || this.options[state])
|
||||
|
||||
state = state + 'Text'
|
||||
data.resetText || $el.data('resetText', $el[val]())
|
||||
// push to event loop to allow forms to submit
|
||||
setTimeout(function () {
|
||||
state == 'loadingText' ?
|
||||
$el.addClass(d).attr(d, d) :
|
||||
$el.removeClass(d).removeAttr(d)
|
||||
}, 0)
|
||||
}
|
||||
|
||||
$el[val](data[state] || this.options[state])
|
||||
Button.prototype.toggle = function () {
|
||||
var $parent = this.$element.closest('[data-toggle="buttons-radio"]')
|
||||
|
||||
// push to event loop to allow forms to submit
|
||||
setTimeout(function () {
|
||||
state == 'loadingText' ?
|
||||
$el.addClass(d).attr(d, d) :
|
||||
$el.removeClass(d).removeAttr(d)
|
||||
}, 0)
|
||||
}
|
||||
|
||||
, toggle: function () {
|
||||
var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
|
||||
|
||||
$parent && $parent
|
||||
.find('.active')
|
||||
.removeClass('active')
|
||||
|
||||
this.$element.toggleClass('active')
|
||||
}
|
||||
$parent && $parent
|
||||
.find('.active')
|
||||
.removeClass('active')
|
||||
|
||||
this.$element.toggleClass('active')
|
||||
}
|
||||
|
||||
|
||||
/* BUTTON PLUGIN DEFINITION
|
||||
* ======================== */
|
||||
|
||||
$.fn.button = function ( option ) {
|
||||
var old = $.fn.button
|
||||
|
||||
$.fn.button = function (option) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
, data = $this.data('button')
|
||||
@@ -86,13 +84,22 @@
|
||||
$.fn.button.Constructor = Button
|
||||
|
||||
|
||||
/* BUTTON NO CONFLICT
|
||||
* ================== */
|
||||
|
||||
$.fn.button.noConflict = function () {
|
||||
$.fn.button = old
|
||||
return this
|
||||
}
|
||||
|
||||
|
||||
/* BUTTON DATA-API
|
||||
* =============== */
|
||||
|
||||
$(function () {
|
||||
$('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
|
||||
$(e.currentTarget).button('toggle')
|
||||
})
|
||||
$(document).on('click.button.data-api', '[data-toggle^=button]', function (e) {
|
||||
var $btn = $(e.target)
|
||||
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
|
||||
$btn.button('toggle')
|
||||
})
|
||||
|
||||
}( window.jQuery );
|
||||
}(window.jQuery);
|
||||
@@ -1,5 +1,5 @@
|
||||
/* ==========================================================
|
||||
* bootstrap-carousel.js v2.0.1
|
||||
* bootstrap-carousel.js v2.2.2
|
||||
* http://twitter.github.com/bootstrap/javascript.html#carousel
|
||||
* ==========================================================
|
||||
* Copyright 2012 Twitter, Inc.
|
||||
@@ -18,28 +18,34 @@
|
||||
* ========================================================== */
|
||||
|
||||
|
||||
!function( $ ){
|
||||
!function ($) {
|
||||
|
||||
"use strict"; // jshint ;_;
|
||||
|
||||
"use strict"
|
||||
|
||||
/* CAROUSEL CLASS DEFINITION
|
||||
* ========================= */
|
||||
|
||||
var Carousel = function (element, options) {
|
||||
this.$element = $(element)
|
||||
this.options = $.extend({}, $.fn.carousel.defaults, options)
|
||||
this.options.slide && this.slide(this.options.slide)
|
||||
this.options = options
|
||||
this.options.pause == 'hover' && this.$element
|
||||
.on('mouseenter', $.proxy(this.pause, this))
|
||||
.on('mouseleave', $.proxy(this.cycle, this))
|
||||
}
|
||||
|
||||
Carousel.prototype = {
|
||||
|
||||
cycle: function () {
|
||||
this.interval = setInterval($.proxy(this.next, this), this.options.interval)
|
||||
cycle: function (e) {
|
||||
if (!e) this.paused = false
|
||||
this.options.interval
|
||||
&& !this.paused
|
||||
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
|
||||
return this
|
||||
}
|
||||
|
||||
, to: function (pos) {
|
||||
var $active = this.$element.find('.active')
|
||||
var $active = this.$element.find('.item.active')
|
||||
, children = $active.parent().children()
|
||||
, activePos = children.index($active)
|
||||
, that = this
|
||||
@@ -59,7 +65,12 @@
|
||||
return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
|
||||
}
|
||||
|
||||
, pause: function () {
|
||||
, pause: function (e) {
|
||||
if (!e) this.paused = true
|
||||
if (this.$element.find('.next, .prev').length && $.support.transition.end) {
|
||||
this.$element.trigger($.support.transition.end)
|
||||
this.cycle()
|
||||
}
|
||||
clearInterval(this.interval)
|
||||
this.interval = null
|
||||
return this
|
||||
@@ -76,14 +87,13 @@
|
||||
}
|
||||
|
||||
, slide: function (type, next) {
|
||||
var $active = this.$element.find('.active')
|
||||
var $active = this.$element.find('.item.active')
|
||||
, $next = next || $active[type]()
|
||||
, isCycling = this.interval
|
||||
, direction = type == 'next' ? 'left' : 'right'
|
||||
, fallback = type == 'next' ? 'first' : 'last'
|
||||
, that = this
|
||||
|
||||
if (!$next.length) return
|
||||
, e
|
||||
|
||||
this.sliding = true
|
||||
|
||||
@@ -91,24 +101,32 @@
|
||||
|
||||
$next = $next.length ? $next : this.$element.find('.item')[fallback]()
|
||||
|
||||
if (!$.support.transition && this.$element.hasClass('slide')) {
|
||||
this.$element.trigger('slide')
|
||||
$active.removeClass('active')
|
||||
$next.addClass('active')
|
||||
this.sliding = false
|
||||
this.$element.trigger('slid')
|
||||
} else {
|
||||
e = $.Event('slide', {
|
||||
relatedTarget: $next[0]
|
||||
})
|
||||
|
||||
if ($next.hasClass('active')) return
|
||||
|
||||
if ($.support.transition && this.$element.hasClass('slide')) {
|
||||
this.$element.trigger(e)
|
||||
if (e.isDefaultPrevented()) return
|
||||
$next.addClass(type)
|
||||
$next[0].offsetWidth // force reflow
|
||||
$active.addClass(direction)
|
||||
$next.addClass(direction)
|
||||
this.$element.trigger('slide')
|
||||
this.$element.one($.support.transition.end, function () {
|
||||
$next.removeClass([type, direction].join(' ')).addClass('active')
|
||||
$active.removeClass(['active', direction].join(' '))
|
||||
that.sliding = false
|
||||
setTimeout(function () { that.$element.trigger('slid') }, 0)
|
||||
})
|
||||
} else {
|
||||
this.$element.trigger(e)
|
||||
if (e.isDefaultPrevented()) return
|
||||
$active.removeClass('active')
|
||||
$next.addClass('active')
|
||||
this.sliding = false
|
||||
this.$element.trigger('slid')
|
||||
}
|
||||
|
||||
isCycling && this.cycle()
|
||||
@@ -122,36 +140,46 @@
|
||||
/* CAROUSEL PLUGIN DEFINITION
|
||||
* ========================== */
|
||||
|
||||
$.fn.carousel = function ( option ) {
|
||||
var old = $.fn.carousel
|
||||
|
||||
$.fn.carousel = function (option) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
, data = $this.data('carousel')
|
||||
, options = typeof option == 'object' && option
|
||||
, options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
|
||||
, action = typeof option == 'string' ? option : options.slide
|
||||
if (!data) $this.data('carousel', (data = new Carousel(this, options)))
|
||||
if (typeof option == 'number') data.to(option)
|
||||
else if (typeof option == 'string' || (option = options.slide)) data[option]()
|
||||
else data.cycle()
|
||||
else if (action) data[action]()
|
||||
else if (options.interval) data.cycle()
|
||||
})
|
||||
}
|
||||
|
||||
$.fn.carousel.defaults = {
|
||||
interval: 5000
|
||||
, pause: 'hover'
|
||||
}
|
||||
|
||||
$.fn.carousel.Constructor = Carousel
|
||||
|
||||
|
||||
/* CAROUSEL NO CONFLICT
|
||||
* ==================== */
|
||||
|
||||
$.fn.carousel.noConflict = function () {
|
||||
$.fn.carousel = old
|
||||
return this
|
||||
}
|
||||
|
||||
/* CAROUSEL DATA-API
|
||||
* ================= */
|
||||
|
||||
$(function () {
|
||||
$('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
|
||||
var $this = $(this), href
|
||||
, $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
|
||||
, options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
|
||||
$target.carousel(options)
|
||||
e.preventDefault()
|
||||
})
|
||||
$(document).on('click.carousel.data-api', '[data-slide]', function (e) {
|
||||
var $this = $(this), href
|
||||
, $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
|
||||
, options = $.extend({}, $target.data(), $this.data())
|
||||
$target.carousel(options)
|
||||
e.preventDefault()
|
||||
})
|
||||
|
||||
}( window.jQuery );
|
||||
}(window.jQuery);
|
||||
@@ -1,5 +1,5 @@
|
||||
/* =============================================================
|
||||
* bootstrap-collapse.js v2.0.1
|
||||
* bootstrap-collapse.js v2.2.2
|
||||
* http://twitter.github.com/bootstrap/javascript.html#collapse
|
||||
* =============================================================
|
||||
* Copyright 2012 Twitter, Inc.
|
||||
@@ -17,16 +17,21 @@
|
||||
* limitations under the License.
|
||||
* ============================================================ */
|
||||
|
||||
!function( $ ){
|
||||
|
||||
"use strict"
|
||||
!function ($) {
|
||||
|
||||
var Collapse = function ( element, options ) {
|
||||
this.$element = $(element)
|
||||
"use strict"; // jshint ;_;
|
||||
|
||||
|
||||
/* COLLAPSE PUBLIC CLASS DEFINITION
|
||||
* ================================ */
|
||||
|
||||
var Collapse = function (element, options) {
|
||||
this.$element = $(element)
|
||||
this.options = $.extend({}, $.fn.collapse.defaults, options)
|
||||
|
||||
if (this.options["parent"]) {
|
||||
this.$parent = $(this.options["parent"])
|
||||
if (this.options.parent) {
|
||||
this.$parent = $(this.options.parent)
|
||||
}
|
||||
|
||||
this.options.toggle && this.toggle()
|
||||
@@ -42,31 +47,39 @@
|
||||
}
|
||||
|
||||
, show: function () {
|
||||
var dimension = this.dimension()
|
||||
, scroll = $.camelCase(['scroll', dimension].join('-'))
|
||||
, actives = this.$parent && this.$parent.find('.in')
|
||||
var dimension
|
||||
, scroll
|
||||
, actives
|
||||
, hasData
|
||||
|
||||
if (this.transitioning) return
|
||||
|
||||
dimension = this.dimension()
|
||||
scroll = $.camelCase(['scroll', dimension].join('-'))
|
||||
actives = this.$parent && this.$parent.find('> .accordion-group > .in')
|
||||
|
||||
if (actives && actives.length) {
|
||||
hasData = actives.data('collapse')
|
||||
if (hasData && hasData.transitioning) return
|
||||
actives.collapse('hide')
|
||||
hasData || actives.data('collapse', null)
|
||||
}
|
||||
|
||||
this.$element[dimension](0)
|
||||
this.transition('addClass', 'show', 'shown')
|
||||
this.$element[dimension](this.$element[0][scroll])
|
||||
|
||||
this.transition('addClass', $.Event('show'), 'shown')
|
||||
$.support.transition && this.$element[dimension](this.$element[0][scroll])
|
||||
}
|
||||
|
||||
, hide: function () {
|
||||
var dimension = this.dimension()
|
||||
var dimension
|
||||
if (this.transitioning) return
|
||||
dimension = this.dimension()
|
||||
this.reset(this.$element[dimension]())
|
||||
this.transition('removeClass', 'hide', 'hidden')
|
||||
this.transition('removeClass', $.Event('hide'), 'hidden')
|
||||
this.$element[dimension](0)
|
||||
}
|
||||
|
||||
, reset: function ( size ) {
|
||||
, reset: function (size) {
|
||||
var dimension = this.dimension()
|
||||
|
||||
this.$element
|
||||
@@ -74,35 +87,45 @@
|
||||
[dimension](size || 'auto')
|
||||
[0].offsetWidth
|
||||
|
||||
this.$element.addClass('collapse')
|
||||
this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
|
||||
|
||||
return this
|
||||
}
|
||||
|
||||
, transition: function ( method, startEvent, completeEvent ) {
|
||||
, transition: function (method, startEvent, completeEvent) {
|
||||
var that = this
|
||||
, complete = function () {
|
||||
if (startEvent == 'show') that.reset()
|
||||
if (startEvent.type == 'show') that.reset()
|
||||
that.transitioning = 0
|
||||
that.$element.trigger(completeEvent)
|
||||
}
|
||||
|
||||
this.$element
|
||||
.trigger(startEvent)
|
||||
[method]('in')
|
||||
this.$element.trigger(startEvent)
|
||||
|
||||
if (startEvent.isDefaultPrevented()) return
|
||||
|
||||
this.transitioning = 1
|
||||
|
||||
this.$element[method]('in')
|
||||
|
||||
$.support.transition && this.$element.hasClass('collapse') ?
|
||||
this.$element.one($.support.transition.end, complete) :
|
||||
complete()
|
||||
}
|
||||
}
|
||||
|
||||
, toggle: function () {
|
||||
this[this.$element.hasClass('in') ? 'hide' : 'show']()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* COLLAPSIBLE PLUGIN DEFINITION
|
||||
* ============================== */
|
||||
|
||||
$.fn.collapse = function ( option ) {
|
||||
/* COLLAPSE PLUGIN DEFINITION
|
||||
* ========================== */
|
||||
|
||||
var old = $.fn.collapse
|
||||
|
||||
$.fn.collapse = function (option) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
, data = $this.data('collapse')
|
||||
@@ -119,18 +142,26 @@
|
||||
$.fn.collapse.Constructor = Collapse
|
||||
|
||||
|
||||
/* COLLAPSIBLE DATA-API
|
||||
/* COLLAPSE NO CONFLICT
|
||||
* ==================== */
|
||||
|
||||
$(function () {
|
||||
$('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) {
|
||||
var $this = $(this), href
|
||||
, target = $this.attr('data-target')
|
||||
|| e.preventDefault()
|
||||
|| (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
|
||||
, option = $(target).data('collapse') ? 'toggle' : $this.data()
|
||||
$(target).collapse(option)
|
||||
})
|
||||
$.fn.collapse.noConflict = function () {
|
||||
$.fn.collapse = old
|
||||
return this
|
||||
}
|
||||
|
||||
|
||||
/* COLLAPSE DATA-API
|
||||
* ================= */
|
||||
|
||||
$(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
|
||||
var $this = $(this), href
|
||||
, target = $this.attr('data-target')
|
||||
|| e.preventDefault()
|
||||
|| (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
|
||||
, option = $(target).data('collapse') ? 'toggle' : $this.data()
|
||||
$this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
|
||||
$(target).collapse(option)
|
||||
})
|
||||
|
||||
}( window.jQuery );
|
||||
}(window.jQuery);
|
||||
@@ -1,5 +1,5 @@
|
||||
/* ============================================================
|
||||
* bootstrap-dropdown.js v2.0.1
|
||||
* bootstrap-dropdown.js v2.2.2
|
||||
* http://twitter.github.com/bootstrap/javascript.html#dropdowns
|
||||
* ============================================================
|
||||
* Copyright 2012 Twitter, Inc.
|
||||
@@ -18,15 +18,16 @@
|
||||
* ============================================================ */
|
||||
|
||||
|
||||
!function( $ ){
|
||||
!function ($) {
|
||||
|
||||
"use strict"; // jshint ;_;
|
||||
|
||||
"use strict"
|
||||
|
||||
/* DROPDOWN CLASS DEFINITION
|
||||
* ========================= */
|
||||
|
||||
var toggle = '[data-toggle="dropdown"]'
|
||||
, Dropdown = function ( element ) {
|
||||
var toggle = '[data-toggle=dropdown]'
|
||||
, Dropdown = function (element) {
|
||||
var $el = $(element).on('click.dropdown.data-api', this.toggle)
|
||||
$('html').on('click.dropdown.data-api', function () {
|
||||
$el.parent().removeClass('open')
|
||||
@@ -37,39 +38,96 @@
|
||||
|
||||
constructor: Dropdown
|
||||
|
||||
, toggle: function ( e ) {
|
||||
, toggle: function (e) {
|
||||
var $this = $(this)
|
||||
, selector = $this.attr('data-target')
|
||||
, $parent
|
||||
, isActive
|
||||
|
||||
if (!selector) {
|
||||
selector = $this.attr('href')
|
||||
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
|
||||
}
|
||||
if ($this.is('.disabled, :disabled')) return
|
||||
|
||||
$parent = $(selector)
|
||||
$parent.length || ($parent = $this.parent())
|
||||
$parent = getParent($this)
|
||||
|
||||
isActive = $parent.hasClass('open')
|
||||
|
||||
clearMenus()
|
||||
!isActive && $parent.toggleClass('open')
|
||||
|
||||
if (!isActive) {
|
||||
$parent.toggleClass('open')
|
||||
}
|
||||
|
||||
$this.focus()
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
, keydown: function (e) {
|
||||
var $this
|
||||
, $items
|
||||
, $active
|
||||
, $parent
|
||||
, isActive
|
||||
, index
|
||||
|
||||
if (!/(38|40|27)/.test(e.keyCode)) return
|
||||
|
||||
$this = $(this)
|
||||
|
||||
e.preventDefault()
|
||||
e.stopPropagation()
|
||||
|
||||
if ($this.is('.disabled, :disabled')) return
|
||||
|
||||
$parent = getParent($this)
|
||||
|
||||
isActive = $parent.hasClass('open')
|
||||
|
||||
if (!isActive || (isActive && e.keyCode == 27)) return $this.click()
|
||||
|
||||
$items = $('[role=menu] li:not(.divider):visible a', $parent)
|
||||
|
||||
if (!$items.length) return
|
||||
|
||||
index = $items.index($items.filter(':focus'))
|
||||
|
||||
if (e.keyCode == 38 && index > 0) index-- // up
|
||||
if (e.keyCode == 40 && index < $items.length - 1) index++ // down
|
||||
if (!~index) index = 0
|
||||
|
||||
$items
|
||||
.eq(index)
|
||||
.focus()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function clearMenus() {
|
||||
$(toggle).parent().removeClass('open')
|
||||
$(toggle).each(function () {
|
||||
getParent($(this)).removeClass('open')
|
||||
})
|
||||
}
|
||||
|
||||
function getParent($this) {
|
||||
var selector = $this.attr('data-target')
|
||||
, $parent
|
||||
|
||||
if (!selector) {
|
||||
selector = $this.attr('href')
|
||||
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
|
||||
}
|
||||
|
||||
$parent = $(selector)
|
||||
$parent.length || ($parent = $this.parent())
|
||||
|
||||
return $parent
|
||||
}
|
||||
|
||||
|
||||
/* DROPDOWN PLUGIN DEFINITION
|
||||
* ========================== */
|
||||
|
||||
$.fn.dropdown = function ( option ) {
|
||||
var old = $.fn.dropdown
|
||||
|
||||
$.fn.dropdown = function (option) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
, data = $this.data('dropdown')
|
||||
@@ -81,12 +139,23 @@
|
||||
$.fn.dropdown.Constructor = Dropdown
|
||||
|
||||
|
||||
/* DROPDOWN NO CONFLICT
|
||||
* ==================== */
|
||||
|
||||
$.fn.dropdown.noConflict = function () {
|
||||
$.fn.dropdown = old
|
||||
return this
|
||||
}
|
||||
|
||||
|
||||
/* APPLY TO STANDARD DROPDOWN ELEMENTS
|
||||
* =================================== */
|
||||
|
||||
$(function () {
|
||||
$('html').on('click.dropdown.data-api', clearMenus)
|
||||
$('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
|
||||
})
|
||||
$(document)
|
||||
.on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
|
||||
.on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
|
||||
.on('touchstart.dropdown.data-api', '.dropdown-menu', function (e) { e.stopPropagation() })
|
||||
.on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
|
||||
.on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
|
||||
|
||||
}( window.jQuery );
|
||||
}(window.jQuery);
|
||||
@@ -1,5 +1,5 @@
|
||||
/* =========================================================
|
||||
* bootstrap-modal.js v2.0.1
|
||||
* bootstrap-modal.js v2.2.2
|
||||
* http://twitter.github.com/bootstrap/javascript.html#modals
|
||||
* =========================================================
|
||||
* Copyright 2012 Twitter, Inc.
|
||||
@@ -18,17 +18,19 @@
|
||||
* ========================================================= */
|
||||
|
||||
|
||||
!function( $ ){
|
||||
!function ($) {
|
||||
|
||||
"use strict"; // jshint ;_;
|
||||
|
||||
"use strict"
|
||||
|
||||
/* MODAL CLASS DEFINITION
|
||||
* ====================== */
|
||||
|
||||
var Modal = function ( content, options ) {
|
||||
var Modal = function (element, options) {
|
||||
this.options = options
|
||||
this.$element = $(content)
|
||||
this.$element = $(element)
|
||||
.delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
|
||||
this.options.remote && this.$element.find('.modal-body').load(this.options.remote)
|
||||
}
|
||||
|
||||
Modal.prototype = {
|
||||
@@ -41,19 +43,22 @@
|
||||
|
||||
, show: function () {
|
||||
var that = this
|
||||
, e = $.Event('show')
|
||||
|
||||
if (this.isShown) return
|
||||
this.$element.trigger(e)
|
||||
|
||||
$('body').addClass('modal-open')
|
||||
if (this.isShown || e.isDefaultPrevented()) return
|
||||
|
||||
this.isShown = true
|
||||
this.$element.trigger('show')
|
||||
|
||||
escape.call(this)
|
||||
backdrop.call(this, function () {
|
||||
this.escape()
|
||||
|
||||
this.backdrop(function () {
|
||||
var transition = $.support.transition && that.$element.hasClass('fade')
|
||||
|
||||
!that.$element.parent().length && that.$element.appendTo(document.body) //don't move modals dom position
|
||||
if (!that.$element.parent().length) {
|
||||
that.$element.appendTo(document.body) //don't move modals dom position
|
||||
}
|
||||
|
||||
that.$element
|
||||
.show()
|
||||
@@ -62,118 +67,135 @@
|
||||
that.$element[0].offsetWidth // force reflow
|
||||
}
|
||||
|
||||
that.$element.addClass('in')
|
||||
that.$element
|
||||
.addClass('in')
|
||||
.attr('aria-hidden', false)
|
||||
|
||||
that.enforceFocus()
|
||||
|
||||
transition ?
|
||||
that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
|
||||
that.$element.trigger('shown')
|
||||
that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) :
|
||||
that.$element.focus().trigger('shown')
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
, hide: function ( e ) {
|
||||
, hide: function (e) {
|
||||
e && e.preventDefault()
|
||||
|
||||
if (!this.isShown) return
|
||||
|
||||
var that = this
|
||||
|
||||
e = $.Event('hide')
|
||||
|
||||
this.$element.trigger(e)
|
||||
|
||||
if (!this.isShown || e.isDefaultPrevented()) return
|
||||
|
||||
this.isShown = false
|
||||
|
||||
$('body').removeClass('modal-open')
|
||||
this.escape()
|
||||
|
||||
escape.call(this)
|
||||
$(document).off('focusin.modal')
|
||||
|
||||
this.$element
|
||||
.trigger('hide')
|
||||
.removeClass('in')
|
||||
.attr('aria-hidden', true)
|
||||
|
||||
$.support.transition && this.$element.hasClass('fade') ?
|
||||
hideWithTransition.call(this) :
|
||||
hideModal.call(this)
|
||||
this.hideWithTransition() :
|
||||
this.hideModal()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* MODAL PRIVATE METHODS
|
||||
* ===================== */
|
||||
|
||||
function hideWithTransition() {
|
||||
var that = this
|
||||
, timeout = setTimeout(function () {
|
||||
that.$element.off($.support.transition.end)
|
||||
hideModal.call(that)
|
||||
}, 500)
|
||||
|
||||
this.$element.one($.support.transition.end, function () {
|
||||
clearTimeout(timeout)
|
||||
hideModal.call(that)
|
||||
})
|
||||
}
|
||||
|
||||
function hideModal( that ) {
|
||||
this.$element
|
||||
.hide()
|
||||
.trigger('hidden')
|
||||
|
||||
backdrop.call(this)
|
||||
}
|
||||
|
||||
function backdrop( callback ) {
|
||||
var that = this
|
||||
, animate = this.$element.hasClass('fade') ? 'fade' : ''
|
||||
|
||||
if (this.isShown && this.options.backdrop) {
|
||||
var doAnimate = $.support.transition && animate
|
||||
|
||||
this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
|
||||
.appendTo(document.body)
|
||||
|
||||
if (this.options.backdrop != 'static') {
|
||||
this.$backdrop.click($.proxy(this.hide, this))
|
||||
, enforceFocus: function () {
|
||||
var that = this
|
||||
$(document).on('focusin.modal', function (e) {
|
||||
if (that.$element[0] !== e.target && !that.$element.has(e.target).length) {
|
||||
that.$element.focus()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
|
||||
, escape: function () {
|
||||
var that = this
|
||||
if (this.isShown && this.options.keyboard) {
|
||||
this.$element.on('keyup.dismiss.modal', function ( e ) {
|
||||
e.which == 27 && that.hide()
|
||||
})
|
||||
} else if (!this.isShown) {
|
||||
this.$element.off('keyup.dismiss.modal')
|
||||
}
|
||||
}
|
||||
|
||||
this.$backdrop.addClass('in')
|
||||
, hideWithTransition: function () {
|
||||
var that = this
|
||||
, timeout = setTimeout(function () {
|
||||
that.$element.off($.support.transition.end)
|
||||
that.hideModal()
|
||||
}, 500)
|
||||
|
||||
doAnimate ?
|
||||
this.$backdrop.one($.support.transition.end, callback) :
|
||||
callback()
|
||||
this.$element.one($.support.transition.end, function () {
|
||||
clearTimeout(timeout)
|
||||
that.hideModal()
|
||||
})
|
||||
}
|
||||
|
||||
} else if (!this.isShown && this.$backdrop) {
|
||||
this.$backdrop.removeClass('in')
|
||||
, hideModal: function (that) {
|
||||
this.$element
|
||||
.hide()
|
||||
.trigger('hidden')
|
||||
|
||||
$.support.transition && this.$element.hasClass('fade')?
|
||||
this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) :
|
||||
removeBackdrop.call(this)
|
||||
this.backdrop()
|
||||
}
|
||||
|
||||
} else if (callback) {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
, removeBackdrop: function () {
|
||||
this.$backdrop.remove()
|
||||
this.$backdrop = null
|
||||
}
|
||||
|
||||
function removeBackdrop() {
|
||||
this.$backdrop.remove()
|
||||
this.$backdrop = null
|
||||
}
|
||||
, backdrop: function (callback) {
|
||||
var that = this
|
||||
, animate = this.$element.hasClass('fade') ? 'fade' : ''
|
||||
|
||||
function escape() {
|
||||
var that = this
|
||||
if (this.isShown && this.options.keyboard) {
|
||||
$(document).on('keyup.dismiss.modal', function ( e ) {
|
||||
e.which == 27 && that.hide()
|
||||
})
|
||||
} else if (!this.isShown) {
|
||||
$(document).off('keyup.dismiss.modal')
|
||||
}
|
||||
if (this.isShown && this.options.backdrop) {
|
||||
var doAnimate = $.support.transition && animate
|
||||
|
||||
this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
|
||||
.appendTo(document.body)
|
||||
|
||||
this.$backdrop.click(
|
||||
this.options.backdrop == 'static' ?
|
||||
$.proxy(this.$element[0].focus, this.$element[0])
|
||||
: $.proxy(this.hide, this)
|
||||
)
|
||||
|
||||
if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
|
||||
|
||||
this.$backdrop.addClass('in')
|
||||
|
||||
doAnimate ?
|
||||
this.$backdrop.one($.support.transition.end, callback) :
|
||||
callback()
|
||||
|
||||
} else if (!this.isShown && this.$backdrop) {
|
||||
this.$backdrop.removeClass('in')
|
||||
|
||||
$.support.transition && this.$element.hasClass('fade')?
|
||||
this.$backdrop.one($.support.transition.end, $.proxy(this.removeBackdrop, this)) :
|
||||
this.removeBackdrop()
|
||||
|
||||
} else if (callback) {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* MODAL PLUGIN DEFINITION
|
||||
* ======================= */
|
||||
|
||||
$.fn.modal = function ( option ) {
|
||||
var old = $.fn.modal
|
||||
|
||||
$.fn.modal = function (option) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
, data = $this.data('modal')
|
||||
@@ -193,18 +215,31 @@
|
||||
$.fn.modal.Constructor = Modal
|
||||
|
||||
|
||||
/* MODAL NO CONFLICT
|
||||
* ================= */
|
||||
|
||||
$.fn.modal.noConflict = function () {
|
||||
$.fn.modal = old
|
||||
return this
|
||||
}
|
||||
|
||||
|
||||
/* MODAL DATA-API
|
||||
* ============== */
|
||||
|
||||
$(function () {
|
||||
$('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
|
||||
var $this = $(this), href
|
||||
, $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
|
||||
, option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data())
|
||||
$(document).on('click.modal.data-api', '[data-toggle="modal"]', function (e) {
|
||||
var $this = $(this)
|
||||
, href = $this.attr('href')
|
||||
, $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
|
||||
, option = $target.data('modal') ? 'toggle' : $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data())
|
||||
|
||||
e.preventDefault()
|
||||
$target.modal(option)
|
||||
})
|
||||
e.preventDefault()
|
||||
|
||||
$target
|
||||
.modal(option)
|
||||
.one('hide', function () {
|
||||
$this.focus()
|
||||
})
|
||||
})
|
||||
|
||||
}( window.jQuery );
|
||||
}(window.jQuery);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* ===========================================================
|
||||
* bootstrap-popover.js v2.0.1
|
||||
* bootstrap-popover.js v2.2.2
|
||||
* http://twitter.github.com/bootstrap/javascript.html#popovers
|
||||
* ===========================================================
|
||||
* Copyright 2012 Twitter, Inc.
|
||||
@@ -18,14 +18,19 @@
|
||||
* =========================================================== */
|
||||
|
||||
|
||||
!function( $ ) {
|
||||
!function ($) {
|
||||
|
||||
"use strict"
|
||||
"use strict"; // jshint ;_;
|
||||
|
||||
var Popover = function ( element, options ) {
|
||||
|
||||
/* POPOVER PUBLIC CLASS DEFINITION
|
||||
* =============================== */
|
||||
|
||||
var Popover = function (element, options) {
|
||||
this.init('popover', element, options)
|
||||
}
|
||||
|
||||
|
||||
/* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
|
||||
========================================== */
|
||||
|
||||
@@ -38,8 +43,8 @@
|
||||
, title = this.getTitle()
|
||||
, content = this.getContent()
|
||||
|
||||
$tip.find('.popover-title')[ $.type(title) == 'object' ? 'append' : 'html' ](title)
|
||||
$tip.find('.popover-content > *')[ $.type(content) == 'object' ? 'append' : 'html' ](content)
|
||||
$tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
|
||||
$tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
|
||||
|
||||
$tip.removeClass('fade top bottom left right in')
|
||||
}
|
||||
@@ -56,25 +61,29 @@
|
||||
content = $e.attr('data-content')
|
||||
|| (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
|
||||
|
||||
content = content.toString().replace(/(^\s*|\s*$)/, "")
|
||||
|
||||
return content
|
||||
}
|
||||
|
||||
, tip: function() {
|
||||
, tip: function () {
|
||||
if (!this.$tip) {
|
||||
this.$tip = $(this.options.template)
|
||||
}
|
||||
return this.$tip
|
||||
}
|
||||
|
||||
, destroy: function () {
|
||||
this.hide().$element.off('.' + this.type).removeData(this.type)
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
|
||||
/* POPOVER PLUGIN DEFINITION
|
||||
* ======================= */
|
||||
|
||||
$.fn.popover = function ( option ) {
|
||||
var old = $.fn.popover
|
||||
|
||||
$.fn.popover = function (option) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
, data = $this.data('popover')
|
||||
@@ -88,8 +97,18 @@
|
||||
|
||||
$.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
|
||||
placement: 'right'
|
||||
, trigger: 'click'
|
||||
, content: ''
|
||||
, template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
|
||||
, template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"></div></div></div>'
|
||||
})
|
||||
|
||||
}( window.jQuery );
|
||||
|
||||
/* POPOVER NO CONFLICT
|
||||
* =================== */
|
||||
|
||||
$.fn.popover.noConflict = function () {
|
||||
$.fn.popover = old
|
||||
return this
|
||||
}
|
||||
|
||||
}(window.jQuery);
|
||||
@@ -1,5 +1,5 @@
|
||||
/* =============================================================
|
||||
* bootstrap-scrollspy.js v2.0.1
|
||||
* bootstrap-scrollspy.js v2.2.2
|
||||
* http://twitter.github.com/bootstrap/javascript.html#scrollspy
|
||||
* =============================================================
|
||||
* Copyright 2012 Twitter, Inc.
|
||||
@@ -17,23 +17,25 @@
|
||||
* limitations under the License.
|
||||
* ============================================================== */
|
||||
|
||||
!function ( $ ) {
|
||||
|
||||
"use strict"
|
||||
!function ($) {
|
||||
|
||||
/* SCROLLSPY CLASS DEFINITION
|
||||
* ========================== */
|
||||
"use strict"; // jshint ;_;
|
||||
|
||||
function ScrollSpy( element, options) {
|
||||
|
||||
/* SCROLLSPY CLASS DEFINITION
|
||||
* ========================== */
|
||||
|
||||
function ScrollSpy(element, options) {
|
||||
var process = $.proxy(this.process, this)
|
||||
, $element = $(element).is('body') ? $(window) : $(element)
|
||||
, href
|
||||
this.options = $.extend({}, $.fn.scrollspy.defaults, options)
|
||||
this.$scrollElement = $element.on('scroll.scroll.data-api', process)
|
||||
this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process)
|
||||
this.selector = (this.options.target
|
||||
|| ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
|
||||
|| '') + ' .nav li > a'
|
||||
this.$body = $('body').on('click.scroll.data-api', this.selector, process)
|
||||
this.$body = $('body')
|
||||
this.refresh()
|
||||
this.process()
|
||||
}
|
||||
@@ -43,25 +45,43 @@
|
||||
constructor: ScrollSpy
|
||||
|
||||
, refresh: function () {
|
||||
this.targets = this.$body
|
||||
var self = this
|
||||
, $targets
|
||||
|
||||
this.offsets = $([])
|
||||
this.targets = $([])
|
||||
|
||||
$targets = this.$body
|
||||
.find(this.selector)
|
||||
.map(function () {
|
||||
var href = $(this).attr('href')
|
||||
return /^#\w/.test(href) && $(href).length ? href : null
|
||||
var $el = $(this)
|
||||
, href = $el.data('target') || $el.attr('href')
|
||||
, $href = /^#\w/.test(href) && $(href)
|
||||
return ( $href
|
||||
&& $href.length
|
||||
&& [[ $href.position().top + self.$scrollElement.scrollTop(), href ]] ) || null
|
||||
})
|
||||
.sort(function (a, b) { return a[0] - b[0] })
|
||||
.each(function () {
|
||||
self.offsets.push(this[0])
|
||||
self.targets.push(this[1])
|
||||
})
|
||||
|
||||
this.offsets = $.map(this.targets, function (id) {
|
||||
return $(id).position().top
|
||||
})
|
||||
}
|
||||
|
||||
, process: function () {
|
||||
var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
|
||||
, scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
|
||||
, maxScroll = scrollHeight - this.$scrollElement.height()
|
||||
, offsets = this.offsets
|
||||
, targets = this.targets
|
||||
, activeTarget = this.activeTarget
|
||||
, i
|
||||
|
||||
if (scrollTop >= maxScroll) {
|
||||
return activeTarget != (i = targets.last()[0])
|
||||
&& this.activate ( i )
|
||||
}
|
||||
|
||||
for (i = offsets.length; i--;) {
|
||||
activeTarget != targets[i]
|
||||
&& scrollTop >= offsets[i]
|
||||
@@ -72,21 +92,27 @@
|
||||
|
||||
, activate: function (target) {
|
||||
var active
|
||||
, selector
|
||||
|
||||
this.activeTarget = target
|
||||
|
||||
this.$body
|
||||
.find(this.selector).parent('.active')
|
||||
$(this.selector)
|
||||
.parent('.active')
|
||||
.removeClass('active')
|
||||
|
||||
active = this.$body
|
||||
.find(this.selector + '[href="' + target + '"]')
|
||||
selector = this.selector
|
||||
+ '[data-target="' + target + '"],'
|
||||
+ this.selector + '[href="' + target + '"]'
|
||||
|
||||
active = $(selector)
|
||||
.parent('li')
|
||||
.addClass('active')
|
||||
|
||||
if ( active.parent('.dropdown-menu') ) {
|
||||
active.closest('li.dropdown').addClass('active')
|
||||
if (active.parent('.dropdown-menu').length) {
|
||||
active = active.closest('li.dropdown').addClass('active')
|
||||
}
|
||||
|
||||
active.trigger('activate')
|
||||
}
|
||||
|
||||
}
|
||||
@@ -95,7 +121,9 @@
|
||||
/* SCROLLSPY PLUGIN DEFINITION
|
||||
* =========================== */
|
||||
|
||||
$.fn.scrollspy = function ( option ) {
|
||||
var old = $.fn.scrollspy
|
||||
|
||||
$.fn.scrollspy = function (option) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
, data = $this.data('scrollspy')
|
||||
@@ -112,14 +140,23 @@
|
||||
}
|
||||
|
||||
|
||||
/* SCROLLSPY NO CONFLICT
|
||||
* ===================== */
|
||||
|
||||
$.fn.scrollspy.noConflict = function () {
|
||||
$.fn.scrollspy = old
|
||||
return this
|
||||
}
|
||||
|
||||
|
||||
/* SCROLLSPY DATA-API
|
||||
* ================== */
|
||||
|
||||
$(function () {
|
||||
$(window).on('load', function () {
|
||||
$('[data-spy="scroll"]').each(function () {
|
||||
var $spy = $(this)
|
||||
$spy.scrollspy($spy.data())
|
||||
})
|
||||
})
|
||||
|
||||
}( window.jQuery );
|
||||
}(window.jQuery);
|
||||
@@ -1,5 +1,5 @@
|
||||
/* ========================================================
|
||||
* bootstrap-tab.js v2.0.1
|
||||
* bootstrap-tab.js v2.2.2
|
||||
* http://twitter.github.com/bootstrap/javascript.html#tabs
|
||||
* ========================================================
|
||||
* Copyright 2012 Twitter, Inc.
|
||||
@@ -18,14 +18,15 @@
|
||||
* ======================================================== */
|
||||
|
||||
|
||||
!function( $ ){
|
||||
!function ($) {
|
||||
|
||||
"use strict"; // jshint ;_;
|
||||
|
||||
"use strict"
|
||||
|
||||
/* TAB CLASS DEFINITION
|
||||
* ==================== */
|
||||
|
||||
var Tab = function ( element ) {
|
||||
var Tab = function (element) {
|
||||
this.element = $(element)
|
||||
}
|
||||
|
||||
@@ -39,6 +40,7 @@
|
||||
, selector = $this.attr('data-target')
|
||||
, previous
|
||||
, $target
|
||||
, e
|
||||
|
||||
if (!selector) {
|
||||
selector = $this.attr('href')
|
||||
@@ -47,13 +49,16 @@
|
||||
|
||||
if ( $this.parent('li').hasClass('active') ) return
|
||||
|
||||
previous = $ul.find('.active a').last()[0]
|
||||
previous = $ul.find('.active:last a')[0]
|
||||
|
||||
$this.trigger({
|
||||
type: 'show'
|
||||
, relatedTarget: previous
|
||||
e = $.Event('show', {
|
||||
relatedTarget: previous
|
||||
})
|
||||
|
||||
$this.trigger(e)
|
||||
|
||||
if (e.isDefaultPrevented()) return
|
||||
|
||||
$target = $(selector)
|
||||
|
||||
this.activate($this.parent('li'), $ul)
|
||||
@@ -105,6 +110,8 @@
|
||||
/* TAB PLUGIN DEFINITION
|
||||
* ===================== */
|
||||
|
||||
var old = $.fn.tab
|
||||
|
||||
$.fn.tab = function ( option ) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
@@ -117,14 +124,21 @@
|
||||
$.fn.tab.Constructor = Tab
|
||||
|
||||
|
||||
/* TAB NO CONFLICT
|
||||
* =============== */
|
||||
|
||||
$.fn.tab.noConflict = function () {
|
||||
$.fn.tab = old
|
||||
return this
|
||||
}
|
||||
|
||||
|
||||
/* TAB DATA-API
|
||||
* ============ */
|
||||
|
||||
$(function () {
|
||||
$('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
|
||||
e.preventDefault()
|
||||
$(this).tab('show')
|
||||
})
|
||||
$(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
|
||||
e.preventDefault()
|
||||
$(this).tab('show')
|
||||
})
|
||||
|
||||
}( window.jQuery );
|
||||
}(window.jQuery);
|
||||
@@ -1,5 +1,5 @@
|
||||
/* ===========================================================
|
||||
* bootstrap-tooltip.js v2.0.1
|
||||
* bootstrap-tooltip.js v2.2.2
|
||||
* http://twitter.github.com/bootstrap/javascript.html#tooltips
|
||||
* Inspired by the original jQuery.tipsy by Jason Frame
|
||||
* ===========================================================
|
||||
@@ -18,14 +18,16 @@
|
||||
* limitations under the License.
|
||||
* ========================================================== */
|
||||
|
||||
!function( $ ) {
|
||||
|
||||
"use strict"
|
||||
!function ($) {
|
||||
|
||||
"use strict"; // jshint ;_;
|
||||
|
||||
|
||||
/* TOOLTIP PUBLIC CLASS DEFINITION
|
||||
* =============================== */
|
||||
|
||||
var Tooltip = function ( element, options ) {
|
||||
var Tooltip = function (element, options) {
|
||||
this.init('tooltip', element, options)
|
||||
}
|
||||
|
||||
@@ -33,7 +35,7 @@
|
||||
|
||||
constructor: Tooltip
|
||||
|
||||
, init: function ( type, element, options ) {
|
||||
, init: function (type, element, options) {
|
||||
var eventIn
|
||||
, eventOut
|
||||
|
||||
@@ -42,11 +44,13 @@
|
||||
this.options = this.getOptions(options)
|
||||
this.enabled = true
|
||||
|
||||
if (this.options.trigger != 'manual') {
|
||||
eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
|
||||
if (this.options.trigger == 'click') {
|
||||
this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
|
||||
} else if (this.options.trigger != 'manual') {
|
||||
eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
|
||||
eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
|
||||
this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this))
|
||||
this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this))
|
||||
this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
|
||||
this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
|
||||
}
|
||||
|
||||
this.options.selector ?
|
||||
@@ -54,7 +58,7 @@
|
||||
this.fixTitle()
|
||||
}
|
||||
|
||||
, getOptions: function ( options ) {
|
||||
, getOptions: function (options) {
|
||||
options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
|
||||
|
||||
if (options.delay && typeof options.delay == 'number') {
|
||||
@@ -67,34 +71,28 @@
|
||||
return options
|
||||
}
|
||||
|
||||
, enter: function ( e ) {
|
||||
, enter: function (e) {
|
||||
var self = $(e.currentTarget)[this.type](this._options).data(this.type)
|
||||
|
||||
if (!self.options.delay || !self.options.delay.show) {
|
||||
self.show()
|
||||
} else {
|
||||
self.hoverState = 'in'
|
||||
setTimeout(function() {
|
||||
if (self.hoverState == 'in') {
|
||||
self.show()
|
||||
}
|
||||
}, self.options.delay.show)
|
||||
}
|
||||
if (!self.options.delay || !self.options.delay.show) return self.show()
|
||||
|
||||
clearTimeout(this.timeout)
|
||||
self.hoverState = 'in'
|
||||
this.timeout = setTimeout(function() {
|
||||
if (self.hoverState == 'in') self.show()
|
||||
}, self.options.delay.show)
|
||||
}
|
||||
|
||||
, leave: function ( e ) {
|
||||
, leave: function (e) {
|
||||
var self = $(e.currentTarget)[this.type](this._options).data(this.type)
|
||||
|
||||
if (!self.options.delay || !self.options.delay.hide) {
|
||||
self.hide()
|
||||
} else {
|
||||
self.hoverState = 'out'
|
||||
setTimeout(function() {
|
||||
if (self.hoverState == 'out') {
|
||||
self.hide()
|
||||
}
|
||||
}, self.options.delay.hide)
|
||||
}
|
||||
if (this.timeout) clearTimeout(this.timeout)
|
||||
if (!self.options.delay || !self.options.delay.hide) return self.hide()
|
||||
|
||||
self.hoverState = 'out'
|
||||
this.timeout = setTimeout(function() {
|
||||
if (self.hoverState == 'out') self.hide()
|
||||
}, self.options.delay.hide)
|
||||
}
|
||||
|
||||
, show: function () {
|
||||
@@ -121,9 +119,9 @@
|
||||
inside = /in/.test(placement)
|
||||
|
||||
$tip
|
||||
.remove()
|
||||
.detach()
|
||||
.css({ top: 0, left: 0, display: 'block' })
|
||||
.appendTo(inside ? this.$element : document.body)
|
||||
.insertAfter(this.$element)
|
||||
|
||||
pos = this.getPosition(inside)
|
||||
|
||||
@@ -146,7 +144,7 @@
|
||||
}
|
||||
|
||||
$tip
|
||||
.css(tp)
|
||||
.offset(tp)
|
||||
.addClass(placement)
|
||||
.addClass('in')
|
||||
}
|
||||
@@ -154,7 +152,9 @@
|
||||
|
||||
, setContent: function () {
|
||||
var $tip = this.tip()
|
||||
$tip.find('.tooltip-inner').html(this.getTitle())
|
||||
, title = this.getTitle()
|
||||
|
||||
$tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
|
||||
$tip.removeClass('fade in top bottom left right')
|
||||
}
|
||||
|
||||
@@ -166,18 +166,20 @@
|
||||
|
||||
function removeWithAnimation() {
|
||||
var timeout = setTimeout(function () {
|
||||
$tip.off($.support.transition.end).remove()
|
||||
$tip.off($.support.transition.end).detach()
|
||||
}, 500)
|
||||
|
||||
$tip.one($.support.transition.end, function () {
|
||||
clearTimeout(timeout)
|
||||
$tip.remove()
|
||||
$tip.detach()
|
||||
})
|
||||
}
|
||||
|
||||
$.support.transition && this.$tip.hasClass('fade') ?
|
||||
removeWithAnimation() :
|
||||
$tip.remove()
|
||||
$tip.detach()
|
||||
|
||||
return this
|
||||
}
|
||||
|
||||
, fixTitle: function () {
|
||||
@@ -206,8 +208,6 @@
|
||||
title = $e.attr('data-original-title')
|
||||
|| (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
|
||||
|
||||
title = title.toString().replace(/(^\s*|\s*$)/, "")
|
||||
|
||||
return title
|
||||
}
|
||||
|
||||
@@ -235,8 +235,13 @@
|
||||
this.enabled = !this.enabled
|
||||
}
|
||||
|
||||
, toggle: function () {
|
||||
this[this.tip().hasClass('in') ? 'hide' : 'show']()
|
||||
, toggle: function (e) {
|
||||
var self = $(e.currentTarget)[this.type](this._options).data(this.type)
|
||||
self[self.tip().hasClass('in') ? 'hide' : 'show']()
|
||||
}
|
||||
|
||||
, destroy: function () {
|
||||
this.hide().$element.off('.' + this.type).removeData(this.type)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -245,6 +250,8 @@
|
||||
/* TOOLTIP PLUGIN DEFINITION
|
||||
* ========================= */
|
||||
|
||||
var old = $.fn.tooltip
|
||||
|
||||
$.fn.tooltip = function ( option ) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
@@ -259,12 +266,22 @@
|
||||
|
||||
$.fn.tooltip.defaults = {
|
||||
animation: true
|
||||
, delay: 0
|
||||
, selector: false
|
||||
, placement: 'top'
|
||||
, selector: false
|
||||
, template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
|
||||
, trigger: 'hover'
|
||||
, title: ''
|
||||
, template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
|
||||
, delay: 0
|
||||
, html: false
|
||||
}
|
||||
|
||||
}( window.jQuery );
|
||||
|
||||
/* TOOLTIP NO CONFLICT
|
||||
* =================== */
|
||||
|
||||
$.fn.tooltip.noConflict = function () {
|
||||
$.fn.tooltip = old
|
||||
return this
|
||||
}
|
||||
|
||||
}(window.jQuery);
|
||||
@@ -1,5 +1,5 @@
|
||||
/* ===================================================
|
||||
* bootstrap-transition.js v2.0.1
|
||||
* bootstrap-transition.js v2.2.2
|
||||
* http://twitter.github.com/bootstrap/javascript.html#transitions
|
||||
* ===================================================
|
||||
* Copyright 2012 Twitter, Inc.
|
||||
@@ -17,35 +17,44 @@
|
||||
* limitations under the License.
|
||||
* ========================================================== */
|
||||
|
||||
!function( $ ) {
|
||||
|
||||
!function ($) {
|
||||
|
||||
"use strict"; // jshint ;_;
|
||||
|
||||
|
||||
/* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
|
||||
* ======================================================= */
|
||||
|
||||
$(function () {
|
||||
|
||||
"use strict"
|
||||
|
||||
/* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
|
||||
* ======================================================= */
|
||||
|
||||
$.support.transition = (function () {
|
||||
var thisBody = document.body || document.documentElement
|
||||
, thisStyle = thisBody.style
|
||||
, support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
|
||||
|
||||
return support && {
|
||||
end: (function () {
|
||||
var transitionEnd = "TransitionEnd"
|
||||
if ( $.browser.webkit ) {
|
||||
transitionEnd = "webkitTransitionEnd"
|
||||
} else if ( $.browser.mozilla ) {
|
||||
transitionEnd = "transitionend"
|
||||
} else if ( $.browser.opera ) {
|
||||
transitionEnd = "oTransitionEnd"
|
||||
var transitionEnd = (function () {
|
||||
|
||||
var el = document.createElement('bootstrap')
|
||||
, transEndEventNames = {
|
||||
'WebkitTransition' : 'webkitTransitionEnd'
|
||||
, 'MozTransition' : 'transitionend'
|
||||
, 'OTransition' : 'oTransitionEnd otransitionend'
|
||||
, 'transition' : 'transitionend'
|
||||
}
|
||||
, name
|
||||
|
||||
for (name in transEndEventNames){
|
||||
if (el.style[name] !== undefined) {
|
||||
return transEndEventNames[name]
|
||||
}
|
||||
return transitionEnd
|
||||
}())
|
||||
}
|
||||
|
||||
}())
|
||||
|
||||
return transitionEnd && {
|
||||
end: transitionEnd
|
||||
}
|
||||
|
||||
})()
|
||||
|
||||
})
|
||||
|
||||
}( window.jQuery );
|
||||
}(window.jQuery);
|
||||
@@ -1,5 +1,5 @@
|
||||
/* =============================================================
|
||||
* bootstrap-typeahead.js v2.0.1
|
||||
* bootstrap-typeahead.js v2.2.2
|
||||
* http://twitter.github.com/bootstrap/javascript.html#typeahead
|
||||
* =============================================================
|
||||
* Copyright 2012 Twitter, Inc.
|
||||
@@ -17,18 +17,24 @@
|
||||
* limitations under the License.
|
||||
* ============================================================ */
|
||||
|
||||
!function( $ ){
|
||||
|
||||
"use strict"
|
||||
!function($){
|
||||
|
||||
var Typeahead = function ( element, options ) {
|
||||
"use strict"; // jshint ;_;
|
||||
|
||||
|
||||
/* TYPEAHEAD PUBLIC CLASS DEFINITION
|
||||
* ================================= */
|
||||
|
||||
var Typeahead = function (element, options) {
|
||||
this.$element = $(element)
|
||||
this.options = $.extend({}, $.fn.typeahead.defaults, options)
|
||||
this.matcher = this.options.matcher || this.matcher
|
||||
this.sorter = this.options.sorter || this.sorter
|
||||
this.highlighter = this.options.highlighter || this.highlighter
|
||||
this.$menu = $(this.options.menu).appendTo('body')
|
||||
this.updater = this.options.updater || this.updater
|
||||
this.source = this.options.source
|
||||
this.$menu = $(this.options.menu)
|
||||
this.shown = false
|
||||
this.listen()
|
||||
}
|
||||
@@ -39,21 +45,29 @@
|
||||
|
||||
, select: function () {
|
||||
var val = this.$menu.find('.active').attr('data-value')
|
||||
this.$element.val(val)
|
||||
this.$element
|
||||
.val(this.updater(val))
|
||||
.change()
|
||||
return this.hide()
|
||||
}
|
||||
|
||||
, updater: function (item) {
|
||||
return item
|
||||
}
|
||||
|
||||
, show: function () {
|
||||
var pos = $.extend({}, this.$element.offset(), {
|
||||
var pos = $.extend({}, this.$element.position(), {
|
||||
height: this.$element[0].offsetHeight
|
||||
})
|
||||
|
||||
this.$menu.css({
|
||||
top: pos.top + pos.height
|
||||
, left: pos.left
|
||||
})
|
||||
this.$menu
|
||||
.insertAfter(this.$element)
|
||||
.css({
|
||||
top: pos.top + pos.height
|
||||
, left: pos.left
|
||||
})
|
||||
.show()
|
||||
|
||||
this.$menu.show()
|
||||
this.shown = true
|
||||
return this
|
||||
}
|
||||
@@ -65,18 +79,24 @@
|
||||
}
|
||||
|
||||
, lookup: function (event) {
|
||||
var that = this
|
||||
, items
|
||||
, q
|
||||
var items
|
||||
|
||||
this.query = this.$element.val()
|
||||
|
||||
if (!this.query) {
|
||||
if (!this.query || this.query.length < this.options.minLength) {
|
||||
return this.shown ? this.hide() : this
|
||||
}
|
||||
|
||||
items = $.grep(this.source, function (item) {
|
||||
if (that.matcher(item)) return item
|
||||
items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source
|
||||
|
||||
return items ? this.process(items) : this
|
||||
}
|
||||
|
||||
, process: function (items) {
|
||||
var that = this
|
||||
|
||||
items = $.grep(items, function (item) {
|
||||
return that.matcher(item)
|
||||
})
|
||||
|
||||
items = this.sorter(items)
|
||||
@@ -108,7 +128,8 @@
|
||||
}
|
||||
|
||||
, highlighter: function (item) {
|
||||
return item.replace(new RegExp('(' + this.query + ')', 'ig'), function ($1, match) {
|
||||
var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
|
||||
return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
|
||||
return '<strong>' + match + '</strong>'
|
||||
})
|
||||
}
|
||||
@@ -155,8 +176,8 @@
|
||||
.on('keypress', $.proxy(this.keypress, this))
|
||||
.on('keyup', $.proxy(this.keyup, this))
|
||||
|
||||
if ($.browser.webkit || $.browser.msie) {
|
||||
this.$element.on('keydown', $.proxy(this.keypress, this))
|
||||
if (this.eventSupported('keydown')) {
|
||||
this.$element.on('keydown', $.proxy(this.keydown, this))
|
||||
}
|
||||
|
||||
this.$menu
|
||||
@@ -164,33 +185,16 @@
|
||||
.on('mouseenter', 'li', $.proxy(this.mouseenter, this))
|
||||
}
|
||||
|
||||
, keyup: function (e) {
|
||||
e.stopPropagation()
|
||||
e.preventDefault()
|
||||
|
||||
switch(e.keyCode) {
|
||||
case 40: // down arrow
|
||||
case 38: // up arrow
|
||||
break
|
||||
|
||||
case 9: // tab
|
||||
case 13: // enter
|
||||
if (!this.shown) return
|
||||
this.select()
|
||||
break
|
||||
|
||||
case 27: // escape
|
||||
this.hide()
|
||||
break
|
||||
|
||||
default:
|
||||
this.lookup()
|
||||
, eventSupported: function(eventName) {
|
||||
var isSupported = eventName in this.$element
|
||||
if (!isSupported) {
|
||||
this.$element.setAttribute(eventName, 'return;')
|
||||
isSupported = typeof this.$element[eventName] === 'function'
|
||||
}
|
||||
return isSupported
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
, keypress: function (e) {
|
||||
e.stopPropagation()
|
||||
, move: function (e) {
|
||||
if (!this.shown) return
|
||||
|
||||
switch(e.keyCode) {
|
||||
@@ -210,12 +214,50 @@
|
||||
this.next()
|
||||
break
|
||||
}
|
||||
|
||||
e.stopPropagation()
|
||||
}
|
||||
|
||||
, keydown: function (e) {
|
||||
this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27])
|
||||
this.move(e)
|
||||
}
|
||||
|
||||
, keypress: function (e) {
|
||||
if (this.suppressKeyPressRepeat) return
|
||||
this.move(e)
|
||||
}
|
||||
|
||||
, keyup: function (e) {
|
||||
switch(e.keyCode) {
|
||||
case 40: // down arrow
|
||||
case 38: // up arrow
|
||||
case 16: // shift
|
||||
case 17: // ctrl
|
||||
case 18: // alt
|
||||
break
|
||||
|
||||
case 9: // tab
|
||||
case 13: // enter
|
||||
if (!this.shown) return
|
||||
this.select()
|
||||
break
|
||||
|
||||
case 27: // escape
|
||||
if (!this.shown) return
|
||||
this.hide()
|
||||
break
|
||||
|
||||
default:
|
||||
this.lookup()
|
||||
}
|
||||
|
||||
e.stopPropagation()
|
||||
e.preventDefault()
|
||||
}
|
||||
|
||||
, blur: function (e) {
|
||||
var that = this
|
||||
e.stopPropagation()
|
||||
e.preventDefault()
|
||||
setTimeout(function () { that.hide() }, 150)
|
||||
}
|
||||
|
||||
@@ -236,7 +278,9 @@
|
||||
/* TYPEAHEAD PLUGIN DEFINITION
|
||||
* =========================== */
|
||||
|
||||
$.fn.typeahead = function ( option ) {
|
||||
var old = $.fn.typeahead
|
||||
|
||||
$.fn.typeahead = function (option) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
, data = $this.data('typeahead')
|
||||
@@ -251,21 +295,29 @@
|
||||
, items: 8
|
||||
, menu: '<ul class="typeahead dropdown-menu"></ul>'
|
||||
, item: '<li><a href="#"></a></li>'
|
||||
, minLength: 1
|
||||
}
|
||||
|
||||
$.fn.typeahead.Constructor = Typeahead
|
||||
|
||||
|
||||
/* TYPEAHEAD NO CONFLICT
|
||||
* =================== */
|
||||
|
||||
$.fn.typeahead.noConflict = function () {
|
||||
$.fn.typeahead = old
|
||||
return this
|
||||
}
|
||||
|
||||
|
||||
/* TYPEAHEAD DATA-API
|
||||
* ================== */
|
||||
|
||||
$(function () {
|
||||
$('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
|
||||
var $this = $(this)
|
||||
if ($this.data('typeahead')) return
|
||||
e.preventDefault()
|
||||
$this.typeahead($this.data())
|
||||
})
|
||||
$(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
|
||||
var $this = $(this)
|
||||
if ($this.data('typeahead')) return
|
||||
e.preventDefault()
|
||||
$this.typeahead($this.data())
|
||||
})
|
||||
|
||||
}( window.jQuery );
|
||||
}(window.jQuery);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
.pun, .opn, .clo { color: #93a1a1; }
|
||||
.fun { color: #dc322f; }
|
||||
.str, .atv { color: #D14; }
|
||||
.kwd, .linenums .tag { color: #1e347b; }
|
||||
.kwd, .prettyprint .tag { color: #1e347b; }
|
||||
.typ, .atn, .dec, .var { color: teal; }
|
||||
.pln { color: #48484c; }
|
||||
|
||||
@@ -21,10 +21,10 @@
|
||||
/* Specify class=linenums on a pre to get line numbering */
|
||||
ol.linenums {
|
||||
margin: 0 0 0 33px; /* IE indents via margin-left */
|
||||
}
|
||||
}
|
||||
ol.linenums li {
|
||||
padding-left: 12px;
|
||||
color: #bebec5;
|
||||
line-height: 18px;
|
||||
line-height: 20px;
|
||||
text-shadow: 0 1px 0 #fff;
|
||||
}
|
||||
@@ -0,0 +1,342 @@
|
||||
/*
|
||||
|
||||
Holder - 1.6 - client side image placeholders
|
||||
(c) 2012 Ivan Malopinsky / http://imsky.co
|
||||
|
||||
Provided under the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0
|
||||
Commercial use requires attribution.
|
||||
|
||||
*/
|
||||
|
||||
var Holder = Holder || {};
|
||||
(function (app, win) {
|
||||
|
||||
var preempted = false,
|
||||
fallback = false,
|
||||
canvas = document.createElement('canvas');
|
||||
|
||||
//getElementsByClassName polyfill
|
||||
document.getElementsByClassName||(document.getElementsByClassName=function(e){var t=document,n,r,i,s=[];if(t.querySelectorAll)return t.querySelectorAll("."+e);if(t.evaluate){r=".//*[contains(concat(' ', @class, ' '), ' "+e+" ')]",n=t.evaluate(r,t,null,0,null);while(i=n.iterateNext())s.push(i)}else{n=t.getElementsByTagName("*"),r=new RegExp("(^|\\s)"+e+"(\\s|$)");for(i=0;i<n.length;i++)r.test(n[i].className)&&s.push(n[i])}return s})
|
||||
|
||||
//getComputedStyle polyfill
|
||||
window.getComputedStyle||(window.getComputedStyle=function(e,t){return this.el=e,this.getPropertyValue=function(t){var n=/(\-([a-z]){1})/g;return t=="float"&&(t="styleFloat"),n.test(t)&&(t=t.replace(n,function(){return arguments[2].toUpperCase()})),e.currentStyle[t]?e.currentStyle[t]:null},this})
|
||||
|
||||
//http://javascript.nwbox.com/ContentLoaded by Diego Perini with modifications
|
||||
function contentLoaded(n,t){var l="complete",s="readystatechange",u=!1,h=u,c=!0,i=n.document,a=i.documentElement,e=i.addEventListener?"addEventListener":"attachEvent",v=i.addEventListener?"removeEventListener":"detachEvent",f=i.addEventListener?"":"on",r=function(e){(e.type!=s||i.readyState==l)&&((e.type=="load"?n:i)[v](f+e.type,r,u),!h&&(h=!0)&&t.call(n,null))},o=function(){try{a.doScroll("left")}catch(n){setTimeout(o,50);return}r("poll")};if(i.readyState==l)t.call(n,"lazy");else{if(i.createEventObject&&a.doScroll){try{c=!n.frameElement}catch(y){}c&&o()}i[e](f+"DOMContentLoaded",r,u),i[e](f+s,r,u),n[e](f+"load",r,u)}};
|
||||
|
||||
//https://gist.github.com/991057 by Jed Schmidt with modifications
|
||||
function selector(a){
|
||||
a=a.match(/^(\W)?(.*)/);var b=document["getElement"+(a[1]?a[1]=="#"?"ById":"sByClassName":"sByTagName")](a[2]);
|
||||
var ret=[]; b!=null&&(b.length?ret=b:b.length==0?ret=b:ret=[b]); return ret;
|
||||
}
|
||||
|
||||
//shallow object property extend
|
||||
function extend(a,b){var c={};for(var d in a)c[d]=a[d];for(var e in b)c[e]=b[e];return c}
|
||||
|
||||
function text_size(width, height, template) {
|
||||
var dimension_arr = [height, width].sort();
|
||||
var maxFactor = Math.round(dimension_arr[1] / 16),
|
||||
minFactor = Math.round(dimension_arr[0] / 16);
|
||||
var text_height = Math.max(template.size, maxFactor);
|
||||
return {
|
||||
height: text_height
|
||||
}
|
||||
}
|
||||
|
||||
function draw(ctx, dimensions, template, ratio) {
|
||||
var ts = text_size(dimensions.width, dimensions.height, template);
|
||||
var text_height = ts.height;
|
||||
var width = dimensions.width * ratio, height = dimensions.height * ratio;
|
||||
canvas.width = width;
|
||||
canvas.height = height;
|
||||
ctx.textAlign = "center";
|
||||
ctx.textBaseline = "middle";
|
||||
ctx.fillStyle = template.background;
|
||||
ctx.fillRect(0, 0, width, height);
|
||||
ctx.fillStyle = template.foreground;
|
||||
ctx.font = "bold " + text_height + "px sans-serif";
|
||||
var text = template.text ? template.text : (dimensions.width + "x" + dimensions.height);
|
||||
if (ctx.measureText(text).width / width > 1) {
|
||||
text_height = template.size / (ctx.measureText(text).width / width);
|
||||
}
|
||||
ctx.font = "bold " + (text_height * ratio) + "px sans-serif";
|
||||
ctx.fillText(text, (width / 2), (height / 2), width);
|
||||
return canvas.toDataURL("image/png");
|
||||
}
|
||||
|
||||
function render(mode, el, holder, src) {
|
||||
|
||||
var dimensions = holder.dimensions,
|
||||
theme = holder.theme,
|
||||
text = holder.text;
|
||||
var dimensions_caption = dimensions.width + "x" + dimensions.height;
|
||||
theme = (text ? extend(theme, {
|
||||
text: text
|
||||
}) : theme);
|
||||
|
||||
var ratio = 1;
|
||||
if(window.devicePixelRatio && window.devicePixelRatio > 1){
|
||||
ratio = window.devicePixelRatio;
|
||||
}
|
||||
|
||||
if (mode == "image") {
|
||||
el.setAttribute("data-src", src);
|
||||
el.setAttribute("alt", text ? text : theme.text ? theme.text + " [" + dimensions_caption + "]" : dimensions_caption);
|
||||
el.style.width = dimensions.width + "px";
|
||||
el.style.height = dimensions.height + "px";
|
||||
|
||||
if (fallback) {
|
||||
el.style.backgroundColor = theme.background;
|
||||
}
|
||||
else{
|
||||
el.setAttribute("src", draw(ctx, dimensions, theme, ratio));
|
||||
}
|
||||
} else {
|
||||
if (!fallback) {
|
||||
el.style.backgroundImage = "url(" + draw(ctx, dimensions, theme, ratio) + ")";
|
||||
el.style.backgroundSize = dimensions.width+"px "+dimensions.height+"px";
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function fluid(el, holder, src) {
|
||||
var dimensions = holder.dimensions,
|
||||
theme = holder.theme,
|
||||
text = holder.text;
|
||||
var dimensions_caption = dimensions.width + "x" + dimensions.height;
|
||||
theme = (text ? extend(theme, {
|
||||
text: text
|
||||
}) : theme);
|
||||
|
||||
var fluid = document.createElement("table");
|
||||
fluid.setAttribute("cellspacing",0)
|
||||
fluid.setAttribute("cellpadding",0)
|
||||
fluid.setAttribute("border",0)
|
||||
|
||||
var row = document.createElement("tr")
|
||||
.appendChild(document.createElement("td")
|
||||
.appendChild(document.createTextNode(theme.text)));
|
||||
|
||||
fluid.style.backgroundColor = theme.background;
|
||||
fluid.style.color = theme.foreground;
|
||||
fluid.className = el.className + " holderjs-fluid";
|
||||
fluid.style.width = holder.dimensions.width + (holder.dimensions.width.indexOf("%")>0?"":"px");
|
||||
fluid.style.height = holder.dimensions.height + (holder.dimensions.height.indexOf("%")>0?"":"px");
|
||||
fluid.id = el.id;
|
||||
|
||||
var frag = document.createDocumentFragment(),
|
||||
tbody = document.createElement("tbody"),
|
||||
tr = document.createElement("tr"),
|
||||
td = document.createElement("td");
|
||||
tr.appendChild(td);
|
||||
tbody.appendChild(tr);
|
||||
frag.appendChild(tbody);
|
||||
|
||||
if (theme.text) {
|
||||
td.appendChild(document.createTextNode(theme.text))
|
||||
fluid.appendChild(frag);
|
||||
} else {
|
||||
td.appendChild(document.createTextNode(dimensions_caption))
|
||||
fluid.appendChild(frag);
|
||||
fluid_images.push(fluid);
|
||||
setTimeout(fluid_update, 0);
|
||||
}
|
||||
|
||||
el.parentNode.replaceChild(fluid, el);
|
||||
}
|
||||
|
||||
function fluid_update() {
|
||||
for (i in fluid_images) {
|
||||
var el = fluid_images[i];
|
||||
var label = el.getElementsByTagName("td")[0].firstChild;
|
||||
label.data = el.offsetWidth + "x" + el.offsetHeight;
|
||||
}
|
||||
}
|
||||
|
||||
function parse_flags(flags, options) {
|
||||
|
||||
var ret = {
|
||||
theme: settings.themes.gray
|
||||
}, render = false;
|
||||
|
||||
for (sl = flags.length, j = 0; j < sl; j++) {
|
||||
var flag = flags[j];
|
||||
if (app.flags.dimensions.match(flag)) {
|
||||
render = true;
|
||||
ret.dimensions = app.flags.dimensions.output(flag);
|
||||
} else if (app.flags.fluid.match(flag)) {
|
||||
render = true;
|
||||
ret.dimensions = app.flags.fluid.output(flag);
|
||||
ret.fluid = true;
|
||||
} else if (app.flags.colors.match(flag)) {
|
||||
ret.theme = app.flags.colors.output(flag);
|
||||
} else if (options.themes[flag]) {
|
||||
//If a theme is specified, it will override custom colors
|
||||
ret.theme = options.themes[flag];
|
||||
} else if (app.flags.text.match(flag)) {
|
||||
ret.text = app.flags.text.output(flag);
|
||||
}
|
||||
}
|
||||
|
||||
return render ? ret : false;
|
||||
|
||||
};
|
||||
|
||||
if (!canvas.getContext) {
|
||||
fallback = true;
|
||||
} else {
|
||||
if (canvas.toDataURL("image/png")
|
||||
.indexOf("data:image/png") < 0) {
|
||||
//Android doesn't support data URI
|
||||
fallback = true;
|
||||
} else {
|
||||
var ctx = canvas.getContext("2d");
|
||||
}
|
||||
}
|
||||
|
||||
var fluid_images = [];
|
||||
|
||||
var settings = {
|
||||
domain: "holder.js",
|
||||
images: "img",
|
||||
elements: ".holderjs",
|
||||
themes: {
|
||||
"gray": {
|
||||
background: "#eee",
|
||||
foreground: "#aaa",
|
||||
size: 12
|
||||
},
|
||||
"social": {
|
||||
background: "#3a5a97",
|
||||
foreground: "#fff",
|
||||
size: 12
|
||||
},
|
||||
"industrial": {
|
||||
background: "#434A52",
|
||||
foreground: "#C2F200",
|
||||
size: 12
|
||||
}
|
||||
},
|
||||
stylesheet: ".holderjs-fluid {font-size:16px;font-weight:bold;text-align:center;font-family:sans-serif;border-collapse:collapse;border:0;vertical-align:middle;margin:0}"
|
||||
};
|
||||
|
||||
|
||||
app.flags = {
|
||||
dimensions: {
|
||||
regex: /(\d+)x(\d+)/,
|
||||
output: function (val) {
|
||||
var exec = this.regex.exec(val);
|
||||
return {
|
||||
width: +exec[1],
|
||||
height: +exec[2]
|
||||
}
|
||||
}
|
||||
},
|
||||
fluid: {
|
||||
regex: /([0-9%]+)x([0-9%]+)/,
|
||||
output: function (val) {
|
||||
var exec = this.regex.exec(val);
|
||||
return {
|
||||
width: exec[1],
|
||||
height: exec[2]
|
||||
}
|
||||
}
|
||||
},
|
||||
colors: {
|
||||
regex: /#([0-9a-f]{3,})\:#([0-9a-f]{3,})/i,
|
||||
output: function (val) {
|
||||
var exec = this.regex.exec(val);
|
||||
return {
|
||||
size: settings.themes.gray.size,
|
||||
foreground: "#" + exec[2],
|
||||
background: "#" + exec[1]
|
||||
}
|
||||
}
|
||||
},
|
||||
text: {
|
||||
regex: /text\:(.*)/,
|
||||
output: function (val) {
|
||||
return this.regex.exec(val)[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var flag in app.flags) {
|
||||
app.flags[flag].match = function (val) {
|
||||
return val.match(this.regex)
|
||||
}
|
||||
}
|
||||
|
||||
app.add_theme = function (name, theme) {
|
||||
name != null && theme != null && (settings.themes[name] = theme);
|
||||
return app;
|
||||
};
|
||||
|
||||
app.add_image = function (src, el) {
|
||||
var node = selector(el);
|
||||
if (node.length) {
|
||||
for (var i = 0, l = node.length; i < l; i++) {
|
||||
var img = document.createElement("img")
|
||||
img.setAttribute("data-src", src);
|
||||
node[i].appendChild(img);
|
||||
}
|
||||
}
|
||||
return app;
|
||||
};
|
||||
|
||||
app.run = function (o) {
|
||||
var options = extend(settings, o),
|
||||
images_nodes = selector(options.images),
|
||||
elements = selector(options.elements),
|
||||
preempted = true,
|
||||
images = [];
|
||||
|
||||
for (i = 0, l = images_nodes.length; i < l; i++) images.push(images_nodes[i]);
|
||||
|
||||
var holdercss = document.createElement("style");
|
||||
holdercss.type = "text/css";
|
||||
holdercss.styleSheet ? holdercss.styleSheet.cssText = options.stylesheet : holdercss.textContent = options.stylesheet;
|
||||
document.getElementsByTagName("head")[0].appendChild(holdercss);
|
||||
|
||||
var cssregex = new RegExp(options.domain + "\/(.*?)\"?\\)");
|
||||
|
||||
for (var l = elements.length, i = 0; i < l; i++) {
|
||||
var src = window.getComputedStyle(elements[i], null)
|
||||
.getPropertyValue("background-image");
|
||||
var flags = src.match(cssregex);
|
||||
if (flags) {
|
||||
var holder = parse_flags(flags[1].split("/"), options);
|
||||
if (holder) {
|
||||
render("background", elements[i], holder, src);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var l = images.length, i = 0; i < l; i++) {
|
||||
var src = images[i].getAttribute("src") || images[i].getAttribute("data-src");
|
||||
if (src != null && src.indexOf(options.domain) >= 0) {
|
||||
var holder = parse_flags(src.substr(src.lastIndexOf(options.domain) + options.domain.length + 1)
|
||||
.split("/"), options);
|
||||
if (holder) {
|
||||
if (holder.fluid) {
|
||||
fluid(images[i], holder, src);
|
||||
} else {
|
||||
render("image", images[i], holder, src);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return app;
|
||||
};
|
||||
|
||||
contentLoaded(win, function () {
|
||||
if (window.addEventListener) {
|
||||
window.addEventListener("resize", fluid_update, false);
|
||||
window.addEventListener("orientationchange", fluid_update, false);
|
||||
} else {
|
||||
window.attachEvent("onresize", fluid_update)
|
||||
}
|
||||
preempted || app.run();
|
||||
});
|
||||
|
||||
})(Holder, window);
|
||||
@@ -2,6 +2,7 @@
|
||||
var hogan = require('hogan.js')
|
||||
, fs = require('fs')
|
||||
, prod = process.argv[2] == 'production'
|
||||
, title = 'Bootstrap'
|
||||
|
||||
var layout, pages
|
||||
|
||||
@@ -23,6 +24,16 @@ pages.forEach(function (name) {
|
||||
context[name.replace(/\.mustache$/, '')] = 'active'
|
||||
context._i = true
|
||||
context.production = prod
|
||||
context.title = name
|
||||
.replace(/\.mustache/, '')
|
||||
.replace(/\-.*/, '')
|
||||
.replace(/(.)/, function ($1) { return $1.toUpperCase() })
|
||||
|
||||
if (context.title == 'Index') {
|
||||
context.title = title
|
||||
} else {
|
||||
context.title += ' · ' + title
|
||||
}
|
||||
|
||||
page = hogan.compile(page, { sectionTags: [{o:'_i', c:'i'}] })
|
||||
page = layout.render(context, {
|
||||
|
||||
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 4.5 KiB |