@widgetic/editor 3.11.4 → 4.0.2
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.
- package/README.md +245 -0
- package/dist/assets/fonts.json +331 -0
- package/dist/assets/icons/ic-browser/audio.svg +7 -0
- package/dist/assets/icons/ic-browser/document.svg +11 -0
- package/dist/assets/icons/ic-browser/error.svg +5 -0
- package/dist/assets/icons/ic-browser/folder.svg +28 -0
- package/dist/assets/icons/ic-browser/player-pause.svg +1 -0
- package/dist/assets/icons/ic-browser/player-play.svg +1 -0
- package/dist/assets/icons/ic-browser/trash.svg +1 -0
- package/dist/assets/icons/ic-fixed-position/background-deselected.svg +3 -0
- package/dist/assets/icons/ic-fixed-position/background-selected.svg +3 -0
- package/dist/assets/icons/ic-fixed-position/bottom-left-background-deselected.svg +3 -0
- package/dist/assets/icons/ic-fixed-position/bottom-left-background-selected.svg +3 -0
- package/dist/assets/icons/ic-fixed-position/bottom-left-icon.svg +4 -0
- package/dist/assets/icons/ic-fixed-position/bottom-right-background-deselected.svg +3 -0
- package/dist/assets/icons/ic-fixed-position/bottom-right-background-selected.svg +3 -0
- package/dist/assets/icons/ic-fixed-position/bottom-right-icon.svg +4 -0
- package/dist/assets/icons/ic-fixed-position/center-bottom-icon.svg +5 -0
- package/dist/assets/icons/ic-fixed-position/center-center-icon.svg +3 -0
- package/dist/assets/icons/ic-fixed-position/center-left-icon.svg +5 -0
- package/dist/assets/icons/ic-fixed-position/center-right-icon.svg +5 -0
- package/dist/assets/icons/ic-fixed-position/center-top-icon.svg +5 -0
- package/dist/assets/icons/ic-fixed-position/top-left-background-deselected.svg +3 -0
- package/dist/assets/icons/ic-fixed-position/top-left-background-selected.svg +3 -0
- package/dist/assets/icons/ic-fixed-position/top-left-icon.svg +4 -0
- package/dist/assets/icons/ic-fixed-position/top-right-background-deselected.svg +3 -0
- package/dist/assets/icons/ic-fixed-position/top-right-background-selected.svg +3 -0
- package/dist/assets/icons/ic-fixed-position/top-right-icon.svg +4 -0
- package/dist/assets/icons/trash.svg +1 -0
- package/dist/components/MockWidget.svelte +108 -0
- package/dist/components/MockWidget.svelte.d.ts +22 -0
- package/dist/components/WidgetPreview.svelte +852 -0
- package/dist/components/WidgetPreview.svelte.d.ts +100 -0
- package/dist/components/color-select/ColorSelect.svelte +258 -0
- package/dist/components/color-select/ColorSelect.svelte.d.ts +42 -0
- package/dist/components/color-select/color.d.ts +25 -0
- package/dist/components/color-select/color.js +21 -0
- package/dist/components/color-select/constants.d.ts +5 -0
- package/dist/components/color-select/constants.js +5 -0
- package/dist/components/color-select/render.d.ts +5 -0
- package/dist/components/color-select/render.js +77 -0
- package/dist/components/color-select/shaders.d.ts +3 -0
- package/dist/components/color-select/shaders.js +8 -0
- package/dist/components/editors/EmbedEditor.svelte +700 -0
- package/dist/components/editors/EmbedEditor.svelte.d.ts +50 -0
- package/dist/components/editors/PropsEditor.svelte +4009 -0
- package/dist/components/editors/PropsEditor.svelte.d.ts +62 -0
- package/dist/components/editors/props-editor.css +73 -0
- package/dist/components/ic/AngleInputController.svelte +276 -0
- package/dist/components/ic/AngleInputController.svelte.d.ts +26 -0
- package/dist/components/ic/BrowserInputController.svelte +731 -0
- package/dist/components/ic/BrowserInputController.svelte.d.ts +39 -0
- package/dist/components/ic/CheckboxInputController.svelte +203 -0
- package/dist/components/ic/CheckboxInputController.svelte.d.ts +41 -0
- package/dist/components/ic/ColorPickerInputController.svelte +1584 -0
- package/dist/components/ic/ColorPickerInputController.svelte.d.ts +50 -0
- package/dist/components/ic/DateFieldInputController.svelte +453 -0
- package/dist/components/ic/DateFieldInputController.svelte.d.ts +35 -0
- package/dist/components/ic/DatePickerInputController.svelte +364 -0
- package/dist/components/ic/DatePickerInputController.svelte.d.ts +28 -0
- package/dist/components/ic/DropdownInputController.svelte +226 -0
- package/dist/components/ic/DropdownInputController.svelte.d.ts +43 -0
- package/dist/components/ic/FixedPositionInputController.svelte +353 -0
- package/dist/components/ic/FixedPositionInputController.svelte.d.ts +23 -0
- package/dist/components/ic/FontInputController.svelte +2098 -0
- package/dist/components/ic/FontInputController.svelte.d.ts +47 -0
- package/dist/components/ic/InputControllerHeader.svelte +147 -0
- package/dist/components/ic/InputControllerHeader.svelte.d.ts +23 -0
- package/dist/components/ic/NumberControls.svelte +299 -0
- package/dist/components/ic/NumberControls.svelte.d.ts +30 -0
- package/dist/components/ic/NumberInputController.svelte +397 -0
- package/dist/components/ic/NumberInputController.svelte.d.ts +30 -0
- package/dist/components/ic/PositionInputController.svelte +252 -0
- package/dist/components/ic/PositionInputController.svelte.d.ts +37 -0
- package/dist/components/ic/RadioGroupInputController.svelte +162 -0
- package/dist/components/ic/RadioGroupInputController.svelte.d.ts +38 -0
- package/dist/components/ic/RangeCalendarInputController.svelte +262 -0
- package/dist/components/ic/RangeCalendarInputController.svelte.d.ts +32 -0
- package/dist/components/ic/RoundedCornersInputController.svelte +469 -0
- package/dist/components/ic/RoundedCornersInputController.svelte.d.ts +37 -0
- package/dist/components/ic/SliderInputController.svelte +411 -0
- package/dist/components/ic/SliderInputController.svelte.d.ts +46 -0
- package/dist/components/ic/SliderRangeInputController.svelte +155 -0
- package/dist/components/ic/SliderRangeInputController.svelte.d.ts +33 -0
- package/dist/components/ic/SwitchInputController.svelte +107 -0
- package/dist/components/ic/SwitchInputController.svelte.d.ts +24 -0
- package/dist/components/ic/TagsInputController.svelte +125 -0
- package/dist/components/ic/TagsInputController.svelte.d.ts +27 -0
- package/dist/components/ic/TextAreaInputController.svelte +1932 -0
- package/dist/components/ic/TextAreaInputController.svelte.d.ts +14 -0
- package/dist/components/ic/TextAreaPreviewInputController.svelte +478 -0
- package/dist/components/ic/TextAreaPreviewInputController.svelte.d.ts +28 -0
- package/dist/components/ic/TextInputController.svelte +70 -0
- package/dist/components/ic/TextInputController.svelte.d.ts +30 -0
- package/dist/components/ic/TimeInputController.svelte +434 -0
- package/dist/components/ic/TimeInputController.svelte.d.ts +25 -0
- package/dist/components/ic/VectorInputController.svelte +1826 -0
- package/dist/components/ic/VectorInputController.svelte.d.ts +47 -0
- package/dist/components/ic/index.d.ts +39 -0
- package/dist/components/ic/index.js +24 -0
- package/dist/components/ic/shared/CategoryTabs.svelte +40 -0
- package/dist/components/ic/shared/CategoryTabs.svelte.d.ts +25 -0
- package/dist/components/ic/shared/ItemGrid.svelte +181 -0
- package/dist/components/ic/shared/ItemGrid.svelte.d.ts +35 -0
- package/dist/components/ic/shared/RecentItemsSection.svelte +260 -0
- package/dist/components/ic/shared/RecentItemsSection.svelte.d.ts +35 -0
- package/dist/components/ic/shared/index.d.ts +8 -0
- package/dist/components/ic/shared/index.js +9 -0
- package/dist/components/icons/addnew.svelte +21 -0
- package/dist/components/icons/addnew.svelte.d.ts +20 -0
- package/dist/components/icons/drag.svelte +29 -0
- package/dist/components/icons/drag.svelte.d.ts +20 -0
- package/dist/components/icons/drag.svg +1 -0
- package/dist/components/icons/locked.svelte +4 -0
- package/dist/components/icons/locked.svelte.d.ts +26 -0
- package/dist/components/icons/locked.svg +4 -0
- package/dist/components/icons/ok.svelte +20 -0
- package/dist/components/icons/ok.svelte.d.ts +20 -0
- package/dist/components/icons/ok.svg +11 -0
- package/dist/components/icons/unlocked.svelte +4 -0
- package/dist/components/icons/unlocked.svelte.d.ts +26 -0
- package/dist/components/icons/unlocked.svg +4 -0
- package/dist/components/icons/x.svelte +14 -0
- package/dist/components/icons/x.svelte.d.ts +20 -0
- package/dist/components/icons/x.svg +5 -0
- package/dist/components/ui/arrows/OpacitySliderArrows.svelte +43 -0
- package/dist/components/ui/arrows/OpacitySliderArrows.svelte.d.ts +23 -0
- package/dist/components/ui/checkerboard-background/CheckerboardBackground.svelte +15 -0
- package/dist/components/ui/checkerboard-background/CheckerboardBackground.svelte.d.ts +20 -0
- package/dist/config.d.ts +11 -0
- package/dist/config.js +31 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +9 -0
- package/dist/stores/userSession.d.ts +7 -0
- package/dist/stores/userSession.js +28 -0
- package/dist/utils/FontManager.d.ts +278 -0
- package/dist/utils/FontManager.js +1302 -0
- package/dist/utils/MediaManager.d.ts +35 -0
- package/dist/utils/MediaManager.js +59 -0
- package/dist/utils/VectorManager.d.ts +190 -0
- package/dist/utils/VectorManager.js +754 -0
- package/dist/utils/colorAutocomplete.d.ts +10 -0
- package/dist/utils/colorAutocomplete.js +28 -0
- package/dist/utils/colorNames.d.ts +3 -0
- package/dist/utils/colorNames.js +152 -0
- package/dist/utils/colorTransparency.d.ts +52 -0
- package/dist/utils/colorTransparency.js +114 -0
- package/dist/utils/fontUtils.d.ts +34 -0
- package/dist/utils/fontUtils.js +132 -0
- package/dist/utils/passiveEvents.js +20 -0
- package/dist/utils/recentColors.d.ts +10 -0
- package/dist/utils/recentColors.js +63 -0
- package/dist/utils/skipFonts.d.ts +3 -0
- package/dist/utils/skipFonts.js +49 -0
- package/dist/utils/vectorUtils.d.ts +34 -0
- package/dist/utils/vectorUtils.js +71 -0
- package/dist/utils.d.ts +11 -0
- package/dist/utils.js +38 -0
- package/package.json +134 -74
- package/.babelrc +0 -10
- package/.bowerrc +0 -4
- package/.nvmrc +0 -1
- package/Gruntfile.coffee +0 -69
- package/bower.json +0 -28
- package/css/browser/entries/activateable.styl +0 -29
- package/css/browser/entries/audio.styl +0 -39
- package/css/browser/entries/folder.styl +0 -79
- package/css/browser/entries/image.styl +0 -26
- package/css/browser/entries/index.styl +0 -66
- package/css/browser/entries/rss.styl +0 -11
- package/css/browser/entries/video.styl +0 -11
- package/css/browser/index.styl +0 -86
- package/css/browser/intent/index.styl +0 -61
- package/css/browser/nav/index.styl +0 -73
- package/css/browser/social-browser.styl +0 -23
- package/css/controls/clock.styl +0 -110
- package/css/controls/config.styl +0 -6
- package/css/controls/control-audio-details.styl +0 -63
- package/css/controls/control-audio.styl +0 -28
- package/css/controls/control-browser.styl +0 -48
- package/css/controls/control-color.styl +0 -423
- package/css/controls/control-date_time.styl +0 -191
- package/css/controls/control-dropdown.styl +0 -79
- package/css/controls/control-font.styl +0 -147
- package/css/controls/control-image-details.styl +0 -35
- package/css/controls/control-image.styl +0 -43
- package/css/controls/control-order-picker.styl +0 -29
- package/css/controls/control-position.styl +0 -390
- package/css/controls/control-range.styl +0 -68
- package/css/controls/control-scale.styl +0 -30
- package/css/controls/control-slider.styl +0 -38
- package/css/controls/control-spinner.styl +0 -39
- package/css/controls/control-textarea.styl +0 -52
- package/css/controls/control-toggle.styl +0 -34
- package/css/controls/control-url.styl +0 -32
- package/css/controls/control-video-details.styl +0 -85
- package/css/controls/control-video.styl +0 -43
- package/css/controls/general.styl +0 -98
- package/css/controls/index.styl +0 -25
- package/css/editor/colors.styl +0 -7
- package/css/editor/content/directinput.styl +0 -47
- package/css/editor/content/index.styl +0 -111
- package/css/editor/content/message.styl +0 -53
- package/css/editor/content/tabs.styl +0 -75
- package/css/editor/copied-from-old-style.styl +0 -197
- package/css/editor/details/bulk-editor.styl +0 -104
- package/css/editor/details/index.styl +0 -21
- package/css/editor/details/item.styl +0 -153
- package/css/editor/embed.styl +0 -106
- package/css/editor/footer.styl +0 -180
- package/css/editor/full-editor.styl +0 -16
- package/css/editor/index.styl +0 -124
- package/css/editor/login-popup.styl +0 -13
- package/css/editor/preview.styl +0 -257
- package/css/editor/skin/editor/index.styl +0 -54
- package/css/editor/skin/editor/tabs.styl +0 -111
- package/css/editor/skin/index.styl +0 -138
- package/css/editor/skin/popup.styl +0 -152
- package/css/editor/skin/presets/dropdown.styl +0 -61
- package/css/editor/skin/presets/index.styl +0 -86
- package/css/editor/skin/presets/list.styl +0 -244
- package/css/editor/tooltips.styl +0 -85
- package/css/fonts.styl +0 -47
- package/css/icons/BlogvioEditor.dev.svg +0 -112
- package/css/icons.styl +0 -16
- package/css/img/arrow-right-rounded-v-small.png +0 -0
- package/css/img/browser-folder-separator.png +0 -0
- package/css/img/calendar-input-icons.png +0 -0
- package/css/img/check.png +0 -0
- package/css/img/close.png +0 -0
- package/css/img/composition/edit-icon.png +0 -0
- package/css/img/content/audio-icon.png +0 -0
- package/css/img/content/folder-icon.png +0 -0
- package/css/img/content/messages/error-background.png +0 -0
- package/css/img/content/messages/error-icon.png +0 -0
- package/css/img/content/messages/notification-background.png +0 -0
- package/css/img/content/messages/notification-icon.png +0 -0
- package/css/img/content/no-files-audio.png +0 -0
- package/css/img/content/no-files-image.png +0 -0
- package/css/img/content/no-files-video.png +0 -0
- package/css/img/content/no-files.png +0 -0
- package/css/img/content/rss-icon.png +0 -0
- package/css/img/content/selected.png +0 -0
- package/css/img/content/video-icon.png +0 -0
- package/css/img/content/with-control-text.png +0 -0
- package/css/img/control-dropdown-arrow.png +0 -0
- package/css/img/control-image-valid.png +0 -0
- package/css/img/control-position-icon.png +0 -0
- package/css/img/control-scale-lock-icon.png +0 -0
- package/css/img/control-slider-arrows-hover.png +0 -0
- package/css/img/control-slider-arrows.png +0 -0
- package/css/img/control-spinner-buttons-hover.png +0 -0
- package/css/img/control-spinner-buttons.png +0 -0
- package/css/img/control-textarea-bold-active.png +0 -0
- package/css/img/control-textarea-bold.png +0 -0
- package/css/img/control-textarea-italic-active.png +0 -0
- package/css/img/control-textarea-italic.png +0 -0
- package/css/img/control-textarea-underline-active.png +0 -0
- package/css/img/control-textarea-underline.png +0 -0
- package/css/img/custom-checkbox-sprite.png +0 -0
- package/css/img/details/item-collapse-icon.png +0 -0
- package/css/img/details/item-expand-icon.png +0 -0
- package/css/img/details/item-sort-icon.png +0 -0
- package/css/img/done-arrow.png +0 -0
- package/css/img/fb-logo-icon-w.png +0 -0
- package/css/img/grid-icons.png +0 -0
- package/css/img/icon-reference.png +0 -0
- package/css/img/indicator.png +0 -0
- package/css/img/loader.gif +0 -0
- package/css/img/loaders/audio-white.png +0 -0
- package/css/img/loaders/audio.png +0 -0
- package/css/img/loaders/photo-white.png +0 -0
- package/css/img/loaders/photo.png +0 -0
- package/css/img/loaders/util-white.png +0 -0
- package/css/img/loaders/util.png +0 -0
- package/css/img/loaders/video-white.png +0 -0
- package/css/img/loaders/video.png +0 -0
- package/css/img/maximize.png +0 -0
- package/css/img/minimize.png +0 -0
- package/css/img/next-btn.png +0 -0
- package/css/img/search-icon-sprite.png +0 -0
- package/css/img/services/blogvio.png +0 -0
- package/css/img/services/drive.png +0 -0
- package/css/img/services/dropbox-login.png +0 -0
- package/css/img/services/dropbox.png +0 -0
- package/css/img/services/facebook-login.png +0 -0
- package/css/img/services/facebook.png +0 -0
- package/css/img/services/flickr-login.png +0 -0
- package/css/img/services/flickr.png +0 -0
- package/css/img/services/instagram-login.png +0 -0
- package/css/img/services/instagram.png +0 -0
- package/css/img/services/text.png +0 -0
- package/css/img/services/uploads.png +0 -0
- package/css/img/services/uploads.svg +0 -689
- package/css/img/services/webaddress-bw.png +0 -0
- package/css/img/services/webaddress.png +0 -0
- package/css/img/services/webadress.png +0 -0
- package/css/img/services/websearch.png +0 -0
- package/css/img/services/wix.png +0 -0
- package/css/img/skin/item-active-indicator.png +0 -0
- package/css/img/skin/item-hover-icon.png +0 -0
- package/css/img/skin/overwrite.png +0 -0
- package/css/img/skin/popup-name-icon.png +0 -0
- package/css/img/skin/popup-save.png +0 -0
- package/css/img/skin/preset.png +0 -0
- package/css/img/skin/presets-arrow-purple.png +0 -0
- package/css/img/tw-icon-w.png +0 -0
- package/css/img/warning.png +0 -0
- package/css/img/white-rounded-check.png +0 -0
- package/css/index.styl +0 -9
- package/css/mixins.styl +0 -62
- package/css/scrollable.styl +0 -101
- package/karma.conf.js +0 -73
- package/lib/control.js +0 -1
- package/lib/controls.js +0 -1
- package/lib/core.editor.js +0 -4
- package/lib/core.js +0 -1
- package/lib/core.vendor.js +0 -3
- package/lib/dev/control.js +0 -845
- package/lib/dev/controls.js +0 -7774
- package/lib/dev/core.editor.js +0 -6439
- package/lib/dev/core.js +0 -1486
- package/lib/dev/core.vendor.js +0 -10708
- package/lib/dev/editor.css +0 -166
- package/lib/dev/editor.js +0 -29710
- package/lib/dev/editor.vendor.js +0 -15119
- package/lib/dev/jquery.nanoscroller.js.map +0 -10
- package/lib/editor.css +0 -167
- package/lib/editor.js +0 -49
- package/lib/editor.vendor.js +0 -11
- package/src/api/index.coffee +0 -23
- package/src/api/mixin.coffee +0 -89
- package/src/browser/controller/entry/audio.coffee +0 -38
- package/src/browser/controller/entry/button.coffee +0 -16
- package/src/browser/controller/entry/file.coffee +0 -35
- package/src/browser/controller/entry/folder.coffee +0 -14
- package/src/browser/controller/entry/image.coffee +0 -24
- package/src/browser/controller/entry/index.coffee +0 -18
- package/src/browser/controller/entry/rss.coffee +0 -5
- package/src/browser/controller/entry/video.coffee +0 -4
- package/src/browser/controller/index.coffee +0 -289
- package/src/browser/controller/instagram.coffee +0 -129
- package/src/browser/controller/navbar.coffee +0 -48
- package/src/browser/controller/social.coffee +0 -213
- package/src/browser/model/entry.coffee +0 -18
- package/src/browser/model/index.coffee +0 -34
- package/src/core/controller/font-loader.coffee +0 -65
- package/src/core/controller/lazyload.coffee +0 -14
- package/src/core/controller/overlay.coffee +0 -146
- package/src/core/controller/popup.coffee +0 -36
- package/src/core/controller/scrollable.coffee +0 -68
- package/src/core/controls/audio.coffee +0 -56
- package/src/core/controls/browser.coffee +0 -271
- package/src/core/controls/color.coffee +0 -121
- package/src/core/controls/date-time/calendar/index.coffee +0 -99
- package/src/core/controls/date-time/calendar/months.coffee +0 -52
- package/src/core/controls/date-time/calendar/years.coffee +0 -58
- package/src/core/controls/date-time/clock.coffee +0 -62
- package/src/core/controls/date-time/helper.coffee +0 -31
- package/src/core/controls/date-time/index.coffee +0 -62
- package/src/core/controls/date-time/popup.coffee +0 -56
- package/src/core/controls/details/audio.coffee +0 -33
- package/src/core/controls/details/image.coffee +0 -19
- package/src/core/controls/details/video.coffee +0 -14
- package/src/core/controls/dropdown.coffee +0 -100
- package/src/core/controls/font/font-item.coffee +0 -22
- package/src/core/controls/font/font-list.coffee +0 -108
- package/src/core/controls/font/fonts-popup.coffee +0 -91
- package/src/core/controls/font/index.coffee +0 -66
- package/src/core/controls/image.coffee +0 -37
- package/src/core/controls/index.coffee +0 -88
- package/src/core/controls/orderPicker.coffee +0 -93
- package/src/core/controls/position/grid-panel.coffee +0 -75
- package/src/core/controls/position/index.coffee +0 -98
- package/src/core/controls/position/panel.coffee +0 -68
- package/src/core/controls/position/pixel-panel.coffee +0 -54
- package/src/core/controls/position/popup.coffee +0 -63
- package/src/core/controls/position/reference-panel.coffee +0 -26
- package/src/core/controls/range.coffee +0 -191
- package/src/core/controls/rss.coffee +0 -16
- package/src/core/controls/scale.coffee +0 -78
- package/src/core/controls/slider.coffee +0 -122
- package/src/core/controls/stepper.coffee +0 -97
- package/src/core/controls/text.coffee +0 -54
- package/src/core/controls/textarea.coffee +0 -78
- package/src/core/controls/toggle.coffee +0 -29
- package/src/core/controls/url.coffee +0 -88
- package/src/core/controls/video.coffee +0 -9
- package/src/core/embed/api.js +0 -178
- package/src/core/embed/controller.js +0 -331
- package/src/core/models/composition.coffee +0 -178
- package/src/core/models/content.coffee +0 -79
- package/src/core/models/skin.coffee +0 -91
- package/src/core/models/user.coffee +0 -6
- package/src/core/models/widget.coffee +0 -88
- package/src/core/router/index.coffee +0 -44
- package/src/core/services/container/index.js +0 -18
- package/src/core/services/container/instance.js +0 -3
- package/src/core/services/content.js +0 -80
- package/src/core/services/instagram.coffee +0 -47
- package/src/core/services/mixin/events.js +0 -17
- package/src/core/services/service.js +0 -1
- package/src/core/services/sounds.js +0 -81
- package/src/core/services/uploads.js +0 -299
- package/src/core/utils/popup.coffee +0 -67
- package/src/core/utils/should-show.coffee +0 -12
- package/src/core/views/audio-details.pug +0 -9
- package/src/core/views/audio.pug +0 -7
- package/src/core/views/browser.pug +0 -4
- package/src/core/views/color.pug +0 -8
- package/src/core/views/date-time/calendar.pug +0 -3
- package/src/core/views/date-time/clock.pug +0 -12
- package/src/core/views/date-time/grid.pug +0 -6
- package/src/core/views/date-time/input.pug +0 -4
- package/src/core/views/date-time/table.pug +0 -6
- package/src/core/views/dropdown.pug +0 -9
- package/src/core/views/font/font-item.pug +0 -3
- package/src/core/views/font/fonts-list.pug +0 -7
- package/src/core/views/font/fonts-popup.pug +0 -5
- package/src/core/views/font/index.pug +0 -7
- package/src/core/views/image-details.pug +0 -6
- package/src/core/views/image.pug +0 -5
- package/src/core/views/input-layout.pug +0 -15
- package/src/core/views/order-items.pug +0 -7
- package/src/core/views/order-picker.pug +0 -7
- package/src/core/views/pixelpanel.pug +0 -69
- package/src/core/views/position.pug +0 -10
- package/src/core/views/range.pug +0 -9
- package/src/core/views/scale.pug +0 -7
- package/src/core/views/slider.pug +0 -6
- package/src/core/views/stepper.pug +0 -6
- package/src/core/views/text.pug +0 -4
- package/src/core/views/textarea.pug +0 -8
- package/src/core/views/toggle.pug +0 -5
- package/src/core/views/video-details.pug +0 -7
- package/src/core/views/video.pug +0 -4
- package/src/core/widget/index.coffee +0 -66
- package/src/editor/content/browser/dropzone.html +0 -268
- package/src/editor/content/browser/file.html +0 -124
- package/src/editor/content/browser/scroll-pane.html +0 -32
- package/src/editor/content/browser/service.html +0 -53
- package/src/editor/content/browser/upload.coffee +0 -44
- package/src/editor/content/browser/upload.html +0 -439
- package/src/editor/content/index.coffee +0 -294
- package/src/editor/content/input/field.coffee +0 -45
- package/src/editor/content/input/index.coffee +0 -115
- package/src/editor/content/service/base/photoitem.coffee +0 -49
- package/src/editor/content/service/cache.coffee +0 -20
- package/src/editor/content/service/default.coffee +0 -59
- package/src/editor/content/service/dropbox.coffee +0 -71
- package/src/editor/content/service/facebook.coffee +0 -143
- package/src/editor/content/service/flickr.coffee +0 -85
- package/src/editor/content/service/google-drive-sdk.coffee +0 -18
- package/src/editor/content/service/google-drive.coffee +0 -144
- package/src/editor/content/service/instagram-social.coffee +0 -84
- package/src/editor/content/service/instagram.coffee +0 -168
- package/src/editor/content/service/share-popup.coffee +0 -15
- package/src/editor/content/service/soundcloud.coffee +0 -163
- package/src/editor/content/tab.coffee +0 -27
- package/src/editor/details/bulk-editor/attributes-panel.coffee +0 -11
- package/src/editor/details/bulk-editor/index.coffee +0 -86
- package/src/editor/details/index.coffee +0 -156
- package/src/editor/details/item/attributes.coffee +0 -45
- package/src/editor/details/item/index.coffee +0 -82
- package/src/editor/editor.coffee +0 -274
- package/src/editor/footer/breadcrumb.coffee +0 -17
- package/src/editor/footer/index.coffee +0 -36
- package/src/editor/index.coffee +0 -79
- package/src/editor/listeners/embed-listener.coffee +0 -143
- package/src/editor/login-popup.coffee +0 -29
- package/src/editor/notification-controller.coffee +0 -35
- package/src/editor/popup.coffee +0 -68
- package/src/editor/remote-preview.coffee +0 -68
- package/src/editor/save/index.coffee +0 -62
- package/src/editor/skin/delete.coffee +0 -33
- package/src/editor/skin/editor/index.coffee +0 -188
- package/src/editor/skin/editor/panel.coffee +0 -37
- package/src/editor/skin/index.coffee +0 -126
- package/src/editor/skin/save.coffee +0 -58
- package/src/editor/skin/selector/index.coffee +0 -59
- package/src/editor/skin/selector/item.coffee +0 -123
- package/src/editor/skin/selector/list.coffee +0 -97
- package/src/editor/views/embed.pug +0 -10
- package/src/editor/views/loginbutton.pug +0 -8
- package/src/editor/views/popup.pug +0 -17
- package/src/editor/views/presets.pug +0 -8
- package/src/editor/views/presetslist-header.pug +0 -8
- package/src/editor/views/skinitem.pug +0 -13
- package/src/modules/control.js +0 -3
- package/src/modules/controls.js +0 -29
- package/src/modules/core.js +0 -19
- package/src/modules/editor.js +0 -80
- package/test/config.js +0 -3
- package/test/core/models/skin-spec.js +0 -209
- package/webpack.config.js +0 -46
- package/webpack.config.prod.js +0 -9
- /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
|