├── build.sh
├── coffeescript_for_framerjs.tar.gz
├── epub.sh
├── images
├── img1.png
├── img10.png
├── img11.png
├── img12.png
├── img2.png
├── img3.png
├── img4.png
├── img5.png
├── img6.png
├── img7.png
├── img8.png
└── img9.png
├── pdf.sh
├── pkg
├── assets
│ ├── framer
│ │ ├── cards.framer
│ │ │ ├── .gitignore
│ │ │ ├── app.coffee
│ │ │ ├── framer
│ │ │ │ ├── backups
│ │ │ │ │ ├── backup-1426979838.coffee
│ │ │ │ │ └── backup-1427239449.coffee
│ │ │ │ ├── coffee-script.js
│ │ │ │ ├── config.json
│ │ │ │ ├── framer.generated.js
│ │ │ │ ├── framer.init.js
│ │ │ │ ├── framer.js
│ │ │ │ ├── framer.js.map
│ │ │ │ ├── framer.modules.js
│ │ │ │ ├── images
│ │ │ │ │ ├── background.png
│ │ │ │ │ ├── cursor.png
│ │ │ │ │ ├── cursor@2x.png
│ │ │ │ │ ├── icon-120.png
│ │ │ │ │ ├── icon-152.png
│ │ │ │ │ ├── icon-180.png
│ │ │ │ │ ├── icon-192.png
│ │ │ │ │ ├── icon-76.png
│ │ │ │ │ ├── icon-arrow.png
│ │ │ │ │ ├── icon-arrow@2x.png
│ │ │ │ │ ├── icon-close.png
│ │ │ │ │ ├── icon-close@2x.png
│ │ │ │ │ ├── icon-framer.png
│ │ │ │ │ ├── icon-framer@2x.png
│ │ │ │ │ ├── icon-share.png
│ │ │ │ │ └── icon-share@2x.png
│ │ │ │ ├── mirror.css
│ │ │ │ ├── style.css
│ │ │ │ └── version
│ │ │ ├── images
│ │ │ │ └── framer-icon.png
│ │ │ ├── imported
│ │ │ │ └── Camera Roll
│ │ │ │ │ ├── framerps.log
│ │ │ │ │ ├── images
│ │ │ │ │ ├── img1.png
│ │ │ │ │ ├── img2.png
│ │ │ │ │ ├── img3.png
│ │ │ │ │ └── img4.png
│ │ │ │ │ ├── layers.json
│ │ │ │ │ └── layers.json.js
│ │ │ ├── index.html
│ │ │ └── modules
│ │ │ │ └── myModule.coffee
│ │ ├── dropdown.framer
│ │ │ ├── .temp.html
│ │ │ ├── app.coffee
│ │ │ ├── framer
│ │ │ │ ├── backups
│ │ │ │ │ └── backup-1427673752.coffee
│ │ │ │ ├── coffee-script.js
│ │ │ │ ├── config.json
│ │ │ │ ├── framer.generated.js
│ │ │ │ ├── framer.init.js
│ │ │ │ ├── framer.js
│ │ │ │ ├── framer.js.map
│ │ │ │ ├── framer.modules.js
│ │ │ │ ├── images
│ │ │ │ │ ├── background.png
│ │ │ │ │ ├── cursor.png
│ │ │ │ │ ├── cursor@2x.png
│ │ │ │ │ ├── icon-120.png
│ │ │ │ │ ├── icon-152.png
│ │ │ │ │ ├── icon-76.png
│ │ │ │ │ ├── icon-arrow.png
│ │ │ │ │ ├── icon-arrow@2x.png
│ │ │ │ │ ├── icon-close.png
│ │ │ │ │ ├── icon-close@2x.png
│ │ │ │ │ ├── icon-framer.png
│ │ │ │ │ ├── icon-framer@2x.png
│ │ │ │ │ ├── icon-share.png
│ │ │ │ │ └── icon-share@2x.png
│ │ │ │ ├── mirror.css
│ │ │ │ ├── style.css
│ │ │ │ └── version
│ │ │ ├── images
│ │ │ │ └── framer-icon.png
│ │ │ ├── imported
│ │ │ │ ├── dropdown
│ │ │ │ │ ├── framerps.log
│ │ │ │ │ ├── images
│ │ │ │ │ │ ├── Top_bar.png
│ │ │ │ │ │ ├── bg.png
│ │ │ │ │ │ ├── dividers.png
│ │ │ │ │ │ ├── menuContent.png
│ │ │ │ │ │ ├── menuIcon.png
│ │ │ │ │ │ └── text.png
│ │ │ │ │ ├── layers.json
│ │ │ │ │ └── layers.json.js
│ │ │ │ └── example2_dropdown
│ │ │ │ │ ├── images
│ │ │ │ │ ├── menu_content-F690BFCA-B7DF-4F9B-9338-31D759DE120B.png
│ │ │ │ │ ├── menu_icon-2A7FE607-FA78-4433-9B34-0C8F0F5F0DD3.png
│ │ │ │ │ └── top_bar-4ADEAF2E-859C-4DAC-A1C2-31E6EA30D173.png
│ │ │ │ │ ├── layers.json
│ │ │ │ │ └── layers.json.js
│ │ │ └── index.html
│ │ ├── popup.framer
│ │ │ ├── .gitignore
│ │ │ ├── app.coffee
│ │ │ ├── framer
│ │ │ │ ├── backups
│ │ │ │ │ ├── backup-1427673752.coffee
│ │ │ │ │ └── backup-1428264184.coffee
│ │ │ │ ├── coffee-script.js
│ │ │ │ ├── config.json
│ │ │ │ ├── framer.generated.js
│ │ │ │ ├── framer.init.js
│ │ │ │ ├── framer.js
│ │ │ │ ├── framer.js.map
│ │ │ │ ├── framer.modules.js
│ │ │ │ ├── images
│ │ │ │ │ ├── background.png
│ │ │ │ │ ├── cursor.png
│ │ │ │ │ ├── cursor@2x.png
│ │ │ │ │ ├── icon-120.png
│ │ │ │ │ ├── icon-152.png
│ │ │ │ │ ├── icon-180.png
│ │ │ │ │ ├── icon-192.png
│ │ │ │ │ ├── icon-76.png
│ │ │ │ │ ├── icon-arrow.png
│ │ │ │ │ ├── icon-arrow@2x.png
│ │ │ │ │ ├── icon-close.png
│ │ │ │ │ ├── icon-close@2x.png
│ │ │ │ │ ├── icon-framer.png
│ │ │ │ │ ├── icon-framer@2x.png
│ │ │ │ │ ├── icon-share.png
│ │ │ │ │ └── icon-share@2x.png
│ │ │ │ ├── mirror.css
│ │ │ │ ├── style.css
│ │ │ │ └── version
│ │ │ ├── images
│ │ │ │ └── framer-icon.png
│ │ │ ├── imported
│ │ │ │ ├── example1_popup
│ │ │ │ │ ├── framerps.log
│ │ │ │ │ ├── images
│ │ │ │ │ │ ├── Achievement_Icon-BCEA5EB2-97CB-4926-8828-0B85CFD92CD1.png
│ │ │ │ │ │ ├── Mustache.png
│ │ │ │ │ │ ├── Popup.png
│ │ │ │ │ │ ├── badge.png
│ │ │ │ │ │ ├── bg-467D259F-657A-4BEC-B60C-B8649B3A5542.png
│ │ │ │ │ │ ├── bg.png
│ │ │ │ │ │ ├── circle__teh_moustache-810CF4A7-B56C-4B9D-AD49-D09F2DBC003F.png
│ │ │ │ │ │ ├── close-3BE91730-52E7-410C-ABCF-BEFE252C156C.png
│ │ │ │ │ │ ├── close.png
│ │ │ │ │ │ └── popup-C8C4A3B3-B9F7-4579-89AD-7E65563620BF.png
│ │ │ │ │ ├── layers.json
│ │ │ │ │ └── layers.json.js
│ │ │ │ ├── example1_popup2
│ │ │ │ │ ├── images
│ │ │ │ │ │ ├── Achievement_Icon-BCEA5EB2-97CB-4926-8828-0B85CFD92CD1.png
│ │ │ │ │ │ ├── bg-467D259F-657A-4BEC-B60C-B8649B3A5542.png
│ │ │ │ │ │ └── popup-C8C4A3B3-B9F7-4579-89AD-7E65563620BF.png
│ │ │ │ │ ├── layers.json
│ │ │ │ │ └── layers.json.js
│ │ │ │ └── iPhone 6 Template
│ │ │ │ │ ├── images
│ │ │ │ │ ├── iconAlbums-5E358598-E973-4248-B288-BE3F2F2C02C1.png
│ │ │ │ │ ├── iconPhotos-F79F21BE-BF0C-42B6-99E2-9DAB0FA42D53.png
│ │ │ │ │ ├── iconShared-63CB48BD-ED6A-4CF2-809E-50E593D17396.png
│ │ │ │ │ ├── navBar-EA2E254D-4F05-45F5-B120-33C145CE7923.png
│ │ │ │ │ ├── screen-467D259F-657A-4BEC-B60C-B8649B3A5542.png
│ │ │ │ │ ├── statusBar-A86820BD-4D5F-44EF-AEBB-21FEEF30391A.png
│ │ │ │ │ └── tabBar-C7F707CA-04FE-4EE4-995E-06B68173F067.png
│ │ │ │ │ ├── layers.json
│ │ │ │ │ └── layers.json.js
│ │ │ ├── index.html
│ │ │ └── modules
│ │ │ │ └── myModule.coffee
│ │ ├── swipe.framer
│ │ │ ├── .temp.html
│ │ │ ├── app.coffee
│ │ │ ├── framer
│ │ │ │ ├── backups
│ │ │ │ │ ├── backup-1427673752.coffee
│ │ │ │ │ └── backup-1428264184.coffee
│ │ │ │ ├── coffee-script.js
│ │ │ │ ├── config.json
│ │ │ │ ├── framer.generated.js
│ │ │ │ ├── framer.init.js
│ │ │ │ ├── framer.js
│ │ │ │ ├── framer.js.map
│ │ │ │ ├── framer.modules.js
│ │ │ │ ├── images
│ │ │ │ │ ├── background.png
│ │ │ │ │ ├── cursor.png
│ │ │ │ │ ├── cursor@2x.png
│ │ │ │ │ ├── icon-120.png
│ │ │ │ │ ├── icon-152.png
│ │ │ │ │ ├── icon-76.png
│ │ │ │ │ ├── icon-arrow.png
│ │ │ │ │ ├── icon-arrow@2x.png
│ │ │ │ │ ├── icon-close.png
│ │ │ │ │ ├── icon-close@2x.png
│ │ │ │ │ ├── icon-framer.png
│ │ │ │ │ ├── icon-framer@2x.png
│ │ │ │ │ ├── icon-share.png
│ │ │ │ │ └── icon-share@2x.png
│ │ │ │ ├── mirror.css
│ │ │ │ ├── style.css
│ │ │ │ └── version
│ │ │ ├── images
│ │ │ │ └── framer-icon.png
│ │ │ ├── imported
│ │ │ │ ├── example3_swipe
│ │ │ │ │ ├── images
│ │ │ │ │ │ ├── bg-467D259F-657A-4BEC-B60C-B8649B3A5542.png
│ │ │ │ │ │ ├── delete-798508F9-2530-4983-865D-078792D52551.png
│ │ │ │ │ │ ├── message-C98AA120-6BD4-4158-8C00-3AE9675BED77.png
│ │ │ │ │ │ └── top_nav-56441F68-B18C-4BEC-AC43-57EBA8202E03.png
│ │ │ │ │ ├── layers.json
│ │ │ │ │ └── layers.json.js
│ │ │ │ ├── example3_swipe2
│ │ │ │ │ ├── framerps.log
│ │ │ │ │ ├── images
│ │ │ │ │ │ ├── Navigation_Bar.png
│ │ │ │ │ │ ├── bg.png
│ │ │ │ │ │ ├── delete.png
│ │ │ │ │ │ └── message.png
│ │ │ │ │ ├── layers.json
│ │ │ │ │ └── layers.json.js
│ │ │ │ ├── slider
│ │ │ │ │ ├── framerps.log
│ │ │ │ │ ├── images
│ │ │ │ │ │ ├── Bg.png
│ │ │ │ │ │ ├── Card.png
│ │ │ │ │ │ ├── Paginator.png
│ │ │ │ │ │ ├── card1.png
│ │ │ │ │ │ ├── card2.png
│ │ │ │ │ │ └── card3.png
│ │ │ │ │ ├── layers.json
│ │ │ │ │ └── layers.json.js
│ │ │ │ └── swipe
│ │ │ │ │ ├── framerps.log
│ │ │ │ │ ├── images
│ │ │ │ │ ├── Navigation_Bar.png
│ │ │ │ │ ├── bg.png
│ │ │ │ │ ├── delete.png
│ │ │ │ │ └── message.png
│ │ │ │ │ ├── layers.json
│ │ │ │ │ └── layers.json.js
│ │ │ └── index.html
│ │ └── watch.framer
│ │ │ ├── .temp.html
│ │ │ ├── app.coffee
│ │ │ ├── framer
│ │ │ ├── backups
│ │ │ │ └── backup-1427673752.coffee
│ │ │ ├── coffee-script.js
│ │ │ ├── config.json
│ │ │ ├── framer.generated.js
│ │ │ ├── framer.init.js
│ │ │ ├── framer.js
│ │ │ ├── framer.js.map
│ │ │ ├── framer.modules.js
│ │ │ ├── images
│ │ │ │ ├── background.png
│ │ │ │ ├── cursor.png
│ │ │ │ ├── cursor@2x.png
│ │ │ │ ├── icon-120.png
│ │ │ │ ├── icon-152.png
│ │ │ │ ├── icon-76.png
│ │ │ │ ├── icon-arrow.png
│ │ │ │ ├── icon-arrow@2x.png
│ │ │ │ ├── icon-close.png
│ │ │ │ ├── icon-close@2x.png
│ │ │ │ ├── icon-framer.png
│ │ │ │ ├── icon-framer@2x.png
│ │ │ │ ├── icon-share.png
│ │ │ │ └── icon-share@2x.png
│ │ │ ├── mirror.css
│ │ │ ├── style.css
│ │ │ └── version
│ │ │ ├── images
│ │ │ ├── example4_bg.png
│ │ │ ├── example4_icon.png
│ │ │ └── framer-icon.png
│ │ │ ├── imported
│ │ │ ├── bg
│ │ │ │ ├── framerps.log
│ │ │ │ ├── images
│ │ │ │ │ └── bg.png
│ │ │ │ ├── layers.json
│ │ │ │ └── layers.json.js
│ │ │ ├── example4_watch
│ │ │ │ ├── images
│ │ │ │ │ ├── button-A20C5081-0F6C-42FD-9F86-9D9AC72FE6B5.png
│ │ │ │ │ └── content-E4135DDC-AD25-4EA6-93E8-F1B8774F93AD.png
│ │ │ │ ├── layers.json
│ │ │ │ └── layers.json.js
│ │ │ ├── icon
│ │ │ │ ├── framerps.log
│ │ │ │ ├── images
│ │ │ │ │ └── icon.png
│ │ │ │ ├── layers.json
│ │ │ │ └── layers.json.js
│ │ │ └── watchapp
│ │ │ │ ├── framerps.log
│ │ │ │ ├── images
│ │ │ │ ├── content-2.png
│ │ │ │ ├── content.png
│ │ │ │ └── head.png
│ │ │ │ ├── layers.json
│ │ │ │ └── layers.json.js
│ │ │ └── index.html
│ ├── pngs
│ │ ├── example4_bg.png
│ │ └── example4_icon.png
│ ├── psds
│ │ ├── example1_popup.psd
│ │ ├── example2_dropdown.psd
│ │ ├── example3_swipe.psd
│ │ ├── example4_icon.psd
│ │ └── example4_watch.psd
│ └── sketch
│ │ ├── example1_popup.sketch
│ │ ├── example2_dropdown.sketch
│ │ ├── example3_swipe.sketch
│ │ └── example4_watch.sketch
├── book.epub
└── book.pdf
└── src
├── book.md
├── cover.jpg
├── cover.pdf
├── cover.psd
├── epub.css
└── layout.latex
/build.sh:
--------------------------------------------------------------------------------
1 | ./epub.sh
2 | ./pdf.sh
3 | tar -zcvf coffeescript_for_framerjs.tar.gz pkg
--------------------------------------------------------------------------------
/coffeescript_for_framerjs.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/coffeescript_for_framerjs.tar.gz
--------------------------------------------------------------------------------
/epub.sh:
--------------------------------------------------------------------------------
1 | pandoc src/book.md -o pkg/book.epub --epub-cover-image="src/cover.jpg" --epub-stylesheet="src/epub.css" --toc
--------------------------------------------------------------------------------
/images/img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/images/img1.png
--------------------------------------------------------------------------------
/images/img10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/images/img10.png
--------------------------------------------------------------------------------
/images/img11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/images/img11.png
--------------------------------------------------------------------------------
/images/img12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/images/img12.png
--------------------------------------------------------------------------------
/images/img2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/images/img2.png
--------------------------------------------------------------------------------
/images/img3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/images/img3.png
--------------------------------------------------------------------------------
/images/img4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/images/img4.png
--------------------------------------------------------------------------------
/images/img5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/images/img5.png
--------------------------------------------------------------------------------
/images/img6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/images/img6.png
--------------------------------------------------------------------------------
/images/img7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/images/img7.png
--------------------------------------------------------------------------------
/images/img8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/images/img8.png
--------------------------------------------------------------------------------
/images/img9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/images/img9.png
--------------------------------------------------------------------------------
/pdf.sh:
--------------------------------------------------------------------------------
1 | pandoc src/book.md --toc --listings -o src/book.tmp.latex
2 | pandoc src/book.tmp.latex -o src/book.tmp.pdf --template="src/layout.latex" --listings --toc
3 | pdftk src/cover.pdf src/book.tmp.pdf cat output pkg/book.pdf
4 | rm src/book.tmp.pdf src/book.tmp.latex
5 |
--------------------------------------------------------------------------------
/pkg/assets/framer/cards.framer/.gitignore:
--------------------------------------------------------------------------------
1 | # Default Framer gitignore file
2 |
3 | # Mac specific
4 | .DS_Store
5 | .AppleDouble
6 | .LSOverride
7 |
8 | # Icon must end with two \r
9 | Icon
10 |
11 | # Thumbnails
12 | ._*
13 |
14 | # Files that might appear on external disk
15 | .Spotlight-V100
16 | .Trashes
17 |
18 | # Directories potentially created on remote AFP share
19 | .AppleDB
20 | .AppleDesktop
21 | Network Trash Folder
22 | Temporary Items
23 | .apdisk
24 |
25 | # Framer specific
26 | .temp.html
27 | framer/*.old.*
28 | framer/backup.coffee
29 | framer/backup/*
30 | framer/.*.hash
--------------------------------------------------------------------------------
/pkg/assets/framer/cards.framer/app.coffee:
--------------------------------------------------------------------------------
1 | colors = ["#f1c40f", "#2ecc71", "#1abc9c", "#3498db", "#9b59b6"]
2 |
3 | w = Framer.Device.screen.width
4 | h = Framer.Device.screen.height
5 |
6 | for i in [0..4]
7 | layer = new Layer
8 | width: Framer.Device.screen.width
9 | height: Framer.Device.screen.height
10 | y: 100 * i + Framer.Device.screen.height
11 | borderRadius: 50
12 | backgroundColor: colors[i]
13 | layer.animate
14 | properties:
15 | y: 100 * i
16 | delay: i * 0.2
17 | time: .2
18 | curve:"spring(200,30)"
19 |
20 |
--------------------------------------------------------------------------------
/pkg/assets/framer/cards.framer/framer/backups/backup-1426979838.coffee:
--------------------------------------------------------------------------------
1 | colors = ["#f1c40f", "#2ecc71", "#1abc9c", "#3498db", "#9b59b6"]
2 |
3 | w = Framer.Device.screen.width
4 | h = Framer.Device.screen.height
5 |
6 | for i in [0..4]
7 | layer = new Layer
8 | width: Framer.Device.screen.width
9 | height: Framer.Device.screen.height
10 | y: 100 * i + Framer.Device.screen.height
11 | borderRadius: 50
12 | backgroundColor: colors[i]
13 |
14 | layer.animate
15 | properties:
16 | y: 100 * i
17 | delay: i * 0.2
18 | time: .2
19 | curve:"spring(200,30)"
--------------------------------------------------------------------------------
/pkg/assets/framer/cards.framer/framer/backups/backup-1427239449.coffee:
--------------------------------------------------------------------------------
1 | colors = ["#f1c40f", "#2ecc71", "#1abc9c", "#3498db", "#9b59b6"]
2 |
3 | w = Framer.Device.screen.width
4 | h = Framer.Device.screen.height
5 |
6 | for i in [0..4]
7 | layer = new Layer
8 | width: Framer.Device.screen.width
9 | height: Framer.Device.screen.height
10 | y: 100 * i + Framer.Device.screen.height
11 | borderRadius: 50
12 | backgroundColor: colors[i]
13 | layer.animate
14 | properties:
15 | y: 100 * i
16 | delay: i * 0.2
17 | time: .2
18 | curve:"spring(200,30)"
19 |
20 |
--------------------------------------------------------------------------------
/pkg/assets/framer/cards.framer/framer/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "device" : "iPhone 5S Space Gray",
3 | "sharedPrototype" : 1,
4 | "deviceOrientation" : 0,
5 | "contentScale" : 1,
6 | "deviceType" : "iphone-6-silver",
7 | "updateDelay" : 0.3,
8 | "deviceScale" : -1,
9 | "delay" : 0.3
10 | }
--------------------------------------------------------------------------------
/pkg/assets/framer/cards.framer/framer/framer.init.js:
--------------------------------------------------------------------------------
1 | (function() {
2 |
3 | function isFileLoadingAllowed() {
4 | return (window.location.protocol.indexOf("file") == -1)
5 | }
6 |
7 | function isHomeScreened() {
8 | return ("standalone" in window.navigator) && window.navigator.standalone == true
9 | }
10 |
11 | function isCompatibleBrowser() {
12 | return Utils.isWebKit()
13 | }
14 |
15 | var alertNode;
16 |
17 | function dismissAlert() {
18 | alertNode.parentElement.removeChild(alertNode)
19 | loadProject()
20 | }
21 |
22 | function showAlert(html) {
23 |
24 | alertNode = document.createElement("div")
25 |
26 | alertNode.classList.add("framerAlertBackground")
27 | alertNode.innerHTML = html
28 |
29 | document.addEventListener("DOMContentLoaded", function(event) {
30 | document.body.appendChild(alertNode)
31 | })
32 |
33 | window.dismissAlert = dismissAlert;
34 | }
35 |
36 | function showBrowserAlert() {
37 | var html = ""
38 | html += "
"
39 | html += "
Error: Not A WebKit Browser "
40 | html += "Your browser is not supported.
Please use Safari or Chrome.
"
41 | html += "
Try anyway "
42 | html += "
"
43 |
44 | showAlert(html)
45 | }
46 |
47 | function showFileLoadingAlert() {
48 | var html = ""
49 | html += ""
50 | html += "
Error: Local File Restrictions "
51 | html += "Preview this prototype with Framer Mirror or learn more about "
52 | html += "
file restrictions .
"
53 | html += "
Try anyway "
54 | html += "
"
55 |
56 | showAlert(html)
57 | }
58 |
59 | function showHomeScreenAlert() {
60 |
61 | link = document.createElement("link");
62 | link.href = "framer/mirror.css"
63 | link.type = "text/css"
64 | link.rel = "stylesheet"
65 | link.media = "screen"
66 |
67 | document.addEventListener("DOMContentLoaded", function(event) {
68 | document.getElementsByTagName("head")[0].appendChild(link)
69 | })
70 |
71 | var html = ""
72 | html += " "
73 | html += ""
74 | html += "Install Prototype "
75 | html += "Tap
Share
, then choose 'Add to Home Screen' "
76 | html += ""
77 | html += " "
78 |
79 | showAlert(html)
80 | }
81 |
82 | function loadProject() {
83 | CoffeeScript.load("app.coffee")
84 | }
85 |
86 | function setDefaultPageTitle() {
87 | // If no title was set we set it to the project folder name so
88 | // you get a nice name on iOS if you bookmark to desktop.
89 | document.addEventListener("DOMContentLoaded", function() {
90 | if (document.title == "") {
91 | if (window.FramerStudioInfo && window.FramerStudioInfo.documentTitle) {
92 | document.title = window.FramerStudioInfo.documentTitle
93 | } else {
94 | document.title = window.location.pathname.replace(/\//g, "")
95 | }
96 | }
97 | })
98 | }
99 |
100 | function init() {
101 |
102 | if (Utils.isFramerStudio()) {
103 | return
104 | }
105 |
106 | setDefaultPageTitle()
107 |
108 | if (!isCompatibleBrowser()) {
109 | return showBrowserAlert()
110 | }
111 |
112 | if (!isFileLoadingAllowed()) {
113 | return showFileLoadingAlert()
114 | }
115 |
116 | // if (Utils.isMobile() && !isHomeScreened()) {
117 | // return showHomeScreenAlert()
118 | // }
119 |
120 | loadProject()
121 |
122 | }
123 |
124 | init()
125 |
126 | })()
127 |
--------------------------------------------------------------------------------
/pkg/assets/framer/cards.framer/framer/framer.modules.js:
--------------------------------------------------------------------------------
1 | require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/pkg/assets/framer/cards.framer/modules/myModule.coffee:
--------------------------------------------------------------------------------
1 | # Add the folowing line to your project in Framer Studio.
2 | # module = require "module"
3 | # Reference the contents by name, like module.myFunc() or module.myVar
4 |
5 | exports.myVar = "myVariable"
6 |
7 | exports.myFunction = ->
8 | print "myFunction is running"
9 |
10 | exports.myArray = [1, 2, 3]
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/.temp.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/app.coffee:
--------------------------------------------------------------------------------
1 | # This imports all the layers for "example2_dropdown" into example2_dropdownLayers1
2 | file = Framer.Importer.load "imported/example2_dropdown"
3 |
4 | original_width = file.menu_content.width
5 | original_height = file.menu_content.height
6 |
7 | file.menu_content.width = 0
8 | file.menu_content.height = 0
9 |
10 | file.menu_content.states.add
11 | open:
12 | width: original_width
13 | height: original_height
14 | closed:
15 | width: 0
16 | height: 0
17 |
18 | file.menu_content.states.animationOptions =
19 | time: 0.2
20 | curve: "ease-out"
21 |
22 | file.menu_icon.on Events.Click, ->
23 | file.menu_content.states.next()
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/backups/backup-1427673752.coffee:
--------------------------------------------------------------------------------
1 | # This imports all the layers for "example2_dropdown" into example2_dropdownLayers1
2 | file = Framer.Importer.load "imported/example2_dropdown"
3 |
4 | original_width = file.menu_content.width
5 | original_height = file.menu_content.height
6 |
7 | file.menu_content.width = 0
8 | file.menu_content.height = 0
9 |
10 | file.menu_content.states.add
11 | open:
12 | width: original_width
13 | height: original_height
14 | closed:
15 | width: 0
16 | height: 0
17 |
18 | file.menu_content.states.animationOptions =
19 | time: 0.2
20 | curve: "ease-out"
21 |
22 | file.menu_icon.on Events.Click, ->
23 | file.menu_content.states.next()
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "device" : "iPhone 5S Space Gray",
3 | "sharedPrototype" : 1,
4 | "deviceOrientation" : 0,
5 | "contentScale" : 1,
6 | "deviceType" : "iphone-6-gold-hand",
7 | "updateDelay" : 0.3,
8 | "deviceScale" : -1,
9 | "delay" : 0.3
10 | }
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/framer.init.js:
--------------------------------------------------------------------------------
1 | (function() {
2 |
3 | function isFileLoadingAllowed() {
4 | return (window.location.protocol.indexOf("file") == -1)
5 | }
6 |
7 | function isHomeScreened() {
8 | return ("standalone" in window.navigator) && window.navigator.standalone == true
9 | }
10 |
11 | function isCompatibleBrowser() {
12 | return Utils.isWebKit()
13 | }
14 |
15 | var alertNode;
16 |
17 | function dismissAlert() {
18 | alertNode.parentElement.removeChild(alertNode)
19 | loadProject()
20 | }
21 |
22 | function showAlert(html) {
23 |
24 | alertNode = document.createElement("div")
25 |
26 | alertNode.classList.add("framerAlertBackground")
27 | alertNode.innerHTML = html
28 |
29 | document.addEventListener("DOMContentLoaded", function(event) {
30 | document.body.appendChild(alertNode)
31 | })
32 |
33 | window.dismissAlert = dismissAlert;
34 | }
35 |
36 | function showBrowserAlert() {
37 | var html = ""
38 | html += ""
39 | html += "
Error: Not A WebKit Browser "
40 | html += "Your browser is not supported.
Please use Safari or Chrome.
"
41 | html += "
Try anyway "
42 | html += "
"
43 |
44 | showAlert(html)
45 | }
46 |
47 | function showFileLoadingAlert() {
48 | var html = ""
49 | html += ""
50 | html += "
Error: Local File Restrictions "
51 | html += "Preview this prototype with Framer Mirror or learn more about "
52 | html += "
file restrictions .
"
53 | html += "
Try anyway "
54 | html += "
"
55 |
56 | showAlert(html)
57 | }
58 |
59 | function showHomeScreenAlert() {
60 |
61 | link = document.createElement("link");
62 | link.href = "framer/mirror.css"
63 | link.type = "text/css"
64 | link.rel = "stylesheet"
65 | link.media = "screen"
66 |
67 | document.addEventListener("DOMContentLoaded", function(event) {
68 | document.getElementsByTagName("head")[0].appendChild(link)
69 | })
70 |
71 | var html = ""
72 | html += " "
73 | html += ""
74 | html += "Install Prototype "
75 | html += "Tap
Share
, then choose 'Add to Home Screen' "
76 | html += ""
77 | html += " "
78 |
79 | showAlert(html)
80 | }
81 |
82 | function loadProject() {
83 | CoffeeScript.load("app.coffee")
84 | }
85 |
86 | function setDefaultPageTitle() {
87 | // If no title was set we set it to the project folder name so
88 | // you get a nice name on iOS if you bookmark to desktop.
89 | document.addEventListener("DOMContentLoaded", function() {
90 | if (document.title == "") {
91 | if (window.FramerStudioInfo && window.FramerStudioInfo.documentTitle) {
92 | document.title = window.FramerStudioInfo.documentTitle
93 | } else {
94 | document.title = window.location.pathname.replace(/\//g, "")
95 | }
96 | }
97 | })
98 | }
99 |
100 | function init() {
101 |
102 | if (Utils.isFramerStudio()) {
103 | return
104 | }
105 |
106 | setDefaultPageTitle()
107 |
108 | if (!isCompatibleBrowser()) {
109 | return showBrowserAlert()
110 | }
111 |
112 | if (!isFileLoadingAllowed()) {
113 | return showFileLoadingAlert()
114 | }
115 |
116 | // if (Utils.isMobile() && !isHomeScreened()) {
117 | // return showHomeScreenAlert()
118 | // }
119 |
120 | loadProject()
121 |
122 | }
123 |
124 | init()
125 |
126 | })()
127 |
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/framer.modules.js:
--------------------------------------------------------------------------------
1 | // This file will contain generated modules from the project/modules directory
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/images/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/framer/images/background.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/images/cursor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/framer/images/cursor.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/images/cursor@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/framer/images/cursor@2x.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/images/icon-120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/framer/images/icon-120.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/images/icon-152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/framer/images/icon-152.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/images/icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/framer/images/icon-76.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/images/icon-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/framer/images/icon-arrow.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/images/icon-arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/framer/images/icon-arrow@2x.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/images/icon-close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/framer/images/icon-close.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/images/icon-close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/framer/images/icon-close@2x.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/images/icon-framer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/framer/images/icon-framer.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/images/icon-framer@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/framer/images/icon-framer@2x.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/images/icon-share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/framer/images/icon-share.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/images/icon-share@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/framer/images/icon-share@2x.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/mirror.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | border: none;
5 | -webkit-user-select: none;
6 | -webkit-tap-highlight-color: rgba(0,0,0,0);
7 | }
8 | html, body, .wrapper {
9 | height: 100%;
10 | }
11 | body {
12 | background: #fff;
13 | font: 300 20px "Helvetica Neue", Helvetica, sans-serif;
14 | overflow: hidden;
15 | cursor: url('images/cursor.png') 39 39, auto;
16 | text-align: center;
17 | position: relative;
18 | -webkit-font-smoothing: antialiased;
19 | text-rendering: optimizeLegibility;
20 | color: #333740;
21 | }
22 | a {
23 | color: gray;
24 | }
25 | .framerAlert {
26 | font: 12px/1.6em Menlo;
27 | margin: 10px;
28 | color: gray;
29 | }
30 | ::-webkit-scrollbar {
31 | display: none;
32 | }
33 | .wrapper {
34 | width:100%;
35 | max-width: 240px;
36 | margin: 0 auto;
37 | padding-top: 38%;
38 | position: relative;
39 | }
40 | /* Text */
41 | h1 {
42 | font-size: 22px;
43 | font-weight: 400;
44 | margin-top: 0px;
45 | line-height: 1.5;
46 | color: black;
47 |
48 | margin-bottom: 8px;
49 | margin-top: 16px;
50 | }
51 | h2 {
52 | font-size: 14px;
53 | font-weight: 400;
54 | color: #788594;
55 | }
56 | hr {
57 | border: none; width: 100%;
58 | border-bottom: 1px solid #EFF1F3;
59 | display: block;
60 | margin: 40px auto 32px auto;
61 | }
62 | p {
63 | display: inline-block;
64 | line-height: 1.5;
65 | }
66 | figure {
67 | display: inline-block;
68 | }
69 | .share {
70 | color: #007AFF;
71 | display: inline-block;
72 | margin-left: 8px;
73 | }
74 | .icon-share {
75 | margin-right: 0px;
76 | position: relative;
77 | top:0.5px;
78 | }
79 | .arrow {
80 | position: absolute;
81 | max-width: 240px;
82 | width: 100%;
83 | left:50%; margin-left:-120px;
84 | bottom: 24%;
85 | }
86 | .arrow figure {
87 | -webkit-animation: bounce 1.25s ease infinite;
88 | -moz-animation: bounce 1.25s ease infinite;
89 | -o-animation: bounce 1.25s ease infinite;
90 | animation: bounce 1.25s ease infinite;
91 | -webkit-transform-origin: center bottom;
92 | -ms-transform-origin: center bottom;
93 | transform-origin: center bottom;
94 | }
95 | /* Arrow animation */
96 | @-webkit-keyframes bounce {
97 | 0%, 100% {
98 | -webkit-transform: translate3d(0,0,0);
99 | transform: translate3d(0,0,0);
100 | }
101 | 50% {
102 | -webkit-transform: translate3d(0, -16px, 0);
103 | transform: translate3d(0, -16px, 0);
104 | }
105 | }
106 | @keyframes bounce {
107 | 0%, 100% {
108 | -webkit-transform: translate3d(0,0,0);
109 | transform: translate3d(0,0,0);
110 | }
111 | 50% {
112 | -webkit-transform: translate3d(0, -16px, 0);
113 | transform: translate3d(0, -16px, 0);
114 | }
115 | }
116 | /* Icons */
117 | .icon-close,
118 | .icon-framer,
119 | .icon-share,
120 | .icon-arrow {
121 | background-size: cover;
122 | }
123 | .icon-close {
124 | background-image: url("images/icon-close.png");
125 | position: absolute;
126 | top:16px;
127 | right:16px;
128 | cursor: pointer;
129 | cursor: hand;
130 | width: 18px;
131 | height: 18px;
132 | }
133 | .icon-framer {
134 | background-image: url("images/icon-framer.png");
135 | width: 60px;
136 | height: 60px;
137 | }
138 | .icon-share {
139 | background-image: url("images/icon-share.png");
140 | width: 11px;
141 | height: 18px;
142 | }
143 | .icon-arrow {
144 | background-image: url("images/icon-arrow.png");
145 | width: 18px;
146 | height: 30px;
147 | }
148 | /* Retina Icons */
149 | @media screen and (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
150 | .icon-close {
151 | background-image: url("images/icon-close@2x.png");
152 | }
153 | .icon-framer {
154 | background-image: url("images/icon-framer@2x.png");
155 | }
156 | .icon-share {
157 | background-image: url("images/icon-share@2x.png");
158 | }
159 | .icon-arrow {
160 | background-image: url("images/icon-arrow@2x.png");
161 | }
162 | }
163 | /* Avoid overflow scrolling when viewing in Portrait */
164 | @media screen and (orientation:portrait) {
165 | html, body, .wrapper {
166 | overflow: hidden;
167 | }
168 | }
169 | /* iPad share icon is positioned in the navigation bar */
170 | @media screen and (min-width: 576px){
171 | .arrow {
172 | display: none;
173 | }
174 | .wrapper {
175 | padding-bottom: 25%;
176 | }
177 | }
178 | /* When it landscape, hide arrow and adjust spacing */
179 | @media screen and (orientation:landscape) {
180 | .arrow {
181 | display: none;
182 | }
183 | .wrapper {
184 | padding-top: 10%;
185 | padding-bottom: 0;
186 | }
187 | }
188 | /* iPhone 6 Portrait */
189 | @media screen and (min-device-width:375px) and (max-device-width:667px) and (-webkit-min-device-pixel-ratio:2) and (orientation:portrait) {
190 | .wrapper {
191 | padding-top: 48%;
192 | }
193 | .arrow {
194 | bottom: 27%;
195 | }
196 | }
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | border: none;
5 | -webkit-user-select: none;
6 | -webkit-tap-highlight-color: rgba(0,0,0,0);
7 | }
8 |
9 | body {
10 | background-color: #fff;
11 | font: 28px/1em "Helvetica";
12 | color: #FFF;
13 | overflow: hidden;
14 | cursor: url('images/cursor.png') 39 39, auto;
15 | }
16 |
17 | a {
18 | color: gray;
19 | }
20 |
21 | .framerAlertBackground {
22 | position: absolute; top:0px; left:0px; right:0px; bottom:0px;
23 | z-index: 1000;
24 | background-color: #fff;
25 | }
26 |
27 | .framerAlert {
28 | font:400 14px/1.4 "Helvetica Neue", Helvetica, Arial, sans-serif;
29 | -webkit-font-smoothing:antialiased;
30 | color:#616367; text-align:center;
31 | position: absolute; top:40%; left:50%; width:260px; margin-left:-130px;
32 | }
33 | .framerAlert strong { font-weight:500; color:#000; margin-bottom:8px; display:block; }
34 | .framerAlert a { color:#28AFFA; }
35 | .framerAlert .btn {
36 | font-weight:500; text-decoration:none; line-height:1;
37 | display:inline-block; padding:6px 12px 7px 12px;
38 | border-radius:3px; margin-top:12px;
39 | background:#28AFFA; color:#fff;
40 | }
41 |
42 | ::-webkit-scrollbar {
43 | display: none;
44 | }
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/framer/version:
--------------------------------------------------------------------------------
1 | 1
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/images/framer-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/images/framer-icon.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/imported/dropdown/framerps.log:
--------------------------------------------------------------------------------
1 | Could not read previous export (for caching), doing full export.
2 | Top_bar: Exporting image
3 | menuIcon: Exporting image
4 | menuContent: Exporting image
5 | 4 views changed
6 | Success: /Users/tessathornton/Code/dropdown.framer/imported/dropdown
7 |
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/imported/dropdown/images/Top_bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/imported/dropdown/images/Top_bar.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/imported/dropdown/images/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/imported/dropdown/images/bg.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/imported/dropdown/images/dividers.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/imported/dropdown/images/dividers.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/imported/dropdown/images/menuContent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/imported/dropdown/images/menuContent.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/imported/dropdown/images/menuIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/imported/dropdown/images/menuIcon.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/imported/dropdown/images/text.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/imported/dropdown/images/text.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/imported/dropdown/layers.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": 19,
4 | "name": "Dropdown",
5 | "layerFrame": {
6 | "x": 0,
7 | "y": 0,
8 | "width": 641,
9 | "height": 609
10 | },
11 | "maskFrame": null,
12 | "image": null,
13 | "imageType": null,
14 | "children": [
15 | {
16 | "id": 18,
17 | "name": "Top_bar",
18 | "layerFrame": {
19 | "x": 0,
20 | "y": 0,
21 | "width": 641,
22 | "height": 609
23 | },
24 | "maskFrame": null,
25 | "image": {
26 | "path": "images/Top_bar.png",
27 | "frame": {
28 | "x": 0,
29 | "y": 0,
30 | "width": 641,
31 | "height": 129
32 | }
33 | },
34 | "imageType": "png",
35 | "children": [
36 | {
37 | "id": 20,
38 | "name": "menuIcon",
39 | "layerFrame": {
40 | "x": 0,
41 | "y": 0,
42 | "width": 641,
43 | "height": 609
44 | },
45 | "maskFrame": null,
46 | "image": {
47 | "path": "images/menuIcon.png",
48 | "frame": {
49 | "x": 11,
50 | "y": 49,
51 | "width": 66,
52 | "height": 66
53 | }
54 | },
55 | "imageType": "png",
56 | "children": [
57 |
58 | ],
59 | "modification": "220070460"
60 | }
61 | ],
62 | "modification": "803375416"
63 | },
64 | {
65 | "id": 22,
66 | "name": "menuContent",
67 | "layerFrame": {
68 | "x": 0,
69 | "y": 0,
70 | "width": 641,
71 | "height": 609
72 | },
73 | "maskFrame": null,
74 | "image": {
75 | "path": "images/menuContent.png",
76 | "frame": {
77 | "x": 0,
78 | "y": 128,
79 | "width": 640,
80 | "height": 481
81 | }
82 | },
83 | "imageType": "png",
84 | "children": [
85 |
86 | ],
87 | "modification": "106206454"
88 | }
89 | ],
90 | "modification": "1231201625"
91 | }
92 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/imported/dropdown/layers.json.js:
--------------------------------------------------------------------------------
1 | window.__imported__ = window.__imported__ || {};
2 | window.__imported__["dropdown/layers.json.js"] = [
3 | {
4 | "id": 19,
5 | "name": "Dropdown",
6 | "layerFrame": {
7 | "x": 0,
8 | "y": 0,
9 | "width": 641,
10 | "height": 609
11 | },
12 | "maskFrame": null,
13 | "image": null,
14 | "imageType": null,
15 | "children": [
16 | {
17 | "id": 18,
18 | "name": "Top_bar",
19 | "layerFrame": {
20 | "x": 0,
21 | "y": 0,
22 | "width": 641,
23 | "height": 609
24 | },
25 | "maskFrame": null,
26 | "image": {
27 | "path": "images/Top_bar.png",
28 | "frame": {
29 | "x": 0,
30 | "y": 0,
31 | "width": 641,
32 | "height": 129
33 | }
34 | },
35 | "imageType": "png",
36 | "children": [
37 | {
38 | "id": 20,
39 | "name": "menuIcon",
40 | "layerFrame": {
41 | "x": 0,
42 | "y": 0,
43 | "width": 641,
44 | "height": 609
45 | },
46 | "maskFrame": null,
47 | "image": {
48 | "path": "images/menuIcon.png",
49 | "frame": {
50 | "x": 11,
51 | "y": 49,
52 | "width": 66,
53 | "height": 66
54 | }
55 | },
56 | "imageType": "png",
57 | "children": [
58 |
59 | ],
60 | "modification": "220070460"
61 | }
62 | ],
63 | "modification": "803375416"
64 | },
65 | {
66 | "id": 22,
67 | "name": "menuContent",
68 | "layerFrame": {
69 | "x": 0,
70 | "y": 0,
71 | "width": 641,
72 | "height": 609
73 | },
74 | "maskFrame": null,
75 | "image": {
76 | "path": "images/menuContent.png",
77 | "frame": {
78 | "x": 0,
79 | "y": 128,
80 | "width": 640,
81 | "height": 481
82 | }
83 | },
84 | "imageType": "png",
85 | "children": [
86 |
87 | ],
88 | "modification": "106206454"
89 | }
90 | ],
91 | "modification": "1231201625"
92 | }
93 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/imported/example2_dropdown/images/menu_content-F690BFCA-B7DF-4F9B-9338-31D759DE120B.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/imported/example2_dropdown/images/menu_content-F690BFCA-B7DF-4F9B-9338-31D759DE120B.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/imported/example2_dropdown/images/menu_icon-2A7FE607-FA78-4433-9B34-0C8F0F5F0DD3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/imported/example2_dropdown/images/menu_icon-2A7FE607-FA78-4433-9B34-0C8F0F5F0DD3.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/imported/example2_dropdown/images/top_bar-4ADEAF2E-859C-4DAC-A1C2-31E6EA30D173.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/dropdown.framer/imported/example2_dropdown/images/top_bar-4ADEAF2E-859C-4DAC-A1C2-31E6EA30D173.png
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/imported/example2_dropdown/layers.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "maskFrame" : null,
4 | "id" : "9834C19A-78C7-4FFD-8344-CB55DC1C0834",
5 | "visible" : true,
6 | "children" : [
7 | {
8 | "maskFrame" : null,
9 | "id" : "4ADEAF2E-859C-4DAC-A1C2-31E6EA30D173",
10 | "visible" : true,
11 | "children" : [
12 | {
13 | "maskFrame" : null,
14 | "id" : "2A7FE607-FA78-4433-9B34-0C8F0F5F0DD3",
15 | "visible" : true,
16 | "children" : [
17 |
18 | ],
19 | "image" : {
20 | "path" : "images\/menu_icon-2A7FE607-FA78-4433-9B34-0C8F0F5F0DD3.png",
21 | "frame" : {
22 | "y" : 66,
23 | "x" : 29,
24 | "width" : 39,
25 | "height" : 29
26 | }
27 | },
28 | "imageType" : "png",
29 | "layerFrame" : {
30 | "y" : 66,
31 | "x" : 29,
32 | "width" : 39,
33 | "height" : 29
34 | },
35 | "name" : "menu_icon"
36 | }
37 | ],
38 | "image" : {
39 | "path" : "images\/top_bar-4ADEAF2E-859C-4DAC-A1C2-31E6EA30D173.png",
40 | "frame" : {
41 | "y" : -1,
42 | "x" : 0,
43 | "width" : 752,
44 | "height" : 129
45 | }
46 | },
47 | "imageType" : "png",
48 | "layerFrame" : {
49 | "y" : -1,
50 | "x" : 0,
51 | "width" : 752,
52 | "height" : 129
53 | },
54 | "name" : "top_bar"
55 | },
56 | {
57 | "maskFrame" : null,
58 | "id" : "F690BFCA-B7DF-4F9B-9338-31D759DE120B",
59 | "visible" : true,
60 | "children" : [
61 |
62 | ],
63 | "image" : {
64 | "path" : "images\/menu_content-F690BFCA-B7DF-4F9B-9338-31D759DE120B.png",
65 | "frame" : {
66 | "y" : 128,
67 | "x" : 0,
68 | "width" : 753,
69 | "height" : 481
70 | }
71 | },
72 | "imageType" : "png",
73 | "layerFrame" : {
74 | "y" : 128,
75 | "x" : 0,
76 | "width" : 753,
77 | "height" : 481
78 | },
79 | "name" : "menu_content"
80 | }
81 | ],
82 | "image" : {
83 | "path" : "images\/dropdown-9834C19A-78C7-4FFD-8344-CB55DC1C0834.png",
84 | "frame" : {
85 | "y" : -1,
86 | "x" : 0,
87 | "width" : 753,
88 | "height" : 610
89 | }
90 | },
91 | "imageType" : "png",
92 | "layerFrame" : {
93 | "y" : -1,
94 | "x" : 0,
95 | "width" : 753,
96 | "height" : 610
97 | },
98 | "name" : "dropdown"
99 | }
100 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/imported/example2_dropdown/layers.json.js:
--------------------------------------------------------------------------------
1 | window.__imported__ = window.__imported__ || {};
2 | window.__imported__["example2_dropdown/layers.json.js"] = [
3 | {
4 | "maskFrame" : null,
5 | "id" : "9834C19A-78C7-4FFD-8344-CB55DC1C0834",
6 | "visible" : true,
7 | "children" : [
8 | {
9 | "maskFrame" : null,
10 | "id" : "4ADEAF2E-859C-4DAC-A1C2-31E6EA30D173",
11 | "visible" : true,
12 | "children" : [
13 | {
14 | "maskFrame" : null,
15 | "id" : "2A7FE607-FA78-4433-9B34-0C8F0F5F0DD3",
16 | "visible" : true,
17 | "children" : [
18 |
19 | ],
20 | "image" : {
21 | "path" : "images\/menu_icon-2A7FE607-FA78-4433-9B34-0C8F0F5F0DD3.png",
22 | "frame" : {
23 | "y" : 66,
24 | "x" : 29,
25 | "width" : 39,
26 | "height" : 29
27 | }
28 | },
29 | "imageType" : "png",
30 | "layerFrame" : {
31 | "y" : 66,
32 | "x" : 29,
33 | "width" : 39,
34 | "height" : 29
35 | },
36 | "name" : "menu_icon"
37 | }
38 | ],
39 | "image" : {
40 | "path" : "images\/top_bar-4ADEAF2E-859C-4DAC-A1C2-31E6EA30D173.png",
41 | "frame" : {
42 | "y" : -1,
43 | "x" : 0,
44 | "width" : 752,
45 | "height" : 129
46 | }
47 | },
48 | "imageType" : "png",
49 | "layerFrame" : {
50 | "y" : -1,
51 | "x" : 0,
52 | "width" : 752,
53 | "height" : 129
54 | },
55 | "name" : "top_bar"
56 | },
57 | {
58 | "maskFrame" : null,
59 | "id" : "F690BFCA-B7DF-4F9B-9338-31D759DE120B",
60 | "visible" : true,
61 | "children" : [
62 |
63 | ],
64 | "image" : {
65 | "path" : "images\/menu_content-F690BFCA-B7DF-4F9B-9338-31D759DE120B.png",
66 | "frame" : {
67 | "y" : 128,
68 | "x" : 0,
69 | "width" : 753,
70 | "height" : 481
71 | }
72 | },
73 | "imageType" : "png",
74 | "layerFrame" : {
75 | "y" : 128,
76 | "x" : 0,
77 | "width" : 753,
78 | "height" : 481
79 | },
80 | "name" : "menu_content"
81 | }
82 | ],
83 | "image" : {
84 | "path" : "images\/dropdown-9834C19A-78C7-4FFD-8344-CB55DC1C0834.png",
85 | "frame" : {
86 | "y" : -1,
87 | "x" : 0,
88 | "width" : 753,
89 | "height" : 610
90 | }
91 | },
92 | "imageType" : "png",
93 | "layerFrame" : {
94 | "y" : -1,
95 | "x" : 0,
96 | "width" : 753,
97 | "height" : 610
98 | },
99 | "name" : "dropdown"
100 | }
101 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/dropdown.framer/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/pkg/assets/framer/popup.framer/.gitignore:
--------------------------------------------------------------------------------
1 | # Default Framer gitignore file
2 |
3 | # Mac specific
4 | .DS_Store
5 | .AppleDouble
6 | .LSOverride
7 |
8 | # Icon must end with two \r
9 | Icon
10 |
11 | # Thumbnails
12 | ._*
13 |
14 | # Files that might appear on external disk
15 | .Spotlight-V100
16 | .Trashes
17 |
18 | # Directories potentially created on remote AFP share
19 | .AppleDB
20 | .AppleDesktop
21 | Network Trash Folder
22 | Temporary Items
23 | .apdisk
24 |
25 | # Framer specific
26 | .temp.html
27 | framer/*.old.*
28 | framer/backup.coffee
29 | framer/backup/*
30 | framer/.*.hash
--------------------------------------------------------------------------------
/pkg/assets/framer/popup.framer/app.coffee:
--------------------------------------------------------------------------------
1 | # This imports all the layers for "example1_popup" into example1_popupLayers7
2 | file = Framer.Importer.load "imported/example1_popup"
3 |
4 | height = file.popup.height
5 |
6 | file.mustache.scale = 0
7 |
8 | file.close.on Events.Click, ->
9 | file.popup.animate
10 | properties:
11 | opacity: 0
12 | y: 0 - height
13 | time: 0.3
14 | curve: "ease-in"
15 |
16 | file.popup.on Events.AnimationEnd, ->
17 | file.mustache.animate
18 | properties:
19 | scale: 1
20 | curve:"spring(200,15,0)"
21 |
22 |
--------------------------------------------------------------------------------
/pkg/assets/framer/popup.framer/framer/backups/backup-1427673752.coffee:
--------------------------------------------------------------------------------
1 | # This imports all the layers for "example1_popup" into example1_popupLayers7
2 | file = Framer.Importer.load "imported/example1_popup"
3 |
4 | height = file.popup.height
5 |
6 | file.mustache.scale = 0
7 |
8 | file.close.on Events.Click, ->
9 | file.popup.animate
10 | properties:
11 | opacity: 0
12 | y: 0 - height
13 | time: 0.3
14 | curve: "ease-in"
15 |
16 | file.popup.on Events.AnimationEnd, ->
17 | file.mustache.animate
18 | properties:
19 | scale: 1
20 | curve:"spring(200,15,0)"
21 |
22 |
--------------------------------------------------------------------------------
/pkg/assets/framer/popup.framer/framer/backups/backup-1428264184.coffee:
--------------------------------------------------------------------------------
1 | # This imports all the layers for "example1_popup" into example1_popupLayers7
2 | file = Framer.Importer.load "imported/example1_popup"
3 |
4 | height = file.popup.height
5 |
6 | file.mustache.scale = 0
7 |
8 | file.close.on Events.Click, ->
9 | file.popup.animate
10 | properties:
11 | opacity: 0
12 | y: 0 - height
13 | time: 0.3
14 | curve: "ease-in"
15 |
16 | file.popup.on Events.AnimationEnd, ->
17 | file.mustache.animate
18 | properties:
19 | scale: 1
20 | curve:"spring(200,15,0)"
21 |
22 |
--------------------------------------------------------------------------------
/pkg/assets/framer/popup.framer/framer/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "device" : "iPhone 5S Space Gray",
3 | "sharedPrototype" : 1,
4 | "deviceOrientation" : 0,
5 | "contentScale" : 1,
6 | "deviceType" : "iphone-6-gold",
7 | "updateDelay" : 0.3,
8 | "deviceScale" : -1,
9 | "delay" : 0.3
10 | }
--------------------------------------------------------------------------------
/pkg/assets/framer/popup.framer/framer/framer.init.js:
--------------------------------------------------------------------------------
1 | (function() {
2 |
3 | function isFileLoadingAllowed() {
4 | return (window.location.protocol.indexOf("file") == -1)
5 | }
6 |
7 | function isHomeScreened() {
8 | return ("standalone" in window.navigator) && window.navigator.standalone == true
9 | }
10 |
11 | function isCompatibleBrowser() {
12 | return Utils.isWebKit()
13 | }
14 |
15 | var alertNode;
16 |
17 | function dismissAlert() {
18 | alertNode.parentElement.removeChild(alertNode)
19 | loadProject()
20 | }
21 |
22 | function showAlert(html) {
23 |
24 | alertNode = document.createElement("div")
25 |
26 | alertNode.classList.add("framerAlertBackground")
27 | alertNode.innerHTML = html
28 |
29 | document.addEventListener("DOMContentLoaded", function(event) {
30 | document.body.appendChild(alertNode)
31 | })
32 |
33 | window.dismissAlert = dismissAlert;
34 | }
35 |
36 | function showBrowserAlert() {
37 | var html = ""
38 | html += ""
39 | html += "
Error: Not A WebKit Browser "
40 | html += "Your browser is not supported.
Please use Safari or Chrome.
"
41 | html += "
Try anyway "
42 | html += "
"
43 |
44 | showAlert(html)
45 | }
46 |
47 | function showFileLoadingAlert() {
48 | var html = ""
49 | html += ""
50 | html += "
Error: Local File Restrictions "
51 | html += "Preview this prototype with Framer Mirror or learn more about "
52 | html += "
file restrictions .
"
53 | html += "
Try anyway "
54 | html += "
"
55 |
56 | showAlert(html)
57 | }
58 |
59 | function showHomeScreenAlert() {
60 |
61 | link = document.createElement("link");
62 | link.href = "framer/mirror.css"
63 | link.type = "text/css"
64 | link.rel = "stylesheet"
65 | link.media = "screen"
66 |
67 | document.addEventListener("DOMContentLoaded", function(event) {
68 | document.getElementsByTagName("head")[0].appendChild(link)
69 | })
70 |
71 | var html = ""
72 | html += " "
73 | html += ""
74 | html += "Install Prototype "
75 | html += "Tap
Share
, then choose 'Add to Home Screen' "
76 | html += ""
77 | html += " "
78 |
79 | showAlert(html)
80 | }
81 |
82 | function loadProject() {
83 | CoffeeScript.load("app.coffee")
84 | }
85 |
86 | function setDefaultPageTitle() {
87 | // If no title was set we set it to the project folder name so
88 | // you get a nice name on iOS if you bookmark to desktop.
89 | document.addEventListener("DOMContentLoaded", function() {
90 | if (document.title == "") {
91 | if (window.FramerStudioInfo && window.FramerStudioInfo.documentTitle) {
92 | document.title = window.FramerStudioInfo.documentTitle
93 | } else {
94 | document.title = window.location.pathname.replace(/\//g, "")
95 | }
96 | }
97 | })
98 | }
99 |
100 | function init() {
101 |
102 | if (Utils.isFramerStudio()) {
103 | return
104 | }
105 |
106 | setDefaultPageTitle()
107 |
108 | if (!isCompatibleBrowser()) {
109 | return showBrowserAlert()
110 | }
111 |
112 | if (!isFileLoadingAllowed()) {
113 | return showFileLoadingAlert()
114 | }
115 |
116 | // if (Utils.isMobile() && !isHomeScreened()) {
117 | // return showHomeScreenAlert()
118 | // }
119 |
120 | loadProject()
121 |
122 | }
123 |
124 | init()
125 |
126 | })()
127 |
--------------------------------------------------------------------------------
/pkg/assets/framer/popup.framer/framer/framer.modules.js:
--------------------------------------------------------------------------------
1 | require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/pkg/assets/framer/popup.framer/modules/myModule.coffee:
--------------------------------------------------------------------------------
1 | # Add the folowing line to your project in Framer Studio.
2 | # module = require "module"
3 | # Reference the contents by name, like module.myFunc() or module.myVar
4 |
5 | exports.myVar = "myVariable"
6 |
7 | exports.myFunction = ->
8 | print "myFunction is running"
9 |
10 | exports.myArray = [1, 2, 3]
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/.temp.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/app.coffee:
--------------------------------------------------------------------------------
1 | # This imports all the layers for "example3_swipe" into example3_swipeLayers1
2 | file = Framer.Importer.load "imported/example3_swipe"
3 |
4 | w = Framer.Device.screen.width
5 |
6 | file.message.draggable.enabled = true
7 |
8 | file.message.draggable.speedY = 0
9 |
10 | file.message.on Events.DragEnd, ->
11 | if file.message.midX < 0
12 | file.message.animate
13 | properties:
14 | x: 0 - w
15 | time: 0.1
16 | curve: "ease-in"
17 | else
18 | file.message.animate
19 | properties:
20 | x: 0
21 | time: 0.2
22 |
23 | file.message.on Events.AnimationEnd, ->
24 | if file.message.midX < 0
25 | file.delete.animate
26 | properties:
27 | scale: .8
28 | opacity: 0
29 | time: 0.2
30 | curve: "ease-in"
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/backups/backup-1427673752.coffee:
--------------------------------------------------------------------------------
1 | # This imports all the layers for "example3_swipe" into example3_swipeLayers1
2 | file = Framer.Importer.load "imported/example3_swipe"
3 |
4 | w = Framer.Device.screen.width
5 |
6 | file.message.draggable.enabled = true
7 |
8 | file.message.draggable.speedY = 0
9 |
10 | file.message.on Events.DragEnd, ->
11 | if file.message.midX < 0
12 | file.message.animate
13 | properties:
14 | x: 0 - w
15 | time: 0.1
16 | curve: "ease-in"
17 | else
18 | file.message.animate
19 | properties:
20 | x: 0
21 | time: 0.2
22 |
23 | file.message.on Events.AnimationEnd, ->
24 | if file.message.midX < 0
25 | file.delete.animate
26 | properties:
27 | scale: .8
28 | opacity: 0
29 | time: 0.2
30 | curve: "ease-in"
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/backups/backup-1428264184.coffee:
--------------------------------------------------------------------------------
1 | # This imports all the layers for "example3_swipe" into example3_swipeLayers1
2 | file = Framer.Importer.load "imported/example3_swipe"
3 |
4 | w = Framer.Device.screen.width
5 |
6 | file.message.draggable.enabled = true
7 |
8 | file.message.draggable.speedY = 0
9 |
10 | file.message.on Events.DragEnd, ->
11 | if file.message.midX < 0
12 | file.message.animate
13 | properties:
14 | x: 0 - w
15 | time: 0.1
16 | curve: "ease-in"
17 | else
18 | file.message.animate
19 | properties:
20 | x: 0
21 | time: 0.2
22 |
23 | file.message.on Events.AnimationEnd, ->
24 | if file.message.midX < 0
25 | file.delete.animate
26 | properties:
27 | scale: .8
28 | opacity: 0
29 | time: 0.2
30 | curve: "ease-in"
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "device" : "iPhone 5S Space Gray",
3 | "sharedPrototype" : 1,
4 | "deviceOrientation" : 0,
5 | "contentScale" : 1,
6 | "deviceType" : "iphone-6-spacegray",
7 | "updateDelay" : 0.3,
8 | "deviceScale" : -1,
9 | "delay" : 0.3
10 | }
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/framer.init.js:
--------------------------------------------------------------------------------
1 | (function() {
2 |
3 | function isFileLoadingAllowed() {
4 | return (window.location.protocol.indexOf("file") == -1)
5 | }
6 |
7 | function isHomeScreened() {
8 | return ("standalone" in window.navigator) && window.navigator.standalone == true
9 | }
10 |
11 | function isCompatibleBrowser() {
12 | return Utils.isWebKit()
13 | }
14 |
15 | var alertNode;
16 |
17 | function dismissAlert() {
18 | alertNode.parentElement.removeChild(alertNode)
19 | loadProject()
20 | }
21 |
22 | function showAlert(html) {
23 |
24 | alertNode = document.createElement("div")
25 |
26 | alertNode.classList.add("framerAlertBackground")
27 | alertNode.innerHTML = html
28 |
29 | document.addEventListener("DOMContentLoaded", function(event) {
30 | document.body.appendChild(alertNode)
31 | })
32 |
33 | window.dismissAlert = dismissAlert;
34 | }
35 |
36 | function showBrowserAlert() {
37 | var html = ""
38 | html += ""
39 | html += "
Error: Not A WebKit Browser "
40 | html += "Your browser is not supported.
Please use Safari or Chrome.
"
41 | html += "
Try anyway "
42 | html += "
"
43 |
44 | showAlert(html)
45 | }
46 |
47 | function showFileLoadingAlert() {
48 | var html = ""
49 | html += ""
50 | html += "
Error: Local File Restrictions "
51 | html += "Preview this prototype with Framer Mirror or learn more about "
52 | html += "
file restrictions .
"
53 | html += "
Try anyway "
54 | html += "
"
55 |
56 | showAlert(html)
57 | }
58 |
59 | function showHomeScreenAlert() {
60 |
61 | link = document.createElement("link");
62 | link.href = "framer/mirror.css"
63 | link.type = "text/css"
64 | link.rel = "stylesheet"
65 | link.media = "screen"
66 |
67 | document.addEventListener("DOMContentLoaded", function(event) {
68 | document.getElementsByTagName("head")[0].appendChild(link)
69 | })
70 |
71 | var html = ""
72 | html += " "
73 | html += ""
74 | html += "Install Prototype "
75 | html += "Tap
Share
, then choose 'Add to Home Screen' "
76 | html += ""
77 | html += " "
78 |
79 | showAlert(html)
80 | }
81 |
82 | function loadProject() {
83 | CoffeeScript.load("app.coffee")
84 | }
85 |
86 | function setDefaultPageTitle() {
87 | // If no title was set we set it to the project folder name so
88 | // you get a nice name on iOS if you bookmark to desktop.
89 | document.addEventListener("DOMContentLoaded", function() {
90 | if (document.title == "") {
91 | if (window.FramerStudioInfo && window.FramerStudioInfo.documentTitle) {
92 | document.title = window.FramerStudioInfo.documentTitle
93 | } else {
94 | document.title = window.location.pathname.replace(/\//g, "")
95 | }
96 | }
97 | })
98 | }
99 |
100 | function init() {
101 |
102 | if (Utils.isFramerStudio()) {
103 | return
104 | }
105 |
106 | setDefaultPageTitle()
107 |
108 | if (!isCompatibleBrowser()) {
109 | return showBrowserAlert()
110 | }
111 |
112 | if (!isFileLoadingAllowed()) {
113 | return showFileLoadingAlert()
114 | }
115 |
116 | // if (Utils.isMobile() && !isHomeScreened()) {
117 | // return showHomeScreenAlert()
118 | // }
119 |
120 | loadProject()
121 |
122 | }
123 |
124 | init()
125 |
126 | })()
127 |
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/framer.modules.js:
--------------------------------------------------------------------------------
1 | // This file will contain generated modules from the project/modules directory
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/images/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/framer/images/background.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/images/cursor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/framer/images/cursor.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/images/cursor@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/framer/images/cursor@2x.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/images/icon-120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/framer/images/icon-120.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/images/icon-152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/framer/images/icon-152.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/images/icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/framer/images/icon-76.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/images/icon-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/framer/images/icon-arrow.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/images/icon-arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/framer/images/icon-arrow@2x.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/images/icon-close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/framer/images/icon-close.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/images/icon-close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/framer/images/icon-close@2x.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/images/icon-framer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/framer/images/icon-framer.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/images/icon-framer@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/framer/images/icon-framer@2x.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/images/icon-share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/framer/images/icon-share.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/images/icon-share@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/framer/images/icon-share@2x.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/mirror.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | border: none;
5 | -webkit-user-select: none;
6 | -webkit-tap-highlight-color: rgba(0,0,0,0);
7 | }
8 | html, body, .wrapper {
9 | height: 100%;
10 | }
11 | body {
12 | background: #fff;
13 | font: 300 20px "Helvetica Neue", Helvetica, sans-serif;
14 | overflow: hidden;
15 | cursor: url('images/cursor.png') 39 39, auto;
16 | text-align: center;
17 | position: relative;
18 | -webkit-font-smoothing: antialiased;
19 | text-rendering: optimizeLegibility;
20 | color: #333740;
21 | }
22 | a {
23 | color: gray;
24 | }
25 | .framerAlert {
26 | font: 12px/1.6em Menlo;
27 | margin: 10px;
28 | color: gray;
29 | }
30 | ::-webkit-scrollbar {
31 | display: none;
32 | }
33 | .wrapper {
34 | width:100%;
35 | max-width: 240px;
36 | margin: 0 auto;
37 | padding-top: 38%;
38 | position: relative;
39 | }
40 | /* Text */
41 | h1 {
42 | font-size: 22px;
43 | font-weight: 400;
44 | margin-top: 0px;
45 | line-height: 1.5;
46 | color: black;
47 |
48 | margin-bottom: 8px;
49 | margin-top: 16px;
50 | }
51 | h2 {
52 | font-size: 14px;
53 | font-weight: 400;
54 | color: #788594;
55 | }
56 | hr {
57 | border: none; width: 100%;
58 | border-bottom: 1px solid #EFF1F3;
59 | display: block;
60 | margin: 40px auto 32px auto;
61 | }
62 | p {
63 | display: inline-block;
64 | line-height: 1.5;
65 | }
66 | figure {
67 | display: inline-block;
68 | }
69 | .share {
70 | color: #007AFF;
71 | display: inline-block;
72 | margin-left: 8px;
73 | }
74 | .icon-share {
75 | margin-right: 0px;
76 | position: relative;
77 | top:0.5px;
78 | }
79 | .arrow {
80 | position: absolute;
81 | max-width: 240px;
82 | width: 100%;
83 | left:50%; margin-left:-120px;
84 | bottom: 24%;
85 | }
86 | .arrow figure {
87 | -webkit-animation: bounce 1.25s ease infinite;
88 | -moz-animation: bounce 1.25s ease infinite;
89 | -o-animation: bounce 1.25s ease infinite;
90 | animation: bounce 1.25s ease infinite;
91 | -webkit-transform-origin: center bottom;
92 | -ms-transform-origin: center bottom;
93 | transform-origin: center bottom;
94 | }
95 | /* Arrow animation */
96 | @-webkit-keyframes bounce {
97 | 0%, 100% {
98 | -webkit-transform: translate3d(0,0,0);
99 | transform: translate3d(0,0,0);
100 | }
101 | 50% {
102 | -webkit-transform: translate3d(0, -16px, 0);
103 | transform: translate3d(0, -16px, 0);
104 | }
105 | }
106 | @keyframes bounce {
107 | 0%, 100% {
108 | -webkit-transform: translate3d(0,0,0);
109 | transform: translate3d(0,0,0);
110 | }
111 | 50% {
112 | -webkit-transform: translate3d(0, -16px, 0);
113 | transform: translate3d(0, -16px, 0);
114 | }
115 | }
116 | /* Icons */
117 | .icon-close,
118 | .icon-framer,
119 | .icon-share,
120 | .icon-arrow {
121 | background-size: cover;
122 | }
123 | .icon-close {
124 | background-image: url("images/icon-close.png");
125 | position: absolute;
126 | top:16px;
127 | right:16px;
128 | cursor: pointer;
129 | cursor: hand;
130 | width: 18px;
131 | height: 18px;
132 | }
133 | .icon-framer {
134 | background-image: url("images/icon-framer.png");
135 | width: 60px;
136 | height: 60px;
137 | }
138 | .icon-share {
139 | background-image: url("images/icon-share.png");
140 | width: 11px;
141 | height: 18px;
142 | }
143 | .icon-arrow {
144 | background-image: url("images/icon-arrow.png");
145 | width: 18px;
146 | height: 30px;
147 | }
148 | /* Retina Icons */
149 | @media screen and (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
150 | .icon-close {
151 | background-image: url("images/icon-close@2x.png");
152 | }
153 | .icon-framer {
154 | background-image: url("images/icon-framer@2x.png");
155 | }
156 | .icon-share {
157 | background-image: url("images/icon-share@2x.png");
158 | }
159 | .icon-arrow {
160 | background-image: url("images/icon-arrow@2x.png");
161 | }
162 | }
163 | /* Avoid overflow scrolling when viewing in Portrait */
164 | @media screen and (orientation:portrait) {
165 | html, body, .wrapper {
166 | overflow: hidden;
167 | }
168 | }
169 | /* iPad share icon is positioned in the navigation bar */
170 | @media screen and (min-width: 576px){
171 | .arrow {
172 | display: none;
173 | }
174 | .wrapper {
175 | padding-bottom: 25%;
176 | }
177 | }
178 | /* When it landscape, hide arrow and adjust spacing */
179 | @media screen and (orientation:landscape) {
180 | .arrow {
181 | display: none;
182 | }
183 | .wrapper {
184 | padding-top: 10%;
185 | padding-bottom: 0;
186 | }
187 | }
188 | /* iPhone 6 Portrait */
189 | @media screen and (min-device-width:375px) and (max-device-width:667px) and (-webkit-min-device-pixel-ratio:2) and (orientation:portrait) {
190 | .wrapper {
191 | padding-top: 48%;
192 | }
193 | .arrow {
194 | bottom: 27%;
195 | }
196 | }
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | border: none;
5 | -webkit-user-select: none;
6 | -webkit-tap-highlight-color: rgba(0,0,0,0);
7 | }
8 |
9 | body {
10 | background-color: #fff;
11 | font: 28px/1em "Helvetica";
12 | color: #FFF;
13 | overflow: hidden;
14 | cursor: url('images/cursor.png') 39 39, auto;
15 | }
16 |
17 | a {
18 | color: gray;
19 | }
20 |
21 | .framerAlertBackground {
22 | position: absolute; top:0px; left:0px; right:0px; bottom:0px;
23 | z-index: 1000;
24 | background-color: #fff;
25 | }
26 |
27 | .framerAlert {
28 | font:400 14px/1.4 "Helvetica Neue", Helvetica, Arial, sans-serif;
29 | -webkit-font-smoothing:antialiased;
30 | color:#616367; text-align:center;
31 | position: absolute; top:40%; left:50%; width:260px; margin-left:-130px;
32 | }
33 | .framerAlert strong { font-weight:500; color:#000; margin-bottom:8px; display:block; }
34 | .framerAlert a { color:#28AFFA; }
35 | .framerAlert .btn {
36 | font-weight:500; text-decoration:none; line-height:1;
37 | display:inline-block; padding:6px 12px 7px 12px;
38 | border-radius:3px; margin-top:12px;
39 | background:#28AFFA; color:#fff;
40 | }
41 |
42 | ::-webkit-scrollbar {
43 | display: none;
44 | }
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/framer/version:
--------------------------------------------------------------------------------
1 | 1
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/images/framer-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/images/framer-icon.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/example3_swipe/images/bg-467D259F-657A-4BEC-B60C-B8649B3A5542.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/imported/example3_swipe/images/bg-467D259F-657A-4BEC-B60C-B8649B3A5542.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/example3_swipe/images/delete-798508F9-2530-4983-865D-078792D52551.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/imported/example3_swipe/images/delete-798508F9-2530-4983-865D-078792D52551.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/example3_swipe/images/message-C98AA120-6BD4-4158-8C00-3AE9675BED77.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/imported/example3_swipe/images/message-C98AA120-6BD4-4158-8C00-3AE9675BED77.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/example3_swipe/images/top_nav-56441F68-B18C-4BEC-AC43-57EBA8202E03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/imported/example3_swipe/images/top_nav-56441F68-B18C-4BEC-AC43-57EBA8202E03.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/example3_swipe/layers.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "maskFrame" : {
4 | "y" : 0,
5 | "x" : 0,
6 | "width" : 750,
7 | "height" : 1334
8 | },
9 | "id" : "467D259F-657A-4BEC-B60C-B8649B3A5542",
10 | "visible" : true,
11 | "children" : [
12 |
13 | ],
14 | "image" : {
15 | "path" : "images\/bg-467D259F-657A-4BEC-B60C-B8649B3A5542.png",
16 | "frame" : {
17 | "y" : 0,
18 | "x" : 0,
19 | "width" : 750,
20 | "height" : 1334
21 | }
22 | },
23 | "imageType" : "png",
24 | "layerFrame" : {
25 | "y" : 0,
26 | "x" : 0,
27 | "width" : 750,
28 | "height" : 1334
29 | },
30 | "name" : "bg"
31 | },
32 | {
33 | "maskFrame" : null,
34 | "id" : "798508F9-2530-4983-865D-078792D52551",
35 | "visible" : true,
36 | "children" : [
37 |
38 | ],
39 | "image" : {
40 | "path" : "images\/delete-798508F9-2530-4983-865D-078792D52551.png",
41 | "frame" : {
42 | "y" : 127,
43 | "x" : 2,
44 | "width" : 748,
45 | "height" : 151
46 | }
47 | },
48 | "imageType" : "png",
49 | "layerFrame" : {
50 | "y" : 127,
51 | "x" : 2,
52 | "width" : 748,
53 | "height" : 151
54 | },
55 | "name" : "delete"
56 | },
57 | {
58 | "maskFrame" : null,
59 | "id" : "C98AA120-6BD4-4158-8C00-3AE9675BED77",
60 | "visible" : true,
61 | "children" : [
62 |
63 | ],
64 | "image" : {
65 | "path" : "images\/message-C98AA120-6BD4-4158-8C00-3AE9675BED77.png",
66 | "frame" : {
67 | "y" : 127,
68 | "x" : 0,
69 | "width" : 750,
70 | "height" : 153
71 | }
72 | },
73 | "imageType" : "png",
74 | "layerFrame" : {
75 | "y" : 127,
76 | "x" : 0,
77 | "width" : 750,
78 | "height" : 153
79 | },
80 | "name" : "message"
81 | },
82 | {
83 | "maskFrame" : null,
84 | "id" : "56441F68-B18C-4BEC-AC43-57EBA8202E03",
85 | "visible" : true,
86 | "children" : [
87 |
88 | ],
89 | "image" : {
90 | "path" : "images\/top_nav-56441F68-B18C-4BEC-AC43-57EBA8202E03.png",
91 | "frame" : {
92 | "y" : 0,
93 | "x" : 0,
94 | "width" : 750,
95 | "height" : 127
96 | }
97 | },
98 | "imageType" : "png",
99 | "layerFrame" : {
100 | "y" : 0,
101 | "x" : 0,
102 | "width" : 750,
103 | "height" : 127
104 | },
105 | "name" : "top_nav"
106 | }
107 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/example3_swipe/layers.json.js:
--------------------------------------------------------------------------------
1 | window.__imported__ = window.__imported__ || {};
2 | window.__imported__["example3_swipe/layers.json.js"] = [
3 | {
4 | "maskFrame" : {
5 | "y" : 0,
6 | "x" : 0,
7 | "width" : 750,
8 | "height" : 1334
9 | },
10 | "id" : "467D259F-657A-4BEC-B60C-B8649B3A5542",
11 | "visible" : true,
12 | "children" : [
13 |
14 | ],
15 | "image" : {
16 | "path" : "images\/bg-467D259F-657A-4BEC-B60C-B8649B3A5542.png",
17 | "frame" : {
18 | "y" : 0,
19 | "x" : 0,
20 | "width" : 750,
21 | "height" : 1334
22 | }
23 | },
24 | "imageType" : "png",
25 | "layerFrame" : {
26 | "y" : 0,
27 | "x" : 0,
28 | "width" : 750,
29 | "height" : 1334
30 | },
31 | "name" : "bg"
32 | },
33 | {
34 | "maskFrame" : null,
35 | "id" : "798508F9-2530-4983-865D-078792D52551",
36 | "visible" : true,
37 | "children" : [
38 |
39 | ],
40 | "image" : {
41 | "path" : "images\/delete-798508F9-2530-4983-865D-078792D52551.png",
42 | "frame" : {
43 | "y" : 127,
44 | "x" : 2,
45 | "width" : 748,
46 | "height" : 151
47 | }
48 | },
49 | "imageType" : "png",
50 | "layerFrame" : {
51 | "y" : 127,
52 | "x" : 2,
53 | "width" : 748,
54 | "height" : 151
55 | },
56 | "name" : "delete"
57 | },
58 | {
59 | "maskFrame" : null,
60 | "id" : "C98AA120-6BD4-4158-8C00-3AE9675BED77",
61 | "visible" : true,
62 | "children" : [
63 |
64 | ],
65 | "image" : {
66 | "path" : "images\/message-C98AA120-6BD4-4158-8C00-3AE9675BED77.png",
67 | "frame" : {
68 | "y" : 127,
69 | "x" : 0,
70 | "width" : 750,
71 | "height" : 153
72 | }
73 | },
74 | "imageType" : "png",
75 | "layerFrame" : {
76 | "y" : 127,
77 | "x" : 0,
78 | "width" : 750,
79 | "height" : 153
80 | },
81 | "name" : "message"
82 | },
83 | {
84 | "maskFrame" : null,
85 | "id" : "56441F68-B18C-4BEC-AC43-57EBA8202E03",
86 | "visible" : true,
87 | "children" : [
88 |
89 | ],
90 | "image" : {
91 | "path" : "images\/top_nav-56441F68-B18C-4BEC-AC43-57EBA8202E03.png",
92 | "frame" : {
93 | "y" : 0,
94 | "x" : 0,
95 | "width" : 750,
96 | "height" : 127
97 | }
98 | },
99 | "imageType" : "png",
100 | "layerFrame" : {
101 | "y" : 0,
102 | "x" : 0,
103 | "width" : 750,
104 | "height" : 127
105 | },
106 | "name" : "top_nav"
107 | }
108 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/example3_swipe2/framerps.log:
--------------------------------------------------------------------------------
1 | Could not read previous export (for caching), doing full export.
2 | Renaming bg -> bg-2
3 | Navigation_Bar: Exporting image
4 | message: Exporting image
5 | delete: Exporting image
6 | bg: Exporting image
7 | 5 views changed
8 | Success: /Users/tessathornton/Code/slider.framer/imported/example3_swipe2
9 |
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/example3_swipe2/images/Navigation_Bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/imported/example3_swipe2/images/Navigation_Bar.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/example3_swipe2/images/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/imported/example3_swipe2/images/bg.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/example3_swipe2/images/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/imported/example3_swipe2/images/delete.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/example3_swipe2/images/message.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/imported/example3_swipe2/images/message.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/example3_swipe2/layers.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": 5,
4 | "name": "bg",
5 | "layerFrame": {
6 | "x": 0,
7 | "y": 0,
8 | "width": 750,
9 | "height": 1334
10 | },
11 | "maskFrame": null,
12 | "image": null,
13 | "imageType": null,
14 | "children": [
15 | {
16 | "id": 52,
17 | "name": "Navigation_Bar",
18 | "layerFrame": {
19 | "x": 0,
20 | "y": 0,
21 | "width": 750,
22 | "height": 1334
23 | },
24 | "maskFrame": null,
25 | "image": {
26 | "path": "images/Navigation_Bar.png",
27 | "frame": {
28 | "x": 0,
29 | "y": 0,
30 | "width": 750,
31 | "height": 129
32 | }
33 | },
34 | "imageType": "png",
35 | "children": [
36 |
37 | ],
38 | "modification": "158714615"
39 | },
40 | {
41 | "id": 46,
42 | "name": "message",
43 | "layerFrame": {
44 | "x": 0,
45 | "y": 0,
46 | "width": 750,
47 | "height": 1334
48 | },
49 | "maskFrame": null,
50 | "image": {
51 | "path": "images/message.png",
52 | "frame": {
53 | "x": 0,
54 | "y": 127,
55 | "width": 750,
56 | "height": 151
57 | }
58 | },
59 | "imageType": "png",
60 | "children": [
61 |
62 | ],
63 | "modification": "2075231165"
64 | },
65 | {
66 | "id": 38,
67 | "name": "delete",
68 | "layerFrame": {
69 | "x": 0,
70 | "y": 0,
71 | "width": 750,
72 | "height": 1334
73 | },
74 | "maskFrame": null,
75 | "image": {
76 | "path": "images/delete.png",
77 | "frame": {
78 | "x": 0,
79 | "y": 125,
80 | "width": 750,
81 | "height": 151
82 | }
83 | },
84 | "imageType": "png",
85 | "children": [
86 |
87 | ],
88 | "modification": "117909762"
89 | },
90 | {
91 | "id": 34,
92 | "name": "bg",
93 | "layerFrame": {
94 | "x": 0,
95 | "y": 0,
96 | "width": 750,
97 | "height": 1334
98 | },
99 | "maskFrame": null,
100 | "image": {
101 | "path": "images/bg.png",
102 | "frame": {
103 | "x": 0,
104 | "y": 0,
105 | "width": 750,
106 | "height": 1334
107 | }
108 | },
109 | "imageType": "png",
110 | "children": [
111 |
112 | ],
113 | "modification": "57585629"
114 | }
115 | ],
116 | "modification": "503784321"
117 | }
118 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/example3_swipe2/layers.json.js:
--------------------------------------------------------------------------------
1 | window.__imported__ = window.__imported__ || {};
2 | window.__imported__["example3_swipe2/layers.json.js"] = [
3 | {
4 | "id": 5,
5 | "name": "bg",
6 | "layerFrame": {
7 | "x": 0,
8 | "y": 0,
9 | "width": 750,
10 | "height": 1334
11 | },
12 | "maskFrame": null,
13 | "image": null,
14 | "imageType": null,
15 | "children": [
16 | {
17 | "id": 52,
18 | "name": "Navigation_Bar",
19 | "layerFrame": {
20 | "x": 0,
21 | "y": 0,
22 | "width": 750,
23 | "height": 1334
24 | },
25 | "maskFrame": null,
26 | "image": {
27 | "path": "images/Navigation_Bar.png",
28 | "frame": {
29 | "x": 0,
30 | "y": 0,
31 | "width": 750,
32 | "height": 129
33 | }
34 | },
35 | "imageType": "png",
36 | "children": [
37 |
38 | ],
39 | "modification": "158714615"
40 | },
41 | {
42 | "id": 46,
43 | "name": "message",
44 | "layerFrame": {
45 | "x": 0,
46 | "y": 0,
47 | "width": 750,
48 | "height": 1334
49 | },
50 | "maskFrame": null,
51 | "image": {
52 | "path": "images/message.png",
53 | "frame": {
54 | "x": 0,
55 | "y": 127,
56 | "width": 750,
57 | "height": 151
58 | }
59 | },
60 | "imageType": "png",
61 | "children": [
62 |
63 | ],
64 | "modification": "2075231165"
65 | },
66 | {
67 | "id": 38,
68 | "name": "delete",
69 | "layerFrame": {
70 | "x": 0,
71 | "y": 0,
72 | "width": 750,
73 | "height": 1334
74 | },
75 | "maskFrame": null,
76 | "image": {
77 | "path": "images/delete.png",
78 | "frame": {
79 | "x": 0,
80 | "y": 125,
81 | "width": 750,
82 | "height": 151
83 | }
84 | },
85 | "imageType": "png",
86 | "children": [
87 |
88 | ],
89 | "modification": "117909762"
90 | },
91 | {
92 | "id": 34,
93 | "name": "bg",
94 | "layerFrame": {
95 | "x": 0,
96 | "y": 0,
97 | "width": 750,
98 | "height": 1334
99 | },
100 | "maskFrame": null,
101 | "image": {
102 | "path": "images/bg.png",
103 | "frame": {
104 | "x": 0,
105 | "y": 0,
106 | "width": 750,
107 | "height": 1334
108 | }
109 | },
110 | "imageType": "png",
111 | "children": [
112 |
113 | ],
114 | "modification": "57585629"
115 | }
116 | ],
117 | "modification": "503784321"
118 | }
119 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/slider/framerps.log:
--------------------------------------------------------------------------------
1 | Could not read previous export (for caching), doing full export.
2 | Bg: Exporting image
3 | card1: Exporting image
4 | card2: Exporting image
5 | card3: Exporting image
6 | 5 views changed
7 | Success: /var/folders/l9/607s07lj58n6w3kn9zdhr87r0000gn/T/114D097F-8FDF-404F-B8D5-D506362512AD-47272-000146ECD244E614/Untitled.framer/imported/slider
8 |
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/slider/images/Bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/imported/slider/images/Bg.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/slider/images/Card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/imported/slider/images/Card.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/slider/images/Paginator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/imported/slider/images/Paginator.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/slider/images/card1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/imported/slider/images/card1.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/slider/images/card2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/imported/slider/images/card2.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/slider/images/card3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/imported/slider/images/card3.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/slider/layers.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": 5640,
4 | "name": "Bg",
5 | "layerFrame": {
6 | "x": 0,
7 | "y": 0,
8 | "width": 1920,
9 | "height": 1136
10 | },
11 | "maskFrame": null,
12 | "image": {
13 | "path": "images/Bg.png",
14 | "frame": {
15 | "x": 0,
16 | "y": 0,
17 | "width": 1920,
18 | "height": 1136
19 | }
20 | },
21 | "imageType": "png",
22 | "children": [
23 |
24 | ],
25 | "modification": "1988695100"
26 | },
27 | {
28 | "id": 5693,
29 | "name": "cards",
30 | "layerFrame": {
31 | "x": 0,
32 | "y": 0,
33 | "width": 1920,
34 | "height": 1136
35 | },
36 | "maskFrame": null,
37 | "image": null,
38 | "imageType": null,
39 | "children": [
40 | {
41 | "id": 5692,
42 | "name": "card1",
43 | "layerFrame": {
44 | "x": 0,
45 | "y": 0,
46 | "width": 1920,
47 | "height": 1136
48 | },
49 | "maskFrame": null,
50 | "image": {
51 | "path": "images/card1.png",
52 | "frame": {
53 | "x": 25,
54 | "y": 28,
55 | "width": 580,
56 | "height": 897
57 | }
58 | },
59 | "imageType": "png",
60 | "children": [
61 |
62 | ],
63 | "modification": "990146907"
64 | },
65 | {
66 | "id": 5660,
67 | "name": "card2",
68 | "layerFrame": {
69 | "x": 0,
70 | "y": 0,
71 | "width": 1920,
72 | "height": 1136
73 | },
74 | "maskFrame": null,
75 | "image": {
76 | "path": "images/card2.png",
77 | "frame": {
78 | "x": 669,
79 | "y": 30,
80 | "width": 580,
81 | "height": 897
82 | }
83 | },
84 | "imageType": "png",
85 | "children": [
86 |
87 | ],
88 | "modification": "1312609480"
89 | },
90 | {
91 | "id": 5685,
92 | "name": "card3",
93 | "layerFrame": {
94 | "x": 0,
95 | "y": 0,
96 | "width": 1920,
97 | "height": 1136
98 | },
99 | "maskFrame": null,
100 | "image": {
101 | "path": "images/card3.png",
102 | "frame": {
103 | "x": 1310,
104 | "y": 30,
105 | "width": 580,
106 | "height": 897
107 | }
108 | },
109 | "imageType": "png",
110 | "children": [
111 |
112 | ],
113 | "modification": "2077050872"
114 | }
115 | ],
116 | "modification": "1284472079"
117 | }
118 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/slider/layers.json.js:
--------------------------------------------------------------------------------
1 | window.__imported__ = window.__imported__ || {};
2 | window.__imported__["slider/layers.json.js"] = [
3 | {
4 | "id": 5640,
5 | "name": "Bg",
6 | "layerFrame": {
7 | "x": 0,
8 | "y": 0,
9 | "width": 1920,
10 | "height": 1136
11 | },
12 | "maskFrame": null,
13 | "image": {
14 | "path": "images/Bg.png",
15 | "frame": {
16 | "x": 0,
17 | "y": 0,
18 | "width": 1920,
19 | "height": 1136
20 | }
21 | },
22 | "imageType": "png",
23 | "children": [
24 |
25 | ],
26 | "modification": "1988695100"
27 | },
28 | {
29 | "id": 5693,
30 | "name": "cards",
31 | "layerFrame": {
32 | "x": 0,
33 | "y": 0,
34 | "width": 1920,
35 | "height": 1136
36 | },
37 | "maskFrame": null,
38 | "image": null,
39 | "imageType": null,
40 | "children": [
41 | {
42 | "id": 5692,
43 | "name": "card1",
44 | "layerFrame": {
45 | "x": 0,
46 | "y": 0,
47 | "width": 1920,
48 | "height": 1136
49 | },
50 | "maskFrame": null,
51 | "image": {
52 | "path": "images/card1.png",
53 | "frame": {
54 | "x": 25,
55 | "y": 28,
56 | "width": 580,
57 | "height": 897
58 | }
59 | },
60 | "imageType": "png",
61 | "children": [
62 |
63 | ],
64 | "modification": "990146907"
65 | },
66 | {
67 | "id": 5660,
68 | "name": "card2",
69 | "layerFrame": {
70 | "x": 0,
71 | "y": 0,
72 | "width": 1920,
73 | "height": 1136
74 | },
75 | "maskFrame": null,
76 | "image": {
77 | "path": "images/card2.png",
78 | "frame": {
79 | "x": 669,
80 | "y": 30,
81 | "width": 580,
82 | "height": 897
83 | }
84 | },
85 | "imageType": "png",
86 | "children": [
87 |
88 | ],
89 | "modification": "1312609480"
90 | },
91 | {
92 | "id": 5685,
93 | "name": "card3",
94 | "layerFrame": {
95 | "x": 0,
96 | "y": 0,
97 | "width": 1920,
98 | "height": 1136
99 | },
100 | "maskFrame": null,
101 | "image": {
102 | "path": "images/card3.png",
103 | "frame": {
104 | "x": 1310,
105 | "y": 30,
106 | "width": 580,
107 | "height": 897
108 | }
109 | },
110 | "imageType": "png",
111 | "children": [
112 |
113 | ],
114 | "modification": "2077050872"
115 | }
116 | ],
117 | "modification": "1284472079"
118 | }
119 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/swipe/framerps.log:
--------------------------------------------------------------------------------
1 | Could not read previous export (for caching), doing full export.
2 | bg: Exporting image
3 | delete: Exporting image
4 | message: Exporting image
5 | Navigation_Bar: Exporting image
6 | 4 views changed
7 | Success: /Users/tessathornton/Code/slider.framer/imported/swipe
8 |
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/swipe/images/Navigation_Bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/imported/swipe/images/Navigation_Bar.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/swipe/images/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/imported/swipe/images/bg.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/swipe/images/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/imported/swipe/images/delete.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/swipe/images/message.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/swipe.framer/imported/swipe/images/message.png
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/swipe/layers.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": 1840,
4 | "name": "bg",
5 | "layerFrame": {
6 | "x": 0,
7 | "y": 0,
8 | "width": 640,
9 | "height": 1136
10 | },
11 | "maskFrame": null,
12 | "image": {
13 | "path": "images/bg.png",
14 | "frame": {
15 | "x": 0,
16 | "y": 40,
17 | "width": 640,
18 | "height": 1096
19 | }
20 | },
21 | "imageType": "png",
22 | "children": [
23 |
24 | ],
25 | "modification": "863442307"
26 | },
27 | {
28 | "id": 1739,
29 | "name": "delete",
30 | "layerFrame": {
31 | "x": 0,
32 | "y": 0,
33 | "width": 640,
34 | "height": 1136
35 | },
36 | "maskFrame": null,
37 | "image": {
38 | "path": "images/delete.png",
39 | "frame": {
40 | "x": 0,
41 | "y": 125,
42 | "width": 640,
43 | "height": 151
44 | }
45 | },
46 | "imageType": "png",
47 | "children": [
48 |
49 | ],
50 | "modification": "1800021914"
51 | },
52 | {
53 | "id": 1708,
54 | "name": "message",
55 | "layerFrame": {
56 | "x": 0,
57 | "y": 0,
58 | "width": 640,
59 | "height": 1136
60 | },
61 | "maskFrame": null,
62 | "image": {
63 | "path": "images/message.png",
64 | "frame": {
65 | "x": 0,
66 | "y": 127,
67 | "width": 640,
68 | "height": 151
69 | }
70 | },
71 | "imageType": "png",
72 | "children": [
73 |
74 | ],
75 | "modification": "733022571"
76 | },
77 | {
78 | "id": 1753,
79 | "name": "Navigation_Bar",
80 | "layerFrame": {
81 | "x": 0,
82 | "y": 0,
83 | "width": 640,
84 | "height": 1136
85 | },
86 | "maskFrame": null,
87 | "image": {
88 | "path": "images/Navigation_Bar.png",
89 | "frame": {
90 | "x": 0,
91 | "y": 0,
92 | "width": 640,
93 | "height": 129
94 | }
95 | },
96 | "imageType": "png",
97 | "children": [
98 |
99 | ],
100 | "modification": "727677044"
101 | }
102 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/imported/swipe/layers.json.js:
--------------------------------------------------------------------------------
1 | window.__imported__ = window.__imported__ || {};
2 | window.__imported__["swipe/layers.json.js"] = [
3 | {
4 | "id": 1840,
5 | "name": "bg",
6 | "layerFrame": {
7 | "x": 0,
8 | "y": 0,
9 | "width": 640,
10 | "height": 1136
11 | },
12 | "maskFrame": null,
13 | "image": {
14 | "path": "images/bg.png",
15 | "frame": {
16 | "x": 0,
17 | "y": 40,
18 | "width": 640,
19 | "height": 1096
20 | }
21 | },
22 | "imageType": "png",
23 | "children": [
24 |
25 | ],
26 | "modification": "863442307"
27 | },
28 | {
29 | "id": 1739,
30 | "name": "delete",
31 | "layerFrame": {
32 | "x": 0,
33 | "y": 0,
34 | "width": 640,
35 | "height": 1136
36 | },
37 | "maskFrame": null,
38 | "image": {
39 | "path": "images/delete.png",
40 | "frame": {
41 | "x": 0,
42 | "y": 125,
43 | "width": 640,
44 | "height": 151
45 | }
46 | },
47 | "imageType": "png",
48 | "children": [
49 |
50 | ],
51 | "modification": "1800021914"
52 | },
53 | {
54 | "id": 1708,
55 | "name": "message",
56 | "layerFrame": {
57 | "x": 0,
58 | "y": 0,
59 | "width": 640,
60 | "height": 1136
61 | },
62 | "maskFrame": null,
63 | "image": {
64 | "path": "images/message.png",
65 | "frame": {
66 | "x": 0,
67 | "y": 127,
68 | "width": 640,
69 | "height": 151
70 | }
71 | },
72 | "imageType": "png",
73 | "children": [
74 |
75 | ],
76 | "modification": "733022571"
77 | },
78 | {
79 | "id": 1753,
80 | "name": "Navigation_Bar",
81 | "layerFrame": {
82 | "x": 0,
83 | "y": 0,
84 | "width": 640,
85 | "height": 1136
86 | },
87 | "maskFrame": null,
88 | "image": {
89 | "path": "images/Navigation_Bar.png",
90 | "frame": {
91 | "x": 0,
92 | "y": 0,
93 | "width": 640,
94 | "height": 129
95 | }
96 | },
97 | "imageType": "png",
98 | "children": [
99 |
100 | ],
101 | "modification": "727677044"
102 | }
103 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/swipe.framer/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/.temp.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/app.coffee:
--------------------------------------------------------------------------------
1 | h = Framer.Device.screen.height
2 |
3 | bg = new Layer
4 | x:0, y:0, width:312, height:366, image:"images/example4_bg.png"
5 |
6 | watch_file = Framer.Importer.load "imported/example4_watch"
7 |
8 | icon = new Layer
9 | x:0, y:0, width:196, height:196, image:"images/example4_icon.png"
10 |
11 | notification = watch_file.notification
12 |
13 | icon.centerX()
14 | icon.y = h
15 |
16 | notification.y = h
17 |
18 | icon.animate
19 | properties:
20 | midY: h / 2
21 | time: .4
22 | curve: "spring(120,18,0)"
23 |
24 | bg.animate
25 | properties:
26 | blur: 15
27 | opacity: .5
28 | time: .4
29 |
30 | icon.on Events.AnimationEnd, ->
31 | icon.animate
32 | properties:
33 | scale: .5
34 | x: -29
35 | y: -49
36 | time: .3
37 | curve: "spring(320,26,0)"
38 | notification.animate
39 | properties:
40 | y: 49
41 | time: .3
42 | curve: "spring(320,26,0)"
43 |
44 | button = watch_file.button
45 |
46 | button.on Events.Click, ->
47 | notification.animate
48 | properties:
49 | opacity: 0
50 | time: .3
51 | icon.animate
52 | properties:
53 | opacity: 0
54 | time: .3
55 | bg.animate
56 | properties:
57 | opacity: 1
58 | blur: 0
59 | time: .3
60 |
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/backups/backup-1427673752.coffee:
--------------------------------------------------------------------------------
1 | h = Framer.Device.screen.height
2 |
3 | bg = new Layer
4 | x:0, y:0, width:312, height:366, image:"images/example4_bg.png"
5 |
6 | watch_file = Framer.Importer.load "imported/example4_watch"
7 |
8 | icon = new Layer
9 | x:0, y:0, width:196, height:196, image:"images/example4_icon.png"
10 |
11 | notification = watch_file.notification
12 |
13 | icon.centerX()
14 | icon.y = h
15 |
16 | notification.y = h
17 |
18 | icon.animate
19 | properties:
20 | midY: h / 2
21 | time: .4
22 | curve: "spring(120,18,0)"
23 |
24 | bg.animate
25 | properties:
26 | blur: 15
27 | opacity: .5
28 | time: .4
29 |
30 | icon.on Events.AnimationEnd, ->
31 | icon.animate
32 | properties:
33 | scale: .5
34 | x: -29
35 | y: -49
36 | time: .3
37 | curve: "spring(320,26,0)"
38 | notification.animate
39 | properties:
40 | y: 49
41 | time: .3
42 | curve: "spring(320,26,0)"
43 |
44 | button = watch_file.button
45 |
46 | button.on Events.Click, ->
47 | notification.animate
48 | properties:
49 | opacity: 0
50 | time: .3
51 | icon.animate
52 | properties:
53 | opacity: 0
54 | time: .3
55 | bg.animate
56 | properties:
57 | opacity: 1
58 | blur: 0
59 | time: .3
60 |
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "device" : "iPhone 5S Space Gray",
3 | "sharedPrototype" : 0,
4 | "deviceOrientation" : 0,
5 | "contentScale" : 1,
6 | "deviceType" : "applewatchsport-42-aluminum-sportband-green",
7 | "updateDelay" : 0.3,
8 | "deviceScale" : -1,
9 | "delay" : 0.3
10 | }
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/framer.init.js:
--------------------------------------------------------------------------------
1 | (function() {
2 |
3 | function isFileLoadingAllowed() {
4 | return (window.location.protocol.indexOf("file") == -1)
5 | }
6 |
7 | function isHomeScreened() {
8 | return ("standalone" in window.navigator) && window.navigator.standalone == true
9 | }
10 |
11 | function isCompatibleBrowser() {
12 | return Utils.isWebKit()
13 | }
14 |
15 | var alertNode;
16 |
17 | function dismissAlert() {
18 | alertNode.parentElement.removeChild(alertNode)
19 | loadProject()
20 | }
21 |
22 | function showAlert(html) {
23 |
24 | alertNode = document.createElement("div")
25 |
26 | alertNode.classList.add("framerAlertBackground")
27 | alertNode.innerHTML = html
28 |
29 | document.addEventListener("DOMContentLoaded", function(event) {
30 | document.body.appendChild(alertNode)
31 | })
32 |
33 | window.dismissAlert = dismissAlert;
34 | }
35 |
36 | function showBrowserAlert() {
37 | var html = ""
38 | html += ""
39 | html += "
Error: Not A WebKit Browser "
40 | html += "Your browser is not supported.
Please use Safari or Chrome.
"
41 | html += "
Try anyway "
42 | html += "
"
43 |
44 | showAlert(html)
45 | }
46 |
47 | function showFileLoadingAlert() {
48 | var html = ""
49 | html += ""
50 | html += "
Error: Local File Restrictions "
51 | html += "Preview this prototype with Framer Mirror or learn more about "
52 | html += "
file restrictions .
"
53 | html += "
Try anyway "
54 | html += "
"
55 |
56 | showAlert(html)
57 | }
58 |
59 | function showHomeScreenAlert() {
60 |
61 | link = document.createElement("link");
62 | link.href = "framer/mirror.css"
63 | link.type = "text/css"
64 | link.rel = "stylesheet"
65 | link.media = "screen"
66 |
67 | document.addEventListener("DOMContentLoaded", function(event) {
68 | document.getElementsByTagName("head")[0].appendChild(link)
69 | })
70 |
71 | var html = ""
72 | html += " "
73 | html += ""
74 | html += "Install Prototype "
75 | html += "Tap
Share
, then choose 'Add to Home Screen' "
76 | html += ""
77 | html += " "
78 |
79 | showAlert(html)
80 | }
81 |
82 | function loadProject() {
83 | CoffeeScript.load("app.coffee")
84 | }
85 |
86 | function setDefaultPageTitle() {
87 | // If no title was set we set it to the project folder name so
88 | // you get a nice name on iOS if you bookmark to desktop.
89 | document.addEventListener("DOMContentLoaded", function() {
90 | if (document.title == "") {
91 | if (window.FramerStudioInfo && window.FramerStudioInfo.documentTitle) {
92 | document.title = window.FramerStudioInfo.documentTitle
93 | } else {
94 | document.title = window.location.pathname.replace(/\//g, "")
95 | }
96 | }
97 | })
98 | }
99 |
100 | function init() {
101 |
102 | if (Utils.isFramerStudio()) {
103 | return
104 | }
105 |
106 | setDefaultPageTitle()
107 |
108 | if (!isCompatibleBrowser()) {
109 | return showBrowserAlert()
110 | }
111 |
112 | if (!isFileLoadingAllowed()) {
113 | return showFileLoadingAlert()
114 | }
115 |
116 | // if (Utils.isMobile() && !isHomeScreened()) {
117 | // return showHomeScreenAlert()
118 | // }
119 |
120 | loadProject()
121 |
122 | }
123 |
124 | init()
125 |
126 | })()
127 |
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/framer.modules.js:
--------------------------------------------------------------------------------
1 | // This file will contain generated modules from the project/modules directory
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/images/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/framer/images/background.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/images/cursor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/framer/images/cursor.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/images/cursor@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/framer/images/cursor@2x.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/images/icon-120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/framer/images/icon-120.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/images/icon-152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/framer/images/icon-152.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/images/icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/framer/images/icon-76.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/images/icon-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/framer/images/icon-arrow.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/images/icon-arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/framer/images/icon-arrow@2x.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/images/icon-close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/framer/images/icon-close.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/images/icon-close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/framer/images/icon-close@2x.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/images/icon-framer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/framer/images/icon-framer.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/images/icon-framer@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/framer/images/icon-framer@2x.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/images/icon-share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/framer/images/icon-share.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/images/icon-share@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/framer/images/icon-share@2x.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/mirror.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | border: none;
5 | -webkit-user-select: none;
6 | -webkit-tap-highlight-color: rgba(0,0,0,0);
7 | }
8 | html, body, .wrapper {
9 | height: 100%;
10 | }
11 | body {
12 | background: #fff;
13 | font: 300 20px "Helvetica Neue", Helvetica, sans-serif;
14 | overflow: hidden;
15 | cursor: url('images/cursor.png') 39 39, auto;
16 | text-align: center;
17 | position: relative;
18 | -webkit-font-smoothing: antialiased;
19 | text-rendering: optimizeLegibility;
20 | color: #333740;
21 | }
22 | a {
23 | color: gray;
24 | }
25 | .framerAlert {
26 | font: 12px/1.6em Menlo;
27 | margin: 10px;
28 | color: gray;
29 | }
30 | ::-webkit-scrollbar {
31 | display: none;
32 | }
33 | .wrapper {
34 | width:100%;
35 | max-width: 240px;
36 | margin: 0 auto;
37 | padding-top: 38%;
38 | position: relative;
39 | }
40 | /* Text */
41 | h1 {
42 | font-size: 22px;
43 | font-weight: 400;
44 | margin-top: 0px;
45 | line-height: 1.5;
46 | color: black;
47 |
48 | margin-bottom: 8px;
49 | margin-top: 16px;
50 | }
51 | h2 {
52 | font-size: 14px;
53 | font-weight: 400;
54 | color: #788594;
55 | }
56 | hr {
57 | border: none; width: 100%;
58 | border-bottom: 1px solid #EFF1F3;
59 | display: block;
60 | margin: 40px auto 32px auto;
61 | }
62 | p {
63 | display: inline-block;
64 | line-height: 1.5;
65 | }
66 | figure {
67 | display: inline-block;
68 | }
69 | .share {
70 | color: #007AFF;
71 | display: inline-block;
72 | margin-left: 8px;
73 | }
74 | .icon-share {
75 | margin-right: 0px;
76 | position: relative;
77 | top:0.5px;
78 | }
79 | .arrow {
80 | position: absolute;
81 | max-width: 240px;
82 | width: 100%;
83 | left:50%; margin-left:-120px;
84 | bottom: 24%;
85 | }
86 | .arrow figure {
87 | -webkit-animation: bounce 1.25s ease infinite;
88 | -moz-animation: bounce 1.25s ease infinite;
89 | -o-animation: bounce 1.25s ease infinite;
90 | animation: bounce 1.25s ease infinite;
91 | -webkit-transform-origin: center bottom;
92 | -ms-transform-origin: center bottom;
93 | transform-origin: center bottom;
94 | }
95 | /* Arrow animation */
96 | @-webkit-keyframes bounce {
97 | 0%, 100% {
98 | -webkit-transform: translate3d(0,0,0);
99 | transform: translate3d(0,0,0);
100 | }
101 | 50% {
102 | -webkit-transform: translate3d(0, -16px, 0);
103 | transform: translate3d(0, -16px, 0);
104 | }
105 | }
106 | @keyframes bounce {
107 | 0%, 100% {
108 | -webkit-transform: translate3d(0,0,0);
109 | transform: translate3d(0,0,0);
110 | }
111 | 50% {
112 | -webkit-transform: translate3d(0, -16px, 0);
113 | transform: translate3d(0, -16px, 0);
114 | }
115 | }
116 | /* Icons */
117 | .icon-close,
118 | .icon-framer,
119 | .icon-share,
120 | .icon-arrow {
121 | background-size: cover;
122 | }
123 | .icon-close {
124 | background-image: url("images/icon-close.png");
125 | position: absolute;
126 | top:16px;
127 | right:16px;
128 | cursor: pointer;
129 | cursor: hand;
130 | width: 18px;
131 | height: 18px;
132 | }
133 | .icon-framer {
134 | background-image: url("images/icon-framer.png");
135 | width: 60px;
136 | height: 60px;
137 | }
138 | .icon-share {
139 | background-image: url("images/icon-share.png");
140 | width: 11px;
141 | height: 18px;
142 | }
143 | .icon-arrow {
144 | background-image: url("images/icon-arrow.png");
145 | width: 18px;
146 | height: 30px;
147 | }
148 | /* Retina Icons */
149 | @media screen and (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
150 | .icon-close {
151 | background-image: url("images/icon-close@2x.png");
152 | }
153 | .icon-framer {
154 | background-image: url("images/icon-framer@2x.png");
155 | }
156 | .icon-share {
157 | background-image: url("images/icon-share@2x.png");
158 | }
159 | .icon-arrow {
160 | background-image: url("images/icon-arrow@2x.png");
161 | }
162 | }
163 | /* Avoid overflow scrolling when viewing in Portrait */
164 | @media screen and (orientation:portrait) {
165 | html, body, .wrapper {
166 | overflow: hidden;
167 | }
168 | }
169 | /* iPad share icon is positioned in the navigation bar */
170 | @media screen and (min-width: 576px){
171 | .arrow {
172 | display: none;
173 | }
174 | .wrapper {
175 | padding-bottom: 25%;
176 | }
177 | }
178 | /* When it landscape, hide arrow and adjust spacing */
179 | @media screen and (orientation:landscape) {
180 | .arrow {
181 | display: none;
182 | }
183 | .wrapper {
184 | padding-top: 10%;
185 | padding-bottom: 0;
186 | }
187 | }
188 | /* iPhone 6 Portrait */
189 | @media screen and (min-device-width:375px) and (max-device-width:667px) and (-webkit-min-device-pixel-ratio:2) and (orientation:portrait) {
190 | .wrapper {
191 | padding-top: 48%;
192 | }
193 | .arrow {
194 | bottom: 27%;
195 | }
196 | }
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | border: none;
5 | -webkit-user-select: none;
6 | -webkit-tap-highlight-color: rgba(0,0,0,0);
7 | }
8 |
9 | body {
10 | background-color: #fff;
11 | font: 28px/1em "Helvetica";
12 | color: #FFF;
13 | overflow: hidden;
14 | cursor: url('images/cursor.png') 39 39, auto;
15 | }
16 |
17 | a {
18 | color: gray;
19 | }
20 |
21 | .framerAlertBackground {
22 | position: absolute; top:0px; left:0px; right:0px; bottom:0px;
23 | z-index: 1000;
24 | background-color: #fff;
25 | }
26 |
27 | .framerAlert {
28 | font:400 14px/1.4 "Helvetica Neue", Helvetica, Arial, sans-serif;
29 | -webkit-font-smoothing:antialiased;
30 | color:#616367; text-align:center;
31 | position: absolute; top:40%; left:50%; width:260px; margin-left:-130px;
32 | }
33 | .framerAlert strong { font-weight:500; color:#000; margin-bottom:8px; display:block; }
34 | .framerAlert a { color:#28AFFA; }
35 | .framerAlert .btn {
36 | font-weight:500; text-decoration:none; line-height:1;
37 | display:inline-block; padding:6px 12px 7px 12px;
38 | border-radius:3px; margin-top:12px;
39 | background:#28AFFA; color:#fff;
40 | }
41 |
42 | ::-webkit-scrollbar {
43 | display: none;
44 | }
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/framer/version:
--------------------------------------------------------------------------------
1 | 1
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/images/example4_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/images/example4_bg.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/images/example4_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/images/example4_icon.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/images/framer-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/images/framer-icon.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/imported/bg/framerps.log:
--------------------------------------------------------------------------------
1 | Could not read previous export (for caching), doing full export.
2 | bg: Exporting image
3 | 1 views changed
4 | Success: /var/folders/l9/607s07lj58n6w3kn9zdhr87r0000gn/T/C471B79F-130A-40D9-BD61-A904F0D6E58F-71997-0001D8BDF6023F5E/Untitled.framer/imported/bg
5 |
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/imported/bg/images/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/imported/bg/images/bg.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/imported/bg/layers.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": 1205,
4 | "name": "bg",
5 | "layerFrame": {
6 | "x": 0,
7 | "y": 0,
8 | "width": 312,
9 | "height": 366
10 | },
11 | "maskFrame": null,
12 | "image": {
13 | "path": "images/bg.png",
14 | "frame": {
15 | "x": 0,
16 | "y": 0,
17 | "width": 312,
18 | "height": 366
19 | }
20 | },
21 | "imageType": "png",
22 | "children": [
23 |
24 | ],
25 | "modification": "859061246"
26 | }
27 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/imported/bg/layers.json.js:
--------------------------------------------------------------------------------
1 | window.__imported__ = window.__imported__ || {};
2 | window.__imported__["bg/layers.json.js"] = [
3 | {
4 | "id": 1205,
5 | "name": "bg",
6 | "layerFrame": {
7 | "x": 0,
8 | "y": 0,
9 | "width": 312,
10 | "height": 366
11 | },
12 | "maskFrame": null,
13 | "image": {
14 | "path": "images/bg.png",
15 | "frame": {
16 | "x": 0,
17 | "y": 0,
18 | "width": 312,
19 | "height": 366
20 | }
21 | },
22 | "imageType": "png",
23 | "children": [
24 |
25 | ],
26 | "modification": "859061246"
27 | }
28 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/imported/example4_watch/images/button-A20C5081-0F6C-42FD-9F86-9D9AC72FE6B5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/imported/example4_watch/images/button-A20C5081-0F6C-42FD-9F86-9D9AC72FE6B5.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/imported/example4_watch/images/content-E4135DDC-AD25-4EA6-93E8-F1B8774F93AD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/imported/example4_watch/images/content-E4135DDC-AD25-4EA6-93E8-F1B8774F93AD.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/imported/example4_watch/layers.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "maskFrame" : null,
4 | "id" : "86130C6F-1365-4F69-B62D-95D94D9B0477",
5 | "visible" : true,
6 | "children" : [
7 | {
8 | "maskFrame" : null,
9 | "id" : "A20C5081-0F6C-42FD-9F86-9D9AC72FE6B5",
10 | "visible" : true,
11 | "children" : [
12 |
13 | ],
14 | "image" : {
15 | "path" : "images\/button-A20C5081-0F6C-42FD-9F86-9D9AC72FE6B5.png",
16 | "frame" : {
17 | "y" : 224,
18 | "x" : 0,
19 | "width" : 312,
20 | "height" : 68
21 | }
22 | },
23 | "imageType" : "png",
24 | "layerFrame" : {
25 | "y" : 224,
26 | "x" : 0,
27 | "width" : 312,
28 | "height" : 68
29 | },
30 | "name" : "button"
31 | },
32 | {
33 | "maskFrame" : null,
34 | "id" : "E4135DDC-AD25-4EA6-93E8-F1B8774F93AD",
35 | "visible" : true,
36 | "children" : [
37 |
38 | ],
39 | "image" : {
40 | "path" : "images\/content-E4135DDC-AD25-4EA6-93E8-F1B8774F93AD.png",
41 | "frame" : {
42 | "y" : 0,
43 | "x" : 0,
44 | "width" : 312,
45 | "height" : 206
46 | }
47 | },
48 | "imageType" : "png",
49 | "layerFrame" : {
50 | "y" : 0,
51 | "x" : 0,
52 | "width" : 312,
53 | "height" : 206
54 | },
55 | "name" : "content"
56 | }
57 | ],
58 | "image" : {
59 | "path" : "images\/notification-86130C6F-1365-4F69-B62D-95D94D9B0477.png",
60 | "frame" : {
61 | "y" : 0,
62 | "x" : 0,
63 | "width" : 312,
64 | "height" : 292
65 | }
66 | },
67 | "imageType" : "png",
68 | "layerFrame" : {
69 | "y" : 0,
70 | "x" : 0,
71 | "width" : 312,
72 | "height" : 292
73 | },
74 | "name" : "notification"
75 | }
76 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/imported/example4_watch/layers.json.js:
--------------------------------------------------------------------------------
1 | window.__imported__ = window.__imported__ || {};
2 | window.__imported__["example4_watch/layers.json.js"] = [
3 | {
4 | "maskFrame" : null,
5 | "id" : "86130C6F-1365-4F69-B62D-95D94D9B0477",
6 | "visible" : true,
7 | "children" : [
8 | {
9 | "maskFrame" : null,
10 | "id" : "A20C5081-0F6C-42FD-9F86-9D9AC72FE6B5",
11 | "visible" : true,
12 | "children" : [
13 |
14 | ],
15 | "image" : {
16 | "path" : "images\/button-A20C5081-0F6C-42FD-9F86-9D9AC72FE6B5.png",
17 | "frame" : {
18 | "y" : 224,
19 | "x" : 0,
20 | "width" : 312,
21 | "height" : 68
22 | }
23 | },
24 | "imageType" : "png",
25 | "layerFrame" : {
26 | "y" : 224,
27 | "x" : 0,
28 | "width" : 312,
29 | "height" : 68
30 | },
31 | "name" : "button"
32 | },
33 | {
34 | "maskFrame" : null,
35 | "id" : "E4135DDC-AD25-4EA6-93E8-F1B8774F93AD",
36 | "visible" : true,
37 | "children" : [
38 |
39 | ],
40 | "image" : {
41 | "path" : "images\/content-E4135DDC-AD25-4EA6-93E8-F1B8774F93AD.png",
42 | "frame" : {
43 | "y" : 0,
44 | "x" : 0,
45 | "width" : 312,
46 | "height" : 206
47 | }
48 | },
49 | "imageType" : "png",
50 | "layerFrame" : {
51 | "y" : 0,
52 | "x" : 0,
53 | "width" : 312,
54 | "height" : 206
55 | },
56 | "name" : "content"
57 | }
58 | ],
59 | "image" : {
60 | "path" : "images\/notification-86130C6F-1365-4F69-B62D-95D94D9B0477.png",
61 | "frame" : {
62 | "y" : 0,
63 | "x" : 0,
64 | "width" : 312,
65 | "height" : 292
66 | }
67 | },
68 | "imageType" : "png",
69 | "layerFrame" : {
70 | "y" : 0,
71 | "x" : 0,
72 | "width" : 312,
73 | "height" : 292
74 | },
75 | "name" : "notification"
76 | }
77 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/imported/icon/framerps.log:
--------------------------------------------------------------------------------
1 | Could not read previous export (for caching), doing full export.
2 | icon: Exporting image
3 | 1 views changed
4 | Success: /var/folders/l9/607s07lj58n6w3kn9zdhr87r0000gn/T/C471B79F-130A-40D9-BD61-A904F0D6E58F-71997-0001D8BDF6023F5E/Untitled.framer/imported/icon
5 |
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/imported/icon/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/imported/icon/images/icon.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/imported/icon/layers.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": 6,
4 | "name": "icon",
5 | "layerFrame": {
6 | "x": 0,
7 | "y": 0,
8 | "width": 196,
9 | "height": 196
10 | },
11 | "maskFrame": null,
12 | "image": {
13 | "path": "images/icon.png",
14 | "frame": {
15 | "x": 0,
16 | "y": 0,
17 | "width": 196,
18 | "height": 196
19 | }
20 | },
21 | "imageType": "png",
22 | "children": [
23 |
24 | ],
25 | "modification": "525900364"
26 | }
27 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/imported/icon/layers.json.js:
--------------------------------------------------------------------------------
1 | window.__imported__ = window.__imported__ || {};
2 | window.__imported__["icon/layers.json.js"] = [
3 | {
4 | "id": 6,
5 | "name": "icon",
6 | "layerFrame": {
7 | "x": 0,
8 | "y": 0,
9 | "width": 196,
10 | "height": 196
11 | },
12 | "maskFrame": null,
13 | "image": {
14 | "path": "images/icon.png",
15 | "frame": {
16 | "x": 0,
17 | "y": 0,
18 | "width": 196,
19 | "height": 196
20 | }
21 | },
22 | "imageType": "png",
23 | "children": [
24 |
25 | ],
26 | "modification": "525900364"
27 | }
28 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/imported/watchapp/framerps.log:
--------------------------------------------------------------------------------
1 | Could not read previous export (for caching), doing full export.
2 | Renaming content -> content-3
3 | head: Exporting image
4 | content: Exporting image
5 | content-2: Exporting image
6 | 8 views changed
7 | Success: /Users/tessathornton/Code/watch2.framer/imported/watchapp
8 |
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/imported/watchapp/images/content-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/imported/watchapp/images/content-2.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/imported/watchapp/images/content.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/imported/watchapp/images/content.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/imported/watchapp/images/head.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/framer/watch.framer/imported/watchapp/images/head.png
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/imported/watchapp/layers.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": 31,
4 | "name": "notification",
5 | "layerFrame": {
6 | "x": 0,
7 | "y": 0,
8 | "width": 313,
9 | "height": 292
10 | },
11 | "maskFrame": null,
12 | "image": null,
13 | "imageType": null,
14 | "children": [
15 | {
16 | "id": 24,
17 | "name": "content",
18 | "layerFrame": {
19 | "x": 0,
20 | "y": 0,
21 | "width": 313,
22 | "height": 292
23 | },
24 | "maskFrame": null,
25 | "image": null,
26 | "imageType": null,
27 | "children": [
28 | {
29 | "id": 25,
30 | "name": "screen",
31 | "layerFrame": {
32 | "x": 0,
33 | "y": 0,
34 | "width": 313,
35 | "height": 292
36 | },
37 | "maskFrame": null,
38 | "image": null,
39 | "imageType": null,
40 | "children": [
41 | {
42 | "id": 15,
43 | "name": "head",
44 | "layerFrame": {
45 | "x": 0,
46 | "y": 0,
47 | "width": 313,
48 | "height": 292
49 | },
50 | "maskFrame": null,
51 | "image": {
52 | "path": "images/head.png",
53 | "frame": {
54 | "x": 1,
55 | "y": 0,
56 | "width": 312,
57 | "height": 62
58 | }
59 | },
60 | "imageType": "png",
61 | "children": [
62 |
63 | ],
64 | "modification": "874705090"
65 | },
66 | {
67 | "id": 11,
68 | "name": "content",
69 | "layerFrame": {
70 | "x": 0,
71 | "y": 0,
72 | "width": 313,
73 | "height": 292
74 | },
75 | "maskFrame": null,
76 | "image": {
77 | "path": "images/content.png",
78 | "frame": {
79 | "x": 1,
80 | "y": 0,
81 | "width": 312,
82 | "height": 207
83 | }
84 | },
85 | "imageType": "png",
86 | "children": [
87 |
88 | ],
89 | "modification": "1700663144"
90 | }
91 | ],
92 | "modification": "674658564"
93 | }
94 | ],
95 | "modification": "228351138"
96 | },
97 | {
98 | "id": 49,
99 | "name": "button",
100 | "layerFrame": {
101 | "x": 0,
102 | "y": 0,
103 | "width": 313,
104 | "height": 292
105 | },
106 | "maskFrame": null,
107 | "image": null,
108 | "imageType": null,
109 | "children": [
110 | {
111 | "id": 48,
112 | "name": "screen-2",
113 | "layerFrame": {
114 | "x": 0,
115 | "y": 0,
116 | "width": 313,
117 | "height": 292
118 | },
119 | "maskFrame": null,
120 | "image": null,
121 | "imageType": null,
122 | "children": [
123 | {
124 | "id": 43,
125 | "name": "content-2",
126 | "layerFrame": {
127 | "x": 0,
128 | "y": 0,
129 | "width": 313,
130 | "height": 292
131 | },
132 | "maskFrame": null,
133 | "image": {
134 | "path": "images/content-2.png",
135 | "frame": {
136 | "x": 1,
137 | "y": 222,
138 | "width": 312,
139 | "height": 70
140 | }
141 | },
142 | "imageType": "png",
143 | "children": [
144 |
145 | ],
146 | "modification": "1544674745"
147 | }
148 | ],
149 | "modification": "319815240"
150 | }
151 | ],
152 | "modification": "487146435"
153 | }
154 | ],
155 | "modification": "653315505"
156 | }
157 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/imported/watchapp/layers.json.js:
--------------------------------------------------------------------------------
1 | window.__imported__ = window.__imported__ || {};
2 | window.__imported__["watchapp/layers.json.js"] = [
3 | {
4 | "id": 31,
5 | "name": "notification",
6 | "layerFrame": {
7 | "x": 0,
8 | "y": 0,
9 | "width": 313,
10 | "height": 292
11 | },
12 | "maskFrame": null,
13 | "image": null,
14 | "imageType": null,
15 | "children": [
16 | {
17 | "id": 24,
18 | "name": "content",
19 | "layerFrame": {
20 | "x": 0,
21 | "y": 0,
22 | "width": 313,
23 | "height": 292
24 | },
25 | "maskFrame": null,
26 | "image": null,
27 | "imageType": null,
28 | "children": [
29 | {
30 | "id": 25,
31 | "name": "screen",
32 | "layerFrame": {
33 | "x": 0,
34 | "y": 0,
35 | "width": 313,
36 | "height": 292
37 | },
38 | "maskFrame": null,
39 | "image": null,
40 | "imageType": null,
41 | "children": [
42 | {
43 | "id": 15,
44 | "name": "head",
45 | "layerFrame": {
46 | "x": 0,
47 | "y": 0,
48 | "width": 313,
49 | "height": 292
50 | },
51 | "maskFrame": null,
52 | "image": {
53 | "path": "images/head.png",
54 | "frame": {
55 | "x": 1,
56 | "y": 0,
57 | "width": 312,
58 | "height": 62
59 | }
60 | },
61 | "imageType": "png",
62 | "children": [
63 |
64 | ],
65 | "modification": "874705090"
66 | },
67 | {
68 | "id": 11,
69 | "name": "content",
70 | "layerFrame": {
71 | "x": 0,
72 | "y": 0,
73 | "width": 313,
74 | "height": 292
75 | },
76 | "maskFrame": null,
77 | "image": {
78 | "path": "images/content.png",
79 | "frame": {
80 | "x": 1,
81 | "y": 0,
82 | "width": 312,
83 | "height": 207
84 | }
85 | },
86 | "imageType": "png",
87 | "children": [
88 |
89 | ],
90 | "modification": "1700663144"
91 | }
92 | ],
93 | "modification": "674658564"
94 | }
95 | ],
96 | "modification": "228351138"
97 | },
98 | {
99 | "id": 49,
100 | "name": "button",
101 | "layerFrame": {
102 | "x": 0,
103 | "y": 0,
104 | "width": 313,
105 | "height": 292
106 | },
107 | "maskFrame": null,
108 | "image": null,
109 | "imageType": null,
110 | "children": [
111 | {
112 | "id": 48,
113 | "name": "screen-2",
114 | "layerFrame": {
115 | "x": 0,
116 | "y": 0,
117 | "width": 313,
118 | "height": 292
119 | },
120 | "maskFrame": null,
121 | "image": null,
122 | "imageType": null,
123 | "children": [
124 | {
125 | "id": 43,
126 | "name": "content-2",
127 | "layerFrame": {
128 | "x": 0,
129 | "y": 0,
130 | "width": 313,
131 | "height": 292
132 | },
133 | "maskFrame": null,
134 | "image": {
135 | "path": "images/content-2.png",
136 | "frame": {
137 | "x": 1,
138 | "y": 222,
139 | "width": 312,
140 | "height": 70
141 | }
142 | },
143 | "imageType": "png",
144 | "children": [
145 |
146 | ],
147 | "modification": "1544674745"
148 | }
149 | ],
150 | "modification": "319815240"
151 | }
152 | ],
153 | "modification": "487146435"
154 | }
155 | ],
156 | "modification": "653315505"
157 | }
158 | ]
--------------------------------------------------------------------------------
/pkg/assets/framer/watch.framer/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/pkg/assets/pngs/example4_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/pngs/example4_bg.png
--------------------------------------------------------------------------------
/pkg/assets/pngs/example4_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/pngs/example4_icon.png
--------------------------------------------------------------------------------
/pkg/assets/psds/example1_popup.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/psds/example1_popup.psd
--------------------------------------------------------------------------------
/pkg/assets/psds/example2_dropdown.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/psds/example2_dropdown.psd
--------------------------------------------------------------------------------
/pkg/assets/psds/example3_swipe.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/psds/example3_swipe.psd
--------------------------------------------------------------------------------
/pkg/assets/psds/example4_icon.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/psds/example4_icon.psd
--------------------------------------------------------------------------------
/pkg/assets/psds/example4_watch.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/psds/example4_watch.psd
--------------------------------------------------------------------------------
/pkg/assets/sketch/example1_popup.sketch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/sketch/example1_popup.sketch
--------------------------------------------------------------------------------
/pkg/assets/sketch/example2_dropdown.sketch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/sketch/example2_dropdown.sketch
--------------------------------------------------------------------------------
/pkg/assets/sketch/example3_swipe.sketch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/sketch/example3_swipe.sketch
--------------------------------------------------------------------------------
/pkg/assets/sketch/example4_watch.sketch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/assets/sketch/example4_watch.sketch
--------------------------------------------------------------------------------
/pkg/book.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/book.epub
--------------------------------------------------------------------------------
/pkg/book.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/pkg/book.pdf
--------------------------------------------------------------------------------
/src/cover.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/src/cover.jpg
--------------------------------------------------------------------------------
/src/cover.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/src/cover.pdf
--------------------------------------------------------------------------------
/src/cover.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tessalt/coffeescriptbook/7a3a0b09c933194d3716e02e47d97b2ad62a2f30/src/cover.psd
--------------------------------------------------------------------------------
/src/layout.latex:
--------------------------------------------------------------------------------
1 | \documentclass[12pt]{$documentclass$}
2 | \usepackage{mathpazo}
3 | \usepackage{setspace}
4 | \setstretch{1.2}
5 | \usepackage{amssymb,amsmath}
6 | \usepackage{ifxetex,ifluatex}
7 | \usepackage{fixltx2e} % provides \textsubscript
8 |
9 | \usepackage{pdfpages}
10 |
11 | \usepackage{listings}
12 | \usepackage{color}
13 |
14 | \definecolor{codegray}{rgb}{.95,.95,.95}
15 |
16 | \lstdefinestyle{mystyle}{
17 | backgroundcolor=\color{codegray},
18 | basicstyle=\small\ttfamily,
19 | breakatwhitespace=false,
20 | breaklines=true,
21 | captionpos=b,
22 | keepspaces=true,
23 | tabsize=2
24 | }
25 |
26 | \lstset{style=mystyle}
27 | \usepackage{fancyhdr}
28 | \pagestyle{fancy}
29 | \usepackage{titlesec}
30 | \usepackage[scaled=.90]{helvet}
31 |
32 |
33 | \titleformat*{\section}{\LARGE\bfseries\sffamily}
34 | \titleformat*{\subsection}{\fontsize{15}{15}\bfseries\sffamily}
35 | \titleformat*{\subsubsection}{\normalsize\bfseries\sffamily}
36 | \titleformat*{\paragraph}{\large\bfseries\sffamily}
37 | \titleformat*{\subparagraph}{\large\bfseries\sffamily}
38 |
39 |
40 | \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
41 | \usepackage[T1]{fontenc}
42 | \usepackage[utf8]{inputenc}
43 | $if(euro)$
44 | \usepackage{eurosym}
45 | $endif$
46 | \else % if luatex or xelatex
47 | \ifxetex
48 | \usepackage{mathspec}
49 | \usepackage{xltxtra,xunicode}
50 | \else
51 | \usepackage{fontspec}
52 | \fi
53 | \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
54 | \newcommand{\euro}{€}
55 | $if(mainfont)$
56 | \setmainfont{$mainfont$}
57 | $endif$
58 | $if(sansfont)$
59 | \setsansfont{$sansfont$}
60 | $endif$
61 | $if(monofont)$
62 | \setmonofont[Mapping=tex-ansi]{$monofont$}
63 | $endif$
64 | $if(mathfont)$
65 | \setmathfont(Digits,Latin,Greek){$mathfont$}
66 | $endif$
67 | \fi
68 | % use upquote if available, for straight quotes in verbatim environments
69 | \IfFileExists{upquote.sty}{\usepackage{upquote}}{}
70 | % use microtype if available
71 | \IfFileExists{microtype.sty}{%
72 | \usepackage{microtype}
73 | \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
74 | }{}
75 | \usepackage[margin=1.5in]{geometry}
76 | $if(lang)$
77 | \ifxetex
78 | \usepackage{polyglossia}
79 | \setmainlanguage{$mainlang$}
80 | \else
81 | \usepackage[shorthands=off,$lang$]{babel}
82 | \fi
83 | $endif$
84 | $if(natbib)$
85 | \usepackage{natbib}
86 | \bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
87 | $endif$
88 | $if(biblatex)$
89 | \usepackage{biblatex}
90 | $if(biblio-files)$
91 | \bibliography{$biblio-files$}
92 | $endif$
93 | $endif$
94 | \usepackage{inconsolata}
95 |
96 | $if(highlighting-macros)$
97 | $highlighting-macros$
98 | $endif$
99 | $if(verbatim-in-note)$
100 | \usepackage{fancyvrb}
101 | \VerbatimFootnotes
102 | $endif$
103 | $if(tables)$
104 | \usepackage{longtable,booktabs}
105 | $endif$
106 | $if(graphics)$
107 | \usepackage{graphicx}
108 | \makeatletter
109 | \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
110 | \def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
111 | \makeatother
112 | % Scale images if necessary, so that they will not overflow the page
113 | % margins by default, and it is still possible to overwrite the defaults
114 | % using explicit options in \includegraphics[width, height, ...]{}
115 | \setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
116 | $endif$
117 | \ifxetex
118 | \usepackage[setpagesize=false, % page size defined by xetex
119 | unicode=false, % unicode breaks when used with xetex
120 | xetex]{hyperref}
121 | \else
122 | \usepackage[unicode=true]{hyperref}
123 | \fi
124 | \hypersetup{breaklinks=true,
125 | bookmarks=true,
126 | pdfauthor={$author-meta$},
127 | pdftitle={$title-meta$},
128 | colorlinks=true,
129 | citecolor=$if(citecolor)$$citecolor$$else$blue$endif$,
130 | urlcolor=$if(urlcolor)$$urlcolor$$else$blue$endif$,
131 | linkcolor=$if(linkcolor)$$linkcolor$$else$magenta$endif$,
132 | pdfborder={0 0 0}}
133 | \urlstyle{same} % don't use monospace font for urls
134 | $if(links-as-notes)$
135 | % Make links footnotes instead of hotlinks:
136 | \renewcommand{\href}[2]{#2\footnote{\url{#1}}}
137 | $endif$
138 | $if(strikeout)$
139 | \usepackage[normalem]{ulem}
140 | % avoid problems with \sout in headers with hyperref:
141 | \pdfstringdefDisableCommands{\renewcommand{\sout}{}}
142 | $endif$
143 | \setlength{\parindent}{0pt}
144 | \setlength{\parskip}{6pt plus 2pt minus 1pt}
145 | \setlength{\emergencystretch}{3em} % prevent overfull lines
146 | $if(numbersections)$
147 | \setcounter{secnumdepth}{5}
148 | $else$
149 | \setcounter{secnumdepth}{0}
150 | $endif$
151 | $if(verbatim-in-note)$
152 | \VerbatimFootnotes % allows verbatim text in footnotes
153 | $endif$
154 |
155 | $if(title)$
156 | \title{$title$$if(subtitle)$\\\vspace{0.5em}{\large $subtitle$}$endif$}
157 | $endif$
158 | $if(author)$
159 | \author{$for(author)$$author$$sep$ \and $endfor$}
160 | $endif$
161 | \date{$date$}
162 | $for(header-includes)$
163 | $header-includes$
164 | $endfor$
165 |
166 | \begin{document}
167 |
168 | $if(title)$
169 | \maketitle
170 | $endif$
171 | $if(abstract)$
172 | \begin{abstract}
173 | $abstract$
174 | \end{abstract}
175 | $endif$
176 |
177 | $for(include-before)$
178 | $include-before$
179 |
180 | $endfor$
181 | $if(toc)$
182 | {
183 | \hypersetup{linkcolor=black}
184 | \setcounter{tocdepth}{$toc-depth$}
185 | \tableofcontents
186 | }
187 | $endif$
188 | $if(lot)$
189 | \listoftables
190 | $endif$
191 | $if(lof)$
192 | \listoffigures
193 | $endif$
194 | $body$
195 |
196 | $if(natbib)$
197 | $if(biblio-files)$
198 | $if(biblio-title)$
199 | $if(book-class)$
200 | \renewcommand\bibname{$biblio-title$}
201 | $else$
202 | \renewcommand\refname{$biblio-title$}
203 | $endif$
204 | $endif$
205 | \bibliography{$biblio-files$}
206 |
207 | $endif$
208 | $endif$
209 | $if(biblatex)$
210 | \printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
211 |
212 | $endif$
213 | $for(include-after)$
214 | $include-after$
215 |
216 | $endfor$
217 | \end{document}
--------------------------------------------------------------------------------