├── .gitignore ├── CHANGELOG.md ├── CONTRIBUTION.md ├── LICENSE.md ├── README.md ├── build.sh ├── builds └── sync-to-slides.v.2.2.zip └── sync-to-slides.sketchplugin └── Contents └── Sketch ├── SyncToSlides.framework ├── Headers ├── Modules ├── Resources ├── SyncToSlides └── Versions │ ├── A │ ├── Headers │ │ └── SyncToSlides.h │ ├── Modules │ │ └── module.modulemap │ ├── Resources │ │ ├── DateTools.bundle │ │ │ ├── am.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── ar.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── bg.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── ca.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── cs.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── cy.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── da.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── de.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── en.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── es.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── eu.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── fi.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── fr.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── gre.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── gu.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── he.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── hi.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── hr.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── hu.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── id.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── is.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── it.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── ja.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── ko.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── lv.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── ms.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── nb.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── nl.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── pl.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── pt-PT.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── pt.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── ro.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── ru.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── sk.lproj │ │ │ │ └── NSDateTimeAgo.strings │ │ │ ├── sl.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── sv.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── th.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── tr.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── uk.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── vi.lproj │ │ │ │ └── DateTools.strings │ │ │ ├── zh-Hans.lproj │ │ │ │ └── DateTools.strings │ │ │ └── zh-Hant.lproj │ │ │ │ └── DateTools.strings │ │ └── Info.plist │ └── SyncToSlides │ └── Current ├── manifest.json ├── panel ├── assets │ ├── css │ │ ├── animate.css │ │ └── styles.css │ ├── img │ │ ├── alphabetical.svg │ │ ├── coach-marks.svg │ │ ├── done.svg │ │ ├── g.svg │ │ ├── ic_close_black_24dp.svg │ │ ├── link.svg │ │ ├── logo-text.svg │ │ ├── logo.svg │ │ ├── none.svg │ │ ├── refresh.svg │ │ ├── reverse-alphabetical.svg │ │ ├── reverse.svg │ │ ├── settigns.svg │ │ └── spinner.svg │ └── js │ │ ├── analytics.min.js │ │ ├── c.js │ │ ├── lib │ │ ├── jquery-2.2.4.min.js │ │ └── jquery-timeago.js │ │ └── main.js ├── index.html └── login.html ├── scripts ├── MochaJSDelegate.js └── common.js ├── src ├── gulpfile.js ├── js │ ├── init.js │ ├── main.js │ └── utils │ │ ├── api.js │ │ ├── configs.js │ │ ├── export.js │ │ ├── help.js │ │ ├── loadframework.js │ │ └── panel.js ├── less │ └── styles.less └── package.json └── sync.sketchscript /.gitignore: -------------------------------------------------------------------------------- 1 | sync-to-slides.sketchplugin/Contents/Sketch/src/node_modules 2 | .git-back 3 | .DS_Store 4 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## [2.1] - 2017-05-06 2 | - User can click on the refresh button to get new changes 3 | - Added export only image option 4 | 5 | ## [2.0] - 2017-04-09 6 | - Added file upload selection 7 | - Exports all the individual layers, which allows commenting 8 | - Complete code re-write 9 | 10 | ## [0.0.1] - 2017-03-12 11 | - Releasing the beta version of sync to slides 12 | -------------------------------------------------------------------------------- /CONTRIBUTION.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/websiddu/sketch-sync-to-slides/e53611b54a6792ce0ea638adb73b02a2664fa241/CONTRIBUTION.md -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2010-2017 Siddhartha Gudipati 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Sync to Slides 2 | ### Sync your Sketch artboards to Google Slides with ease 3 | 4 | Sync to Slides is a Sketch plugin that will help you upload your artboards to Google Slides directly without an export step 5 | 6 | 7 |  8 | 9 | ## Things to know 10 | 11 | - Slides API have limited request payload sizes. Don't expect the plugin to work if you sync 50 artboards with ton of layers at a time. The workaround can be select max of 10 artboards at a time. 12 | - You can also lock the layer if you don't want that layer to be exported for targeted commenting. Locking layers that don't need commenting support will drastically decrease the sync time. 13 | - If you don't want commenting support at all, goto settings and say no to export layers. 14 | 15 | 16 | ## Demo 17 | Whatch it here 18 | 19 | ## Installation 20 | 21 | [](https://sketchpacks.com/websiddu/sync-to-slides/install) 22 | 23 | or 24 | 25 | [Download here](https://websiddu.github.io/sync-to-slides/files/builds/sync-to-slides.v.2.2.zip) 26 | 27 | ## Changelog 28 | ### [2.2] - 2017-05-28 29 | - Now user user created page elements won't get deleted 30 | - Symbols will correctly keep comments 31 | - Added the appcast updates 32 | 33 | ### [2.1] - 2017-05-06 34 | - User can click on the refresh button to get new changes 35 | - Added export only image option 36 | 37 | ### [2.0] - 2017-04-09 38 | - Added file upload selection 39 | - Exports all the individual layers, which allows commenting 40 | - Complete code re-write 41 | 42 | ### [0.0.1] - 2017-03-12 43 | - Releasing the beta version of sync to slides 44 | Bugs & Suggestions 45 | This is a very early beta so there will be few bugs which we might very well fix in the next release. So please do report bugs to by creating a issue here 46 | 47 | ## Acknowledgments 48 | Huge thanks to utom, a huge amount of code is borrowed from his Sketch Measure plugin. 49 | 50 | ## License 51 | MIT 52 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | rm -rf builds/sync-to-slides.sketchplugin 3 | cp -R sync-to-slides.sketchplugin builds/sync-to-slides.sketchplugin 4 | rm -rf builds/sync-to-slides.sketchplugin/Contents/Sketch/src 5 | -------------------------------------------------------------------------------- /builds/sync-to-slides.v.2.2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/websiddu/sketch-sync-to-slides/e53611b54a6792ce0ea638adb73b02a2664fa241/builds/sync-to-slides.v.2.2.zip -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Headers: -------------------------------------------------------------------------------- 1 | Versions/Current/Headers -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Modules: -------------------------------------------------------------------------------- 1 | Versions/Current/Modules -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Resources: -------------------------------------------------------------------------------- 1 | Versions/Current/Resources -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/SyncToSlides: -------------------------------------------------------------------------------- 1 | Versions/Current/SyncToSlides -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Headers/SyncToSlides.h: -------------------------------------------------------------------------------- 1 | // 2 | // SyncToSlides.h 3 | // SyncToSlides 4 | // 5 | // Created by Siddhartha Gudipati on 3/17/17. 6 | // Copyright © 2017 gsid. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for SyncToSlides. 12 | FOUNDATION_EXPORT double SyncToSlidesVersionNumber; 13 | 14 | //! Project version string for SyncToSlides. 15 | FOUNDATION_EXPORT const unsigned char SyncToSlidesVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | #import "ServiceManager.h" 20 | 21 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module SyncToSlides { 2 | umbrella header "SyncToSlides.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/am.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d ቀናት በፊት"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d ሰዓታት በፊት"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d ደቂቃዎች በፊት"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d ወሮች በፊት"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d ሰከንዶች በፊት"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d ሳምንታት በፊት"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d አመታት በፊት"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "አንድ ደቂቃ በፊት"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "አንድ ሰዓት በፊት"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "ልክ አሁን"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "ያለፈው ወር"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "ያለፈው ሳምንት"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "ያለፈው አመት"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "ትናንትና"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "አንድ አመት በፊት"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "አንድ ወር በፊት"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "አንድ ሳምንት በፊት"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "አንድ ቀን በፊት"; 54 | 55 | /* No comment provided by engineer. */ 56 | "1 hour ago" = "አንድ ሰዓት በፊት"; 57 | 58 | /* No comment provided by engineer. */ 59 | "1 minute ago" = "አንድ ደቂቃ በፊት"; 60 | 61 | /* No comment provided by engineer. */ 62 | "1 second ago" = "አንድ ሰከንድ በፊት"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This morning" = "ዛሬ ጠዋት"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This afternoon" = "ዛሬ ከሰዓት"; 69 | 70 | /* No comment provided by engineer. */ 71 | "Today" = "ዛሬ"; 72 | 73 | /* No comment provided by engineer. */ 74 | "This week" = "በዚህ ሳምንት"; 75 | 76 | /* No comment provided by engineer. */ 77 | "This month" = "በዚህ ወር"; 78 | 79 | /* No comment provided by engineer. */ 80 | "This year" = "በዚህ አመት"; 81 | 82 | /* Short format for */ 83 | "%dy" = "%dy"; // year 84 | "%dM" = "%dM"; // month 85 | "%dw" = "%dw"; // week 86 | "%dd" = "%dd"; // day 87 | "%dh" = "%dh"; // hour 88 | "%dm" = "%dm"; // minute 89 | "%ds" = "%ds"; // second 90 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/ar.lproj/DateTools.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/websiddu/sketch-sync-to-slides/e53611b54a6792ce0ea638adb73b02a2664fa241/sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/ar.lproj/DateTools.strings -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/bg.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "преди %d дена"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "преди %d часа"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "преди %d минути"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "преди %d месеца"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "преди %d секунди"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "преди %d седмици"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "преди %d години"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "преди минута"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "преди час"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "току що"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "през последния месец"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "през последната седмица"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "през последната година"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "вчера"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "преди 1 година"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "преди 1 месец"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "преди 1 седмица"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "преди 1 ден"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "тази сутрин"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "тази вечер"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "днес"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "тази седмица"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "този месец"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "тази година"; 72 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/ca.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "Fa %d dies"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "Fa %d hores"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "Fa %d minuts"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "Fa %d mesos"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "Fa %d segons"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "Fa %d setmanes"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "Fa %d anys"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Fa un minut"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Fa una hora"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Fa un moment"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "El mes passat"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "La setmana passada"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "L'any passat"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Ahir"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "Fa un any"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "Fa un mes"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "Fa una setmana"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "Fa un dia"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Aquest matí"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Aquesta tarda"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Avui"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Aquesta setmana"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Aquest mes"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Aquest any"; 72 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/cs.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "Před %d dny"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "Před %d hodinami"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "Před %d minutami"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "Před %d měsíci"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "Před %d sekundami"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "Před %d týdny"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "Před %d lety"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Před minutou"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Před hodinou"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Právě teď"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Minulý měsíc"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "Minulý týden"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "Minulý rok"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Včera"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "Před rokem"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "Před měsícem"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "Před týdnem"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "Předevčírem"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Dnes dopoledne"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Dnes odpoledne"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Dnes"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Tento týden"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Tento měsíc"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Letos"; 72 | 73 | /* Short format for */ 74 | "%dy" = "%dr"; // year 75 | "%dM" = "%dM"; // month 76 | "%dw" = "%dt"; // week 77 | "%dd" = "%dd"; // day 78 | "%dh" = "%dh"; // hour 79 | "%dm" = "%dm"; // minute 80 | "%ds" = "%ds"; // second 81 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/cy.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d diwrnod yn ôl"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d awr yn ôl"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d munud yn ôl"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d mis yn ôl"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d eiliad yn ôl"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d wythnos yn ôl"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d mlynydd yn ôl"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Un munud yn ôl"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Un awr yn ôl"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Nawr"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Mis diwethaf"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "Wythnos diwethaf"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "Llynedd"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Ddoe"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "1 flynydd yn ôl"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "1 mis yn ôl"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "1 wythnos yn ôl"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "1 diwrnod yn ôl"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Y bore ma"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Y penwythnos hon"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Heddiw"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Yr wythnos hon"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Y mis hon"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Eleni"; 72 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/da.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d dage siden"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d timer siden"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d minutter siden"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d måneder siden"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d sekunder siden"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d uger siden"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d år siden"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Et minut siden"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "En time siden"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Lige nu"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Sidste måned"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "Sidste uge"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "Sidste år"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "I går"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "1 år siden"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "1 måned siden"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "1 uge siden"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "1 dag siden"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Her til morgen"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Her til eftermiddag"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "I dag"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Denne uge"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Denne måned"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Dette år"; -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/de.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "Vor %d Tagen"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "Vor %d Stunden"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "Vor %d Minuten"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "Vor %d Monaten"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "Vor %d Sekunden"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "Vor %d Wochen"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "Vor %d Jahren"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Vor einer Minute"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Vor einer Stunde"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Gerade eben"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Letzten Monat"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "Letzte Woche"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "Letztes Jahr"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Gestern"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "Vor 1 Jahr"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "Vor 1 Monat"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "Vor 1 Woche"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "Vor 1 Tag"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Heute Morgen"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Heute Nachmittag"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Heute"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Diese Woche"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Diesen Monat"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Dieses Jahr"; 72 | 73 | /* Short format for */ 74 | "%dy" = "%dJ"; // year 75 | "%dM" = "%dM"; // month 76 | "%dw" = "%dW"; // week 77 | "%dd" = "%dT"; // day 78 | "%dh" = "%dh"; // hour 79 | "%dm" = "%dm"; // minute 80 | "%ds" = "%ds"; // second 81 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/en.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d days ago"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d hours ago"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d minutes ago"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d months ago"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d seconds ago"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d weeks ago"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d years ago"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "A minute ago"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "An hour ago"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Just now"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Last month"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "Last week"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "Last year"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Yesterday"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "1 year ago"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "1 month ago"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "1 week ago"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "1 day ago"; 54 | 55 | /* No comment provided by engineer. */ 56 | "1 hour ago" = "1 hour ago"; 57 | 58 | /* No comment provided by engineer. */ 59 | "1 minute ago" = "1 minute ago"; 60 | 61 | /* No comment provided by engineer. */ 62 | "1 second ago" = "1 second ago"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This morning" = "This morning"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This afternoon" = "This afternoon"; 69 | 70 | /* No comment provided by engineer. */ 71 | "Today" = "Today"; 72 | 73 | /* No comment provided by engineer. */ 74 | "This week" = "This week"; 75 | 76 | /* No comment provided by engineer. */ 77 | "This month" = "This month"; 78 | 79 | /* No comment provided by engineer. */ 80 | "This year" = "This year"; 81 | 82 | /* Short format for */ 83 | "%dy" = "%dy"; // year 84 | "%dM" = "%dM"; // month 85 | "%dw" = "%dw"; // week 86 | "%dd" = "%dd"; // day 87 | "%dh" = "%dh"; // hour 88 | "%dm" = "%dm"; // minute 89 | "%ds" = "%ds"; // second 90 | 91 | /* Week format for */ 92 | "Mon" = "Mon"; 93 | "Tue" = "Tue"; 94 | "Wed" = "Wed"; 95 | "Thu" = "Thu"; 96 | "Fri" = "Fri"; 97 | "Sat" = "Sat"; 98 | "Sun" = "Sun"; 99 | 100 | "周一" = "星期一"; 101 | "周二" = "星期二"; 102 | "周三" = "星期三"; 103 | "周四" = "星期四"; 104 | "周五" = "星期五"; 105 | "周六" = "星期六"; 106 | "周日" = "星期日"; -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/es.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "Hace %d días"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "Hace %d horas"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "Hace %d minutos"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "Hace %d meses"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "Hace %d segundos"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "Hace %d semanas"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "Hace %d años"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Hace un minuto"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Hace una hora"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Ahora mismo"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "El mes pasado"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "La semana pasada"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "El año pasado"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Ayer"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "Hace un año"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "Hace un mes"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "Hace una semana"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "Hace un día"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Esta mañana"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Esta tarde"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Hoy"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Esta semana"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Este mes"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Este año"; 72 | 73 | /* Short format for */ 74 | "%dy" = "%da"; // year 75 | "%dM" = "%dM"; // month 76 | "%dw" = "%dS"; // week 77 | "%dd" = "%dd"; // day 78 | "%dh" = "%dh"; // hour 79 | "%dm" = "%dm"; // minute 80 | "%ds" = "%ds"; // second 81 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/eu.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "Orain dela %d egun"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "Orain dela %d ordu"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "Orain dela %d minutu"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "Orain dela %d hile"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "Orain dela %d segundu"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "Orain dela %d aste"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "Orain dela %d urte"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Orain dela minutu bat"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Orain dela ordu bat"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Oraintxe bertan"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Pasa den hilean"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "Pasa den astean"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "Pasa den urtean"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Atzo"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "Orain dela urte bat"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "Orain dela hile bat"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "Orain dela aste bat"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "Orain dela egun bat"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Gaur goizean"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Gaur arratsaldean"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Gaur"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Aste honetan"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Hile honetan"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Urte honetan"; 72 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/fi.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d päivää sitten"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d tuntia sitten"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d minuuttia sitten"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d kuukautta sitten"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d sekuntia sitten"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d viikkoa sitten"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d vuotta sitten"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Minuutti sitten"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Tunti sitten"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Juuri äsken"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Viime kuussa"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "Viime viikolla"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "Viime vuonna"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Eilen"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "Vuosi sitten"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "Kuukausi sitten"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "Viikko sitten"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "Vuorokausi sitten"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Tänä aamuna"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Tänä iltapäivänä"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Tänään"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Tällä viikolla"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Tässä kuussa"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Tänä vuonna"; 72 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/fr.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "Il y a %d jours"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "Il y a %d heures"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "Il y a %d minutes"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "Il y a %d mois"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "Il y a %d secondes"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "Il y a %d semaines"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "Il y a %d ans"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Il y a une minute"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Il y a une heure"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "A l'instant"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Le mois dernier"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "La semaine dernière"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "L'année dernière"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Hier"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "Il y a 1 an"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "Il y a 1 mois"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "Il y a 1 semaine"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "Il y a 1 jour"; 54 | 55 | /* No comment provided by engineer. */ 56 | "1 hour ago" = "Il y a 1 heure"; 57 | 58 | /* No comment provided by engineer. */ 59 | "1 minute ago" = "Il y a 1 minute"; 60 | 61 | /* No comment provided by engineer. */ 62 | "1 second ago" = "Il y a 1 seconde"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This morning" = "Ce matin"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This afternoon" = "Cet après-midi"; 69 | 70 | /* No comment provided by engineer. */ 71 | "Today" = "Aujourd'hui"; 72 | 73 | /* No comment provided by engineer. */ 74 | "This week" = "Cette semaine"; 75 | 76 | /* No comment provided by engineer. */ 77 | "This month" = "Ce mois-ci"; 78 | 79 | /* No comment provided by engineer. */ 80 | "This year" = "Cette année"; 81 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/gre.lproj/DateTools.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/websiddu/sketch-sync-to-slides/e53611b54a6792ce0ea638adb73b02a2664fa241/sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/gre.lproj/DateTools.strings -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/gu.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d દિવસ પહેલા"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d કલાક પહેલા"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d મિનિટ પહેલા"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d મહિના પહેલા"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d સેકન્ડ પહેલા"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d અઠવાડિયા પહેલા"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d વર્ષ પહેલા"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "એક મિનિટ પહેલા"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "એક કલાક પહેલા"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "હમણાં"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "ગયા મહિને"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "ગયા અઠવાડિયે"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "ગયા વર્ષે"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "ગઈ કાલે"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "1 વર્ષ પહેલાં"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "1 મહિનો પહેલા"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "1 અઠવાડિયું પહેલા"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "1 દિવસ પહેલાં"; 54 | 55 | /* No comment provided by engineer. */ 56 | "1 hour ago" = "1 કલાક પહેલા"; 57 | 58 | /* No comment provided by engineer. */ 59 | "1 minute ago" = "1 મિનિટ પહેલા"; 60 | 61 | /* No comment provided by engineer. */ 62 | "1 second ago" = "1 સેકન્ડ પહેલા"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This morning" = "આ સવારે"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This afternoon" = "આજે બપોરે"; 69 | 70 | /* No comment provided by engineer. */ 71 | "Today" = "આજે"; 72 | 73 | /* No comment provided by engineer. */ 74 | "This week" = "આ અઠવાડિયેું"; 75 | 76 | /* No comment provided by engineer. */ 77 | "This month" = "આ મહિને"; 78 | 79 | /* No comment provided by engineer. */ 80 | "This year" = "આ વર્ષે"; 81 | 82 | /* Short format for */ 83 | "%dy" = "%dy"; // year 84 | "%dM" = "%dM"; // month 85 | "%dw" = "%dw"; // week 86 | "%dd" = "%dd"; // day 87 | "%dh" = "%dh"; // hour 88 | "%dm" = "%dm"; // minute 89 | "%ds" = "%ds"; // second 90 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/he.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "לפני %d ימים"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "לפני %d שעות"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "לפני %d דקות"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "לפני %d חודשים"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "לפני %d שניות"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "לפני %d שבועות"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "לפני %d שנים"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "לפני דקה"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "לפני שעה"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "ממש עכשיו"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "בחודש שעבר"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "בשבוע שעבר"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "בשנה שעברה"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "אתמול"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "לפני שנה"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "לפני חודש"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "לפני שבוע"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "לפני יום"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "הבוקר"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "בצהריים"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "היום"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "השבוע"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "החודש"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "השנה"; 72 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/hi.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d दिन पहले"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d घंटे पहले"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d मिनट पहले"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d महीन पहले"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d सेकंड पहले"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d हफ्ते पहले"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d साल पहले"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "एक मिनट पहले"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "एक घंटे पहले"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "बस अभी"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "पिछले महीने"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "पिछले हफ्ते"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "पिछले साल"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "कल"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "1 साल पहले"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "1 महीने पहले"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "1 हफ्ते पहले"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "1 दिन पहले"; 54 | 55 | /* No comment provided by engineer. */ 56 | "1 hour ago" = "1 घंटे पहले"; 57 | 58 | /* No comment provided by engineer. */ 59 | "1 minute ago" = "1 मिनट पहले"; 60 | 61 | /* No comment provided by engineer. */ 62 | "1 second ago" = "1 सेकंड पहले"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This morning" = "आज सुबह"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This afternoon" = "यह दोपहर"; 69 | 70 | /* No comment provided by engineer. */ 71 | "Today" = "आज"; 72 | 73 | /* No comment provided by engineer. */ 74 | "This week" = "इस सप्ताह"; 75 | 76 | /* No comment provided by engineer. */ 77 | "This month" = "इस महीने"; 78 | 79 | /* No comment provided by engineer. */ 80 | "This year" = "इस साल"; 81 | 82 | /* Short format for */ 83 | "%dy" = "%dy"; // year 84 | "%dM" = "%dM"; // month 85 | "%dw" = "%dw"; // week 86 | "%dd" = "%dd"; // day 87 | "%dh" = "%dh"; // hour 88 | "%dm" = "%dm"; // minute 89 | "%ds" = "%ds"; // second 90 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/hr.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d dana"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d prime sati"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d prije minuta"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d prije nekoliko mjeseci"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d sekunde prije"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d prije nekoliko tjedana"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d prije nekoliko godina"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "prije minute"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "prije sat vremena"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "upravo sada"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "prosli mjesec"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "prosli tjedan"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "prosle godine"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "jucer"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "Prije 1 godina"; 45 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/hu.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d napja"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d órája"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d perce"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d hónapja"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d másodperce"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d hete"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d éve"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Egy perccel ezelőtt"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Egy órával ezelőtt"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Az imént"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Az előző hónapban"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "Az előző héten"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "Tavaly"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Tegnap"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "Tavaly"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "Egy hónapja"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "Egy hete"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "Tegnap"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Ma reggel"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Ma délután"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Ma"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Ezen a héten"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Ebben a hónapban"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Idén"; 72 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/id.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d hari yang lalu"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d jam yang lalu"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d menit yang lalu"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d bulan yang lalu"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d detik yang lalu"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d minggu yang lalu"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d tahun yang lalu"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Semenit yang lalu"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Sejam yang lalu"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Sekarang"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Bulan lalu"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "Minggu lalu"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "Tahun lalu"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Kemarin"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "1 tahun yang lalu"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "1 bulan yang lalu"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "1 minggu yang lalu"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "1 hari yang lalu"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Pagi ini"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Sore ini"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Hari ini"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Minggu ini"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Bulan ini"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Tahun ini"; 72 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/is.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d dögum síðan"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d klst. síðan"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d mínútum síðan"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d mánuðum síðan"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d sekúndum síðan"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d vikum síðan"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d árum síðan"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Einni mínútu síðan"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Einni klst. síðan"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Rétt í þessu"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Í síðasta mánuði"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "Í síðustu viku"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "Á síðasta ári"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Í gær"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "1 ári síðan"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "1 mánuði síðan"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "1 viku síðan"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "1 degi síðan"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Í morgun"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Síðdegis"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Í dag"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Í þessari viku"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Í þessum mánuði"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Á þessu ári"; 72 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/it.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d giorni fa"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d ore fa"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d minuti fa"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d mesi fa"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d secondi fa"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d settimane fa"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d anni fa"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Un minuto fa"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Un'ora fa"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Ora"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Il mese scorso"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "La settimana scorsa"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "L'anno scorso"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Ieri"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "Un anno fa"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "Un mese fa"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "Una settimana fa"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "Un giorno fa"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Questa mattina"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Questo pomeriggio"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Oggi"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Questa settimana"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Questo mese"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Quest'anno"; 72 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/ja.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d日前"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d時間前"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d分前"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%dヶ月前"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d秒前"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d週間前"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d年前"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "1分前"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "1時間前"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "たった今"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "先月"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "先週"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "去年"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "昨日"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "1年前"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "1ヶ月前"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "1週間前"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "1日前"; 54 | 55 | /* No comment provided by engineer. */ 56 | "1 hour ago" = "1時間前"; 57 | 58 | /* No comment provided by engineer. */ 59 | "1 minute ago" = "1分前"; 60 | 61 | /* No comment provided by engineer. */ 62 | "1 second ago" = "1秒前"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This morning" = "午前"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This afternoon" = "午後"; 69 | 70 | /* No comment provided by engineer. */ 71 | "Today" = "今日"; 72 | 73 | /* No comment provided by engineer. */ 74 | "This week" = "今週"; 75 | 76 | /* No comment provided by engineer. */ 77 | "This month" = "今月"; 78 | 79 | /* No comment provided by engineer. */ 80 | "This year" = "今年"; 81 | 82 | /* Short format for */ 83 | "%dy" = "%d年"; // year 84 | "%dM" = "%d月"; // month 85 | "%dw" = "%d週"; // week 86 | "%dd" = "%d日"; // day 87 | "%dh" = "%d時間"; // hour 88 | "%dm" = "%d分"; // minute 89 | "%ds" = "%d秒"; // second 90 | 91 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/ko.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d일 전"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d시간 전"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d분 전"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d개월 전"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d초 전"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d주 전"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d년 전"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "1분 전"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "1시간 전"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "방금 전"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "지난 달"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "지난 주"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "지난 해"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "어제"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "1년 전"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "1개월 전"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "1주 전"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "1일 전"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "오늘 아침"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "오늘 오후"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "오늘"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "이번 주"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "이번 달"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "올해"; 72 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/lv.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | "1 year ago" = "Pirms gada"; 2 | "1 month ago" = "Pirms mēneša"; 3 | "1 week ago" = "Pirms nedēļas"; 4 | "1 day ago" = "Pirms dienas"; 5 | "A minute ago" = "Pirms minūtes"; 6 | "An hour ago" = "Pirms stundas"; 7 | "Last month" = "Pagājušajā mēnesī"; 8 | "Last week" = "Pagājušajā nedēļā"; 9 | "Last year" = "Pagājušajā gadā"; 10 | "Just now" = "Tikko"; 11 | "Today" = "Šodien"; 12 | "Yesterday" = "Vakar"; 13 | "This morning" = "Šorīt"; 14 | "This afternoon" = "Pēcpusdienā"; 15 | "This week" = "Šonedēļ"; 16 | "This month" = "Šomēnes"; 17 | "This year" = "Šogad"; 18 | "%d seconds ago" = "Pirms %d sekundēm"; 19 | "%d minutes ago" = "Pirms %d minūtēm"; 20 | "%d hours ago" = "Pirms %d stundām"; 21 | "%d days ago" = "Pirms %d dienām"; 22 | "%d weeks ago" = "Pirms %d nedēļām"; 23 | "%d months ago" = "Pirms %d mēnešiem"; 24 | "%d years ago" = "Pirms %d gadiem"; 25 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/ms.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d hari yang lepas"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d jam yang lepas"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d minit yang lepas"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d bulan yang lepas"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d saat yang lepas"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d minggu yang lepas"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d tahun yang lepas"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Seminit yang lepas"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Sejam yang lepas"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Sebentar tadi"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Bulan lepas"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "Minggu lepas"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "Tahun lepas"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Semalam"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "1 tahun lepas"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "1 bulan lepas"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "1 minggu lepas"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "1 hari lepas"; 54 | 55 | /* No comment provided by engineer. */ 56 | "1 hour ago" = "1 jam lepas"; 57 | 58 | /* No comment provided by engineer. */ 59 | "1 minute ago" = "1 minit lepas"; 60 | 61 | /* No comment provided by engineer. */ 62 | "1 second ago" = "1 saat lepas"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This morning" = "Pagi ini"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This afternoon" = "Petang ini"; 69 | 70 | /* No comment provided by engineer. */ 71 | "Today" = "Hari ini"; 72 | 73 | /* No comment provided by engineer. */ 74 | "This week" = "Minggu ini"; 75 | 76 | /* No comment provided by engineer. */ 77 | "This month" = "Bulan ini"; 78 | 79 | /* No comment provided by engineer. */ 80 | "This year" = "Tahun ini"; 81 | 82 | /* Short format for */ 83 | "%dy" = "%dy"; // year 84 | "%dM" = "%dM"; // month 85 | "%dw" = "%dw"; // week 86 | "%dd" = "%dd"; // day 87 | "%dh" = "%dh"; // hour 88 | "%dm" = "%dm"; // minute 89 | "%ds" = "%ds"; // second 90 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/nb.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* 2 | RULES: 3 | Assume value for (seconds, hours, minutes, days, weeks, months or years) is XXXY, Y is last digit, XY is last two digits; 4 | */ 5 | 6 | /* Y ==0 OR Y > 4 OR XY == 11; */ 7 | "%d days ago" = "%d dager siden"; 8 | 9 | /* If Y != 1 AND Y < 5; */ 10 | "%d _days ago" = "%d dager siden"; 11 | 12 | /* If Y == 1; */ 13 | "%d __days ago" = "%d dag siden"; 14 | 15 | 16 | /* Y ==0 OR Y > 4 OR XY == 11; */ 17 | "%d hours ago" = "%d timer siden"; 18 | 19 | /* If Y != 1 AND Y < 5; */ 20 | "%d _hours ago" = "%d timer siden"; 21 | 22 | /* If Y == 1; */ 23 | "%d __hours ago" = "%d time siden"; 24 | 25 | 26 | /* Y ==0 OR Y > 4 OR XY == 11; */ 27 | "%d minutes ago" = "%d minutter siden"; 28 | 29 | /* If Y != 1 AND Y < 5; */ 30 | "%d _minutes ago" = "%d minutter siden"; 31 | 32 | /* If Y == 1; */ 33 | "%d __minutes ago" = "%d minutt siden"; 34 | 35 | 36 | /* Y ==0 OR Y > 4 OR XY == 11; */ 37 | "%d months ago" = "%d måneder siden"; 38 | 39 | /* If Y != 1 AND Y < 5; */ 40 | "%d _months ago" = "%d måneder siden"; 41 | 42 | /* If Y == 1; */ 43 | "%d __months ago" = "%d måned siden"; 44 | 45 | 46 | /* Y ==0 OR Y > 4 OR XY == 11; */ 47 | "%d seconds ago" = "%d sekunder siden"; 48 | 49 | /* If Y != 1 AND Y < 5; */ 50 | "%d _seconds ago" = "%d sekunder siden"; 51 | 52 | /* If Y == 1; */ 53 | "%d __seconds ago" = "%d sekund siden"; 54 | 55 | 56 | /* Y ==0 OR Y > 4 OR XY == 11; */ 57 | "%d weeks ago" = "%d uker siden"; 58 | 59 | /* If Y != 1 AND Y < 5; */ 60 | "%d _weeks ago" = "%d uker siden"; 61 | 62 | /* If Y == 1; */ 63 | "%d __weeks ago" = "%d uke siden"; 64 | 65 | 66 | /* Y ==0 OR Y > 4 OR XY == 11; */ 67 | "%d years ago" = "%d år siden"; 68 | 69 | /* If Y != 1 AND Y < 5; */ 70 | "%d _years ago" = "%d år siden"; 71 | 72 | /* If Y == 1; */ 73 | "%d __years ago" = "%d år siden"; 74 | 75 | 76 | /* No comment provided by engineer. */ 77 | "A minute ago" = "Et minutt siden"; 78 | 79 | /* No comment provided by engineer. */ 80 | "An hour ago" = "En time siden"; 81 | 82 | /* No comment provided by engineer. */ 83 | "Just now" = "Nå"; 84 | 85 | /* No comment provided by engineer. */ 86 | "Last month" = "For en måned siden"; 87 | 88 | /* No comment provided by engineer. */ 89 | "Last week" = "For en uke siden"; 90 | 91 | /* No comment provided by engineer. */ 92 | "Last year" = "For et år siden"; 93 | 94 | /* No comment provided by engineer. */ 95 | "Yesterday" = "I går"; 96 | 97 | /* No comment provided by engineer. */ 98 | "1 year ago" = "1 år siden"; 99 | 100 | /* No comment provided by engineer. */ 101 | "1 month ago" = "1 måned siden"; 102 | 103 | /* No comment provided by engineer. */ 104 | "1 week ago" = "1 uke siden"; 105 | 106 | /* No comment provided by engineer. */ 107 | "1 day ago" = "1 dag siden"; 108 | 109 | /* No comment provided by engineer. */ 110 | "This morning" = "Denne morgenen"; 111 | 112 | /* No comment provided by engineer. */ 113 | "This afternoon" = "I ettermiddag"; 114 | 115 | /* No comment provided by engineer. */ 116 | "Today" = "I dag"; 117 | 118 | /* No comment provided by engineer. */ 119 | "This week" = "Denne uken"; 120 | 121 | /* No comment provided by engineer. */ 122 | "This month" = "Denne måneden"; 123 | 124 | /* No comment provided by engineer. */ 125 | "This year" = "Dette året"; 126 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/nl.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d dagen geleden"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d uur geleden"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d minuten geleden"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d maanden geleden"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d seconden geleden"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d weken geleden"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d jaar geleden"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Een minuut geleden"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Een uur geleden"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Zojuist"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Vorige maand"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "Vorige week"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "Vorig jaar"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Gisteren"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "1 jaar geleden"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "1 maand geleden"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "1 week geleden"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "1 dag geleden"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Vanmorgen"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Vanmiddag"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Vandaag"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Deze week"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Deze maand"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Dit jaar"; 72 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/pl.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d dni temu"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d godzin(y) temu"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d minut(y) temu"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d miesiące/-y temu"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d sekund(y) temu"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d tygodni(e) temu"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d lat(a) temu"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Minutę temu"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Godzinę temu"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "W tej chwili"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "W zeszłym miesiącu"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "W zeszłym tygodniu"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "W zeszłym roku"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Wczoraj"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "1 rok temu"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "1 miesiąc temu"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "1 tydzień temu"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "1 dzień temu"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Dziś rano"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Dziś po południu"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Dzisiaj"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "W tym tygodniu"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "W tym miesiącu"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "W tym roku"; 72 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/pt-PT.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d dias atrás"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d horas atrás"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d minutos atrás"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d meses atrás"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d segundos atrás"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d semanas atrás"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d anos atrás"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Um minuto atrás"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Uma hora atrás"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Agora mesmo"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Mês passado"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "Semana passada"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "Ano passado"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Ontem"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "1 ano passado"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "1 mês atrás"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "1 semana atrás"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "1 dia atrás"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Esta manhã"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Esta tarde"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Hoje"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Esta semana"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Este mês"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Este ano"; 72 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/pt.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d dias atrás"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d horas atrás"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d minutos atrás"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d meses atrás"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d segundos atrás"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d semanas atrás"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d anos atrás"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Há um minuto"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Há uma hora"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Agora"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Mês passado"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "Semana passada"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "Ano passado"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Ontem"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "1 ano atrás"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "1 mês atrás"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "1 semana atrás"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "1 dia atrás"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Esta manhã"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Esta tarde"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Hoje"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Esta semana"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Este mês"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Este ano"; 72 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/ro.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "În urmă cu %d zile"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "În urmă cu %d ore"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "În urmă cu %d minute"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "În urmă cu %d luni"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "În urmă cu %d secunde"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "În urmă cu %d săptămâni"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "În urmă cu %d ani"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "În urmă cu 1 minut"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "În urmă cu 1 oră"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Acum câteva momente"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Luna trecută"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "Săptămâna trecută"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "Anul trecut"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Ieri"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "În urmă cu 1 an"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "În urmă cu 1 lună"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "În urmă cu 1 săptămână"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "În urmă cu 1 zi"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Azi dimineață"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "În această seară"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Astăzi"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Săptămâna aceasta"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Luna aceasta"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Anul acesta"; 72 | 73 | /* Short format for */ 74 | "%dy" = "%da"; // year (an) 75 | "%dM" = "%dl"; // month (luna) 76 | "%dw" = "%dS"; // week (saptamana) 77 | "%dd" = "%dz"; // day (ziua) 78 | "%dh" = "%do"; // hour (ora) 79 | "%dm" = "%dm"; // minute (minut) 80 | "%ds" = "%ds"; // second (secunda) 81 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/ru.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* 2 | RULES: 3 | Assume value for (seconds, hours, minutes, days, weeks, months or years) is XXXY, Y is last digit, XY is last two digits; 4 | */ 5 | 6 | /* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */ 7 | "%d days ago" = "%d дней назад"; 8 | 9 | /* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */ 10 | "%d _days ago" = "%d дня назад"; 11 | 12 | /* Y == 1 AND XY != 11; */ 13 | "%d __days ago" = "%d день назад"; 14 | 15 | 16 | /* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */ 17 | "%d hours ago" = "%d часов назад"; 18 | 19 | /* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */ 20 | "%d _hours ago" = "%d часа назад"; 21 | 22 | /* Y == 1 AND XY != 11; */ 23 | "%d __hours ago" = "%d час назад"; 24 | 25 | 26 | /* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */ 27 | "%d minutes ago" = "%d минут назад"; 28 | 29 | /* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */ 30 | "%d _minutes ago" = "%d минуты назад"; 31 | 32 | /* Y == 1 AND XY != 11; */ 33 | "%d __minutes ago" = "%d минуту назад"; 34 | 35 | 36 | /* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */ 37 | "%d months ago" = "%d месяцев назад"; 38 | 39 | /* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */ 40 | "%d _months ago" = "%d месяца назад"; 41 | 42 | /* Y == 1 AND XY != 11; */ 43 | "%d __months ago" = "%d месяц назад"; 44 | 45 | 46 | /* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */ 47 | "%d seconds ago" = "%d секунд назад"; 48 | 49 | /* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */ 50 | "%d _seconds ago" = "%d секунды назад"; 51 | 52 | /* Y == 1 AND XY != 11; */ 53 | "%d __seconds ago" = "%d секунду назад"; 54 | 55 | 56 | /* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */ 57 | "%d weeks ago" = "%d недель назад"; 58 | 59 | /* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */ 60 | "%d _weeks ago" = "%d недели назад"; 61 | 62 | /* Y == 1 AND XY != 11; */ 63 | "%d __weeks ago" = "%d неделю назад"; 64 | 65 | 66 | /* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */ 67 | "%d years ago" = "%d лет назад"; 68 | 69 | /* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */ 70 | "%d _years ago" = "%d года назад"; 71 | 72 | /* Y == 1 AND XY != 11; */ 73 | "%d __years ago" = "%d год назад"; 74 | 75 | 76 | /* No comment provided by engineer. */ 77 | "A minute ago" = "Минуту назад"; 78 | 79 | /* No comment provided by engineer. */ 80 | "An hour ago" = "Час назад"; 81 | 82 | /* No comment provided by engineer. */ 83 | "Just now" = "Только что"; 84 | 85 | /* No comment provided by engineer. */ 86 | "Last month" = "Месяц назад"; 87 | 88 | /* No comment provided by engineer. */ 89 | "Last week" = "Неделю назад"; 90 | 91 | /* No comment provided by engineer. */ 92 | "Last year" = "Год назад"; 93 | 94 | /* No comment provided by engineer. */ 95 | "Yesterday" = "Вчера"; 96 | 97 | /* No comment provided by engineer. */ 98 | "1 year ago" = "1 год назад"; 99 | 100 | /* No comment provided by engineer. */ 101 | "1 month ago" = "1 месяц назад"; 102 | 103 | /* No comment provided by engineer. */ 104 | "1 week ago" = "1 неделю назад"; 105 | 106 | /* No comment provided by engineer. */ 107 | "1 day ago" = "1 день назад"; 108 | 109 | /* No comment provided by engineer. */ 110 | "This morning" = "Этим утром"; 111 | 112 | /* No comment provided by engineer. */ 113 | "This afternoon" = "Этим днём"; 114 | 115 | /* No comment provided by engineer. */ 116 | "Today" = "Сегодня"; 117 | 118 | /* No comment provided by engineer. */ 119 | "This week" = "На этой неделе"; 120 | 121 | /* No comment provided by engineer. */ 122 | "This month" = "В этом месяце"; 123 | 124 | /* No comment provided by engineer. */ 125 | "This year" = "В этом году"; 126 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/sk.lproj/NSDateTimeAgo.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "Pred %d dňami"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "Pred %d hodinami"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "Pred %d minútami"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "Pred %d mesiaci"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "Pred %d sekundami"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "Pred %d týždňami"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "Pred %d rokmi"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Pred minútou"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Pred hodinou"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Práve teraz"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Minulý mesiac"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "Minulý týždeň"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "Minulý rok"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Včera"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "Pred rokom"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "Pred mesiacom"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "Pred týždňom"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "Predvčerom"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Dnes dopoludnia"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Dnes popoludní"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Dnes"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Tento týždeň"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Tento mesiac"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Tento rok"; 72 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/sl.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "pred %d dnevi"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "pred %d urami"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "pred %d minutami"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "pred %d meseci"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "pred %d sekundami"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "pred %d tedni"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "pred %d leti"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "pred eno minuto"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "pred eno uro"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "ravnokar"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "prejšnji mesec"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "prejšnji teden"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "prejšnje leto"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "včeraj"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "pred 1 letom"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "pred 1 mesecem"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "pred 1 tednom"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "pred 1 dnevom"; 54 | 55 | /* No comment provided by engineer. */ 56 | "1 hour ago" = "pred 1 uro"; 57 | 58 | /* No comment provided by engineer. */ 59 | "1 minute ago" = "pred 1 minuto"; 60 | 61 | /* No comment provided by engineer. */ 62 | "1 second ago" = "pred 1 sekundo"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This morning" = "zjutraj"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This afternoon" = "zvečer"; 69 | 70 | /* No comment provided by engineer. */ 71 | "Today" = "danes"; 72 | 73 | /* No comment provided by engineer. */ 74 | "This week" = "ta teden"; 75 | 76 | /* No comment provided by engineer. */ 77 | "This month" = "ta mesec"; 78 | 79 | /* No comment provided by engineer. */ 80 | "This year" = "to leto"; 81 | 82 | /* Short format for */ 83 | "%dy" = "%dl"; // year 84 | "%dM" = "%dM"; // month 85 | "%dw" = "%dt"; // week 86 | "%dd" = "%dd"; // day 87 | "%dh" = "%du"; // hour 88 | "%dm" = "%dm"; // minute 89 | "%ds" = "%ds"; // second 90 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/sv.lproj/DateTools.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/websiddu/sketch-sync-to-slides/e53611b54a6792ce0ea638adb73b02a2664fa241/sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/sv.lproj/DateTools.strings -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/th.lproj/DateTools.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/websiddu/sketch-sync-to-slides/e53611b54a6792ce0ea638adb73b02a2664fa241/sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/th.lproj/DateTools.strings -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/tr.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d gün önce"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d saat önce"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d dakika önce"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d ay önce"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d saniye önce"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d hafta önce"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d yıl önce"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Bir dakika önce"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Bir saat önce"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Şimdi"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Geçen ay"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "Geçen hafta"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "Geçen yıl"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Dün"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "1 yıl önce"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "1 ay önce"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "1 hafta önce"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "1 gün önce"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Bu sabah"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Öğleden sonra"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Bugün"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Bu hafta"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Bu ay"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Bu yıl"; 72 | 73 | /* Short format for */ 74 | "%dy" = "%dy"; // year 75 | "%dM" = "%day"; // month 76 | "%dw" = "%dh"; // week 77 | "%dd" = "%dg"; // day 78 | "%dh" = "%dsa"; // hour 79 | "%dm" = "%ddk"; // minute 80 | "%ds" = "%dsn"; // second 81 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/uk.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* 2 | RULES: 3 | Assume value for (seconds, hours, minutes, days, weeks, months or years) is XXXY, Y is last digit, XY is last two digits; 4 | */ 5 | 6 | /* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */ 7 | "%d days ago" = "%d днів тому"; 8 | 9 | /* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */ 10 | "%d _days ago" = "%d дні тому"; 11 | 12 | /* Y == 1 AND XY != 11; */ 13 | "%d __days ago" = "%d день тому"; 14 | 15 | 16 | /* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */ 17 | "%d hours ago" = "%d годин тому"; 18 | 19 | /* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */ 20 | "%d _hours ago" = "%d години тому"; 21 | 22 | /* Y == 1 AND XY != 11; */ 23 | "%d __hours ago" = "%d годину тому"; 24 | 25 | 26 | /* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */ 27 | "%d minutes ago" = "%d хвилин тому"; 28 | 29 | /* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */ 30 | "%d _minutes ago" = "%d хвилини тому"; 31 | 32 | /* Y == 1 AND XY != 11; */ 33 | "%d __minutes ago" = "%d хвилину тому"; 34 | 35 | 36 | /* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */ 37 | "%d months ago" = "%d місяців тому"; 38 | 39 | /* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */ 40 | "%d _months ago" = "%d місяці тому"; 41 | 42 | /* Y == 1 AND XY != 11; */ 43 | "%d __months ago" = "%d місяць тому"; 44 | 45 | 46 | /* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */ 47 | "%d seconds ago" = "%d секунд тому"; 48 | 49 | /* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */ 50 | "%d _seconds ago" = "%d секунди тому"; 51 | 52 | /* Y == 1 AND XY != 11; */ 53 | "%d __seconds ago" = "%d секунду тому"; 54 | 55 | 56 | /* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */ 57 | "%d weeks ago" = "%d тижнів тому"; 58 | 59 | /* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */ 60 | "%d _weeks ago" = "%d тижні тому"; 61 | 62 | /* Y == 1 AND XY != 11; */ 63 | "%d __weeks ago" = "%d тиждень тому"; 64 | 65 | 66 | /* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */ 67 | "%d years ago" = "%d років тому"; 68 | 69 | /* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */ 70 | "%d _years ago" = "%d роки тому"; 71 | 72 | /* Y == 1 AND XY != 11; */ 73 | "%d __years ago" = "%d рік тому"; 74 | 75 | 76 | /* No comment provided by engineer. */ 77 | "A minute ago" = "Хвилину тому"; 78 | 79 | /* No comment provided by engineer. */ 80 | "An hour ago" = "Годину тому"; 81 | 82 | /* No comment provided by engineer. */ 83 | "Just now" = "Щойно"; 84 | 85 | /* No comment provided by engineer. */ 86 | "Last month" = "Місяць тому"; 87 | 88 | /* No comment provided by engineer. */ 89 | "Last week" = "Тиждень тому"; 90 | 91 | /* No comment provided by engineer. */ 92 | "Last year" = "Рік тому"; 93 | 94 | /* No comment provided by engineer. */ 95 | "Yesterday" = "Вчора"; 96 | 97 | /* No comment provided by engineer. */ 98 | "1 year ago" = "1 рік тому"; 99 | 100 | /* No comment provided by engineer. */ 101 | "1 month ago" = "1 місяць тому"; 102 | 103 | /* No comment provided by engineer. */ 104 | "1 week ago" = "1 тиждень тому"; 105 | 106 | /* No comment provided by engineer. */ 107 | "1 day ago" = "1 день тому"; 108 | 109 | /* No comment provided by engineer. */ 110 | "This morning" = "Цього ранку"; 111 | 112 | /* No comment provided by engineer. */ 113 | "This afternoon" = "Сьогодні вдень"; 114 | 115 | /* No comment provided by engineer. */ 116 | "Today" = "Сьогодні"; 117 | 118 | /* No comment provided by engineer. */ 119 | "This week" = "Цього тижня"; 120 | 121 | /* No comment provided by engineer. */ 122 | "This month" = "Цього місяця"; 123 | 124 | /* No comment provided by engineer. */ 125 | "This year" = "Цього року"; 126 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/vi.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d ngày trước"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d giờ trước"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d phút trước"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d tháng trước"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d giây trước"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d tuần trước"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d năm trước"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "Một phút trước"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "Một giờ trước"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "Vừa mới đây"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "Tháng trước"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "Tuần trước"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "Năm vừa rồi"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "Hôm qua"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "1 năm trước"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "1 tháng trước"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "1 tuần trước"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "1 ngày trước"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "Sáng nay"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "Trưa nay"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "Hôm nay"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "Tuần này"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "Tháng này"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "Năm nay"; 72 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/zh-Hans.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d天前"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d小时前"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d分钟前"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d个月前"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d秒钟前"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d星期前"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d年前"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "1分钟前"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "1小时前"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "刚刚"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "上个月"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "上星期"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "去年"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "昨天"; 42 | 43 | /* You can add a space between the number and the characters. */ 44 | "1 year ago" = "1年前"; 45 | 46 | /* You can add a space between the number and the characters. */ 47 | "1 month ago" = "1个月前"; 48 | 49 | /* You can add a space between the number and the characters. */ 50 | "1 week ago" = "1星期前"; 51 | 52 | /* You can add a space between the number and the characters. */ 53 | "1 day ago" = "1天前"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "今天上午"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "今天下午"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "今天"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "本周"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "本月"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "今年"; 72 | 73 | /* Short format for */ 74 | "%dy" = "%d年"; // year 75 | "%dM" = "%d月"; // month 76 | "%dw" = "%d周"; // week 77 | "%dd" = "%d天"; // day 78 | "%dh" = "%d小时"; // hour 79 | "%dm" = "%d分"; // minute 80 | "%ds" = "%d秒"; // second 81 | 82 | /* Week format for */ 83 | "Mon" = "星期一"; 84 | "Tue" = "星期二"; 85 | "Wed" = "星期三"; 86 | "Thu" = "星期四"; 87 | "Fri" = "星期五"; 88 | "Sat" = "星期六"; 89 | "Sun" = "星期日"; 90 | 91 | "周一" = "星期一"; 92 | "周二" = "星期二"; 93 | "周三" = "星期三"; 94 | "周四" = "星期四"; 95 | "周五" = "星期五"; 96 | "周六" = "星期六"; 97 | "周日" = "星期日"; -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/DateTools.bundle/zh-Hant.lproj/DateTools.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "%d days ago" = "%d天前"; 3 | 4 | /* No comment provided by engineer. */ 5 | "%d hours ago" = "%d小時前"; 6 | 7 | /* No comment provided by engineer. */ 8 | "%d minutes ago" = "%d分鐘前"; 9 | 10 | /* No comment provided by engineer. */ 11 | "%d months ago" = "%d個月前"; 12 | 13 | /* No comment provided by engineer. */ 14 | "%d seconds ago" = "%d秒鐘前"; 15 | 16 | /* No comment provided by engineer. */ 17 | "%d weeks ago" = "%d星期前"; 18 | 19 | /* No comment provided by engineer. */ 20 | "%d years ago" = "%d年前"; 21 | 22 | /* No comment provided by engineer. */ 23 | "A minute ago" = "1分鐘前"; 24 | 25 | /* No comment provided by engineer. */ 26 | "An hour ago" = "1小時前"; 27 | 28 | /* No comment provided by engineer. */ 29 | "Just now" = "剛剛"; 30 | 31 | /* No comment provided by engineer. */ 32 | "Last month" = "上個月"; 33 | 34 | /* No comment provided by engineer. */ 35 | "Last week" = "上星期"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Last year" = "去年"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Yesterday" = "昨天"; 42 | 43 | /* No comment provided by engineer. */ 44 | "1 year ago" = "1年前"; 45 | 46 | /* No comment provided by engineer. */ 47 | "1 month ago" = "1個月前"; 48 | 49 | /* No comment provided by engineer. */ 50 | "1 week ago" = "1星期前"; 51 | 52 | /* No comment provided by engineer. */ 53 | "1 day ago" = "1天前"; 54 | 55 | /* No comment provided by engineer. */ 56 | "This morning" = "今天上午"; 57 | 58 | /* No comment provided by engineer. */ 59 | "This afternoon" = "今天下午"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Today" = "今天"; 63 | 64 | /* No comment provided by engineer. */ 65 | "This week" = "本周"; 66 | 67 | /* No comment provided by engineer. */ 68 | "This month" = "本月"; 69 | 70 | /* No comment provided by engineer. */ 71 | "This year" = "今年"; 72 | 73 | /* Short format for */ 74 | "%dy" = "%d年"; // year 75 | "%dM" = "%d月"; // month 76 | "%dw" = "%d週"; // week 77 | "%dd" = "%d天"; // day 78 | "%dh" = "%d小時"; // hour 79 | "%dm" = "%d分"; // minute 80 | "%ds" = "%d秒"; // second 81 | 82 | /* Week format for */ 83 | "Mon" = "星期壹"; 84 | "Tue" = "星期二"; 85 | "Wed" = "星期三"; 86 | "Thu" = "星期四"; 87 | "Fri" = "星期五"; 88 | "Sat" = "星期六"; 89 | "Sun" = "星期日"; 90 | 91 | "周壹" = "星期壹"; 92 | "周二" = "星期二"; 93 | "周三" = "星期三"; 94 | "周四" = "星期四"; 95 | "周五" = "星期五"; 96 | "周六" = "星期六"; 97 | "周日" = "星期日"; -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 16E195 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleExecutable 10 | SyncToSlides 11 | CFBundleIdentifier 12 | com.google.SyncToSlides 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | SyncToSlides 17 | CFBundlePackageType 18 | FMWK 19 | CFBundleShortVersionString 20 | 2.0 21 | CFBundleSupportedPlatforms 22 | 23 | MacOSX 24 | 25 | CFBundleVersion 26 | 1 27 | DTCompiler 28 | com.apple.compilers.llvm.clang.1_0 29 | DTPlatformBuild 30 | 8C1002 31 | DTPlatformVersion 32 | GM 33 | DTSDKBuild 34 | 16C58 35 | DTSDKName 36 | macosx10.12 37 | DTXcode 38 | 0821 39 | DTXcodeBuild 40 | 8C1002 41 | NSHumanReadableCopyright 42 | Copyright © 2017 gsid. All rights reserved. 43 | 44 | 45 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/SyncToSlides: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/websiddu/sketch-sync-to-slides/e53611b54a6792ce0ea638adb73b02a2664fa241/sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/A/SyncToSlides -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/SyncToSlides.framework/Versions/Current: -------------------------------------------------------------------------------- 1 | A -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Sync to Slides", 3 | "description": "Sync your artboards to Google Slides", 4 | "author": "Siddhartha Gudipati", 5 | "email": "siddu.siddhartha@gmail.com", 6 | "homepage": "http://websiddu.github.io/sketch-to-slides", 7 | "version": "2.2", 8 | "appcast": "https://websiddu.github.io/sync-to-slides/files/appcast.xml", 9 | "identifier": "com.google.sketch.synctoslides", 10 | "commands": [ 11 | { 12 | "name": "Sync to Slides...", 13 | "identifier": "open", 14 | "handler": "commandSyncPanel", 15 | "script": "sync.sketchscript", 16 | "shortcut": "command shift u" 17 | } 18 | ], 19 | "menu": { 20 | "title": "Sync to Slides", 21 | "isRoot": true, 22 | "items": [ 23 | "open" 24 | ] 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/assets/css/styles.css: -------------------------------------------------------------------------------- 1 | /* http://meyerweb.com/eric/tools/css/reset/ 2 | v2.0 | 20110126 3 | License: none (public domain) 4 | */ 5 | ::-webkit-scrollbar { 6 | width: 4px; 7 | height: 4px; 8 | border-radius: 100%; 9 | } 10 | ::-webkit-scrollbar-thumb { 11 | background: #efefef; 12 | background-clip: initial; 13 | border-radius: 4px; 14 | } 15 | ::-webkit-scrollbar-corner { 16 | background: transparent; 17 | } 18 | html, 19 | body, 20 | div, 21 | span, 22 | applet, 23 | object, 24 | iframe, 25 | h1, 26 | h2, 27 | h3, 28 | h4, 29 | h5, 30 | h6, 31 | p, 32 | blockquote, 33 | pre, 34 | a, 35 | abbr, 36 | acronym, 37 | address, 38 | big, 39 | cite, 40 | code, 41 | del, 42 | dfn, 43 | em, 44 | img, 45 | ins, 46 | kbd, 47 | q, 48 | s, 49 | samp, 50 | small, 51 | strike, 52 | strong, 53 | sub, 54 | sup, 55 | tt, 56 | var, 57 | b, 58 | u, 59 | i, 60 | center, 61 | dl, 62 | dt, 63 | dd, 64 | ol, 65 | ul, 66 | li, 67 | fieldset, 68 | form, 69 | label, 70 | legend, 71 | table, 72 | caption, 73 | tbody, 74 | tfoot, 75 | thead, 76 | tr, 77 | th, 78 | td, 79 | article, 80 | aside, 81 | canvas, 82 | details, 83 | embed, 84 | figure, 85 | figcaption, 86 | footer, 87 | header, 88 | hgroup, 89 | menu, 90 | nav, 91 | output, 92 | ruby, 93 | section, 94 | summary, 95 | time, 96 | mark, 97 | audio, 98 | video { 99 | margin: 0; 100 | padding: 0; 101 | border: 0; 102 | font-size: 100%; 103 | font: inherit; 104 | vertical-align: baseline; 105 | } 106 | /* HTML5 display-role reset for older browsers */ 107 | article, 108 | aside, 109 | details, 110 | figcaption, 111 | figure, 112 | footer, 113 | header, 114 | hgroup, 115 | menu, 116 | nav, 117 | section { 118 | display: block; 119 | } 120 | body { 121 | line-height: 1; 122 | } 123 | ol, 124 | ul { 125 | list-style: none; 126 | } 127 | blockquote, 128 | q { 129 | quotes: none; 130 | } 131 | blockquote:before, 132 | blockquote:after, 133 | q:before, 134 | q:after { 135 | content: ''; 136 | content: none; 137 | } 138 | table { 139 | border-collapse: collapse; 140 | border-spacing: 0; 141 | } 142 | html, 143 | body { 144 | font-family: "Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif; 145 | overflow: hidden; 146 | height: 100%; 147 | width: 100%; 148 | -webkit-user-select: none; 149 | } 150 | .panel { 151 | font-size: 13px; 152 | display: flex; 153 | flex-direction: column; 154 | } 155 | .panel-header { 156 | background: #f4b400; 157 | padding: 16px 24px; 158 | } 159 | .panel-title { 160 | height: 28px; 161 | display: flex; 162 | color: #fff; 163 | align-items: center; 164 | } 165 | .panel-title h1 { 166 | font-size: 16px; 167 | margin: 0; 168 | font-weight: 500; 169 | flex: 1; 170 | white-space: nowrap; 171 | overflow: hidden; 172 | text-overflow: ellipsis; 173 | margin-right: 8px; 174 | } 175 | .panel-title .icon { 176 | height: 20px; 177 | width: 20px; 178 | border-radius: 20px; 179 | cursor: pointer; 180 | } 181 | .panel-title .icon img { 182 | height: 16px; 183 | width: 16px; 184 | margin-left: 2px; 185 | margin-top: 2px; 186 | opacity: 0.54; 187 | } 188 | .panel-title .icon:hover { 189 | background: #fff; 190 | opacity: 0.9; 191 | } 192 | .panel-input { 193 | height: 28px; 194 | display: flex; 195 | width: 100%; 196 | box-sizing: border-box; 197 | border-radius: 3px; 198 | border: 0; 199 | padding: 0 8px; 200 | } 201 | .panel-input:focus { 202 | outline: 0; 203 | } 204 | .panel-input-label { 205 | margin-bottom: 8px; 206 | color: #fff; 207 | display: block; 208 | } 209 | .panel-body { 210 | padding: 0 0 16px 0; 211 | } 212 | .panel-table { 213 | width: 100%; 214 | } 215 | .panel-table .panel-tabel-row { 216 | display: flex; 217 | align-items: center; 218 | margin-left: 22px; 219 | margin-right: 20px; 220 | } 221 | .panel-table .panel-tabel-row label { 222 | padding-top: 8px; 223 | padding-bottom: 8px; 224 | display: inline-block; 225 | white-space: nowrap; 226 | overflow: hidden; 227 | text-overflow: ellipsis; 228 | margin-right: 8px; 229 | } 230 | .panel-table .panel-tabel-row label .control__indicator { 231 | margin-top: 8px; 232 | } 233 | .panel-table .panel-tabel-row .sort-button { 234 | text-align: right; 235 | width: 40px; 236 | } 237 | .panel-table .panel-table-header { 238 | text-align: left; 239 | font-weight: 500; 240 | font-size: 13px; 241 | color: #777; 242 | background: #f9f9f9; 243 | border-bottom: solid 1px #e0e0e0; 244 | } 245 | .panel-table .panel-table-header label { 246 | flex: 1; 247 | } 248 | .panel-table .panel-table-cell { 249 | padding: 8px; 250 | } 251 | .panel-table .panel-table-cell:first-child { 252 | padding-left: 24px; 253 | width: 24px; 254 | } 255 | .panel-table-body { 256 | position: fixed; 257 | top: 120px; 258 | left: 0; 259 | right: 0; 260 | bottom: 94px; 261 | overflow-y: auto; 262 | overflow-x: hidden; 263 | } 264 | .panel-row { 265 | padding-left: 22px; 266 | font-size: 13px; 267 | display: flex; 268 | align-items: center; 269 | } 270 | .panel-row label { 271 | padding-top: 12px; 272 | flex: 1; 273 | white-space: nowrap; 274 | overflow: hidden; 275 | text-overflow: ellipsis; 276 | margin-right: 8px; 277 | padding-bottom: 12px; 278 | } 279 | .panel-row label .control__indicator { 280 | margin-top: 12px; 281 | } 282 | .panel-row .spinner { 283 | margin: 0 16px; 284 | } 285 | .panel-row:hover { 286 | background: rgba(244, 180, 0, 0.1); 287 | } 288 | .hide { 289 | display: none; 290 | } 291 | .dropdown-button { 292 | background: transparent; 293 | border: 0; 294 | margin: 0; 295 | overflow: hidden; 296 | cursor: pointer; 297 | outline: 0; 298 | } 299 | .dropdown-button img { 300 | width: 14px; 301 | vertical-align: middle; 302 | opacity: 0.7; 303 | } 304 | .dropdown-button img:hover { 305 | opacity: 1; 306 | } 307 | button { 308 | text-transform: uppercase; 309 | font-weight: 500; 310 | } 311 | .dropdown { 312 | position: absolute; 313 | right: 12px; 314 | overflow: hidden; 315 | background: #fff; 316 | box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px 0 rgba(0, 0, 0, 0.2); 317 | z-index: 1000; 318 | padding: 12px 0; 319 | border-radius: 3px; 320 | display: none; 321 | text-align: left; 322 | } 323 | .dropdown.active { 324 | display: block; 325 | transition: all 0.3s cubic-bezier(0.4, 0, 1, 1); 326 | } 327 | .dropdown .dropdown-option { 328 | display: flex; 329 | align-items: center; 330 | padding: 8px 12px; 331 | cursor: pointer; 332 | -webkit-user-select: none; 333 | } 334 | .dropdown .dropdown-option.selected { 335 | background: #f8f8f8; 336 | } 337 | .dropdown .dropdown-option img { 338 | width: 12px; 339 | } 340 | .dropdown .dropdown-option:hover { 341 | background: #efefef; 342 | } 343 | .dropdown .dropdown-option span { 344 | font-weight: normal; 345 | flex: 1; 346 | -webkit-user-select: none; 347 | margin-left: 8px; 348 | } 349 | .overlay { 350 | position: fixed; 351 | top: 84px; 352 | left: 0; 353 | bottom: 0; 354 | z-index: 99; 355 | right: 0; 356 | background: transparent; 357 | display: none; 358 | cursor: wait; 359 | } 360 | .panel-overlay { 361 | position: fixed; 362 | top: 80px; 363 | left: 0; 364 | bottom: 33px; 365 | z-index: 22; 366 | right: 0; 367 | background: #fff; 368 | opacity: 0.9; 369 | display: none; 370 | } 371 | .panel-overlay img { 372 | position: fixed; 373 | top: 70px; 374 | display: block; 375 | left: 70px; 376 | } 377 | .panel-footer { 378 | padding: 12px 24px; 379 | border-top: solid 1px #e0e0e0; 380 | background: #fff; 381 | position: fixed; 382 | bottom: 32px; 383 | left: 0; 384 | right: 0; 385 | } 386 | .panel-footer button { 387 | flex: 1; 388 | } 389 | .panel-status { 390 | font-size: 11px; 391 | color: #777; 392 | flex: 1; 393 | line-height: 1.5; 394 | } 395 | .panel-sub-footer { 396 | border-top: solid 1px #e0e0e0; 397 | background: #eee; 398 | position: fixed; 399 | height: 32px; 400 | bottom: 0; 401 | left: 0; 402 | right: 0; 403 | display: flex; 404 | align-items: center; 405 | padding: 0 16px; 406 | } 407 | .panel-sub-footer img { 408 | height: 18px; 409 | } 410 | .panel-button { 411 | background: #3F51B5; 412 | color: #fff; 413 | height: 36px; 414 | width: 100%; 415 | border: 0; 416 | display: block; 417 | border-radius: 5px; 418 | font-size: 14px; 419 | text-transform: uppercase; 420 | font-weight: bold; 421 | letter-spacing: -0.1px; 422 | border-radius: 2px; 423 | } 424 | .panel-button:hover { 425 | cursor: pointer; 426 | opacity: 0.9; 427 | } 428 | .panel-button:hover:disabled { 429 | cursor: default; 430 | opacity: 1; 431 | } 432 | .panel-button:active { 433 | background: #7180D5; 434 | } 435 | .panel-button:disabled { 436 | background: rgba(0, 0, 0, 0.12); 437 | color: rgba(0, 0, 0, 0.26); 438 | cursor: default; 439 | } 440 | .settings-overlay { 441 | position: fixed; 442 | top: 0; 443 | left: 0; 444 | bottom: 0; 445 | right: 0; 446 | background: linear-gradient(to top, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.5) 50%, rgba(0, 0, 0, 0) 100%); 447 | display: none; 448 | z-index: 23; 449 | } 450 | .settings { 451 | height: 320px; 452 | width: 250px; 453 | background: #fff; 454 | z-index: 24; 455 | /* panel-bg: */ 456 | box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.31); 457 | position: fixed; 458 | top: 50%; 459 | left: 50%; 460 | margin-top: -160px; 461 | margin-left: -125px; 462 | border-radius: 4px; 463 | display: flex; 464 | flex-direction: column; 465 | font-size: 12px; 466 | display: none; 467 | } 468 | .settings-button { 469 | border: 0; 470 | background: transparent; 471 | padding: 0; 472 | margin: 0; 473 | cursor: pointer; 474 | } 475 | .settings-header { 476 | display: flex; 477 | height: 32px; 478 | border-bottom: solid 1px #e0e0e0; 479 | align-items: center; 480 | padding-left: 16px; 481 | padding-right: 16px; 482 | font-size: 13px; 483 | font-weight: 500; 484 | color: #666; 485 | } 486 | .settings-body { 487 | flex: 1; 488 | padding: 16px; 489 | } 490 | .settings-footer { 491 | display: flex; 492 | height: 42px; 493 | border-top: solid 1px #e0e0e0; 494 | align-items: center; 495 | padding: 0 16px; 496 | } 497 | .settings-footer span { 498 | flex: 1; 499 | } 500 | .updates { 501 | margin-right: 8px; 502 | cursor: pointer; 503 | position: relative; 504 | display: none; 505 | -webkit-transform: translateZ(0); 506 | } 507 | .updates a { 508 | text-decoration: none; 509 | } 510 | .updates .tooltip { 511 | position: absolute; 512 | font-size: 12px; 513 | border-radius: 2px; 514 | padding: 6px 8px; 515 | bottom: 20px; 516 | background: #f4b400; 517 | color: #fff; 518 | right: -30px; 519 | width: 125px; 520 | line-height: 1; 521 | opacity: 0; 522 | pointer-events: none; 523 | -webkit-transform: translateY(10px); 524 | transition: all 0.25s ease-out; 525 | } 526 | .updates:hover .tooltip { 527 | opacity: 1; 528 | -webkit-transform: translateY(0px); 529 | } 530 | .logged-user { 531 | margin-top: 24px; 532 | } 533 | .tost { 534 | background: #333; 535 | color: #fff; 536 | border-radius: 4px; 537 | padding: 8px 12px; 538 | font-size: 12px; 539 | display: none; 540 | position: fixed; 541 | bottom: 5vh; 542 | left: 50%; 543 | transform: translateX(-50%); 544 | } 545 | .user { 546 | display: flex; 547 | margin: 8px 0; 548 | } 549 | .user img { 550 | width: 32px; 551 | height: 32px; 552 | border-radius: 32px; 553 | border: solid 1px #e0e0e0; 554 | margin-right: 12px; 555 | } 556 | .user .user-info { 557 | flex: 1; 558 | } 559 | .ulabel { 560 | text-transform: uppercase; 561 | font-weight: 500; 562 | color: #888; 563 | } 564 | .signout-button { 565 | margin-top: 8px; 566 | border: 0; 567 | background: #db4437; 568 | color: #fff; 569 | border-radius: 2px; 570 | padding: 4px 8px; 571 | } 572 | .signout-button:hover { 573 | background: #E15B4F; 574 | } 575 | .signout-button:active { 576 | background: #E9796F; 577 | } 578 | .links { 579 | margin-top: 40px; 580 | display: flex; 581 | justify-content: space-between; 582 | } 583 | .links .link { 584 | margin-right: 12px; 585 | } 586 | .done-button { 587 | border: 0; 588 | background: #3F51B5; 589 | color: #fff; 590 | border-radius: 2px; 591 | padding: 4px 8px; 592 | } 593 | .done-button:hover { 594 | opacity: 0.9; 595 | } 596 | .done-button:active { 597 | background: #7180D5; 598 | } 599 | .control-group { 600 | display: inline-block; 601 | vertical-align: top; 602 | background: #fff; 603 | text-align: left; 604 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); 605 | padding: 30px; 606 | width: 200px; 607 | height: 210px; 608 | margin: 10px; 609 | } 610 | .control { 611 | display: block; 612 | position: relative; 613 | padding-left: 30px; 614 | cursor: pointer; 615 | line-height: 23px; 616 | } 617 | .control input { 618 | position: absolute; 619 | z-index: -1; 620 | opacity: 0; 621 | } 622 | .filed { 623 | display: flex; 624 | align-items: center; 625 | } 626 | .filed label { 627 | flex: 1; 628 | } 629 | .filed select { 630 | width: 50px; 631 | } 632 | .control__indicator { 633 | position: absolute; 634 | top: 2px; 635 | left: 0; 636 | height: 20px; 637 | width: 20px; 638 | background: #e6e6e6; 639 | border-radius: 2px; 640 | } 641 | .control--radio .control__indicator { 642 | border-radius: 50%; 643 | } 644 | .control:hover input ~ .control__indicator, 645 | .control input:focus ~ .control__indicator { 646 | background: #ccc; 647 | } 648 | .control input:checked ~ .control__indicator { 649 | background: #f4b400; 650 | } 651 | .control:hover input:not([disabled]):checked ~ .control__indicator, 652 | .control input:checked:focus ~ .control__indicator { 653 | background: #f4b400; 654 | } 655 | .control input:disabled ~ .control__indicator { 656 | background: #e6e6e6; 657 | opacity: 0.6; 658 | pointer-events: none; 659 | } 660 | .control__indicator:after { 661 | content: ''; 662 | position: absolute; 663 | display: none; 664 | } 665 | .control input:checked ~ .control__indicator:after { 666 | display: block; 667 | } 668 | .control--checkbox .control__indicator:after { 669 | left: 8px; 670 | top: 4px; 671 | width: 3px; 672 | height: 8px; 673 | border: solid #fff; 674 | border-width: 0 2px 2px 0; 675 | transform: rotate(45deg); 676 | } 677 | .control--checkbox input:disabled ~ .control__indicator:after { 678 | border-color: #7b7b7b; 679 | } 680 | .control--checkbox input:indeterminate ~ .control__indicator { 681 | background: #f4b400; 682 | } 683 | .control--checkbox input:indeterminate ~ .control__indicator::before { 684 | width: 12px; 685 | position: absolute; 686 | left: 4px; 687 | top: 8px; 688 | height: 3px; 689 | right: 0; 690 | border-radius: 3px; 691 | background: #fff; 692 | content: ""; 693 | } 694 | .control--radio .control__indicator:after { 695 | left: 7px; 696 | top: 7px; 697 | height: 6px; 698 | width: 6px; 699 | border-radius: 50%; 700 | background: #fff; 701 | } 702 | .control--radio input:disabled ~ .control__indicator:after { 703 | background: #7b7b7b; 704 | } 705 | .select { 706 | position: relative; 707 | display: inline-block; 708 | margin-bottom: 15px; 709 | width: 100%; 710 | } 711 | .select select { 712 | display: inline-block; 713 | width: 100%; 714 | cursor: pointer; 715 | padding: 10px 15px; 716 | outline: 0; 717 | border: 0; 718 | border-radius: 0; 719 | background: #e6e6e6; 720 | color: #7b7b7b; 721 | appearance: none; 722 | -webkit-appearance: none; 723 | -moz-appearance: none; 724 | } 725 | .select select::-ms-expand { 726 | display: none; 727 | } 728 | .select select:hover, 729 | .select select:focus { 730 | color: #000; 731 | background: #ccc; 732 | } 733 | .select select:disabled { 734 | opacity: 0.5; 735 | pointer-events: none; 736 | } 737 | .select__arrow { 738 | position: absolute; 739 | top: 16px; 740 | right: 15px; 741 | width: 0; 742 | height: 0; 743 | pointer-events: none; 744 | border-style: solid; 745 | border-width: 8px 5px 0 5px; 746 | border-color: #7b7b7b transparent transparent transparent; 747 | } 748 | .select select:hover ~ .select__arrow, 749 | .select select:focus ~ .select__arrow { 750 | border-top-color: #000; 751 | } 752 | .select select:disabled ~ .select__arrow { 753 | border-top-color: #ccc; 754 | } 755 | .loading { 756 | transition: visibility 0s linear .4s, opacity .4s linear; 757 | display: none; 758 | position: absolute; 759 | top: 79px; 760 | left: 0; 761 | right: 0; 762 | z-index: 24; 763 | } 764 | .loading .loading-progress { 765 | position: relative; 766 | height: 4px; 767 | display: block; 768 | width: 100%; 769 | background-color: transparent; 770 | overflow: hidden; 771 | } 772 | .loading .loading-progress .indeterminate { 773 | background-color: #3F51B5; 774 | left: 0; 775 | right: 0; 776 | } 777 | .loading .loading-progress .indeterminate::before, 778 | .loading .loading-progress .indeterminate::after { 779 | content: ''; 780 | position: absolute; 781 | background-color: inherit; 782 | top: 0; 783 | bottom: 0; 784 | will-change: transform; 785 | transform-origin: left; 786 | left: -1vw; 787 | width: 1vw; 788 | } 789 | .loading .loading-progress .indeterminate::before { 790 | animation: indeterminate 2.8s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; 791 | } 792 | .loading .loading-progress .indeterminate::after { 793 | animation: indeterminate-short 2.8s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; 794 | animation-delay: 1.53s; 795 | } 796 | @keyframes indeterminate { 797 | 0% { 798 | transform: scaleX(35) translateX(-1vw); 799 | } 800 | 60% { 801 | transform: translateX(101vw) scaleX(90); 802 | } 803 | 100% { 804 | transform: translateX(101vw) scaleX(90); 805 | } 806 | } 807 | @keyframes indeterminate-short { 808 | 0% { 809 | transform: scaleX(200) translateX(-1vw); 810 | } 811 | 60% { 812 | transform: translateX(107vw) scaleX(1); 813 | } 814 | 100% { 815 | transform: translateX(107vw) scaleX(1); 816 | } 817 | } 818 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/assets/img/alphabetical.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | alphabetical 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/assets/img/coach-marks.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | svg 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | Get started by entering 14 | the Slides URL or ID 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/assets/img/done.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/assets/img/g.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | g 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/assets/img/ic_close_black_24dp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/assets/img/link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/assets/img/logo-text.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Sync to Slides 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/assets/img/none.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | none 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/assets/img/refresh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Shape 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/assets/img/reverse-alphabetical.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | reverse-alphabetical 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/assets/img/reverse.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | reverse 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/assets/img/settigns.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/assets/img/spinner.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/assets/js/analytics.min.js: -------------------------------------------------------------------------------- 1 | (function(e,t,o,c,n,a,s){e.GoogleAnalyticsObject=n,e[n]=e[n]||function(){(e[n].q=e[n].q||[]).push(arguments)},e[n].l=1*new Date,a=t.createElement(o),s=t.getElementsByTagName(o)[0],a.async=1,a.src=c,s.parentNode.insertBefore(a,s)})(window,document,"script","https://www.google-analytics.com/analytics.js","ga"),ga("create","UA-55363605-10","auto"),ga("set","checkProtocolTask",function(e){e.set("location","https://websiddu.github.io/sync-to-slides/")}); 2 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/assets/js/c.js: -------------------------------------------------------------------------------- 1 | !function(){function i(){a=window.innerWidth,b=window.innerHeight/2,g={x:0,y:b},c=document.getElementById("large-header"),c.style.height=b+"px",d=document.getElementById("canvas"),d.width=a,d.height=b,e=d.getContext("2d"),f=[];for(var h=0;h<.5*a;h++){var i=new n;f.push(i)}m()}function j(){window.addEventListener("scroll",k),window.addEventListener("resize",l)}function k(){h=!(document.body.scrollTop>b)}function l(){a=window.innerWidth,b=window.innerHeight,c.style.height=b+"px",d.width=a,d.height=b}function m(){if(h){e.clearRect(0,0,a,b);for(var c in f)f[c].draw()}requestAnimationFrame(m)}function n(){function d(){c.pos.x=Math.random()*a,c.pos.y=b+100*Math.random(),c.alpha=.1+.3*Math.random(),c.scale=.1+.3*Math.random(),c.velocity=Math.random()}var c=this;!function(){c.pos={},d(),console.log(c)}(),this.draw=function(){c.alpha<=0&&d(),c.pos.y-=c.velocity,c.alpha-=5e-4,e.beginPath(),e.arc(c.pos.x,c.pos.y,10*c.scale,0,2*Math.PI,!1),e.fillStyle="rgba(255,255,255,"+c.alpha+")",e.fill()}}var a,b,c,d,e,f,g,h=!0;i(),j()}(); 2 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/assets/js/lib/jquery-timeago.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Timeago is a jQuery plugin that makes it easy to support automatically 3 | * updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago"). 4 | * 5 | * @name timeago 6 | * @version 1.5.4 7 | * @requires jQuery v1.2.3+ 8 | * @author Ryan McGeary 9 | * @license MIT License - http://www.opensource.org/licenses/mit-license.php 10 | * 11 | * For usage and examples, visit: 12 | * http://timeago.yarp.com/ 13 | * 14 | * Copyright (c) 2008-2017, Ryan McGeary (ryan -[at]- mcgeary [*dot*] org) 15 | */ 16 | 17 | (function (factory) { 18 | if (typeof define === 'function' && define.amd) { 19 | // AMD. Register as an anonymous module. 20 | define(['jquery'], factory); 21 | } else if (typeof module === 'object' && typeof module.exports === 'object') { 22 | factory(require('jquery')); 23 | } else { 24 | // Browser globals 25 | factory(jQuery); 26 | } 27 | }(function ($) { 28 | $.timeago = function(timestamp) { 29 | if (timestamp instanceof Date) { 30 | return inWords(timestamp); 31 | } else if (typeof timestamp === "string") { 32 | return inWords($.timeago.parse(timestamp)); 33 | } else if (typeof timestamp === "number") { 34 | return inWords(new Date(timestamp)); 35 | } else { 36 | return inWords($.timeago.datetime(timestamp)); 37 | } 38 | }; 39 | var $t = $.timeago; 40 | 41 | $.extend($.timeago, { 42 | settings: { 43 | refreshMillis: 60000, 44 | allowPast: true, 45 | allowFuture: false, 46 | localeTitle: false, 47 | cutoff: 0, 48 | autoDispose: true, 49 | strings: { 50 | prefixAgo: null, 51 | prefixFromNow: null, 52 | suffixAgo: "ago", 53 | suffixFromNow: "from now", 54 | inPast: 'any moment now', 55 | seconds: "less than a minute", 56 | minute: "about a minute", 57 | minutes: "%d minutes", 58 | hour: "about an hour", 59 | hours: "about %d hours", 60 | day: "a day", 61 | days: "%d days", 62 | month: "about a month", 63 | months: "%d months", 64 | year: "about a year", 65 | years: "%d years", 66 | wordSeparator: " ", 67 | numbers: [] 68 | } 69 | }, 70 | 71 | inWords: function(distanceMillis) { 72 | if (!this.settings.allowPast && ! this.settings.allowFuture) { 73 | throw 'timeago allowPast and allowFuture settings can not both be set to false.'; 74 | } 75 | 76 | var $l = this.settings.strings; 77 | var prefix = $l.prefixAgo; 78 | var suffix = $l.suffixAgo; 79 | if (this.settings.allowFuture) { 80 | if (distanceMillis < 0) { 81 | prefix = $l.prefixFromNow; 82 | suffix = $l.suffixFromNow; 83 | } 84 | } 85 | 86 | if (!this.settings.allowPast && distanceMillis >= 0) { 87 | return this.settings.strings.inPast; 88 | } 89 | 90 | var seconds = Math.abs(distanceMillis) / 1000; 91 | var minutes = seconds / 60; 92 | var hours = minutes / 60; 93 | var days = hours / 24; 94 | var years = days / 365; 95 | 96 | function substitute(stringOrFunction, number) { 97 | var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction; 98 | var value = ($l.numbers && $l.numbers[number]) || number; 99 | return string.replace(/%d/i, value); 100 | } 101 | 102 | var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) || 103 | seconds < 90 && substitute($l.minute, 1) || 104 | minutes < 45 && substitute($l.minutes, Math.round(minutes)) || 105 | minutes < 90 && substitute($l.hour, 1) || 106 | hours < 24 && substitute($l.hours, Math.round(hours)) || 107 | hours < 42 && substitute($l.day, 1) || 108 | days < 30 && substitute($l.days, Math.round(days)) || 109 | days < 45 && substitute($l.month, 1) || 110 | days < 365 && substitute($l.months, Math.round(days / 30)) || 111 | years < 1.5 && substitute($l.year, 1) || 112 | substitute($l.years, Math.round(years)); 113 | 114 | var separator = $l.wordSeparator || ""; 115 | if ($l.wordSeparator === undefined) { separator = " "; } 116 | return $.trim([prefix, words, suffix].join(separator)); 117 | }, 118 | 119 | parse: function(iso8601) { 120 | var s = $.trim(iso8601); 121 | s = s.replace(/\.\d+/,""); // remove milliseconds 122 | s = s.replace(/-/,"/").replace(/-/,"/"); 123 | s = s.replace(/T/," ").replace(/Z/," UTC"); 124 | s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400 125 | s = s.replace(/([\+\-]\d\d)$/," $100"); // +09 -> +0900 126 | return new Date(s); 127 | }, 128 | datetime: function(elem) { 129 | var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title"); 130 | return $t.parse(iso8601); 131 | }, 132 | isTime: function(elem) { 133 | // jQuery's `is()` doesn't play well with HTML5 in IE 134 | return $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time"); 135 | } 136 | }); 137 | 138 | // functions that can be called via $(el).timeago('action') 139 | // init is default when no action is given 140 | // functions are called with context of a single element 141 | var functions = { 142 | init: function() { 143 | functions.dispose.call(this); 144 | var refresh_el = $.proxy(refresh, this); 145 | refresh_el(); 146 | var $s = $t.settings; 147 | if ($s.refreshMillis > 0) { 148 | this._timeagoInterval = setInterval(refresh_el, $s.refreshMillis); 149 | } 150 | }, 151 | update: function(timestamp) { 152 | var date = (timestamp instanceof Date) ? timestamp : $t.parse(timestamp); 153 | $(this).data('timeago', { datetime: date }); 154 | if ($t.settings.localeTitle) { 155 | $(this).attr("title", date.toLocaleString()); 156 | } 157 | refresh.apply(this); 158 | }, 159 | updateFromDOM: function() { 160 | $(this).data('timeago', { datetime: $t.parse( $t.isTime(this) ? $(this).attr("datetime") : $(this).attr("title") ) }); 161 | refresh.apply(this); 162 | }, 163 | dispose: function () { 164 | if (this._timeagoInterval) { 165 | window.clearInterval(this._timeagoInterval); 166 | this._timeagoInterval = null; 167 | } 168 | } 169 | }; 170 | 171 | $.fn.timeago = function(action, options) { 172 | var fn = action ? functions[action] : functions.init; 173 | if (!fn) { 174 | throw new Error("Unknown function name '"+ action +"' for timeago"); 175 | } 176 | // each over objects here and call the requested function 177 | this.each(function() { 178 | fn.call(this, options); 179 | }); 180 | return this; 181 | }; 182 | 183 | function refresh() { 184 | var $s = $t.settings; 185 | 186 | //check if it's still visible 187 | if ($s.autoDispose && !$.contains(document.documentElement,this)) { 188 | //stop if it has been removed 189 | $(this).timeago("dispose"); 190 | return this; 191 | } 192 | 193 | var data = prepareData(this); 194 | 195 | if (!isNaN(data.datetime)) { 196 | if ( $s.cutoff === 0 || Math.abs(distance(data.datetime)) < $s.cutoff) { 197 | $(this).text(inWords(data.datetime)); 198 | } else { 199 | if ($(this).attr('title').length > 0) { 200 | $(this).text($(this).attr('title')); 201 | } 202 | } 203 | } 204 | return this; 205 | } 206 | 207 | function prepareData(element) { 208 | element = $(element); 209 | if (!element.data("timeago")) { 210 | element.data("timeago", { datetime: $t.datetime(element) }); 211 | var text = $.trim(element.text()); 212 | if ($t.settings.localeTitle) { 213 | element.attr("title", element.data('timeago').datetime.toLocaleString()); 214 | } else if (text.length > 0 && !($t.isTime(element) && element.attr("title"))) { 215 | element.attr("title", text); 216 | } 217 | } 218 | return element.data("timeago"); 219 | } 220 | 221 | function inWords(date) { 222 | return $t.inWords(distance(date)); 223 | } 224 | 225 | function distance(date) { 226 | return (new Date().getTime() - date.getTime()); 227 | } 228 | 229 | // fix for IE6 suckage 230 | document.createElement("abbr"); 231 | document.createElement("time"); 232 | })); 233 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/assets/js/main.js: -------------------------------------------------------------------------------- 1 | // var button = document.getElementById('syncToSlides'); 2 | 3 | var init = function (data) { 4 | window.data = data; 5 | window.dataCopy = JSON.parse(JSON.stringify(data)); 6 | _renderTemplate(data); 7 | } 8 | 9 | var _renderTemplate = function (data) { 10 | var html = ""; 11 | $('.panel-table-body').html(""); 12 | for (var i = 0; i < data.pages.length; i++) { 13 | $('#pageName').text(data.pages[i].name); 14 | for (var j = 0; j < data.pages[i].artboards.length; j++) { 15 | var a = data.pages[i].artboards[j]; 16 | html += _rowHTML(a); 17 | } 18 | } 19 | $('.panel-table-body').html(html); 20 | } 21 | 22 | var _rowHTML = function (artboard) { 23 | var isChecked = artboard.selected ? ' checked ' : ''; 24 | var template = 25 | ''+ 26 | '' + artboard.name + 27 | '' + 28 | '' + 29 | ''; 30 | return template; 31 | } 32 | 33 | var delay = (function(){ 34 | var timer = 0; 35 | return function(callback, ms){ 36 | clearTimeout (timer); 37 | timer = setTimeout(callback, ms); 38 | }; 39 | })(); 40 | 41 | var _refreshArtboards = function () { 42 | window.location.hash = 'refreshArtboards'; 43 | $('#toggleSelectAll').prop('checked', false); 44 | _tost('💆🏼 Refreshed!') 45 | } 46 | 47 | var _tost = function (msg) { 48 | tost.text(msg); 49 | tost.stop().fadeIn('fast').delay(1000).fadeOut('fast'); 50 | } 51 | 52 | var _handleChangeURL = function (e) { 53 | $('#loading').show(); 54 | delay(function(){ 55 | var d = { 56 | presentationId: document.getElementById('slidesURL').value 57 | } 58 | window.SSData = encodeURI(JSON.stringify(d)); 59 | window.location.hash = 'fetchPresentation'; 60 | }, 300); 61 | } 62 | 63 | var _onLoad = function () { 64 | 65 | $("time.timeago").timeago(); 66 | 67 | if (window.currentPresentation && window.currentPresentation.name) { 68 | _presFetchSuccess(); 69 | } else { 70 | $('#overlay').show(); 71 | } 72 | 73 | if (window.currentPresentation && window.lastUpdated) { 74 | _m('Last synced '); 75 | $("time.timeago").timeago("update", new Date(lastUpdated)); 76 | } 77 | 78 | $('.ver').text("v" + window.version); 79 | 80 | } 81 | 82 | var _presFetchSuccess = function (e) { 83 | _m(''); 84 | $("time.timeago").text(''); 85 | $('#loading').hide(); 86 | $('#overlay').fadeOut('fast'); 87 | $('.panel-title h1').text(currentPresentation.name) 88 | $('#slidesURL').val(currentPresentation.id); 89 | $('.panel-title').removeClass('hide'); 90 | $('.panel-input').addClass('hide'); 91 | } 92 | 93 | var _uploadProgress = function () { 94 | 95 | } 96 | 97 | var _presFetchError = function (e) { 98 | $('#loading').hide(); 99 | } 100 | 101 | var _removePresentation = function () { 102 | $('.panel-title h1').text('') 103 | $('.panel-title').addClass('hide'); 104 | $('.panel-input').removeClass('hide'); 105 | $('#slidesURL').val(null); 106 | $('#overlay').fadeIn('fast'); 107 | } 108 | 109 | var _toggleSelectAll = function () { 110 | $('.artboard-check:checkbox').not(this).prop('checked', this.checked); 111 | for (var j = 0; j < data.pages[0].artboards.length; j++) { 112 | data.pages[0].artboards[j].selected = $(this).is(':checked'); 113 | dataCopy.pages[0].artboards[j].selected = $(this).is(':checked'); 114 | } 115 | 116 | _checkEnabledButton(); 117 | } 118 | 119 | var _checkToggleAllState = function () { 120 | $('#toggleSelectAll').prop('indeterminate', true); 121 | 122 | for (var j = 0; j < data.pages[0].artboards.length; j++) { 123 | if (data.pages[0].artboards[j].objectID == this.id) { 124 | data.pages[0].artboards[j].selected = $(this).is(':checked'); 125 | } 126 | } 127 | 128 | for (var j = 0; j < dataCopy.pages[0].artboards.length; j++) { 129 | if (dataCopy.pages[0].artboards[j].objectID == this.id) { 130 | dataCopy.pages[0].artboards[j].selected = $(this).is(':checked'); 131 | } 132 | } 133 | 134 | _checkEnabledButton(); 135 | } 136 | 137 | var _checkEnabledButton = function () { 138 | var len = $('.artboard-check:checked').length; 139 | if (len > 0) { 140 | $('#syncToSlides').prop('disabled', false); 141 | } else { 142 | $('#syncToSlides').prop('disabled', true); 143 | } 144 | } 145 | 146 | var _getSelectedArtboards = function () { 147 | var selectedArtboards = []; 148 | $('.artboard-check:checked').each(function () { 149 | selectedArtboards.push(this.id); 150 | }) 151 | return selectedArtboards; 152 | } 153 | 154 | var _showLoader = function () { 155 | $('#loading').show(); 156 | $('.overlay').show(); 157 | } 158 | 159 | var _hideLoader = function () { 160 | $('#loading').hide(); 161 | $('.overlay').hide(); 162 | $('.done-img').fadeOut('slow'); 163 | } 164 | 165 | var _uploadComplete = function () { 166 | _hideLoader(); 167 | _m('Last synced ') 168 | var d = new Date(); 169 | $("time.timeago").timeago("update", new Date()); 170 | $('.spinner-img').hide(); 171 | window.lastUpdated = encodeURI(JSON.stringify(new Date())); 172 | window.location.hash = "lastUpdated"; 173 | } 174 | 175 | var _showSpinners = function () { 176 | $('.artboard-check:checked').parents('.panel-row').find('.spinner-img').show(); 177 | } 178 | 179 | var _hideSpinner = function (id) { 180 | $(".a-" + id ).find('.spinner-img').hide(); 181 | $(".a-" + id ).find('.done-img').show(); 182 | } 183 | 184 | var _showError = function (code) { 185 | $('#loading').hide(); 186 | _m('Failed to fetch!'); 187 | $('.spinner-img').hide(); 188 | if (code == '403') { 189 | _m("🙅 You don't have permission!"); 190 | $('#removeButton').trigger('click'); 191 | } else if (code == '404') { 192 | _m("😶 Can't find the presentation!"); 193 | } else if (code == '401') { 194 | _m("👻 You shall not pass!"); 195 | } 196 | 197 | $("time.timeago").text(''); 198 | } 199 | 200 | var _m = function (m) { 201 | $('.message').text(m); 202 | } 203 | 204 | var _artBoardsMissing = function () { 205 | $('#loading').hide(); 206 | $('.spinner-img').hide(); 207 | _m('😓 Restart plugin to sync!'); 208 | } 209 | 210 | var _uploadToSlides = function () { 211 | 212 | $('#loading').show(); 213 | _m('💪🏽 Processing layers...'); 214 | $("time.timeago").text(''); 215 | _showSpinners(); 216 | var d = { 217 | presentationId: document.getElementById('slidesURL').value, 218 | selectedArtboards: _getSelectedArtboards() 219 | } 220 | 221 | ga('send', 'event', 'sync panel', 'artboards', d.selectedArtboards.length); 222 | window.SSData = encodeURI(JSON.stringify(d)); 223 | window.location.hash = 'startSync'; 224 | } 225 | 226 | var _sort = function (sortOrder) { 227 | data.pages[0].artboards.sort(_sortByName); 228 | 229 | switch (sortOrder) { 230 | case 'none': 231 | data = JSON.parse(JSON.stringify(dataCopy)); 232 | break; 233 | case 'reverse': 234 | data = JSON.parse(JSON.stringify(dataCopy)); 235 | data.pages[0].artboards.reverse(); 236 | break; 237 | case 'alphabetical': 238 | data.pages[0].artboards.sort(_sortByName); 239 | break; 240 | case 'reverse-alphabetical': 241 | data.pages[0].artboards.sort(_sortByNameReverse); 242 | break; 243 | default: 244 | } 245 | 246 | _renderTemplate(data); 247 | } 248 | 249 | var _sortByNameReverse = function (a, b) { 250 | var aName = a.name.toLowerCase(); 251 | var bName = b.name.toLowerCase(); 252 | return ((aName > bName) ? -1 : ((aName < bName) ? 1 : 0)); 253 | } 254 | 255 | var _sortByName = function(a, b){ 256 | var aName = a.name.toLowerCase(); 257 | var bName = b.name.toLowerCase(); 258 | return ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0)); 259 | } 260 | 261 | var _showDropdown = function (e) { 262 | $(this).next('.dropdown').toggleClass('active'); 263 | } 264 | 265 | var _chooseSortOrder = function () { 266 | var sortOrder = $(this).data('value'); 267 | $('.selectedOrder').attr('src', 'assets/img/' + sortOrder + '.svg'); 268 | $('.dropdown').removeClass('active'); 269 | _sort(sortOrder); 270 | } 271 | 272 | jQuery(document).ready(function() { 273 | $("time.timeago").timeago(); 274 | window.tost = $('.tost'); 275 | }); 276 | 277 | var _showSettingsModal = function () { 278 | window.location.hash = "fetchUser"; 279 | $('.settings-overlay').fadeIn('fast'); 280 | $('.settings').fadeIn('medium'); 281 | if (preferences) { 282 | if(preferences.exportSize) $('#exportSize').val(preferences.exportSize); 283 | if(preferences.exportLayers) $('#exportLayers').val(preferences.exportLayers); 284 | } 285 | } 286 | 287 | var _hideSettingsModal = function () { 288 | $('.settings-overlay').fadeOut('fast'); 289 | $('.settings').fadeOut('fast'); 290 | } 291 | 292 | var _signOut = function () { 293 | window.location.hash = 'signOut'; 294 | } 295 | 296 | var _openUrl = function (e) { 297 | e.preventDefault(); 298 | window.Link = encodeURI(JSON.stringify($(this).attr('href'))); 299 | window.location.hash = 'openLink'; 300 | } 301 | 302 | var _openPresentation = function (e) { 303 | e.preventDefault(); 304 | var link = "https://docs.google.com/presentation/d/" + currentPresentation.id; 305 | window.Link = encodeURI(JSON.stringify(link)); 306 | window.location.hash = 'openLink'; 307 | } 308 | 309 | var _updateUser = function () { 310 | $('.username').text(currentUser.name); 311 | $('.email').text(currentUser.email); 312 | } 313 | 314 | var _updatePreferences = function () { 315 | var preferences = { 316 | exportSize: $('#exportSize').val(), 317 | exportLayers: $('#exportLayers').val(), 318 | }; 319 | 320 | window.preferences = encodeURI(JSON.stringify(preferences)); 321 | window.location.hash = 'updatePreferences'; 322 | } 323 | 324 | var _fileDeleteFailed = function() { 325 | $('time').text(''); 326 | } 327 | 328 | var _checkUpdates = function () { 329 | var timestamp = new Date().getTime(); 330 | $.getJSON('https://raw.githubusercontent.com/websiddu/versions/master/sync-to-slides.json?t='+timestamp, function (data) { 331 | if (window.version && parseFloat(window.version) < parseFloat(data.version)) { 332 | $('.updates').show(); 333 | } 334 | }) 335 | } 336 | 337 | window.oncontextmenu = function (evt) { 338 | if (!evt.altKey) { 339 | evt.preventDefault(); 340 | } 341 | }; 342 | 343 | $(document).on('keyup', '#slidesURL', _handleChangeURL); 344 | $(document).on('click', '#removeButton', _removePresentation); 345 | $(document).on('change', '#toggleSelectAll', _toggleSelectAll) 346 | $(document).on('change', '.artboard-check', _checkToggleAllState); 347 | $(document).on('click', '#syncToSlides', _uploadToSlides); 348 | $(document).on('click', '#sortDropdown', _showDropdown); 349 | $(document).on('click', '.dropdown-option', _chooseSortOrder); 350 | $(document).on('click', '.settings-button', _showSettingsModal); 351 | $(document).on('click', '.settings-overlay', _hideSettingsModal); 352 | $(document).on('click', '.settings-done', _hideSettingsModal); 353 | $(document).on('click', '.signout', _signOut); 354 | $(document).on('click', '.link', _openUrl); 355 | $(document).on('click', '.linkToSlides', _openPresentation); 356 | $(document).on('click', '.updates a', _openUrl); 357 | $(document).on('change', '#exportSize', _updatePreferences); 358 | $(document).on('change', '#exportLayers', _updatePreferences); 359 | $(document).on('click', '#refreshArtboards', _refreshArtboards); 360 | $(document).ready(function () { _checkUpdates() }); 361 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Document 9 | 10 | 11 | 12 | 13 | Presentation 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | Artbord name 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | None 56 | 57 | 58 | 59 | Reverse 60 | 61 | 62 | 63 | Alphabetical A-Z 64 | 65 | 66 | 67 | Reverse alphabetical Z-A 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 81 | 82 | 94 | 95 | 96 | Refreshed! 97 | 98 | 99 | 100 | 101 | 102 | 103 | Settings 104 | 105 | 106 | 107 | Export size 108 | 109 | 1x 110 | 2x 111 | 3x 112 | 4x 113 | 5x 114 | 115 | 116 | 117 | 118 | Export layers 119 | 120 | Yes 121 | No 122 | 123 | 124 | 125 | 126 | Logged in as 127 | 128 | 129 | Loading... 130 | ... 131 | Sign out 132 | 133 | 134 | 135 | 136 | About 137 | Help 138 | Updates? 139 | 140 | 141 | 142 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/panel/login.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Login 8 | 9 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | Upload artboards to Google Slides with ease. For a hassel free presentation making. 145 | 146 | 147 | 148 | 149 | 150 | 151 | Sign in with Google 152 | 153 | 154 | 155 | 156 | 157 | 158 | 171 | 172 | 173 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/scripts/MochaJSDelegate.js: -------------------------------------------------------------------------------- 1 | // 2 | // MochaJSDelegate.js 3 | // MochaJSDelegate 4 | // 5 | // Created by Matt Curtis 6 | // Copyright (c) 2015. All rights reserved. 7 | // 8 | 9 | var MochaJSDelegate = function(selectorHandlerDict){ 10 | var uniqueClassName = "MochaJSDelegate_DynamicClass_" + NSUUID.UUID().UUIDString(); 11 | 12 | var delegateClassDesc = MOClassDescription.allocateDescriptionForClassWithName_superclass_(uniqueClassName, NSObject); 13 | 14 | delegateClassDesc.registerClass(); 15 | 16 | // Handler storage 17 | 18 | var handlers = {}; 19 | 20 | // Define interface 21 | 22 | this.setHandlerForSelector = function(selectorString, func){ 23 | var handlerHasBeenSet = (selectorString in handlers); 24 | var selector = NSSelectorFromString(selectorString); 25 | 26 | handlers[selectorString] = func; 27 | 28 | if(!handlerHasBeenSet){ 29 | /* 30 | For some reason, Mocha acts weird about arguments: 31 | https://github.com/logancollins/Mocha/issues/28 32 | 33 | We have to basically create a dynamic handler with a likewise dynamic number of predefined arguments. 34 | */ 35 | 36 | var dynamicHandler = function(){ 37 | var functionToCall = handlers[selectorString]; 38 | 39 | if(!functionToCall) return; 40 | 41 | return functionToCall.apply(delegateClassDesc, arguments); 42 | }; 43 | 44 | var args = [], regex = /:/g; 45 | while(match = regex.exec(selectorString)) args.push("arg"+args.length); 46 | 47 | dynamicFunction = eval("(function("+args.join(",")+"){ return dynamicHandler.apply(this, arguments); })"); 48 | 49 | delegateClassDesc.addInstanceMethodWithSelector_function_(selector, dynamicFunction); 50 | } 51 | }; 52 | 53 | this.removeHandlerForSelector = function(selectorString){ 54 | delete handlers[selectorString]; 55 | }; 56 | 57 | this.getHandlerForSelector = function(selectorString){ 58 | return handlers[selectorString]; 59 | }; 60 | 61 | this.getAllHandlers = function(){ 62 | return handlers; 63 | }; 64 | 65 | this.getClass = function(){ 66 | return NSClassFromString(uniqueClassName); 67 | }; 68 | 69 | this.getClassInstance = function(){ 70 | return NSClassFromString(uniqueClassName).new(); 71 | }; 72 | 73 | // Conveience 74 | 75 | if(typeof selectorHandlerDict == "object"){ 76 | for(var selectorString in selectorHandlerDict){ 77 | this.setHandlerForSelector(selectorString, selectorHandlerDict[selectorString]); 78 | } 79 | } 80 | }; 81 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/src/gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'), 2 | watch = require('gulp-watch'), 3 | concat = require('gulp-concat'), 4 | less = require('gulp-less'), 5 | path = require('path'); 6 | 7 | gulp.task('scripts', function() { 8 | return gulp.src([ 9 | 'js/init.js', 10 | 'js/utils/configs.js', 11 | 'js/utils/help.js', 12 | 'js/utils/export.js', 13 | 'js/utils/loadframework.js', 14 | 'js/utils/api.js', 15 | 'js/utils/panel.js', 16 | 'js/main.js' 17 | ]) 18 | .pipe(concat('common.js')) 19 | .pipe(gulp.dest('../scripts/')); 20 | }); 21 | 22 | gulp.task('less', function () { 23 | return gulp.src('./less/*.less') 24 | .pipe(less({ 25 | paths: [ path.join(__dirname, 'less', 'includes') ] 26 | })) 27 | .pipe(gulp.dest('../panel/assets/css/')); 28 | }); 29 | 30 | 31 | gulp.task('watch', function () { 32 | gulp.watch(['**/*.js'], ['scripts']); 33 | gulp.watch(['**/*.less'], ['less']); 34 | }); 35 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/src/js/init.js: -------------------------------------------------------------------------------- 1 | var SS = { 2 | init: function (context, command, args) { 3 | 4 | var commandOptions = '' + args; 5 | 6 | this.prefs = NSUserDefaults.standardUserDefaults(); 7 | this.context = context; 8 | 9 | this.version = this.context.plugin.version() + ""; 10 | this.SSVersion = this.prefs.stringForKey("SSVersion") + "" || 0; 11 | 12 | this.extend(context); 13 | 14 | this.pluginRoot = this.scriptPath 15 | .stringByDeletingLastPathComponent() 16 | .stringByDeletingLastPathComponent() 17 | .stringByDeletingLastPathComponent(); 18 | this.pluginSketch = this.pluginRoot + "/Contents/Sketch/"; 19 | this.resources = this.pluginRoot + '/Contents/Resources'; 20 | 21 | coscript.setShouldKeepAround(false); 22 | 23 | if (command && command == "init") { 24 | return false; 25 | } 26 | 27 | this.document = context.document; 28 | this.documentData = this.document.documentData(); 29 | this.UIMetadata = context.document.mutableUIMetadata(); 30 | this.window = this.document.window(); 31 | this.pages = this.document.pages(); 32 | this.page = this.document.currentPage(); 33 | this.artboard = this.page.currentArtboard(); 34 | this.current = this.artboard || this.page; 35 | this.configs = this.getConfigs(); 36 | 37 | if (command) { 38 | switch (command) { 39 | case "sync-panel": 40 | this.Sync().showPanel(args); 41 | break; 42 | } 43 | } 44 | }, 45 | extend: function(options, target) { 46 | var target = target || this; 47 | 48 | for (var key in options) { 49 | target[key] = options[key]; 50 | } 51 | return target; 52 | } 53 | }; 54 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/src/js/main.js: -------------------------------------------------------------------------------- 1 | SS['Sync'] = function () { 2 | 3 | var _showPanel = function () { 4 | SS['frameWork'] = SS.initFramework(SS.context, 'SyncToSlides'); 5 | SS.frameWork.setWebView(SS.webView); 6 | var isAuthorized = SS.frameWork.isAuthorized(); 7 | SS.exportPanel(isAuthorized); 8 | } 9 | 10 | return { 11 | showPanel: _showPanel 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/src/js/utils/api.js: -------------------------------------------------------------------------------- 1 | SS.extend({ 2 | regexNames: /OVERLAY\#|WIDTH\#|HEIGHT\#|TOP\#|RIGHT\#|BOTTOM\#|LEFT\#|VERTICAL\#|HORIZONTAL\#|NOTE\#|PROPERTY\#|LITE\#/, 3 | is: function(layer, theClass){ 4 | if(!layer) return false; 5 | var klass = layer.class(); 6 | return klass === theClass; 7 | }, 8 | addGroup: function(){ 9 | return MSLayerGroup.new(); 10 | }, 11 | addShape: function(){ 12 | var shape = MSRectangleShape.alloc().initWithFrame(NSMakeRect(0, 0, 100, 100)); 13 | return MSShapeGroup.shapeWithPath(shape); 14 | }, 15 | addText: function(container){ 16 | var text = MSTextLayer.new(); 17 | text.setStringValue("text"); 18 | return text; 19 | }, 20 | removeLayer: function(layer){ 21 | var container = layer.parentGroup(); 22 | if (container) container.removeLayer(layer); 23 | }, 24 | getRect: function(layer){ 25 | var rect = layer.absoluteRect(); 26 | return { 27 | x: Math.round(rect.x()), 28 | y: Math.round(rect.y()), 29 | width: Math.round(rect.width()), 30 | height: Math.round(rect.height()), 31 | maxX: Math.round(rect.x() + rect.width()), 32 | maxY: Math.round(rect.y() + rect.height()), 33 | setX: function(x){ rect.setX(x); this.x = x; this.maxX = this.x + this.width; }, 34 | setY: function(y){ rect.setY(y); this.y = y; this.maxY = this.y + this.height; }, 35 | setWidth: function(width){ rect.setWidth(width); this.width = width; this.maxX = this.x + this.width; }, 36 | setHeight: function(height){ rect.setHeight(height); this.height = height; this.maxY = this.y + this.height; } 37 | }; 38 | }, 39 | toNopPath: function(str){ 40 | return this.toJSString(str).replace(/[\/\\\?]/g, " "); 41 | }, 42 | toHTMLEncode: function(str){ 43 | return this.toJSString(str) 44 | .replace(/\/g, '>') 46 | .replace(/\'/g, "'") 47 | .replace(/\"/g, """) 48 | .replace(/\u2028/g,"\\u2028") 49 | .replace(/\u2029/g,"\\u2029") 50 | .replace(/\ud83c|\ud83d/g,"") 51 | ; 52 | // return str.replace(/\&/g, "&").replace(/\"/g, """).replace(/\'/g, "'").replace(/\/g, '>'); 53 | }, 54 | emojiToEntities: function(str) { 55 | var self = this, 56 | emojiRegExp = new RegExp("(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|[\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c[\ude32-\ude3a]|[\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])", "g"); 57 | return str.replace( 58 | emojiRegExp, 59 | function(match) { 60 | var u = ""; 61 | for (var i = 0; i < match.length; i++) { 62 | if( !(i%2) ){ 63 | u += "" + match.codePointAt(i) 64 | } 65 | } 66 | 67 | return u; 68 | }); 69 | }, 70 | toSlug: function(str){ 71 | return this.toJSString(str) 72 | .toLowerCase() 73 | .replace(/(<([^>]+)>)/ig, "") 74 | .replace(/[\/\+\|]/g, " ") 75 | .replace(new RegExp("[\\!@#$%^&\\*\\(\\)\\?=\\{\\}\\[\\]\\\\\\\,\\.\\:\\;\\']", "gi"),'') 76 | .replace(/\s+/g,'-') 77 | ; 78 | }, 79 | toJSString: function(str){ 80 | return new String(str).toString(); 81 | }, 82 | toJSNumber: function(str){ 83 | return Number( this.toJSString(str) ); 84 | }, 85 | pointToJSON: function(point){ 86 | return { 87 | x: parseFloat(point.x), 88 | y: parseFloat(point.y) 89 | }; 90 | }, 91 | rectToJSON: function(rect, referenceRect) { 92 | if (referenceRect) { 93 | return { 94 | x: Math.round( ( rect.x() - referenceRect.x() ) * 10 ) / 10, 95 | y: Math.round( ( rect.y() - referenceRect.y() ) * 10 ) / 10, 96 | width: Math.round( rect.width() * 10 ) / 10, 97 | height: Math.round( rect.height() * 10 ) / 10 98 | }; 99 | } 100 | 101 | return { 102 | x: Math.round( rect.x() * 10 ) / 10, 103 | y: Math.round( rect.y() * 10 ) / 10, 104 | width: Math.round( rect.width() * 10 ) / 10, 105 | height: Math.round( rect.height() * 10 ) / 10 106 | }; 107 | }, 108 | colorToJSON: function(color) { 109 | return { 110 | r: Math.round(color.red() * 255), 111 | g: Math.round(color.green() * 255), 112 | b: Math.round(color.blue() * 255), 113 | a: color.alpha(), 114 | "color-hex": color.immutableModelObject().stringValueWithAlpha(false) + " " + Math.round(color.alpha() * 100) + "%", 115 | "argb-hex": "#" + this.toHex(color.alpha() * 255) + color.immutableModelObject().stringValueWithAlpha(false).replace("#", ""), 116 | "css-rgba": "rgba(" + [ 117 | Math.round(color.red() * 255), 118 | Math.round(color.green() * 255), 119 | Math.round(color.blue() * 255), 120 | (Math.round(color.alpha() * 100) / 100) 121 | ].join(",") + ")", 122 | "ui-color": "(" + [ 123 | "r:" + (Math.round(color.red() * 100) / 100).toFixed(2), 124 | "g:" + (Math.round(color.green() * 100) / 100).toFixed(2), 125 | "b:" + (Math.round(color.blue() * 100) / 100).toFixed(2), 126 | "a:" + (Math.round(color.alpha() * 100) / 100).toFixed(2) 127 | ].join(" ") + ")" 128 | }; 129 | }, 130 | colorStopToJSON: function(colorStop) { 131 | return { 132 | color: this.colorToJSON(colorStop.color()), 133 | position: colorStop.position() 134 | }; 135 | }, 136 | gradientToJSON: function(gradient) { 137 | var stopsData = [], 138 | stop, stopIter = gradient.stops().objectEnumerator(); 139 | while (stop = stopIter.nextObject()) { 140 | stopsData.push(this.colorStopToJSON(stop)); 141 | } 142 | 143 | return { 144 | type: GradientTypes[gradient.gradientType()], 145 | from: this.pointToJSON(gradient.from()), 146 | to: this.pointToJSON(gradient.to()), 147 | colorStops: stopsData 148 | }; 149 | }, 150 | shadowToJSON: function(shadow) { 151 | return { 152 | type: shadow instanceof MSStyleShadow ? "outer" : "inner", 153 | offsetX: shadow.offsetX(), 154 | offsetY: shadow.offsetY(), 155 | blurRadius: shadow.blurRadius(), 156 | spread: shadow.spread(), 157 | color: this.colorToJSON(shadow.color()) 158 | }; 159 | }, 160 | getRadius: function(layer){ 161 | return ( layer.layers && this.is(layer.layers().firstObject(), MSRectangleShape) ) ? layer.layers().firstObject().fixedRadius(): 0; 162 | }, 163 | getBorders: function(style) { 164 | var bordersData = [], 165 | border, borderIter = style.borders().objectEnumerator(); 166 | while (border = borderIter.nextObject()) { 167 | if (border.isEnabled()) { 168 | var fillType = FillTypes[border.fillType()], 169 | borderData = { 170 | fillType: fillType, 171 | position: BorderPositions[border.position()], 172 | thickness: border.thickness() 173 | }; 174 | 175 | switch (fillType) { 176 | case "color": 177 | borderData.color = this.colorToJSON(border.color()); 178 | break; 179 | 180 | case "gradient": 181 | borderData.gradient = this.gradientToJSON(border.gradient()); 182 | break; 183 | 184 | default: 185 | continue; 186 | } 187 | 188 | bordersData.push(borderData); 189 | } 190 | } 191 | 192 | return bordersData; 193 | }, 194 | getFills: function(style) { 195 | var fillsData = [], 196 | fill, fillIter = style.fills().objectEnumerator(); 197 | while (fill = fillIter.nextObject()) { 198 | if (fill.isEnabled()) { 199 | var fillType = FillTypes[fill.fillType()], 200 | fillData = { 201 | fillType: fillType 202 | }; 203 | 204 | switch (fillType) { 205 | case "color": 206 | fillData.color = this.colorToJSON(fill.color()); 207 | break; 208 | 209 | case "gradient": 210 | fillData.gradient = this.gradientToJSON(fill.gradient()); 211 | break; 212 | 213 | default: 214 | continue; 215 | } 216 | 217 | fillsData.push(fillData); 218 | } 219 | } 220 | 221 | return fillsData; 222 | }, 223 | getShadows: function(style) { 224 | var shadowsData = [], 225 | shadow, shadowIter = style.shadows().objectEnumerator(); 226 | while (shadow = shadowIter.nextObject()) { 227 | if (shadow.isEnabled()) { 228 | shadowsData.push(this.shadowToJSON(shadow)); 229 | } 230 | } 231 | 232 | shadowIter = style.innerShadows().objectEnumerator(); 233 | while (shadow = shadowIter.nextObject()) { 234 | if (shadow.isEnabled()) { 235 | shadowsData.push(this.shadowToJSON(shadow)); 236 | } 237 | } 238 | 239 | return shadowsData; 240 | }, 241 | getOpacity: function(style){ 242 | return style.contextSettings().opacity() 243 | }, 244 | getStyleName: function(layer){ 245 | var styles = (this.is(layer, MSTextLayer))? this.document.documentData().layerTextStyles(): this.document.documentData().layerStyles(), 246 | layerStyle = layer.style(), 247 | sharedObjectID = layerStyle.sharedObjectID(), 248 | style; 249 | 250 | styles = styles.objectsSortedByName(); 251 | 252 | if(styles.count() > 0){ 253 | style = this.find({key: "(objectID != NULL) && (objectID == %@)", match: sharedObjectID}, styles); 254 | } 255 | 256 | if(!style) return ""; 257 | return this.toJSString(style.name()); 258 | }, 259 | updateContext: function(){ 260 | this.context.document = NSDocumentController.sharedDocumentController().currentDocument(); 261 | this.context.selection = this.SketchVersion >= "42"? this.context.document.selectedLayers().layers(): this.context.document.selectedLayers(); 262 | 263 | return this.context; 264 | } 265 | }); 266 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/src/js/utils/configs.js: -------------------------------------------------------------------------------- 1 | SS.extend({ 2 | prefix: "syncToSlides", 3 | getConfigs: function(container){ 4 | var configsData; 5 | if(container){ 6 | configsData = this.command.valueForKey_onLayer(this.prefix, container); 7 | } 8 | else{ 9 | configsData = this.UIMetadata.objectForKey(this.prefix); 10 | } 11 | 12 | return JSON.parse(configsData); 13 | }, 14 | setConfigs: function(newConfigs, container){ 15 | var configsData; 16 | newConfigs.timestamp = new Date().getTime(); 17 | if(container){ 18 | configsData = this.extend(newConfigs, this.getConfigs(container) || {}); 19 | this.command.setValue_forKey_onLayer(JSON.stringify(configsData), this.prefix, container); 20 | } 21 | else{ 22 | configsData = this.extend(newConfigs, this.getConfigs() || {}); 23 | this.UIMetadata.setObject_forKey (JSON.stringify(configsData), this.prefix); 24 | } 25 | var saveDoc = this.addShape(); 26 | this.page.addLayers([saveDoc]); 27 | this.removeLayer(saveDoc); 28 | return configsData; 29 | }, 30 | removeConfigs: function(container){ 31 | if(container){ 32 | this.command.setValue_forKey_onLayer(null, this.prefix, container); 33 | } 34 | else{ 35 | configsData = this.UIMetadata.setObject_forKey (null, this.prefix); 36 | } 37 | 38 | } 39 | }); 40 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/src/js/utils/help.js: -------------------------------------------------------------------------------- 1 | SS.extend({ 2 | openURL: function(url){ 3 | var nsurl = NSURL.URLWithString(url + '?ref=ssp'); 4 | NSWorkspace.sharedWorkspace().openURL(nsurl) 5 | }, 6 | mathHalf: function(number){ 7 | return Math.round( number / 2 ); 8 | }, 9 | convertUnit: function(length, isText, percentageType){ 10 | if(percentageType && this.artboard){ 11 | var artboardRect = this.getRect( this.artboard ); 12 | if (percentageType == "width") { 13 | return Math.round((length / artboardRect.width) * 1000) / 10 + "%"; 14 | 15 | } 16 | else if(percentageType == "height"){ 17 | return Math.round((length / artboardRect.height) * 1000) / 10 + "%"; 18 | } 19 | } 20 | 21 | var length = Math.round( length / this.configs.scale * 10 ) / 10, 22 | units = this.configs.unit.split("/"), 23 | unit = units[0]; 24 | 25 | if( units.length > 1 && isText){ 26 | unit = units[1]; 27 | } 28 | 29 | return length + unit; 30 | }, 31 | toHex:function(c) { 32 | var hex = Math.round(c).toString(16).toUpperCase(); 33 | return hex.length == 1 ? "0" + hex :hex; 34 | }, 35 | hexToRgb:function(hex) { 36 | var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); 37 | return result ? { 38 | r: this.toHex(result[1]), 39 | g: this.toHex(result[2]), 40 | b: this.toHex(result[3]) 41 | } : null; 42 | }, 43 | isIntersect: function(targetRect, layerRect){ 44 | return !( 45 | targetRect.maxX <= layerRect.x || 46 | targetRect.x >= layerRect.maxX || 47 | targetRect.y >= layerRect.maxY || 48 | targetRect.maxY <= layerRect.y 49 | ); 50 | }, 51 | getDistance: function(targetRect, containerRect){ 52 | var containerRect = containerRect || this.getRect(this.current); 53 | 54 | return { 55 | top: (targetRect.y - containerRect.y), 56 | right: (containerRect.maxX - targetRect.maxX), 57 | bottom: (containerRect.maxY - targetRect.maxY), 58 | left: (targetRect.x - containerRect.x), 59 | } 60 | }, 61 | message: function(message){ 62 | this.document.showMessage(message); 63 | }, 64 | find: function(format, container, returnArray){ 65 | if(!format || !format.key || !format.match){ 66 | return false; 67 | } 68 | var predicate = NSPredicate.predicateWithFormat(format.key,format.match), 69 | container = container || this.current, 70 | items; 71 | 72 | if(container.pages){ 73 | items = container.pages(); 74 | } 75 | else if( this.is( container, MSSharedStyleContainer ) || this.is( container, MSSharedTextStyleContainer ) ){ 76 | items = container.objectsSortedByName(); 77 | } 78 | else if( container.children ){ 79 | items = container.children(); 80 | } 81 | else{ 82 | items = container; 83 | } 84 | 85 | var queryResult = items.filteredArrayUsingPredicate(predicate); 86 | 87 | if(returnArray) return queryResult; 88 | 89 | if (queryResult.count() == 1){ 90 | return queryResult[0]; 91 | } else if (queryResult.count() > 0){ 92 | return queryResult; 93 | } else { 94 | return false; 95 | } 96 | }, 97 | clearAllMarks: function(){ 98 | var layers = this.page.children().objectEnumerator(); 99 | while(layer = layers.nextObject()) { 100 | if(this.is(layer, MSLayerGroup) && this.regexNames.exec(layer.name())){ 101 | this.removeLayer(layer) 102 | } 103 | } 104 | }, 105 | toggleHidden: function(){ 106 | var isHidden = (this.configs.isHidden)? false : !Boolean(this.configs.isHidden); 107 | this.configs = this.setConfigs({isHidden: isHidden}); 108 | 109 | var layers = this.page.children().objectEnumerator(); 110 | 111 | while(layer = layers.nextObject()) { 112 | if(this.is(layer, MSLayerGroup) && this.regexNames.exec(layer.name())){ 113 | layer.setIsVisible(!isHidden); 114 | } 115 | } 116 | }, 117 | toggleLocked: function(){ 118 | var isLocked = (this.configs.isLocked)? false : !Boolean(this.configs.isLocked); 119 | this.configs = this.setConfigs({isLocked: isLocked}); 120 | 121 | var layers = this.page.children().objectEnumerator(); 122 | 123 | while(layer = layers.nextObject()) { 124 | if(this.is(layer, MSLayerGroup) && this.regexNames.exec(layer.name())){ 125 | layer.setIsLocked(isLocked); 126 | } 127 | } 128 | }, 129 | }); 130 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/src/js/utils/loadframework.js: -------------------------------------------------------------------------------- 1 | SS.extend({ 2 | initFramework: function (context, frameworkName) { 3 | var scriptPath = context.scriptPath; 4 | var pluginRoot = [scriptPath stringByDeletingLastPathComponent]; 5 | 6 | // pluginRoot = "/Users/gsid/Library/Developer/Xcode/DerivedData/SyncToSlides-atkpidlwzafjlvhhxhpshvcdnlnx/Build/Products/Debug/"; 7 | 8 | var mocha = [Mocha sharedRuntime]; 9 | if (NSClassFromString(frameworkName) == null) { 10 | if (![mocha loadFrameworkWithName:frameworkName inDirectory:pluginRoot]) { 11 | log('An error ocurred while loading the SketchSlides Framework.'); 12 | return; 13 | } 14 | } 15 | return [[ServiceManager alloc] init]; 16 | } 17 | }); 18 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/src/js/utils/panel.js: -------------------------------------------------------------------------------- 1 | // Panel.js 2 | SS.extend({ 3 | createCocoaObject: function (methods, superclass) { 4 | var uniqueClassName = "SS.sketch_" + NSUUID.UUID().UUIDString(); 5 | var classDesc = MOClassDescription.allocateDescriptionForClassWithName_superclass_(uniqueClassName, superclass || NSObject); 6 | classDesc.registerClass(); 7 | for (var selectorString in methods) { 8 | var selector = NSSelectorFromString(selectorString); 9 | [classDesc addInstanceMethodWithSelector:selector function:(methods[selectorString])]; 10 | } 11 | return NSClassFromString(uniqueClassName).new(); 12 | }, 13 | 14 | addFirstMouseAcceptor: function (webView, contentView) { 15 | var button = this.createCocoaObject({ 16 | 'mouseDown:': function (evt) { 17 | // Remove this view. Subsequent events such the mouseUp event that will 18 | // probably immediately follow mouseDown or any other mouse events will 19 | // be handled as if this view is not here because it will not be here! 20 | this.removeFromSuperview(); 21 | 22 | // Now send the same mouseDown event again as if the user had just 23 | // clicked. With the button gone, this will be handled by the WebView. 24 | NSApplication.sharedApplication().sendEvent(evt); 25 | }, 26 | }, NSButton); 27 | 28 | button.setIdentifier('firstMouseAcceptor'); 29 | button.setTransparent(true); 30 | button.setTranslatesAutoresizingMaskIntoConstraints(false); 31 | 32 | contentView.addSubview(button); 33 | 34 | var views = { 35 | button: button, 36 | webView: webView 37 | }; 38 | 39 | // Match width of WebView. 40 | contentView.addConstraints([NSLayoutConstraint 41 | constraintsWithVisualFormat:'H:[button(==webView)]' 42 | options:NSLayoutFormatDirectionLeadingToTrailing 43 | metrics:null 44 | views:views]); 45 | 46 | // Match height of WebView. 47 | contentView.addConstraints([NSLayoutConstraint 48 | constraintsWithVisualFormat:'V:[button(==webView)]' 49 | options:NSLayoutFormatDirectionLeadingToTrailing 50 | metrics:null 51 | views:views]); 52 | 53 | // Match top of WebView. 54 | contentView.addConstraints([[NSLayoutConstraint 55 | constraintWithItem:button attribute:NSLayoutAttributeTop 56 | relatedBy:NSLayoutRelationEqual toItem:webView 57 | attribute:NSLayoutAttributeTop multiplier:1 constant:0]]); 58 | }, 59 | 60 | SSPanel: function (options) { 61 | var self = this, 62 | threadDictionary, 63 | options = this.extend(options, { 64 | url: this.pluginSketch + "/panel/index.html", 65 | width: 240, 66 | height: 316, 67 | floatWindow: false, 68 | hiddenClose: false, 69 | data: {}, 70 | callback: function (data) { return data; } 71 | }), 72 | result = false; 73 | options.url = encodeURI("file://" + options.url); 74 | 75 | var frame = NSMakeRect(0, 0, options.width, (options.height + 32)), 76 | titleBgColor = NSColor.colorWithRed_green_blue_alpha(244 / 255, 180 / 255, 0 / 255, 1), 77 | contentBgColor = NSColor.colorWithRed_green_blue_alpha(1, 1, 1, 1); 78 | 79 | if (options.identifier) { 80 | threadDictionary = NSThread.mainThread().threadDictionary(); 81 | } 82 | 83 | if (options.identifier && threadDictionary[options.identifier]) { 84 | return false; 85 | } 86 | 87 | var Panel = NSPanel.alloc().init(); 88 | 89 | // var Panel = NSPanel.alloc().initWithContentRect_styleMask_backing_defer(frame, 31, 2, 'YES'); 90 | Panel.setTitleVisibility(NSWindowTitleHidden); 91 | Panel.setTitlebarAppearsTransparent(true); 92 | Panel.standardWindowButton(NSWindowCloseButton).setHidden(options.hiddenClose); 93 | Panel.standardWindowButton(NSWindowMiniaturizeButton).setHidden(true); 94 | Panel.standardWindowButton(NSWindowZoomButton).setHidden(true); 95 | Panel.setFrame_display(frame, true); 96 | Panel.setBackgroundColor(contentBgColor); 97 | Panel.setWorksWhenModal(true); 98 | 99 | if (options.floatWindow) { 100 | Panel.becomeKeyWindow(); 101 | Panel.setLevel(NSFloatingWindowLevel); 102 | threadDictionary[options.identifier] = Panel; 103 | // Long-running script 104 | COScript.currentCOScript().setShouldKeepAround_(true); 105 | } 106 | 107 | var contentView = Panel.contentView(), 108 | webView = WebView.alloc().initWithFrame(NSMakeRect(0, 0, options.width, options.height)); 109 | 110 | var windowObject = webView.windowScriptObject(); 111 | 112 | contentView.setWantsLayer(true); 113 | contentView.layer().setFrame(contentView.frame()); 114 | // contentView.layer().setCornerRadius(6); 115 | // contentView.layer().setMasksToBounds(true); 116 | 117 | webView.setBackgroundColor(contentBgColor); 118 | webView.setMainFrameURL_(options.url); 119 | contentView.addSubview(webView); 120 | 121 | var delegate = new MochaJSDelegate({ 122 | "webView:didFinishLoadForFrame:": (function (webView, webFrame) { 123 | DOMReady = [ 124 | "$(", 125 | "function(){", 126 | "init(" + JSON.stringify(options.data) + ")", 127 | "}", 128 | ");" 129 | ].join(""); 130 | 131 | try { 132 | if (self.configs.presentation) { 133 | windowObject.evaluateWebScript("currentPresentation = {};"); 134 | windowObject.evaluateWebScript("currentPresentation.name = " + JSON.stringify(self.configs.presentation.name) + ";"); 135 | windowObject.evaluateWebScript("currentPresentation.id =" + JSON.stringify(self.configs.presentation.id) + ";"); 136 | windowObject.evaluateWebScript("window.lastUpdated =" + JSON.stringify(self.configs.lastUpdated) + ";"); 137 | } 138 | 139 | windowObject.evaluateWebScript("window.preferences =" + JSON.stringify(self.configs.preferences) + ";"); 140 | windowObject.evaluateWebScript("window.version =" + JSON.stringify(self.version) + ";"); 141 | } catch(e) { 142 | log(e); 143 | } 144 | 145 | windowObject.evaluateWebScript('_onLoad();'); 146 | windowObject.evaluateWebScript(DOMReady); 147 | }), 148 | "webView:didChangeLocationWithinPageForFrame:": (function (webView, webFrame) { 149 | var request = NSURL.URLWithString(webView.mainFrameURL()).fragment(); 150 | 151 | if (request == "submit") { 152 | var data = JSON.parse(decodeURI(windowObject.valueForKey("SSData"))); 153 | options.callback(data); 154 | result = true; 155 | if (!options.floatWindow) { 156 | windowObject.evaluateWebScript("window.location.hash = 'close';"); 157 | } 158 | } 159 | 160 | if (request == 'fetchUser') { 161 | SS.frameWork.userInfo(webView); 162 | } 163 | 164 | if (request == 'lastUpdated') { 165 | var lastUpdated = JSON.parse(decodeURI(windowObject.valueForKey("lastUpdated"))); 166 | self.configs = self.setConfigs({ lastUpdated: lastUpdated }); 167 | } 168 | 169 | if (request == 'refreshArtboards') { 170 | newData = SS.getAllArtboardsData(); 171 | self.allData = newData; 172 | var d = JSON.stringify(newData); 173 | windowObject.evaluateWebScript("init(" + d + ")"); 174 | } 175 | 176 | if (request == 'fetchPresentation') { 177 | var data = JSON.parse(decodeURI(windowObject.valueForKey("SSData"))); 178 | SS.frameWork.fetchPresentation_webView_shouldUpload(data.presentationId, webView, false); 179 | } 180 | 181 | if (request == 'signIn') { 182 | SS.frameWork.signIn(webView); 183 | } 184 | 185 | if (request == 'signOut') { 186 | SS.frameWork.signOut(webView); 187 | } 188 | 189 | if (request == 'LogOutSuccess') { 190 | windowObject.evaluateWebScript("window.location.href = 'login.html';"); 191 | } 192 | 193 | if (request == 'openLink') { 194 | var data = JSON.parse(decodeURI(windowObject.valueForKey("Link"))); 195 | SS.openURL(data); 196 | } 197 | 198 | if (request == 'LogInSuccess') { 199 | SS['frameWork'] = SS.initFramework(SS.context, 'SyncToSlides'); 200 | windowObject.evaluateWebScript("window.location.href = 'index.html';"); 201 | } 202 | 203 | if (request == 'presFetchSuccess') { 204 | var data = JSON.parse(decodeURI(windowObject.valueForKey("SSData"))); 205 | self.configs = self.setConfigs({ presentation: data }); 206 | windowObject.evaluateWebScript("_presFetchSuccess()"); 207 | } 208 | 209 | if (request == 'presFetchError') { 210 | windowObject.evaluateWebScript("_presFetchError()"); 211 | } 212 | 213 | if (request == 'updatePreferences') { 214 | var preferences = JSON.parse(decodeURI(windowObject.valueForKey("preferences"))); 215 | self.configs = self.setConfigs({ preferences: preferences }); 216 | } 217 | 218 | if (request == 'startSync') { 219 | var data = JSON.parse(decodeURI(windowObject.valueForKey("SSData"))); 220 | var files = SS.getAllFilesForUpload(data.selectedArtboards); 221 | if (files.length > 0 ) { 222 | SS.frameWork.syncToSlides_allFiles_webView(data.presentationId, files, webView); 223 | } else { 224 | windowObject.evaluateWebScript('_artBoardsMissing();'); 225 | } 226 | } 227 | 228 | if (request == 'onWindowDidBlur') { 229 | SS.addFirstMouseAcceptor(webView, contentView); 230 | } 231 | 232 | if (request == "close") { 233 | if (!options.floatWindow) { 234 | Panel.orderOut(nil); 235 | NSApp.stopModal(); 236 | } 237 | else { 238 | Panel.close(); 239 | } 240 | } 241 | 242 | if (request == "focus") { 243 | var point = Panel.currentEvent().locationInWindow(), 244 | y = NSHeight(Panel.frame()) - point.y - 32; 245 | windowObject.evaluateWebScript("lookupItemInput(" + point.x + ", " + y + ")"); 246 | } 247 | windowObject.evaluateWebScript("window.location.hash = '';"); 248 | }) 249 | }); 250 | 251 | webView.setFrameLoadDelegate_(delegate.getClassInstance()); 252 | // NSButton already returns YES for -acceptsFirstMouse: so all we need to do 253 | // is handle the mouseDown event. 254 | if (options.floatWindow) { 255 | Panel.center(); 256 | Panel.makeKeyAndOrderFront(nil); 257 | } 258 | 259 | var closeButton = Panel.standardWindowButton(NSWindowCloseButton); 260 | closeButton.setCOSJSTargetFunction(function (sender) { 261 | var request = NSURL.URLWithString(webView.mainFrameURL()).fragment(); 262 | 263 | if (options.floatWindow && request == "submit") { 264 | data = JSON.parse(decodeURI(windowObject.valueForKey("MDData"))); 265 | options.callback(data); 266 | } 267 | 268 | if (options.identifier) { 269 | threadDictionary.removeObjectForKey(options.identifier); 270 | } 271 | 272 | self.wantsStop = true; 273 | if (options.floatWindow) { 274 | Panel.close(); 275 | } 276 | else { 277 | Panel.orderOut(nil); 278 | NSApp.stopModal(); 279 | } 280 | 281 | }); 282 | closeButton.setAction("callAction:"); 283 | 284 | var titlebarView = contentView.superview().titlebarViewController().view(), 285 | titlebarContainerView = titlebarView.superview(); 286 | closeButton.setFrameOrigin(NSMakePoint(8, 8)); 287 | titlebarContainerView.setFrame(NSMakeRect(0, options.height, options.width, 32)); 288 | titlebarView.setFrameSize(NSMakeSize(options.width, 32)); 289 | titlebarView.setTransparent(true); 290 | titlebarView.setBackgroundColor(titleBgColor); 291 | titlebarContainerView.superview().setBackgroundColor(titleBgColor); 292 | 293 | if (!options.floatWindow) { 294 | NSApp.runModalForWindow(Panel); 295 | } 296 | 297 | return result; 298 | } 299 | 300 | }); 301 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/src/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "src", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "gulpfile.js", 6 | "dependencies": { 7 | "gulp": "^3.9.1" 8 | }, 9 | "devDependencies": { 10 | "gulp-concat": "^2.6.1", 11 | "gulp-watch": "^4.3.11" 12 | }, 13 | "scripts": { 14 | "test": "echo \"Error: no test specified\" && exit 1" 15 | }, 16 | "author": "", 17 | "license": "ISC" 18 | } 19 | -------------------------------------------------------------------------------- /sync-to-slides.sketchplugin/Contents/Sketch/sync.sketchscript: -------------------------------------------------------------------------------- 1 | @import "scripts/common.js" 2 | @import "scripts/MochaJSDelegate.js" 3 | 4 | function commandSyncPanel(context) { 5 | SS.init(context, "sync-panel"); 6 | } 7 | --------------------------------------------------------------------------------
144 | Upload artboards to Google Slides with ease. For a hassel free presentation making. 145 |