@widgetic/editor 3.11.4 → 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,178 +0,0 @@
1
- import event from 'geval/event';
2
-
3
- let Skin;
4
- let Composition;
5
- let Content;
6
-
7
- export default class EmbedApi {
8
- constructor() {
9
- Skin = window.require('core/models/skin');
10
- Content = window.require('core/models/content');
11
- Composition = window.require('core/models/composition');
12
-
13
- this.eventMap = {
14
- cx: 'clearContent',
15
- sc: 'setContent',
16
- ac: 'addContent',
17
- cc: 'changeContent',
18
- rc: 'removeContent',
19
- ss: 'setSkin',
20
- cs: 'changeSkin',
21
- asht: 'addSheet',
22
- acss: 'addCss',
23
- pa: 'publicApi',
24
- };
25
- this.receiver = this.receiver.bind(this);
26
-
27
- this.skin = Skin.first();
28
- this.composition = Composition.first();
29
-
30
- this.skinSet = new event();
31
- this.contentCleared = new event();
32
- this.contentAdded = new event();
33
- this.publicApiCalled = new event();
34
- }
35
-
36
- receiver(event) {
37
- let data;
38
- try {
39
- data = JSON.parse(event.data);
40
- } catch (e) {
41
- return console.warn(e);
42
- }
43
- const handler = this.eventMap[data.t];
44
-
45
- if (!handler || !this[handler]) return;
46
-
47
- try {
48
- this[handler](data.d);
49
- } catch (e) {
50
- console.error(e);
51
- }
52
- }
53
-
54
- /**
55
- * Replaces the current skin with the provided one.
56
- * TODO load defaults for missing props
57
- */
58
- setSkin(newSkin) {
59
- this.skin.unbind();
60
- this.skin = new Skin(newSkin);
61
-
62
- this.composition.updateAttribute('skin_id', this.skin.id, { ajax: false });
63
- this.skinSet.broadcast(this.skin);
64
- }
65
-
66
- changeSkin(skin) {
67
- // console.log('Embed changeSkin:', skin);
68
- this.skin.updateAttributes(skin, {attribute: Object.keys(skin)[0], ajax: false });
69
- }
70
-
71
- clearDemoContent() {
72
- return Content.select(c => c._isDemoContent).forEach(function(c) {
73
- try {
74
- c.destroy();
75
- } catch (error) {}
76
- });
77
- }
78
-
79
- clearContent() {
80
- Content.destroyAll();
81
- this.composition.updateAttribute('content', [], { ajax: false });
82
- this.contentCleared.broadcast();
83
- }
84
-
85
- getContent() {
86
- return this.composition.getContent();
87
- }
88
-
89
- setContent(data) {
90
- this.clearContent();
91
- data.map(this.addContent.bind(this));
92
- }
93
-
94
- // TODO validate limits
95
- addContent(content) {
96
- this.clearDemoContent();
97
-
98
- // return if thre's already added a content with the same id
99
- try {
100
- Content.find(content.id);
101
- return console.warn(
102
- `Content with id ${
103
- content.id
104
- } already exists, use changeContent if you want to update it!`
105
- );
106
- } catch (error) {}
107
-
108
- if (content.id == null) {
109
- content.id = Widgetic.GUID();
110
- }
111
-
112
- if (!content.composition_id) {
113
- content.composition_id = this.composition.id;
114
- }
115
- let c = new Content(content);
116
- c.save();
117
- this.contentAdded.broadcast(c);
118
- }
119
-
120
- changeContent(content) {
121
- let item = content.item ? content.item : content;
122
- let attribute = content.attribute;
123
- // console.log('Embed change content item:', item, attribute);
124
-
125
- // check if item has id
126
- if (item.id == null) {
127
- return console.error('Content must have an id:', content);
128
- }
129
-
130
- // find the item to be changed
131
- let c;
132
- try {
133
- c = Content.find(item.id);
134
- }
135
- catch (error) {
136
- return console.warn(
137
- `Content with id ${
138
- item.id
139
- } doesn't exists, use addContent if you want to add it!`
140
- );
141
- }
142
-
143
- // update the item
144
- c.updateAttributes(item, { attribute: attribute, ajax: false });
145
- }
146
-
147
- removeContent(content) {
148
- try {
149
- return Content.find(content.id).destroy();
150
- } catch (e) {
151
- return console.error(
152
- `Content ${content.id} couldn't be removed!`,
153
- e.stack
154
- );
155
- }
156
- }
157
-
158
- addSheet(href) {
159
- const link = document.createElement('link');
160
- link.rel = 'stylesheet';
161
- link.href = href;
162
-
163
- document.head.appendChild(link);
164
- }
165
-
166
- addCss(css) {
167
- if (!this._customCssNode) {
168
- this._customCssNode = document.createElement('style');
169
- document.head.appendChild(this._customCssNode);
170
- }
171
-
172
- this._customCssNode.textContent += css;
173
- }
174
-
175
- publicApi(data) {
176
- this.publicApiCalled.broadcast(data);
177
- }
178
- }
@@ -1,331 +0,0 @@
1
- let Widget, Composition, Content, Skin;
2
- import EmbedApi from './api';
3
- import toast from 'pyrsmk-toast';
4
-
5
- const send = message => {
6
- (window.opener || window.parent).postMessage(JSON.stringify(message), '*');
7
- };
8
-
9
- const messenger = {
10
- load: () => send({ t: 'u', d: window.name }),
11
- apiReady: () => send({ t: 'd', d: window.name }),
12
- notify: (ev, data) =>
13
- send({ t: 'ce', id: window.name, d: data, e: ev.type || ev }),
14
- replyPublicApiCall: (id, err, data) => send({ t: 'pr', id, err, d: data }),
15
- };
16
-
17
- const _newComposition = (widget, demo) => {
18
- const id = 'c-0';
19
- return {
20
- id,
21
- widget_id: widget.id,
22
- width: widget.width,
23
- height: widget.height,
24
- skin_id: widget.skins[0].id,
25
- content: !demo
26
- ? []
27
- : widget.content[0].content.map(function(c, i) {
28
- c.id = i;
29
- c.composition_id = id;
30
- c._isDemoContent = true;
31
- return c;
32
- }),
33
- metadata: {
34
- client: (window.location.search.match(/client_id=([^\&$]+)/) || [])[1],
35
- },
36
- };
37
- };
38
-
39
- // TODO relay mouse and keyboard events - maybe not?
40
- export default class EmbedController {
41
- constructor(
42
- el,
43
- {
44
- loader,
45
- widget,
46
- user,
47
- composition,
48
- skin,
49
- js,
50
- css,
51
- data,
52
- demo = true,
53
- bootstrapped = false,
54
- }
55
- ) {
56
- // widget element
57
- this.el = el;
58
-
59
- // loader
60
- this.loader = loader;
61
-
62
- // read if it's a bootstrapped widget
63
- this.bootstrapped = bootstrapped;
64
-
65
- // read widget data
66
- if (!widget && !data) throw new Error('You must supply either `widget` or `data`');
67
- this.widget = widget;
68
- this.dataURL = data;
69
- this.user = user;
70
- this.composition = composition;
71
- this.skin = skin;
72
- this.loadDemo = demo;
73
- // widget js & css
74
- this.js = 'https://widgetic.com' + js;
75
- this.css = 'https://widgetic.com' + css;
76
-
77
- // start loading widget
78
- this.dataLoaded = Widgetic.Aye.defer();
79
- this.dataLoaded.promise.then(this._showBranding.bind(this));
80
- // init widget
81
- this._init();
82
-
83
- // init editor
84
- this._initEditorApi();
85
- }
86
-
87
- _init() {
88
- const wait = () => {};
89
-
90
- // Bootstrapped widgets(using spine - coffescript widgets)
91
- if (!this.bootstrapped) {
92
- toast(
93
- // load shims, css and libraries in paralel
94
- 'https://files.widgetic.com/file/widgetic-uploads/assets/js/core-js.shim.min.js',
95
- 'https://widgetic.com/bundles/blogvioapp/js/editor/core.vendor.js',
96
- 'https://widgetic.com/bundles/blogvioapp/js/require.js',
97
- 'https://widgetic.com/bundles/blogvioapp/css/embed.css',
98
- this.css,
99
- wait,
100
- // load spine next, depends on require.js
101
- 'https://widgetic.com/bundles/blogvioapp/js/spine.js',
102
- wait,
103
- // load widgetic code, depends on spine
104
- 'https://widgetic.com/bundles/blogvioapp/js/editor/core.js',
105
- this._loadModels.bind(this),
106
- this._loadData.bind(this),
107
- this.js,
108
- // load the widget, depends on hydrated models
109
- () =>
110
- this.dataLoaded.promise
111
- .then(this._loadWidget.bind(this))
112
- .fail(e => console.error(e))
113
- );
114
- }
115
- // Angular & Svelte widgets
116
- else {
117
- this._loadModels();
118
- this._loadData();
119
- this._loadWidget();
120
- }
121
- }
122
-
123
- _loadModels() {
124
- Widget = window.require('core/models/widget');
125
- Composition = window.require('core/models/composition');
126
- Content = window.require('core/models/content');
127
- Skin = window.require('core/models/skin');
128
- }
129
-
130
- _loadData() {
131
- // if the data is local, proceed to hydrating the models
132
- if (!this.dataURL) return this._hydrateModels();
133
-
134
- Widgetic.uxhr(this.dataURL, null, {
135
- success: response => {
136
- let data;
137
- try {
138
- data = JSON.parse(response);
139
- } catch (e) {
140
- return console.error('Could not parse response', response);
141
- }
142
- this.skin = data.skin;
143
- this.composition = data.composition;
144
- this.widget = data.widget;
145
- this.user = data.user;
146
- this._hydrateModels();
147
- },
148
- error: error =>
149
- console.error('The widget data could not be loaded', error),
150
- });
151
- }
152
-
153
- _hydrateModels() {
154
- this.composition = this.composition || _newComposition(this.widget, this.loadDemo);
155
- // console.log("Embed created composition:", this.composition);
156
-
157
- // load composition
158
- Widget.refresh(this.widget);
159
- Composition.refresh(this.composition);
160
-
161
- // load skin
162
- Skin.refresh(this.skin || this.widget.skins);
163
- this._skin = Skin.first();
164
-
165
- // load content
166
- Content.refresh(this.composition.content);
167
-
168
- this.dataLoaded.resolve();
169
-
170
- // init embed api
171
- this._initApi();
172
- }
173
-
174
- _initApi() {
175
- const api = new EmbedApi();
176
- Widgetic.Event.on(window, 'message', api.receiver);
177
-
178
- api.skinSet.listen(this._onSkinSet.bind(this));
179
- api.contentCleared.listen(this._onContentCleared.bind(this));
180
- api.contentAdded.listen(this._onContentAdded.bind(this));
181
- api.publicApiCalled.listen(this._onPublicApiCalled.bind(this));
182
-
183
- messenger.apiReady();
184
- }
185
-
186
- _initEditorApi() {
187
- window.getPreview = () => ({
188
- widget: () => this.widgetController,
189
- window,
190
- });
191
-
192
- window.getData = () => ({
193
- widget: this.widget,
194
- composition: $.extend({}, this.composition, {
195
- widget_id: this.widget.id,
196
- width: (this.composition || this.widget).width,
197
- height: (this.composition || this.widget).height,
198
- content: this.composition.content,
199
- skin_id: this.composition.skin_id,
200
- }),
201
- skin: this.skin || this.widget.skins[0],
202
- user: this.user,
203
- });
204
-
205
- // used by weebly editor
206
- // TODO remove
207
- // @deprecated
208
- window.getCurrentData = () => ({ widget: this.widgetController });
209
-
210
- // used by weebly editor
211
- // TODO remove
212
- const access_token = (window.location.search.match(
213
- /access_token=([^\&$]+)/
214
- ) || [])[1];
215
- if (access_token) Widgetic.auth.token(access_token);
216
- }
217
-
218
- _loadWidget() {
219
- const uri = Widgetic.parse(window.location.href);
220
-
221
- const mode =
222
- uri.queryKey.edit_mode !== undefined
223
- ? Widgetic.UI.Composition.EDIT_MODE
224
- : Widgetic.UI.Composition.EMBED_MODE;
225
-
226
- // create widget metadata
227
- const metadata = {
228
- mode,
229
- embedOptions: {
230
- resize: uri.queryKey.resize,
231
- autoscale: uri.queryKey.autoscale,
232
- adaptive: uri.queryKey.adaptive,
233
- },
234
- widget: this.widget,
235
- composition: {
236
- id: this.composition.id,
237
- },
238
- referrer: document.referrer,
239
- };
240
-
241
- // get widget main component(coffee, angular, svelte 1, svelte 2, svelte 3)
242
- const _widget = window.require(this.widget.module);
243
- // console.log("Embed controller load:", _widget)
244
-
245
- // create an instance of the widget's main component with the skin and content
246
- this.widgetController = new _widget(
247
- { metadata },
248
- this._skin,
249
- Content.all()
250
- );
251
- // console.log("Embed controller load:", this.widgetController)
252
-
253
- // remove loader
254
- this.loader && this.loader.parentNode.removeChild(this.loader);
255
-
256
- // add the widget container
257
- // TODO replace jquery use with native DOM
258
- const widgetContainer = $(
259
- '<div class="widget-container" style="width:1px; min-width: 100%; height: 100%">'
260
- );
261
- $(this.el).append(widgetContainer);
262
- // TODO remove when all widgets are updated to svelte
263
- widgetContainer.append(this.widgetController.el);
264
- this.widgetController.added();
265
-
266
- // add messenger listeners for widget's public events
267
- this.widgetController.getPublicEvents &&
268
- this.widgetController.getPublicEvents().forEach(event => {
269
- this.widgetController.on(event, data => messenger.notify(event, data));
270
- });
271
- messenger.load();
272
- }
273
-
274
- _showBranding() {
275
- // read branding value
276
- let brandingValue = new URLSearchParams(window.location.search).get('branding')
277
- // console.log("read brandingValue:", brandingValue);
278
- if(!brandingValue) brandingValue = 'off'
279
-
280
- // check if user is premium
281
- let isPremium = (this.user && this.user.premium) ? this.user.premium : false;
282
-
283
- // establish branding
284
- if(!isPremium) brandingValue = "on";
285
- // console.log("final brandingValue:", this.user, isPremium, brandingValue);
286
-
287
-
288
- // show branding if user is free or flag is on
289
- if (brandingValue != "off") window.initBranding();
290
- }
291
-
292
- _onSkinSet(skin) {
293
- this._skin = skin;
294
- if (!this.widgetController) return;
295
- this.widgetController.setSkin(this._skin);
296
- }
297
-
298
- _onContentCleared() {
299
- if (!this.widgetController) return;
300
- this.widgetController.clearContent();
301
- }
302
-
303
- _onContentAdded(item) {
304
- if (!this.widgetController) return;
305
- this.widgetController.addContent(item);
306
- }
307
-
308
- _onPublicApiCalled(data) {
309
- if (!this.widgetController) throw new Error('The widget is not ready yet.');
310
- if (!this.widgetController.getPublicMethods)
311
- throw new Error('The widget does not support public api calls.');
312
-
313
- const publicMethods = this.widgetController.getPublicMethods();
314
- const widget = this.widgetController.widget;
315
-
316
- if (publicMethods.indexOf(data.method) === -1 || !(data.method in widget))
317
- throw new Error(
318
- 'The widget does not support method `' + data.method + '`.'
319
- );
320
-
321
- try {
322
- const result = widget[data.method].apply(widget, data.args);
323
- messenger.replyPublicApiCall(data.id, null, result);
324
- } catch (e) {
325
- messenger.replyPublicApiCall(data.id, {
326
- message: e.message,
327
- stack: e.stack,
328
- });
329
- }
330
- }
331
- }
@@ -1,178 +0,0 @@
1
-
2
- Model = window.require 'spine/model'
3
- AjaxMixin = require '../../api/mixin'
4
-
5
- Skin = require './skin'
6
- Widget = require './widget'
7
- Content = require './content'
8
-
9
- _loadWidget = (composition) ->
10
- return Widget.load(composition.widget_id).then(-> return composition)
11
-
12
- # A composition is a collection of a skin and content for a widget
13
- class Composition extends Model
14
- @extend AjaxMixin
15
- @configure(
16
- "Composition",
17
- 'name',
18
- 'content',
19
- 'bulk_content',
20
- 'skin_id',
21
- 'widget_id'
22
- 'width',
23
- 'height',
24
- 'widget_category',
25
- 'user_id',
26
- 'metadata'
27
- )
28
-
29
- @fetch @ajaxFetch
30
-
31
- constructor:(atts={})->
32
- atts.name or= 'Untitled Composition'
33
- atts.width or= 500
34
- atts.height or= 500
35
- super atts
36
-
37
- opts: => @_opts or=
38
- min: (min = @contentMeta().options?.min)? and min or 1
39
- max: (max = @contentMeta().options?.max)? and max or 999
40
-
41
- minErrorMsg: =>
42
- @contentMeta().options.notification.min or 'Please add at least one item!'
43
-
44
- maxErrorMsg: =>
45
- @contentMeta().options.notification.max or 'You reached the maximum number of items!'
46
-
47
- maxFreeErrorMsg: =>
48
- 'Upgrade to add more items, and get more features!'
49
-
50
- toJSON: ->
51
- result = super
52
- result.content = @getContent() unless result.content
53
- result.bulk_content = @bulkContent().toJSON?() if @contentMeta().bulkEditor
54
- return result
55
-
56
- changeID: (id) ->
57
- oldId = @id
58
- super
59
- Content.findAllByAttribute('composition_id', oldId).forEach (c) => c.updateAttribute 'composition_id', @id, { attribute: 'composition_id' }
60
-
61
- validateLength: (options = {}) ->
62
- valid = @hasEnoughContent()
63
- error = !valid and (if @maxContentReached() then 'max' else 'min')
64
- errorMsg = @[error+'ErrorMsg']?()
65
-
66
- {valid, error, errorMsg}
67
-
68
- getWidget: ->
69
- throw new Error('This composition is missing the widget_id.') unless @widget_id
70
- try
71
- return (require './widget').find(@widget_id)
72
- catch e
73
- throw new Error("The widget #{@widget_id} is not loaded")
74
-
75
- setWidgetId: (@widget_id) ->
76
- @save({ajax: false})
77
- @
78
-
79
- getSkin: ->
80
- try
81
- return Skin.find(@skin_id)
82
- catch e
83
- return false
84
-
85
- getContent: (filter = (c) -> !c._isDemoContent) ->
86
- return Content
87
- .findAllByAttribute('composition_id', @id)
88
- .filter(filter)
89
- .sort (a, b)-> a.order - b.order
90
-
91
- contentMeta: ->
92
- widget = @getWidget()
93
- return widget?.contentMeta
94
-
95
- bulkContent: =>
96
- return @_bkc if @_bkc?
97
- _meta = @contentMeta()
98
- attributes = {}
99
- attributes[attr] = _meta.attributes[attr] for attr in _meta.bulkEditor.attributes
100
- _meta = $.extend {}, _meta, {attributes}
101
-
102
- @bulk_content = $.extend @bulk_content or {}, {_meta, composition_id: 1}
103
- @_bkc = Content.refresh(@bulk_content)[0]
104
-
105
- ###
106
- Test if the composition has less than maximum content
107
- ###
108
- maxContentReached: (max = @opts().max) ->
109
- @getContent().length >= max
110
-
111
- hasEnoughContent: ->
112
- @opts().min <= @getContent().length <= @opts().max
113
-
114
- persist: ->
115
- @_stopListen()
116
-
117
- if @isPersisted()
118
- promise = @ajax().update()
119
- else
120
- promise = @ajax().create()
121
-
122
- promise.then @listen
123
-
124
- isPersisted: ->
125
- return @id.slice(0, 1) isnt 'c'
126
-
127
- listen: =>
128
- @_stopListen()
129
- @listenTo Content, 'change', @_onContentChange
130
- @
131
-
132
- _stopListen: ->
133
- @stopListening Content, 'change', @_onContentChange
134
- @
135
-
136
- embed:->
137
- "<span>&lt;script async src=&quot;http://blogvio.com/embedder.js&quot;</span><br/> <span>data-blogvio-composition=&quot;#{@id}&quot;</span><br/> "+
138
- "<span>data-width=&quot;#{@width}&quot; data-height=&quot;#{@height}&quot;&gt;&lt;/script&gt;</span>"
139
-
140
- _metadata: (key, value, options = {}) =>
141
- return @metadata or= {} unless key?
142
- return @_metadata()[key] unless value?
143
- @_metadata()[key] = value
144
- options.attribute = 'metadata'
145
- @updateAttribute 'metadata', @metadata, options
146
-
147
- @load: (id) ->
148
- hasLoaded = Blogvio.Aye.defer()
149
-
150
- process = Blogvio.Aye.defer()
151
- process.promise
152
- .then(_loadWidget)
153
- .then((composition) -> composition._stopListen())
154
- .then((composition) -> composition.listen(); composition)
155
- .fail(hasLoaded.reject)
156
- .then(hasLoaded.resolve)
157
-
158
- try
159
- process.resolve(Composition.find(id))
160
- catch e
161
- @ajax()
162
- .fetch({id})
163
- .then((compositions) -> compositions[0])
164
- .then(process.resolve)
165
- .fail(process.reject)
166
-
167
- return hasLoaded.promise
168
-
169
- _onContentChange: (model, type, options) =>
170
- # return if type is 'update'
171
- @updateAttribute('content', @getContent(), {ajax: false})
172
-
173
- Composition.bind 'destroy',(item)->
174
- try
175
- skin = Skin.find item.skin_id
176
- skin?.used()
177
-
178
- module.exports = Composition