@widgetic/editor 3.11.3 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. package/README.md +245 -0
  2. package/dist/assets/fonts.json +331 -0
  3. package/dist/assets/icons/ic-browser/audio.svg +7 -0
  4. package/dist/assets/icons/ic-browser/document.svg +11 -0
  5. package/dist/assets/icons/ic-browser/error.svg +5 -0
  6. package/dist/assets/icons/ic-browser/folder.svg +28 -0
  7. package/dist/assets/icons/ic-browser/player-pause.svg +1 -0
  8. package/dist/assets/icons/ic-browser/player-play.svg +1 -0
  9. package/dist/assets/icons/ic-browser/trash.svg +1 -0
  10. package/dist/assets/icons/ic-fixed-position/background-deselected.svg +3 -0
  11. package/dist/assets/icons/ic-fixed-position/background-selected.svg +3 -0
  12. package/dist/assets/icons/ic-fixed-position/bottom-left-background-deselected.svg +3 -0
  13. package/dist/assets/icons/ic-fixed-position/bottom-left-background-selected.svg +3 -0
  14. package/dist/assets/icons/ic-fixed-position/bottom-left-icon.svg +4 -0
  15. package/dist/assets/icons/ic-fixed-position/bottom-right-background-deselected.svg +3 -0
  16. package/dist/assets/icons/ic-fixed-position/bottom-right-background-selected.svg +3 -0
  17. package/dist/assets/icons/ic-fixed-position/bottom-right-icon.svg +4 -0
  18. package/dist/assets/icons/ic-fixed-position/center-bottom-icon.svg +5 -0
  19. package/dist/assets/icons/ic-fixed-position/center-center-icon.svg +3 -0
  20. package/dist/assets/icons/ic-fixed-position/center-left-icon.svg +5 -0
  21. package/dist/assets/icons/ic-fixed-position/center-right-icon.svg +5 -0
  22. package/dist/assets/icons/ic-fixed-position/center-top-icon.svg +5 -0
  23. package/dist/assets/icons/ic-fixed-position/top-left-background-deselected.svg +3 -0
  24. package/dist/assets/icons/ic-fixed-position/top-left-background-selected.svg +3 -0
  25. package/dist/assets/icons/ic-fixed-position/top-left-icon.svg +4 -0
  26. package/dist/assets/icons/ic-fixed-position/top-right-background-deselected.svg +3 -0
  27. package/dist/assets/icons/ic-fixed-position/top-right-background-selected.svg +3 -0
  28. package/dist/assets/icons/ic-fixed-position/top-right-icon.svg +4 -0
  29. package/dist/assets/icons/trash.svg +1 -0
  30. package/dist/components/MockWidget.svelte +108 -0
  31. package/dist/components/MockWidget.svelte.d.ts +22 -0
  32. package/dist/components/WidgetPreview.svelte +852 -0
  33. package/dist/components/WidgetPreview.svelte.d.ts +100 -0
  34. package/dist/components/color-select/ColorSelect.svelte +258 -0
  35. package/dist/components/color-select/ColorSelect.svelte.d.ts +42 -0
  36. package/dist/components/color-select/color.d.ts +25 -0
  37. package/dist/components/color-select/color.js +21 -0
  38. package/dist/components/color-select/constants.d.ts +5 -0
  39. package/dist/components/color-select/constants.js +5 -0
  40. package/dist/components/color-select/render.d.ts +5 -0
  41. package/dist/components/color-select/render.js +77 -0
  42. package/dist/components/color-select/shaders.d.ts +3 -0
  43. package/dist/components/color-select/shaders.js +8 -0
  44. package/dist/components/editors/EmbedEditor.svelte +700 -0
  45. package/dist/components/editors/EmbedEditor.svelte.d.ts +50 -0
  46. package/dist/components/editors/PropsEditor.svelte +3952 -0
  47. package/dist/components/editors/PropsEditor.svelte.d.ts +62 -0
  48. package/dist/components/editors/props-editor.css +73 -0
  49. package/dist/components/ic/AngleInputController.svelte +276 -0
  50. package/dist/components/ic/AngleInputController.svelte.d.ts +26 -0
  51. package/dist/components/ic/BrowserInputController.svelte +724 -0
  52. package/dist/components/ic/BrowserInputController.svelte.d.ts +39 -0
  53. package/dist/components/ic/CheckboxInputController.svelte +203 -0
  54. package/dist/components/ic/CheckboxInputController.svelte.d.ts +41 -0
  55. package/dist/components/ic/ColorPickerInputController.svelte +1584 -0
  56. package/dist/components/ic/ColorPickerInputController.svelte.d.ts +50 -0
  57. package/dist/components/ic/DateFieldInputController.svelte +453 -0
  58. package/dist/components/ic/DateFieldInputController.svelte.d.ts +35 -0
  59. package/dist/components/ic/DatePickerInputController.svelte +364 -0
  60. package/dist/components/ic/DatePickerInputController.svelte.d.ts +28 -0
  61. package/dist/components/ic/DropdownInputController.svelte +226 -0
  62. package/dist/components/ic/DropdownInputController.svelte.d.ts +43 -0
  63. package/dist/components/ic/FixedPositionInputController.svelte +353 -0
  64. package/dist/components/ic/FixedPositionInputController.svelte.d.ts +23 -0
  65. package/dist/components/ic/FontInputController.svelte +2062 -0
  66. package/dist/components/ic/FontInputController.svelte.d.ts +47 -0
  67. package/dist/components/ic/InputControllerHeader.svelte +147 -0
  68. package/dist/components/ic/InputControllerHeader.svelte.d.ts +23 -0
  69. package/dist/components/ic/NumberControls.svelte +299 -0
  70. package/dist/components/ic/NumberControls.svelte.d.ts +30 -0
  71. package/dist/components/ic/NumberInputController.svelte +397 -0
  72. package/dist/components/ic/NumberInputController.svelte.d.ts +30 -0
  73. package/dist/components/ic/PositionInputController.svelte +252 -0
  74. package/dist/components/ic/PositionInputController.svelte.d.ts +37 -0
  75. package/dist/components/ic/RadioGroupInputController.svelte +162 -0
  76. package/dist/components/ic/RadioGroupInputController.svelte.d.ts +38 -0
  77. package/dist/components/ic/RangeCalendarInputController.svelte +262 -0
  78. package/dist/components/ic/RangeCalendarInputController.svelte.d.ts +32 -0
  79. package/dist/components/ic/RoundedCornersInputController.svelte +469 -0
  80. package/dist/components/ic/RoundedCornersInputController.svelte.d.ts +37 -0
  81. package/dist/components/ic/SliderInputController.svelte +411 -0
  82. package/dist/components/ic/SliderInputController.svelte.d.ts +46 -0
  83. package/dist/components/ic/SliderRangeInputController.svelte +155 -0
  84. package/dist/components/ic/SliderRangeInputController.svelte.d.ts +33 -0
  85. package/dist/components/ic/SwitchInputController.svelte +107 -0
  86. package/dist/components/ic/SwitchInputController.svelte.d.ts +24 -0
  87. package/dist/components/ic/TagsInputController.svelte +125 -0
  88. package/dist/components/ic/TagsInputController.svelte.d.ts +27 -0
  89. package/dist/components/ic/TextAreaInputController.svelte +1804 -0
  90. package/dist/components/ic/TextAreaInputController.svelte.d.ts +13 -0
  91. package/dist/components/ic/TextAreaPreviewInputController.svelte +476 -0
  92. package/dist/components/ic/TextAreaPreviewInputController.svelte.d.ts +28 -0
  93. package/dist/components/ic/TextInputController.svelte +70 -0
  94. package/dist/components/ic/TextInputController.svelte.d.ts +30 -0
  95. package/dist/components/ic/TimeInputController.svelte +434 -0
  96. package/dist/components/ic/TimeInputController.svelte.d.ts +25 -0
  97. package/dist/components/ic/VectorInputController.svelte +1826 -0
  98. package/dist/components/ic/VectorInputController.svelte.d.ts +47 -0
  99. package/dist/components/ic/index.d.ts +39 -0
  100. package/dist/components/ic/index.js +24 -0
  101. package/dist/components/ic/shared/CategoryTabs.svelte +40 -0
  102. package/dist/components/ic/shared/CategoryTabs.svelte.d.ts +25 -0
  103. package/dist/components/ic/shared/ItemGrid.svelte +181 -0
  104. package/dist/components/ic/shared/ItemGrid.svelte.d.ts +35 -0
  105. package/dist/components/ic/shared/RecentItemsSection.svelte +260 -0
  106. package/dist/components/ic/shared/RecentItemsSection.svelte.d.ts +35 -0
  107. package/dist/components/ic/shared/index.d.ts +8 -0
  108. package/dist/components/ic/shared/index.js +9 -0
  109. package/dist/components/icons/addnew.svelte +21 -0
  110. package/dist/components/icons/addnew.svelte.d.ts +20 -0
  111. package/dist/components/icons/drag.svelte +29 -0
  112. package/dist/components/icons/drag.svelte.d.ts +20 -0
  113. package/dist/components/icons/drag.svg +1 -0
  114. package/dist/components/icons/locked.svelte +4 -0
  115. package/dist/components/icons/locked.svelte.d.ts +26 -0
  116. package/dist/components/icons/locked.svg +4 -0
  117. package/dist/components/icons/ok.svelte +20 -0
  118. package/dist/components/icons/ok.svelte.d.ts +20 -0
  119. package/dist/components/icons/ok.svg +11 -0
  120. package/dist/components/icons/unlocked.svelte +4 -0
  121. package/dist/components/icons/unlocked.svelte.d.ts +26 -0
  122. package/dist/components/icons/unlocked.svg +4 -0
  123. package/dist/components/icons/x.svelte +14 -0
  124. package/dist/components/icons/x.svelte.d.ts +20 -0
  125. package/dist/components/icons/x.svg +5 -0
  126. package/dist/components/ui/arrows/OpacitySliderArrows.svelte +43 -0
  127. package/dist/components/ui/arrows/OpacitySliderArrows.svelte.d.ts +23 -0
  128. package/dist/components/ui/checkerboard-background/CheckerboardBackground.svelte +15 -0
  129. package/dist/components/ui/checkerboard-background/CheckerboardBackground.svelte.d.ts +20 -0
  130. package/dist/config.d.ts +5 -0
  131. package/dist/config.js +19 -0
  132. package/dist/index.d.ts +4 -0
  133. package/dist/index.js +8 -0
  134. package/dist/stores/userSession.d.ts +7 -0
  135. package/dist/stores/userSession.js +28 -0
  136. package/dist/utils/FontManager.d.ts +276 -0
  137. package/dist/utils/FontManager.js +1283 -0
  138. package/dist/utils/MediaManager.d.ts +35 -0
  139. package/dist/utils/MediaManager.js +59 -0
  140. package/dist/utils/VectorManager.d.ts +190 -0
  141. package/dist/utils/VectorManager.js +754 -0
  142. package/dist/utils/colorAutocomplete.d.ts +10 -0
  143. package/dist/utils/colorAutocomplete.js +28 -0
  144. package/dist/utils/colorNames.d.ts +3 -0
  145. package/dist/utils/colorNames.js +152 -0
  146. package/dist/utils/colorTransparency.d.ts +52 -0
  147. package/dist/utils/colorTransparency.js +114 -0
  148. package/dist/utils/fontUtils.d.ts +34 -0
  149. package/dist/utils/fontUtils.js +132 -0
  150. package/dist/utils/passiveEvents.js +20 -0
  151. package/dist/utils/recentColors.d.ts +10 -0
  152. package/dist/utils/recentColors.js +63 -0
  153. package/dist/utils/skipFonts.d.ts +3 -0
  154. package/dist/utils/skipFonts.js +49 -0
  155. package/dist/utils/vectorUtils.d.ts +34 -0
  156. package/dist/utils/vectorUtils.js +71 -0
  157. package/dist/utils.d.ts +11 -0
  158. package/dist/utils.js +38 -0
  159. package/package.json +134 -74
  160. package/.babelrc +0 -10
  161. package/.bowerrc +0 -4
  162. package/.nvmrc +0 -1
  163. package/Gruntfile.coffee +0 -69
  164. package/bower.json +0 -28
  165. package/css/browser/entries/activateable.styl +0 -29
  166. package/css/browser/entries/audio.styl +0 -39
  167. package/css/browser/entries/folder.styl +0 -79
  168. package/css/browser/entries/image.styl +0 -26
  169. package/css/browser/entries/index.styl +0 -66
  170. package/css/browser/entries/rss.styl +0 -11
  171. package/css/browser/entries/video.styl +0 -11
  172. package/css/browser/index.styl +0 -86
  173. package/css/browser/intent/index.styl +0 -61
  174. package/css/browser/nav/index.styl +0 -73
  175. package/css/browser/social-browser.styl +0 -23
  176. package/css/controls/clock.styl +0 -110
  177. package/css/controls/config.styl +0 -6
  178. package/css/controls/control-audio-details.styl +0 -63
  179. package/css/controls/control-audio.styl +0 -28
  180. package/css/controls/control-browser.styl +0 -48
  181. package/css/controls/control-color.styl +0 -423
  182. package/css/controls/control-date_time.styl +0 -191
  183. package/css/controls/control-dropdown.styl +0 -79
  184. package/css/controls/control-font.styl +0 -147
  185. package/css/controls/control-image-details.styl +0 -35
  186. package/css/controls/control-image.styl +0 -43
  187. package/css/controls/control-order-picker.styl +0 -29
  188. package/css/controls/control-position.styl +0 -390
  189. package/css/controls/control-range.styl +0 -68
  190. package/css/controls/control-scale.styl +0 -30
  191. package/css/controls/control-slider.styl +0 -38
  192. package/css/controls/control-spinner.styl +0 -39
  193. package/css/controls/control-textarea.styl +0 -52
  194. package/css/controls/control-toggle.styl +0 -34
  195. package/css/controls/control-url.styl +0 -32
  196. package/css/controls/control-video-details.styl +0 -85
  197. package/css/controls/control-video.styl +0 -43
  198. package/css/controls/general.styl +0 -98
  199. package/css/controls/index.styl +0 -25
  200. package/css/editor/colors.styl +0 -7
  201. package/css/editor/content/directinput.styl +0 -47
  202. package/css/editor/content/index.styl +0 -111
  203. package/css/editor/content/message.styl +0 -53
  204. package/css/editor/content/tabs.styl +0 -75
  205. package/css/editor/copied-from-old-style.styl +0 -197
  206. package/css/editor/details/bulk-editor.styl +0 -104
  207. package/css/editor/details/index.styl +0 -21
  208. package/css/editor/details/item.styl +0 -153
  209. package/css/editor/embed.styl +0 -106
  210. package/css/editor/footer.styl +0 -180
  211. package/css/editor/full-editor.styl +0 -16
  212. package/css/editor/index.styl +0 -124
  213. package/css/editor/login-popup.styl +0 -13
  214. package/css/editor/preview.styl +0 -257
  215. package/css/editor/skin/editor/index.styl +0 -54
  216. package/css/editor/skin/editor/tabs.styl +0 -111
  217. package/css/editor/skin/index.styl +0 -138
  218. package/css/editor/skin/popup.styl +0 -152
  219. package/css/editor/skin/presets/dropdown.styl +0 -61
  220. package/css/editor/skin/presets/index.styl +0 -86
  221. package/css/editor/skin/presets/list.styl +0 -244
  222. package/css/editor/tooltips.styl +0 -85
  223. package/css/fonts.styl +0 -47
  224. package/css/icons/BlogvioEditor.dev.svg +0 -112
  225. package/css/icons.styl +0 -16
  226. package/css/img/arrow-right-rounded-v-small.png +0 -0
  227. package/css/img/browser-folder-separator.png +0 -0
  228. package/css/img/calendar-input-icons.png +0 -0
  229. package/css/img/check.png +0 -0
  230. package/css/img/close.png +0 -0
  231. package/css/img/composition/edit-icon.png +0 -0
  232. package/css/img/content/audio-icon.png +0 -0
  233. package/css/img/content/folder-icon.png +0 -0
  234. package/css/img/content/messages/error-background.png +0 -0
  235. package/css/img/content/messages/error-icon.png +0 -0
  236. package/css/img/content/messages/notification-background.png +0 -0
  237. package/css/img/content/messages/notification-icon.png +0 -0
  238. package/css/img/content/no-files-audio.png +0 -0
  239. package/css/img/content/no-files-image.png +0 -0
  240. package/css/img/content/no-files-video.png +0 -0
  241. package/css/img/content/no-files.png +0 -0
  242. package/css/img/content/rss-icon.png +0 -0
  243. package/css/img/content/selected.png +0 -0
  244. package/css/img/content/video-icon.png +0 -0
  245. package/css/img/content/with-control-text.png +0 -0
  246. package/css/img/control-dropdown-arrow.png +0 -0
  247. package/css/img/control-image-valid.png +0 -0
  248. package/css/img/control-position-icon.png +0 -0
  249. package/css/img/control-scale-lock-icon.png +0 -0
  250. package/css/img/control-slider-arrows-hover.png +0 -0
  251. package/css/img/control-slider-arrows.png +0 -0
  252. package/css/img/control-spinner-buttons-hover.png +0 -0
  253. package/css/img/control-spinner-buttons.png +0 -0
  254. package/css/img/control-textarea-bold-active.png +0 -0
  255. package/css/img/control-textarea-bold.png +0 -0
  256. package/css/img/control-textarea-italic-active.png +0 -0
  257. package/css/img/control-textarea-italic.png +0 -0
  258. package/css/img/control-textarea-underline-active.png +0 -0
  259. package/css/img/control-textarea-underline.png +0 -0
  260. package/css/img/custom-checkbox-sprite.png +0 -0
  261. package/css/img/details/item-collapse-icon.png +0 -0
  262. package/css/img/details/item-expand-icon.png +0 -0
  263. package/css/img/details/item-sort-icon.png +0 -0
  264. package/css/img/done-arrow.png +0 -0
  265. package/css/img/fb-logo-icon-w.png +0 -0
  266. package/css/img/grid-icons.png +0 -0
  267. package/css/img/icon-reference.png +0 -0
  268. package/css/img/indicator.png +0 -0
  269. package/css/img/loader.gif +0 -0
  270. package/css/img/loaders/audio-white.png +0 -0
  271. package/css/img/loaders/audio.png +0 -0
  272. package/css/img/loaders/photo-white.png +0 -0
  273. package/css/img/loaders/photo.png +0 -0
  274. package/css/img/loaders/util-white.png +0 -0
  275. package/css/img/loaders/util.png +0 -0
  276. package/css/img/loaders/video-white.png +0 -0
  277. package/css/img/loaders/video.png +0 -0
  278. package/css/img/maximize.png +0 -0
  279. package/css/img/minimize.png +0 -0
  280. package/css/img/next-btn.png +0 -0
  281. package/css/img/search-icon-sprite.png +0 -0
  282. package/css/img/services/blogvio.png +0 -0
  283. package/css/img/services/drive.png +0 -0
  284. package/css/img/services/dropbox-login.png +0 -0
  285. package/css/img/services/dropbox.png +0 -0
  286. package/css/img/services/facebook-login.png +0 -0
  287. package/css/img/services/facebook.png +0 -0
  288. package/css/img/services/flickr-login.png +0 -0
  289. package/css/img/services/flickr.png +0 -0
  290. package/css/img/services/instagram-login.png +0 -0
  291. package/css/img/services/instagram.png +0 -0
  292. package/css/img/services/text.png +0 -0
  293. package/css/img/services/uploads.png +0 -0
  294. package/css/img/services/uploads.svg +0 -689
  295. package/css/img/services/webaddress-bw.png +0 -0
  296. package/css/img/services/webaddress.png +0 -0
  297. package/css/img/services/webadress.png +0 -0
  298. package/css/img/services/websearch.png +0 -0
  299. package/css/img/services/wix.png +0 -0
  300. package/css/img/skin/item-active-indicator.png +0 -0
  301. package/css/img/skin/item-hover-icon.png +0 -0
  302. package/css/img/skin/overwrite.png +0 -0
  303. package/css/img/skin/popup-name-icon.png +0 -0
  304. package/css/img/skin/popup-save.png +0 -0
  305. package/css/img/skin/preset.png +0 -0
  306. package/css/img/skin/presets-arrow-purple.png +0 -0
  307. package/css/img/tw-icon-w.png +0 -0
  308. package/css/img/warning.png +0 -0
  309. package/css/img/white-rounded-check.png +0 -0
  310. package/css/index.styl +0 -9
  311. package/css/mixins.styl +0 -62
  312. package/css/scrollable.styl +0 -101
  313. package/karma.conf.js +0 -73
  314. package/lib/control.js +0 -1
  315. package/lib/controls.js +0 -1
  316. package/lib/core.editor.js +0 -4
  317. package/lib/core.js +0 -1
  318. package/lib/core.vendor.js +0 -3
  319. package/lib/dev/control.js +0 -845
  320. package/lib/dev/controls.js +0 -7774
  321. package/lib/dev/core.editor.js +0 -6439
  322. package/lib/dev/core.js +0 -1486
  323. package/lib/dev/core.vendor.js +0 -10708
  324. package/lib/dev/editor.css +0 -166
  325. package/lib/dev/editor.js +0 -29710
  326. package/lib/dev/editor.vendor.js +0 -15119
  327. package/lib/dev/jquery.nanoscroller.js.map +0 -10
  328. package/lib/editor.css +0 -167
  329. package/lib/editor.js +0 -49
  330. package/lib/editor.vendor.js +0 -11
  331. package/src/api/index.coffee +0 -23
  332. package/src/api/mixin.coffee +0 -89
  333. package/src/browser/controller/entry/audio.coffee +0 -38
  334. package/src/browser/controller/entry/button.coffee +0 -16
  335. package/src/browser/controller/entry/file.coffee +0 -35
  336. package/src/browser/controller/entry/folder.coffee +0 -14
  337. package/src/browser/controller/entry/image.coffee +0 -24
  338. package/src/browser/controller/entry/index.coffee +0 -18
  339. package/src/browser/controller/entry/rss.coffee +0 -5
  340. package/src/browser/controller/entry/video.coffee +0 -4
  341. package/src/browser/controller/index.coffee +0 -289
  342. package/src/browser/controller/instagram.coffee +0 -129
  343. package/src/browser/controller/navbar.coffee +0 -48
  344. package/src/browser/controller/social.coffee +0 -213
  345. package/src/browser/model/entry.coffee +0 -18
  346. package/src/browser/model/index.coffee +0 -34
  347. package/src/core/controller/font-loader.coffee +0 -65
  348. package/src/core/controller/lazyload.coffee +0 -14
  349. package/src/core/controller/overlay.coffee +0 -146
  350. package/src/core/controller/popup.coffee +0 -36
  351. package/src/core/controller/scrollable.coffee +0 -68
  352. package/src/core/controls/audio.coffee +0 -56
  353. package/src/core/controls/browser.coffee +0 -271
  354. package/src/core/controls/color.coffee +0 -121
  355. package/src/core/controls/date-time/calendar/index.coffee +0 -99
  356. package/src/core/controls/date-time/calendar/months.coffee +0 -52
  357. package/src/core/controls/date-time/calendar/years.coffee +0 -58
  358. package/src/core/controls/date-time/clock.coffee +0 -62
  359. package/src/core/controls/date-time/helper.coffee +0 -31
  360. package/src/core/controls/date-time/index.coffee +0 -62
  361. package/src/core/controls/date-time/popup.coffee +0 -56
  362. package/src/core/controls/details/audio.coffee +0 -33
  363. package/src/core/controls/details/image.coffee +0 -19
  364. package/src/core/controls/details/video.coffee +0 -14
  365. package/src/core/controls/dropdown.coffee +0 -100
  366. package/src/core/controls/font/font-item.coffee +0 -22
  367. package/src/core/controls/font/font-list.coffee +0 -108
  368. package/src/core/controls/font/fonts-popup.coffee +0 -91
  369. package/src/core/controls/font/index.coffee +0 -66
  370. package/src/core/controls/image.coffee +0 -37
  371. package/src/core/controls/index.coffee +0 -88
  372. package/src/core/controls/orderPicker.coffee +0 -93
  373. package/src/core/controls/position/grid-panel.coffee +0 -75
  374. package/src/core/controls/position/index.coffee +0 -98
  375. package/src/core/controls/position/panel.coffee +0 -68
  376. package/src/core/controls/position/pixel-panel.coffee +0 -54
  377. package/src/core/controls/position/popup.coffee +0 -63
  378. package/src/core/controls/position/reference-panel.coffee +0 -26
  379. package/src/core/controls/range.coffee +0 -191
  380. package/src/core/controls/rss.coffee +0 -16
  381. package/src/core/controls/scale.coffee +0 -78
  382. package/src/core/controls/slider.coffee +0 -122
  383. package/src/core/controls/stepper.coffee +0 -97
  384. package/src/core/controls/text.coffee +0 -54
  385. package/src/core/controls/textarea.coffee +0 -78
  386. package/src/core/controls/toggle.coffee +0 -29
  387. package/src/core/controls/url.coffee +0 -88
  388. package/src/core/controls/video.coffee +0 -9
  389. package/src/core/embed/api.js +0 -178
  390. package/src/core/embed/controller.js +0 -331
  391. package/src/core/models/composition.coffee +0 -178
  392. package/src/core/models/content.coffee +0 -79
  393. package/src/core/models/skin.coffee +0 -91
  394. package/src/core/models/user.coffee +0 -6
  395. package/src/core/models/widget.coffee +0 -88
  396. package/src/core/router/index.coffee +0 -44
  397. package/src/core/services/container/index.js +0 -18
  398. package/src/core/services/container/instance.js +0 -3
  399. package/src/core/services/content.js +0 -80
  400. package/src/core/services/instagram.coffee +0 -47
  401. package/src/core/services/mixin/events.js +0 -17
  402. package/src/core/services/service.js +0 -1
  403. package/src/core/services/sounds.js +0 -81
  404. package/src/core/services/uploads.js +0 -299
  405. package/src/core/utils/popup.coffee +0 -67
  406. package/src/core/utils/should-show.coffee +0 -12
  407. package/src/core/views/audio-details.pug +0 -9
  408. package/src/core/views/audio.pug +0 -7
  409. package/src/core/views/browser.pug +0 -4
  410. package/src/core/views/color.pug +0 -8
  411. package/src/core/views/date-time/calendar.pug +0 -3
  412. package/src/core/views/date-time/clock.pug +0 -12
  413. package/src/core/views/date-time/grid.pug +0 -6
  414. package/src/core/views/date-time/input.pug +0 -4
  415. package/src/core/views/date-time/table.pug +0 -6
  416. package/src/core/views/dropdown.pug +0 -9
  417. package/src/core/views/font/font-item.pug +0 -3
  418. package/src/core/views/font/fonts-list.pug +0 -7
  419. package/src/core/views/font/fonts-popup.pug +0 -5
  420. package/src/core/views/font/index.pug +0 -7
  421. package/src/core/views/image-details.pug +0 -6
  422. package/src/core/views/image.pug +0 -5
  423. package/src/core/views/input-layout.pug +0 -15
  424. package/src/core/views/order-items.pug +0 -7
  425. package/src/core/views/order-picker.pug +0 -7
  426. package/src/core/views/pixelpanel.pug +0 -69
  427. package/src/core/views/position.pug +0 -10
  428. package/src/core/views/range.pug +0 -9
  429. package/src/core/views/scale.pug +0 -7
  430. package/src/core/views/slider.pug +0 -6
  431. package/src/core/views/stepper.pug +0 -6
  432. package/src/core/views/text.pug +0 -4
  433. package/src/core/views/textarea.pug +0 -8
  434. package/src/core/views/toggle.pug +0 -5
  435. package/src/core/views/video-details.pug +0 -7
  436. package/src/core/views/video.pug +0 -4
  437. package/src/core/widget/index.coffee +0 -66
  438. package/src/editor/content/browser/dropzone.html +0 -268
  439. package/src/editor/content/browser/file.html +0 -124
  440. package/src/editor/content/browser/scroll-pane.html +0 -32
  441. package/src/editor/content/browser/service.html +0 -53
  442. package/src/editor/content/browser/upload.coffee +0 -44
  443. package/src/editor/content/browser/upload.html +0 -439
  444. package/src/editor/content/index.coffee +0 -294
  445. package/src/editor/content/input/field.coffee +0 -45
  446. package/src/editor/content/input/index.coffee +0 -115
  447. package/src/editor/content/service/base/photoitem.coffee +0 -49
  448. package/src/editor/content/service/cache.coffee +0 -20
  449. package/src/editor/content/service/default.coffee +0 -59
  450. package/src/editor/content/service/dropbox.coffee +0 -71
  451. package/src/editor/content/service/facebook.coffee +0 -143
  452. package/src/editor/content/service/flickr.coffee +0 -85
  453. package/src/editor/content/service/google-drive-sdk.coffee +0 -18
  454. package/src/editor/content/service/google-drive.coffee +0 -144
  455. package/src/editor/content/service/instagram-social.coffee +0 -84
  456. package/src/editor/content/service/instagram.coffee +0 -168
  457. package/src/editor/content/service/share-popup.coffee +0 -15
  458. package/src/editor/content/service/soundcloud.coffee +0 -163
  459. package/src/editor/content/tab.coffee +0 -27
  460. package/src/editor/details/bulk-editor/attributes-panel.coffee +0 -11
  461. package/src/editor/details/bulk-editor/index.coffee +0 -86
  462. package/src/editor/details/index.coffee +0 -156
  463. package/src/editor/details/item/attributes.coffee +0 -45
  464. package/src/editor/details/item/index.coffee +0 -82
  465. package/src/editor/editor.coffee +0 -274
  466. package/src/editor/footer/breadcrumb.coffee +0 -17
  467. package/src/editor/footer/index.coffee +0 -36
  468. package/src/editor/index.coffee +0 -79
  469. package/src/editor/listeners/embed-listener.coffee +0 -143
  470. package/src/editor/login-popup.coffee +0 -29
  471. package/src/editor/notification-controller.coffee +0 -35
  472. package/src/editor/popup.coffee +0 -68
  473. package/src/editor/remote-preview.coffee +0 -68
  474. package/src/editor/save/index.coffee +0 -62
  475. package/src/editor/skin/delete.coffee +0 -33
  476. package/src/editor/skin/editor/index.coffee +0 -188
  477. package/src/editor/skin/editor/panel.coffee +0 -37
  478. package/src/editor/skin/index.coffee +0 -126
  479. package/src/editor/skin/save.coffee +0 -58
  480. package/src/editor/skin/selector/index.coffee +0 -59
  481. package/src/editor/skin/selector/item.coffee +0 -123
  482. package/src/editor/skin/selector/list.coffee +0 -97
  483. package/src/editor/views/embed.pug +0 -10
  484. package/src/editor/views/loginbutton.pug +0 -8
  485. package/src/editor/views/popup.pug +0 -17
  486. package/src/editor/views/presets.pug +0 -8
  487. package/src/editor/views/presetslist-header.pug +0 -8
  488. package/src/editor/views/skinitem.pug +0 -13
  489. package/src/modules/control.js +0 -3
  490. package/src/modules/controls.js +0 -29
  491. package/src/modules/core.js +0 -19
  492. package/src/modules/editor.js +0 -80
  493. package/test/config.js +0 -3
  494. package/test/core/models/skin-spec.js +0 -209
  495. package/webpack.config.js +0 -46
  496. package/webpack.config.prod.js +0 -9
  497. /package/{src/core/views/date-time/popup.pug → dist/utils/passiveEvents.d.ts} +0 -0
@@ -1,143 +0,0 @@
1
-
2
- Service = require '../../../browser/model'
3
- Entry = require '../../../browser/model/entry'
4
-
5
- class FacebookService extends Service
6
- @initFB: ->
7
- new Promise (res, rej) ->
8
- window.fbAsyncInit = =>
9
- FB.init {
10
- status: true, cookie: true, xfbml: false
11
- appId: '126231267555748'
12
- }
13
-
14
- res()
15
-
16
- do (d = document, s = 'script', id = 'facebook-jssdk') ->
17
- fjs = d.getElementsByTagName(s)[0]
18
- return if d.getElementById id
19
- js = d.createElement(s); js.id = id;
20
- js.src = "//connect.facebook.net/en_US/all.js";
21
- fjs.parentNode.insertBefore js, fjs
22
-
23
- constructor: ->
24
- super
25
- @permissions = {}
26
- @authenticated = false
27
-
28
- @root.id = 'me'
29
- @root.album = true
30
- @apiReady = FacebookService.initFB()
31
-
32
- refresh: (@entry) ->
33
- @entry.children = []
34
- @pages = false
35
- @_requestFBPhotoSet @getEntryFetchPath(@entry), @_onFBRespond
36
-
37
- getEntryFetchPath: (entry) =>
38
- options = {}
39
-
40
- imageType = !!~@options.types.indexOf 'image'
41
- if imageType
42
- end = 'photos'
43
- options = {fields: 'id,images,name'}
44
- else
45
- end = 'videos/uploaded'
46
- options = {fields: 'id,source,picture,description,format'}
47
-
48
- if entry.album
49
- end = 'albums'
50
- options = {fields: 'id, name, count'}
51
-
52
- {path: entry.id + '/' + end, options}
53
-
54
- _requestFBPhotoSet: (path, _callback) =>
55
- options = {}
56
- if path.constructor is Object
57
- {path, options} = path
58
- FB.api path, 'GET', options, _callback
59
-
60
- _requestFBPages: =>
61
- FB.api 'me/accounts', @_onFBRespond
62
-
63
- _onFBRespond: (response) =>
64
- data = response.data or []
65
-
66
- # remove empty folders
67
- if @entry.root or @entry.album
68
- # TODO: eliminate empty folders for video type too
69
- data = data.filter (i) -> i.count > 0 or (i.perms and i.category and !i.count?)
70
-
71
- # map data response as entry items
72
- data = @mapEntries data
73
-
74
- # add the 'My Photos' or 'My Videos' folder to the root folder
75
- if (@entry.root or @entry.album) and !@entry.children?.filter((i) -> i.my_album).length
76
- data or= []
77
- # unless imageType = !!~@options.types.indexOf 'image'
78
- # data = []
79
- imageType = !!~@options.types.indexOf 'image'
80
- [name, path] = if imageType then ['Photos', @entry.path+'/photos'] else ['Videos', @entry.path+'/videos']
81
- name = 'My '+name if @entry.id is 'me'
82
- data.push new Entry {service: @, name, path, id: @entry.id, type: 'folder', my_album: true}
83
-
84
- if @entry.root and @permissions.manage_pages? and !@permissions.manage_pages and !@entry.children?.filter((i) -> i.pages).length
85
- data.push pagesEntry = new Entry {service: @, name:'Pages', path: 'accept_pages', type: 'button', pages: true}
86
- pagesEntry.bind 'select', @_auth.bind @, true
87
-
88
- @trigger 'refresh', data
89
-
90
- if (path = response.paging?.next)?
91
- @_requestFBPhotoSet path, @_onFBRespond
92
- # append the user's pages as folders
93
- else if @entry.root and not @pages
94
- @pages = true
95
- @_requestFBPages()
96
-
97
- mapEntries: (data) ->
98
- data.map (item) =>
99
- opts = images: item.images, id:item.id, name: item.name
100
- opts.type = if item.images? then 'image' else (if item.format then 'video' else 'folder')
101
- opts.album = !!(item.perms and item.category) if opts.type is 'folder'
102
- opts.path = @entry.path+'/'+item.id
103
- opts.preview = if opts.type is 'image' then item.images[Math.max(0,item.images.length-4)].source else @entry.picture
104
- opts.source = item.source if opts.type is 'video'
105
- new Entry opts
106
-
107
- preview: (i)-> i.preview
108
-
109
- getURL: (entry, callback) ->
110
- callback if entry.type is 'image' then entry.images[0].source else entry.source
111
-
112
- _auth: (interactive = true) ->
113
-
114
- callback = (response) =>
115
- if response.status is 'connected'
116
- @getPermissions()
117
- else
118
- @trigger 'auth', @authenticated = false
119
-
120
- unless interactive
121
- FB.getLoginStatus callback
122
- else
123
- FB.login callback, scope:'user_photos,user_videos,manage_pages'
124
-
125
- deauth: ->
126
- FB.logout => @trigger 'auth', false
127
-
128
- getPermissions: =>
129
- FB.api '/me/permissions', (resp)=>
130
-
131
- @permissions = {}
132
- resp.data.forEach (d) => @permissions[d.permission] = d.status is 'granted'
133
-
134
- photo = 'image' in @options.types or 'photo' in @options.types
135
- video = 'video' in @options.types
136
-
137
- if ((photo and @permissions.user_photos) or (video and @permissions.user_videos)) and @permissions.manage_pages?
138
- @trigger 'auth', @authenticated = true
139
- else
140
- # @auth true
141
- @trigger 'auth', @authenticated = false
142
-
143
- module.exports = FacebookService
@@ -1,85 +0,0 @@
1
- Service = require '../../../browser/model'
2
- Entry = require '../../../browser/model/entry'
3
-
4
- app_key = 'e80667fd637788dde877f5684d496d85'
5
- localStorage.removeItem 'flickrAuthToken' if localStorage.getItem('flickrTokenFor') isnt app_key
6
- localStorage.setItem 'flickrTokenFor', app_key
7
-
8
- api =
9
- key: app_key
10
- secret: '5a90030ecac5b4fc'
11
- # sig: MD5(secret+'api_key'+[api_key]+'perms'+[perms])
12
- sig: '05eb1494ce939ce3098bbcdc7300b5e3'
13
- token: localStorage.getItem('flickrAuthToken')?.split('::')[0]
14
- nsid: localStorage.getItem('flickrAuthToken')?.split('::')[1]
15
- perms: "read"
16
- rest: 'https://api.flickr.com/services/rest/'
17
-
18
- class FlickrService extends Service
19
- auth_url: "https://flickr.com/services/auth/?api_key=#{api.key}&perms=#{api.perms}&api_sig=#{api.sig}"
20
- constructor: ->
21
- super
22
- @authenticated = (api.token? and api.nsid?)
23
- @options.types.push 'photo' if 'image' in @options.types
24
-
25
- refresh: (@entry) =>
26
- @getMediaList().done @_onRespond
27
-
28
- _auth: (interactive = true) ->
29
- @trigger 'auth', @authenticated
30
- (!@authenticated and interactive) and @doAuth()
31
-
32
- doAuth: =>
33
- window.flickrReady = (frob) =>
34
- @call({api_key: api.key, frob, method: 'flickr.auth.getToken'}).done (resp) =>
35
- resp = $(resp)
36
- api.nsid = resp.find('user').attr('nsid')
37
- api.token = resp.find('token').text()
38
- localStorage.setItem 'flickrAuthToken', api.token+'::'+api.nsid
39
-
40
- @trigger 'auth', @authenticated = true
41
-
42
- window.open @auth_url, 'Flickr connect', 'width=990,height=825' unless api.token?
43
-
44
- deauth:->
45
- @trigger 'auth', @authenticated = false
46
- localStorage.removeItem('flickrAuthToken')
47
-
48
- getMediaList: -> @call
49
- api_key: api.key, auth_token: api.token, extras: 'media',
50
- format: 'json', method: 'flickr.people.getPhotos', nojsoncallback: 1
51
- user_id: api.nsid
52
-
53
- listEntries: (data) =>
54
- for media in data when media.media in @options.types
55
- media.type = @options.types[0]
56
- media.path = '/'+media.id
57
- new Entry media
58
-
59
- _onRespond: (data) =>
60
- return @trigger 'refresh', @entry.children = [] unless data.photos.total
61
-
62
- @trigger 'refresh', @entry.children = @listEntries data.photos.photo
63
-
64
- call: (params={},callback) =>
65
- params['api_sig'] = api.secret + ("#{key}#{value}" for key,value of params).join('')
66
- params['api_sig'] = Crypto.MD5 params['api_sig']
67
- $.ajax api.rest, data:params
68
-
69
- preview: (entry) ->
70
- "https://farm#{entry.farm}.staticflickr.com/#{entry.server}/#{entry.id}_#{entry.secret}_q.jpg"
71
-
72
- getURL: (entry, callback) ->
73
- if entry.type is 'image'
74
- callback "https://farm#{entry.farm}.staticflickr.com/#{entry.server}/#{entry.id}_#{entry.secret}.jpg"
75
- else @getVideoSizes(entry).done (data) => @videoUrl data.sizes.size, callback
76
-
77
- getVideoSizes: (entry) -> @call
78
- api_key: api.key, auth_token: api.token,
79
- format: 'json', method: 'flickr.photos.getSizes', nojsoncallback: 1
80
- photo_id: entry.id, user_id: api.nsid
81
-
82
- videoUrl: (sizes, callback) ->
83
- return callback size.source for size in sizes when size.label is 'Site MP4'
84
-
85
- module.exports = FlickrService
@@ -1,18 +0,0 @@
1
- module.exports = do ->
2
- new Promise (resolve) ->
3
- gApiReady = ->
4
- gapi.load 'client:auth2', ->
5
- gapi.client.init({
6
- apiKey: 'AIzaSyDNHyaQxinEYqwuGTTy1pJeEC09ewAxNNM',
7
- clientId: '30789742875.apps.googleusercontent.com',
8
- discoveryDocs: ["https://www.googleapis.com/discovery/v1/apis/drive/v3/rest"],
9
- scope: 'https://www.googleapis.com/auth/drive'
10
- }).then resolve
11
-
12
- po = document.createElement('script');
13
- po.type = 'text/javascript'; po.async = true;
14
- po.src = 'https://apis.google.com/js/api.js'
15
- po.onload = gApiReady
16
-
17
- s = document.getElementsByTagName('script')[0];
18
- s.parentNode.insertBefore(po, s);
@@ -1,144 +0,0 @@
1
-
2
- Service = require '../../../browser/model'
3
- Entry = require '../../../browser/model/entry'
4
-
5
- SharePopup = require './share-popup'
6
-
7
- sdkReady = require './google-drive-sdk'
8
- cache = require './cache'
9
-
10
- class GoogleDriveService extends Service
11
- scope: 'https://www.googleapis.com/auth/drive.readonly'
12
- constructor: ->
13
- super
14
- @title = 'Google Drive'
15
- @type = 'image' if ~@options.types.indexOf 'image'
16
- @type = 'video' if ~@options.types.indexOf 'video'
17
- @type = 'audio' if ~@options.types.indexOf 'audio'
18
- @root.id = 'root'
19
- sdkReady.then =>
20
- gapi.auth2.getAuthInstance().isSignedIn.listen(@onGoglAuth)
21
-
22
- _auth: (interactive) => sdkReady.then =>
23
- return @trigger 'auth', true if gapi.auth2.getAuthInstance().isSignedIn.get()
24
- gapi.auth2.getAuthInstance().signIn()
25
-
26
- onGoglAuth: (isSignedIn) =>
27
- if !isSignedIn
28
- return @trigger 'auth', false
29
-
30
- @trigger 'auth', true
31
-
32
- refresh: (entry) =>
33
- @entry = entry
34
-
35
- onResponse = =>
36
- @gotResponse entry.id, arguments...
37
-
38
- @getDriverData entry, onResponse
39
-
40
- getDriverData: (entry, callback) =>
41
- @getDriverFolders(entry.id, callback).then =>
42
- @getDriverFiles(entry.id, @type, callback).then callback.bind @, [], true
43
-
44
- gotResponse: (folderID, data, triggerEmpty) =>
45
- return unless @entry.id is folderID
46
- self = @
47
- entries = (data.files or []).map (file) =>
48
- return unless file
49
- isPrivate = !file.permissions.filter((perm) -> perm.id is 'anyone' or perm.id is 'anyoneWithLink').length
50
- type = file.mimeType.match(/image|video|folder|audio/)[0]
51
- new Entry
52
- id: file.id
53
- type: type
54
- path: @entry.path+'/'+file.name
55
- name: file.name
56
- preview: file.thumbnailLink?.replace /s\d+$/, 's250'
57
- url: file.webContentLink
58
- parent: file.parents[0].id
59
- isPrivate: isPrivate
60
- order: 0.5*(type is 'folder') + parseFloat '0.'+(new Date(file.createdDate).getTime())
61
- webLink: file.webViewLink
62
- onActivate: ->
63
- return true if !@isPrivate
64
- SharePopup.pop $ 'body'
65
- SharePopup.off 'confirmed'
66
- SharePopup.bind 'confirmed', =>
67
- gapi.client.drive.permissions.create {
68
- resource:
69
- type: 'anyone',
70
- role: 'reader'
71
- fileId: file.id,
72
- fields: 'id',
73
- }
74
- .execute (res) =>
75
- if res.error
76
- console.error(res.error)
77
- alert('An error has occurred. The permissions have not been modified.')
78
- else
79
- cache.clear(file.parents[0])
80
- @isPrivate = false
81
- self.trigger 'refresh', entries, {hard: true}
82
-
83
- return !@isPrivate
84
- .filter((file)->!!(file and file.id)).sort (a, b) -> -(a.order - b.order)
85
-
86
- @trigger 'refresh', entries if entries.length
87
- @trigger 'refresh', [] if triggerEmpty and !@entry.children.length
88
-
89
- checkEmpty: =>
90
- @trigger 'refresh', []
91
-
92
- getURL: (entry, callback) ->
93
- callback entry.url
94
-
95
- preview: (entry)-> entry.preview
96
-
97
- deauth: ->
98
- @trigger 'auth', @authenticated = false
99
-
100
- getDriverFolders: (folderID, callback) =>
101
- @getDriverFiles folderID, 'folder', callback
102
-
103
- getDriverFiles: (folderID, type, callback) =>
104
- def = new $.Deferred
105
-
106
- do req = (nextPageToken = null) =>
107
- @requestDriverFiles(folderID, type, nextPageToken).then (resp) =>
108
- callback resp
109
- if resp.nextPageToken
110
- if @entry.id is folderID and entry = @entry.children.slice(-1)[0]
111
- entry.onShow = (-> req resp.nextPageToken; @onShow = ->).bind entry
112
- return
113
- def.resolve()
114
-
115
- def.promise()
116
-
117
- requestDriverFiles: (folderID, fileType, pageToken) =>
118
- def = new $.Deferred
119
-
120
- if cachedResponse = cache.get folderID, pageToken or fileType
121
- def.resolve cachedResponse
122
-
123
- # fetch only if cache has expired
124
- unless cache.check folderID, pageToken or fileType
125
- gapi.client.drive.files.list
126
- q: @createQuery folderID, fileType
127
- fields: 'nextPageToken, files(id, name, mimeType, thumbnailLink, createdTime, permissions, parents, webContentLink, webViewLink)'
128
- pageToken: pageToken
129
- .execute (data) =>
130
- delete data.result if data.result?
131
- cache.set folderID, pageToken or fileType, data
132
- def.resolve data
133
-
134
- def.promise()
135
-
136
- createQuery: (id, type, date)=>
137
- mimeType = "mimeType contains \'#{type}/\'"
138
- mimeType = 'mimeType=\'application/vnd.google-apps.folder\'' if type is 'folder'
139
-
140
- q = "trashed=false and (#{mimeType}) and \'#{id}\' in parents"
141
- q += " and modifiedDate > \'#{date}\'" if date
142
- q
143
-
144
- module.exports = GoogleDriveService
@@ -1,84 +0,0 @@
1
- Service = require '../../../browser/model'
2
-
3
- # Instagram service config
4
- host = 'https://widgetic.com' + '/services/instagram' #live server path
5
- INSTAGRAM_DEFAULTS = {
6
- client_id: '542808610040105', #widgetic instagram basic display app id
7
- client_secret: '0a88504381f577dbbef400d4232a4258',
8
- redirect_uri: host + '/auth_token',
9
- scope: 'user_profile,user_media',
10
- response_type: 'code',
11
- api_url: host,
12
- demo: "IGQVJVNUw5cHB5cUFiZATFxVmgyeWtSVFJjTDYyRmNnWDZAJZA3llVXREa1BsS1EtVGJ2UEdlbHJNbDV1UUQ2YkVSZA3YwS1dPWXJzYXFGQzdZAMlhBLTBWWWNkTVNHTGNDLW10dkdhNW0wMDVqMkhZAWEhqbgZDZD",
13
- token_storage: "redis",
14
- encodeToken: false,
15
- redis_db: 0,
16
- redis_prefix: "nstgrm:",
17
- port: 8082,
18
- }
19
- api = window.INSTAGRAM_SERVICE_CONFIG || INSTAGRAM_DEFAULTS
20
- # console.log("EDITOR Instagram API:", api);
21
-
22
- # read current logged user's instagram auth token
23
- try api.token = localStorage.getItem 'instagramAuthToken'
24
- console.log("Editor Instagram Service current user's token:", api.token);
25
-
26
- # define auth url that will open in authorize popup
27
- auth_url = "https://api.instagram.com/oauth/authorize/?client_id=#{api.client_id}&redirect_uri=#{api.redirect_uri}&response_type=#{api.response_type}&scope=#{api.scope}"
28
-
29
- # INSTAGRAM SERVICE CLASS
30
- class InstagramService extends Service
31
- @browser: 'browser/controller/instagram'
32
-
33
- constructor: ->
34
- super
35
- @user = {}
36
- @authenticated = false
37
-
38
- getToken: ->
39
- return api.token
40
-
41
- getUser: (token) ->
42
- # console.log("Editor Instagram Service getUser:", token, api.api_url);
43
- url = "#{api.api_url}/me"
44
- $.ajax(url: url, type: 'GET', dataType: 'json', headers: {'X-Token': token})
45
-
46
- _auth: (interactive=true) ->
47
- console.log("Editor Instagram Service _auth method:", interactive, api.token);
48
- # if authenticated get user info to show it in the browser
49
- if api.token?
50
- # console.log("Editor Instagram Service _auth method:", interactive, api.token);
51
- @getUser(api.token)
52
- .then (result) =>
53
- console.log("Editor Instagram Service getUser result:", result)
54
- @user = result
55
- @trigger 'auth', @authenticated = true
56
- .catch =>
57
- console.log("Editor Instagram Service getUser error:", error)
58
- @deauth()
59
- # console.log("Editor INSTG service _auth method:", interactive, api);
60
- # if not authenticated open popup
61
- !@authenticated and interactive and @showAuthPopup()
62
-
63
- showAuthPopup: ->
64
- # console.log("Editor show Auth Window:", localStorage, auth_url)
65
-
66
- window.instagramReady = (token, user) =>
67
- # console.log("Editor instagramReady:", token, user);
68
- api.token = token
69
- try localStorage.setItem 'instagramAuthToken', api.token = token
70
- @user = user
71
- @trigger 'auth', @authenticated = true
72
-
73
- window.open auth_url, 'Instagram connect', 'width=450,height=600'
74
-
75
- refresh: (@entry) =>
76
- @trigger 'refresh', []
77
-
78
- deauth: ->
79
- @authenticated = false
80
- api.token = null
81
- @trigger 'auth', @authenticated
82
- try localStorage.removeItem 'instagramAuthToken'
83
-
84
- module.exports = InstagramService
@@ -1,168 +0,0 @@
1
- Service = require '../../../browser/model'
2
- Entry = require '../../../browser/model/entry'
3
-
4
- # Instagram service config
5
- host = 'https://widgetic.com' + '/services/instagram/'
6
- INSTAGRAM_DEFAULTS = {
7
- client_id: '542808610040105', #widgetic instagram basic display app id
8
- client_secret: '0a88504381f577dbbef400d4232a4258',
9
- redirect_uri: host + 'auth_token',
10
- scope: 'user_profile,user_media',
11
- response_type: 'code',
12
- api_url: host,
13
- demo: "IGQVJVNUw5cHB5cUFiZATFxVmgyeWtSVFJjTDYyRmNnWDZAJZA3llVXREa1BsS1EtVGJ2UEdlbHJNbDV1UUQ2YkVSZA3YwS1dPWXJzYXFGQzdZAMlhBLTBWWWNkTVNHTGNDLW10dkdhNW0wMDVqMkhZAWEhqbgZDZD",
14
- token_storage: "redis",
15
- encodeToken: false,
16
- redis_db: 0,
17
- redis_prefix: "nstgrm:",
18
- port: 8082,
19
- }
20
- api = window.INSTAGRAM_SERVICE_CONFIG || INSTAGRAM_DEFAULTS
21
- # console.log("EDITOR Instagram API:", api);
22
- try api.token = localStorage.getItem 'instagramAuthToken'
23
- auth_url = "https://api.instagram.com/oauth/authorize/?client_id=#{api.client_id}&redirect_uri=#{api.redirect_uri}&response_type=#{api.response_type}&scope=#{api.scope}"
24
-
25
- month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
26
-
27
- cache =
28
- _cache: {}
29
- def: -> new $.Deferred()
30
- has: (id) -> cache._cache[id]?
31
- get: (id) -> cache.def().resolve(cache._cache[id]).promise()
32
- set: (id, data) -> cache._cache[id] = data; cache
33
-
34
- class InstagramService extends Service
35
-
36
- constructor: ->
37
- super
38
- @user = {}
39
- @authenticated = false
40
- @ajaxReqs = []
41
-
42
- getUser: (token) ->
43
- url = "#{api.api_url}me"
44
- $.ajax(url: url, type: 'GET', dataType: 'json', headers: {'X-Token': token})
45
-
46
- _auth: (interactive=true) ->
47
- # console.log("Editor INSTG service _auth method:", interactive, api);
48
- # if authenticated get user info to show it in the browser
49
- if api.token?
50
- @getUser(api.token)
51
- .then (result) =>
52
- # console.log("Editor getUser result:", result)
53
- @user = result
54
- # @trigger 'auth', @authenticated = result.meta.code is 200
55
- @trigger 'auth', @authenticated = true
56
- .catch (error) =>
57
- # console.log("Editor getUser error:", error)
58
- @deauth()
59
-
60
- # console.log("Editor INSTG service _auth method:", interactive, api);
61
- # if not authenticated open popup
62
- !@authenticated and interactive and @showAuthPopup()
63
-
64
- showAuthPopup: ->
65
- window.instagramReady = (token, user) =>
66
- # console.log("Editor instagramReady:", token, user);
67
- api.token = token
68
- try localStorage.setItem 'instagramAuthToken', api.token = token
69
- @user = user
70
- @trigger 'auth', @authenticated = true
71
-
72
- window.open auth_url, 'Instagram connect', 'width=450,height=600'
73
-
74
- deauth: ->
75
- @authenticated = false
76
- api.token = null
77
- @trigger 'auth', @authenticated
78
- try localStorage.removeItem 'instagramAuthToken'
79
-
80
-
81
- # after response from the instagram popup
82
- refresh: (@entry) =>
83
- # console.log("Instagram Refresh:", @entry)
84
- # @entry.root = false
85
- @entry.children = []
86
- @children = {}
87
- @fetchFotos().done @_onRespond
88
-
89
- ###
90
- Fetch Photos:
91
- return cache, if there's a cached response,
92
- but do the ajax too, so we can update the cache in the same time
93
- ###
94
- fetchFotos: (id = '') =>
95
- url = "#{api.api_url}?num=999&q=#{@user.id}&max_id=#{id}"
96
- # console.log("fetchFotos 1:", api.token)
97
- # $.ajax {url: ..., type: ..., dataType: ...} {sucess: ...} {fail: ...}
98
- @ajaxReqs[id] = $.ajax
99
- url: url, type: 'GET', dataType: 'json', headers: {'X-Token': api.token}
100
- success: (data) =>
101
- # console.log("Fetch photos sucess:", data)
102
- cache.set(id, data)
103
- fail: (error) =>
104
- console.log("Fetch photos failed:", error)
105
-
106
- # console.log("fetchFotos 2:", api.token)
107
- if cache.has(id) then cache.get(id) else @ajaxReqs[id]
108
-
109
- _onRespond: (response) =>
110
- # filter data on image type
111
- data = response.media.filter (i) => (i.type = i.media_type.toLowerCase()) in @options.types
112
- # console.log("_onRespond filtered data:", data);
113
-
114
- # create folders or just list items
115
- # data = if @entry.root then @makeFolders(data) else @listEntries(data)
116
- data = @listEntries(data)
117
- # console.log("_onRespond organized data:", data);
118
-
119
- # add this new items to the content model
120
- @entry.children = @entry.children.concat data
121
-
122
- # trigger refresh for the widget to catch the content changes
123
- @trigger 'refresh', data
124
-
125
- # auto-fetch the next page of items, if there are any
126
- return unless next = response.pagination?.next_max_id
127
- @fetchFotos(next).done @_onRespond
128
-
129
- makeFolders: (data) =>
130
- folders = {}
131
- for item in data
132
- date = new Date(item.timestamp)
133
- folder_name = month[date.getMonth()]+' '+date.getFullYear()
134
- # don't create a new folder, if it's already defined
135
- # this could happen because of the multiple requests
136
- continue if (f for f in @entry.children when f.name == folder_name).length
137
- folders[folder_name] = new Entry
138
- service: @
139
- name: folder_name
140
- path: '/'+folder_name
141
- type: 'folder'
142
- year: date.getFullYear()
143
- month: date.getMonth()
144
-
145
- folder for name, folder of folders
146
-
147
- listEntries: (data) =>
148
- entries = [];
149
- for item in data
150
- # if !@children[item.id]
151
- opts = {
152
- id: item.id, type: item.type,
153
- media_url: item.media_url,
154
- thumbnail_url: item.thumbnail_url,
155
- caption: item.caption,
156
- images: {image: item.media_url, thumbnail: item.thumbnail_url}
157
- }
158
- opts.videos = item.videos if item.videos?
159
- opts.path = @entry.path+'/'+item.id
160
- @children[item.id] = new Entry opts
161
- entries.push(@children[item.id])
162
- return entries
163
-
164
- preview: (entry) -> entry.images.image || entry.images.thumbnail
165
-
166
- getURL: (entry, callback)-> callback entry[entry.type+'s'].image
167
-
168
- module.exports = InstagramService
@@ -1,15 +0,0 @@
1
- Popup = require '../../popup'
2
-
3
- class SharePopup extends Popup
4
- className: 'popup login-popup share-file-popup'
5
-
6
- confirmBtnClass: 'green-button button--uc'
7
- cancelBtnClass: 'dim-button button--uc'
8
- title: 'Only public files can be embedded.'
9
- content: 'Do you want to share this file publicly?'
10
- note: ''
11
- separator: false
12
- confirmBtn: 'Make public'
13
- cancelBtn: 'Cancel'
14
-
15
- module.exports = new SharePopup