@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
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: Props & {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
11
|
+
};
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
13
|
+
}
|
|
14
|
+
declare const VectorInputController: $$__sveltets_2_IsomorphicComponent<{
|
|
15
|
+
/**
|
|
16
|
+
* Component Props
|
|
17
|
+
* @prop {string} label - Display label for the vector selector
|
|
18
|
+
* @prop {string} value - Currently selected vector
|
|
19
|
+
* @prop {Function} onChange - Callback when vector selection changes
|
|
20
|
+
* @prop {string} description - Optional help text
|
|
21
|
+
* @prop {string} controllerId - Unique identifier for this controller
|
|
22
|
+
* @prop {any} openDropdowns - Store tracking open dropdown states
|
|
23
|
+
* @prop {Function} toggleDropdown - Function to toggle dropdown state
|
|
24
|
+
* @prop {Function} onFocus - Optional focus handler
|
|
25
|
+
*/ label: string;
|
|
26
|
+
value?: {
|
|
27
|
+
name: string;
|
|
28
|
+
category: string;
|
|
29
|
+
url: string;
|
|
30
|
+
} | null;
|
|
31
|
+
onChange?: ((newValue: {
|
|
32
|
+
name: string;
|
|
33
|
+
category: string;
|
|
34
|
+
url: string;
|
|
35
|
+
} | null) => void) | undefined;
|
|
36
|
+
description?: string | undefined;
|
|
37
|
+
controllerId: string;
|
|
38
|
+
openDropdowns: any;
|
|
39
|
+
toggleDropdown: (id: string) => void;
|
|
40
|
+
onFocus?: () => void;
|
|
41
|
+
hideRecentFromList?: boolean;
|
|
42
|
+
hideTrashIcon?: boolean;
|
|
43
|
+
}, {
|
|
44
|
+
[evt: string]: CustomEvent<any>;
|
|
45
|
+
}, {}, {}, string>;
|
|
46
|
+
type VectorInputController = InstanceType<typeof VectorInputController>;
|
|
47
|
+
export default VectorInputController;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export { default as DropdownInputController } from './DropdownInputController.svelte';
|
|
2
|
+
export { default as DatePickerInputController } from './DatePickerInputController.svelte';
|
|
3
|
+
export { default as SliderInputController } from './SliderInputController.svelte';
|
|
4
|
+
export { default as FontInputController } from './FontInputController.svelte';
|
|
5
|
+
export { default as SwitchInputController } from './SwitchInputController.svelte';
|
|
6
|
+
export { default as TextInputController } from './TextInputController.svelte';
|
|
7
|
+
export { default as TextAreaInputController } from './TextAreaInputController.svelte';
|
|
8
|
+
export { default as TextAreaPreviewInputController } from './TextAreaPreviewInputController.svelte';
|
|
9
|
+
export { default as RangeCalendarInputController } from './RangeCalendarInputController.svelte';
|
|
10
|
+
export { default as BrowserInputController } from './BrowserInputController.svelte';
|
|
11
|
+
export { default as NumberInputController } from './NumberInputController.svelte';
|
|
12
|
+
export { default as PositionInputController } from './PositionInputController.svelte';
|
|
13
|
+
export { default as ColorPickerInputController } from './ColorPickerInputController.svelte';
|
|
14
|
+
export { default as CheckboxInputController } from './CheckboxInputController.svelte';
|
|
15
|
+
export { default as RadioGroupInputController } from './RadioGroupInputController.svelte';
|
|
16
|
+
export { default as SliderRangeInputController } from './SliderRangeInputController.svelte';
|
|
17
|
+
export { default as FixedPositionInputController } from './FixedPositionInputController.svelte';
|
|
18
|
+
export { default as VectorInputController } from './VectorInputController.svelte';
|
|
19
|
+
export { default as AngleInputController } from './AngleInputController.svelte';
|
|
20
|
+
export { default as InputControllerHeader } from './InputControllerHeader.svelte';
|
|
21
|
+
export { default as TimeInputController } from './TimeInputController.svelte';
|
|
22
|
+
export { default as RoundedCornersInputController } from './RoundedCornersInputController.svelte';
|
|
23
|
+
export { default as TagsInputController } from './TagsInputController.svelte';
|
|
24
|
+
export { default as DateFieldInputController } from './DateFieldInputController.svelte';
|
|
25
|
+
export interface InputControllerConfig {
|
|
26
|
+
placeholder?: string;
|
|
27
|
+
min?: number;
|
|
28
|
+
max?: number;
|
|
29
|
+
step?: number;
|
|
30
|
+
options?: Array<{
|
|
31
|
+
value: string;
|
|
32
|
+
label: string;
|
|
33
|
+
}>;
|
|
34
|
+
fileTypes?: string[];
|
|
35
|
+
showOpacityControls?: boolean;
|
|
36
|
+
defaultTransparency?: number;
|
|
37
|
+
textColor?: string;
|
|
38
|
+
format?: string;
|
|
39
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export { default as DropdownInputController } from './DropdownInputController.svelte';
|
|
2
|
+
export { default as DatePickerInputController } from './DatePickerInputController.svelte';
|
|
3
|
+
export { default as SliderInputController } from './SliderInputController.svelte';
|
|
4
|
+
export { default as FontInputController } from './FontInputController.svelte';
|
|
5
|
+
export { default as SwitchInputController } from './SwitchInputController.svelte';
|
|
6
|
+
export { default as TextInputController } from './TextInputController.svelte';
|
|
7
|
+
export { default as TextAreaInputController } from './TextAreaInputController.svelte';
|
|
8
|
+
export { default as TextAreaPreviewInputController } from './TextAreaPreviewInputController.svelte';
|
|
9
|
+
export { default as RangeCalendarInputController } from './RangeCalendarInputController.svelte';
|
|
10
|
+
export { default as BrowserInputController } from './BrowserInputController.svelte';
|
|
11
|
+
export { default as NumberInputController } from './NumberInputController.svelte';
|
|
12
|
+
export { default as PositionInputController } from './PositionInputController.svelte';
|
|
13
|
+
export { default as ColorPickerInputController } from './ColorPickerInputController.svelte';
|
|
14
|
+
export { default as CheckboxInputController } from './CheckboxInputController.svelte';
|
|
15
|
+
export { default as RadioGroupInputController } from './RadioGroupInputController.svelte';
|
|
16
|
+
export { default as SliderRangeInputController } from './SliderRangeInputController.svelte';
|
|
17
|
+
export { default as FixedPositionInputController } from './FixedPositionInputController.svelte';
|
|
18
|
+
export { default as VectorInputController } from './VectorInputController.svelte';
|
|
19
|
+
export { default as AngleInputController } from './AngleInputController.svelte';
|
|
20
|
+
export { default as InputControllerHeader } from './InputControllerHeader.svelte';
|
|
21
|
+
export { default as TimeInputController } from './TimeInputController.svelte';
|
|
22
|
+
export { default as RoundedCornersInputController } from './RoundedCornersInputController.svelte';
|
|
23
|
+
export { default as TagsInputController } from './TagsInputController.svelte';
|
|
24
|
+
export { default as DateFieldInputController } from './DateFieldInputController.svelte';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* CategoryTabs Component
|
|
3
|
+
* A simplified, reusable component for displaying and switching between categories
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Displays a list of categories as tabs
|
|
7
|
+
* - Handles category selection
|
|
8
|
+
* - Shows the active category with different styling
|
|
9
|
+
* - Uses Widgetic design system styling
|
|
10
|
+
-->
|
|
11
|
+
<script lang="ts">
|
|
12
|
+
// Props
|
|
13
|
+
export let categories: any[] = [];
|
|
14
|
+
export let activeCategory: any = null;
|
|
15
|
+
export let onCategorySelect: (category: any) => void;
|
|
16
|
+
export let getCategoryKey: (category: any) => string = (cat) => cat?.toString() || '';
|
|
17
|
+
export let getCategoryLabel: (category: any) => string = (cat) => cat?.toString() || '';
|
|
18
|
+
export let filterVisible = true;
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
{#if filterVisible && categories.length > 0}
|
|
22
|
+
<div class="widgetic-colors widgetic-radius bg-white">
|
|
23
|
+
<div class="flex justify-between px-4 pt-[24px] pb-[8px] border-b border-grey2">
|
|
24
|
+
{#each categories as category, index}
|
|
25
|
+
{@const isActive = getCategoryKey(activeCategory) === getCategoryKey(category)}
|
|
26
|
+
<button
|
|
27
|
+
type="button"
|
|
28
|
+
class="cursor-pointer caption transition-colors text-center {
|
|
29
|
+
isActive
|
|
30
|
+
? 'text-grey7'
|
|
31
|
+
: 'text-grey3 hover:text-grey5'
|
|
32
|
+
}"
|
|
33
|
+
onclick={() => onCategorySelect(category)}
|
|
34
|
+
>
|
|
35
|
+
{getCategoryLabel(category)}
|
|
36
|
+
</button>
|
|
37
|
+
{/each}
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
{/if}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: Props & {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
11
|
+
};
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
13
|
+
}
|
|
14
|
+
declare const CategoryTabs: $$__sveltets_2_IsomorphicComponent<{
|
|
15
|
+
categories?: any[];
|
|
16
|
+
activeCategory?: any;
|
|
17
|
+
onCategorySelect: (category: any) => void;
|
|
18
|
+
getCategoryKey?: (category: any) => string;
|
|
19
|
+
getCategoryLabel?: (category: any) => string;
|
|
20
|
+
filterVisible?: boolean;
|
|
21
|
+
}, {
|
|
22
|
+
[evt: string]: CustomEvent<any>;
|
|
23
|
+
}, {}, {}, string>;
|
|
24
|
+
type CategoryTabs = InstanceType<typeof CategoryTabs>;
|
|
25
|
+
export default CategoryTabs;
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* ItemGrid Component
|
|
3
|
+
* A reusable grid component for displaying items
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Displays a grid of items
|
|
7
|
+
* - Infinite scrolling to load more items
|
|
8
|
+
* - Handles item selection
|
|
9
|
+
* - Supports custom item rendering
|
|
10
|
+
* - Optimized with intersection observer
|
|
11
|
+
-->
|
|
12
|
+
<script lang="ts">
|
|
13
|
+
import { Check } from '@widgetic/design-system/icons';
|
|
14
|
+
|
|
15
|
+
export let items: any[] = [];
|
|
16
|
+
export let containerRef: (node: HTMLElement) => void;
|
|
17
|
+
export let onItemSelect: (item: any) => void;
|
|
18
|
+
export let isItemSelected: (item: any) => boolean;
|
|
19
|
+
export let renderItem: (item: any) => { html: string } | string;
|
|
20
|
+
export let getItemKey: (item: any) => string;
|
|
21
|
+
export let observeItem: ((node: HTMLElement) => { destroy: () => void }) | undefined = undefined;
|
|
22
|
+
export let loadingMore = false;
|
|
23
|
+
export let hasMoreItems = false;
|
|
24
|
+
export let loadNextBatch: () => void;
|
|
25
|
+
export let layoutClass = "grid-cols-1";
|
|
26
|
+
export let itemType: 'vector' | 'font' = 'vector';
|
|
27
|
+
|
|
28
|
+
// Handle scroll to load more items
|
|
29
|
+
function handleScroll(e: Event) {
|
|
30
|
+
const target = e.target as HTMLElement;
|
|
31
|
+
if (
|
|
32
|
+
!loadingMore &&
|
|
33
|
+
hasMoreItems &&
|
|
34
|
+
target.scrollHeight - target.scrollTop <= target.clientHeight + 200
|
|
35
|
+
) {
|
|
36
|
+
loadNextBatch();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Render content based on the item
|
|
41
|
+
function renderContent(item: any) {
|
|
42
|
+
const rendered = renderItem(item);
|
|
43
|
+
if (typeof rendered === 'string') {
|
|
44
|
+
return `<span>${rendered}</span>`;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (rendered && typeof rendered === 'object' && 'html' in rendered) {
|
|
48
|
+
return rendered.html;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return '';
|
|
52
|
+
}
|
|
53
|
+
</script>
|
|
54
|
+
|
|
55
|
+
<div
|
|
56
|
+
class="flex-1 overflow-y-auto px-4 widgetic-colors"
|
|
57
|
+
use:containerRef
|
|
58
|
+
onscroll={handleScroll}
|
|
59
|
+
>
|
|
60
|
+
<div class="grid {layoutClass} gap-x-6 gap-y-4 pb-4">
|
|
61
|
+
{#each items as item (getItemKey(item))}
|
|
62
|
+
{#if itemType === 'vector'}
|
|
63
|
+
{#if observeItem}
|
|
64
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
65
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
66
|
+
<div
|
|
67
|
+
class="flex items-center justify-center widgetic-radius rounded hover:bg-light-green transition-colors cursor-pointer w-[98px] h-[96px] border-2 border-grey2"
|
|
68
|
+
class:bg-sage-green={isItemSelected(item)}
|
|
69
|
+
class:text-white={isItemSelected(item)}
|
|
70
|
+
class:border-sage-green={isItemSelected(item)}
|
|
71
|
+
class:selected-item={isItemSelected(item)}
|
|
72
|
+
onclick={() => onItemSelect(item)}
|
|
73
|
+
use:observeItem
|
|
74
|
+
data-item={getItemKey(item)}
|
|
75
|
+
data-grid-item
|
|
76
|
+
data-item-type="vector"
|
|
77
|
+
>
|
|
78
|
+
<div class="relative w-full h-full flex items-center justify-center">
|
|
79
|
+
{@html renderContent(item)}
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
{:else}
|
|
83
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
84
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
85
|
+
<div
|
|
86
|
+
class="flex items-center justify-center widgetic-radius rounded hover:bg-light-green transition-colors cursor-pointer w-[98px] h-[96px] border-2 border-grey2"
|
|
87
|
+
class:bg-sage-green={isItemSelected(item)}
|
|
88
|
+
class:text-white={isItemSelected(item)}
|
|
89
|
+
class:border-sage-green={isItemSelected(item)}
|
|
90
|
+
class:selected-item={isItemSelected(item)}
|
|
91
|
+
onclick={() => onItemSelect(item)}
|
|
92
|
+
data-item={getItemKey(item)}
|
|
93
|
+
data-grid-item
|
|
94
|
+
data-item-type="vector"
|
|
95
|
+
>
|
|
96
|
+
<div class="relative w-full h-full flex items-center justify-center">
|
|
97
|
+
{@html renderContent(item)}
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
{/if}
|
|
101
|
+
{:else}
|
|
102
|
+
{#if observeItem}
|
|
103
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
104
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
105
|
+
<div
|
|
106
|
+
class="w-full py-2 px-4 hover:bg-light-green cursor-pointer overflow-hidden relative rounded-small"
|
|
107
|
+
class:bg-sage-green={isItemSelected(item)}
|
|
108
|
+
class:text-white={isItemSelected(item)}
|
|
109
|
+
class:selected-item={isItemSelected(item)}
|
|
110
|
+
onclick={() => onItemSelect(item)}
|
|
111
|
+
use:observeItem
|
|
112
|
+
data-item={getItemKey(item)}
|
|
113
|
+
data-item-type="font"
|
|
114
|
+
>
|
|
115
|
+
<div class="flex items-center flex-1 min-w-0 group">
|
|
116
|
+
<Check class="mr-2 h-6 w-6 flex-shrink-0 {isItemSelected(item) ? 'text-white' : 'text-sage-green opacity-0'}"/>
|
|
117
|
+
<div class="flex-1 overflow-hidden">
|
|
118
|
+
{@html renderContent(item)}
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
{:else}
|
|
123
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
124
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
125
|
+
<div
|
|
126
|
+
class="w-full py-2 px-4 hover:bg-light-green cursor-pointer overflow-hidden relative rounded-small"
|
|
127
|
+
class:bg-sage-green={isItemSelected(item)}
|
|
128
|
+
class:text-white={isItemSelected(item)}
|
|
129
|
+
class:selected-item={isItemSelected(item)}
|
|
130
|
+
onclick={() => onItemSelect(item)}
|
|
131
|
+
data-item={getItemKey(item)}
|
|
132
|
+
data-item-type="font"
|
|
133
|
+
>
|
|
134
|
+
<div class="flex items-center flex-1 min-w-0 group">
|
|
135
|
+
<Check class="mr-2 h-6 w-6 flex-shrink-0 {isItemSelected(item) ? 'text-white' : 'text-sage-green opacity-0'}"/>
|
|
136
|
+
<div class="flex-1 overflow-hidden">
|
|
137
|
+
{@html renderContent(item)}
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
</div>
|
|
141
|
+
{/if}
|
|
142
|
+
{/if}
|
|
143
|
+
{/each}
|
|
144
|
+
</div>
|
|
145
|
+
|
|
146
|
+
{#if loadingMore}
|
|
147
|
+
<div class="py-4 subtext text-center text-grey5">
|
|
148
|
+
Loading more items...
|
|
149
|
+
</div>
|
|
150
|
+
{/if}
|
|
151
|
+
</div>
|
|
152
|
+
|
|
153
|
+
<style>
|
|
154
|
+
/* Prevent hover effect on selected items */
|
|
155
|
+
:global(.selected-item:hover) {
|
|
156
|
+
background-color: hsl(var(--sage-green)) !important;
|
|
157
|
+
color: white !important;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/* Ensure text is white in selected items */
|
|
161
|
+
:global(.selected-item) {
|
|
162
|
+
color: white !important;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/* Keep the grid styling for font items */
|
|
166
|
+
:global([data-item-type="font"]) {
|
|
167
|
+
height: 42px !important;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/* Specific styling for grid font items */
|
|
171
|
+
:global([data-grid-item][data-item-type="font"]) {
|
|
172
|
+
width: 98px !important;
|
|
173
|
+
height: 42px !important;
|
|
174
|
+
border: 2px solid hsl(var(--grey2)) !important;
|
|
175
|
+
border-radius: var(--radius-large) !important;
|
|
176
|
+
display: flex !important;
|
|
177
|
+
align-items: center !important;
|
|
178
|
+
justify-content: center !important;
|
|
179
|
+
padding: 0 !important;
|
|
180
|
+
}
|
|
181
|
+
</style>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: Props & {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
11
|
+
};
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
13
|
+
}
|
|
14
|
+
declare const ItemGrid: $$__sveltets_2_IsomorphicComponent<{
|
|
15
|
+
items?: any[];
|
|
16
|
+
containerRef: (node: HTMLElement) => void;
|
|
17
|
+
onItemSelect: (item: any) => void;
|
|
18
|
+
isItemSelected: (item: any) => boolean;
|
|
19
|
+
renderItem: (item: any) => {
|
|
20
|
+
html: string;
|
|
21
|
+
} | string;
|
|
22
|
+
getItemKey: (item: any) => string;
|
|
23
|
+
observeItem?: ((node: HTMLElement) => {
|
|
24
|
+
destroy: () => void;
|
|
25
|
+
}) | undefined;
|
|
26
|
+
loadingMore?: boolean;
|
|
27
|
+
hasMoreItems?: boolean;
|
|
28
|
+
loadNextBatch: () => void;
|
|
29
|
+
layoutClass?: string;
|
|
30
|
+
itemType?: "vector" | "font";
|
|
31
|
+
}, {
|
|
32
|
+
[evt: string]: CustomEvent<any>;
|
|
33
|
+
}, {}, {}, string>;
|
|
34
|
+
type ItemGrid = InstanceType<typeof ItemGrid>;
|
|
35
|
+
export default ItemGrid;
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* RecentItemsSection Component
|
|
3
|
+
* Displays recently used items with custom rendering
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Displays recently used items
|
|
7
|
+
* - Supports custom item rendering
|
|
8
|
+
* - Handles item selection
|
|
9
|
+
* - Supports deletion of custom items
|
|
10
|
+
* - Supports list or grid display modes
|
|
11
|
+
-->
|
|
12
|
+
<script lang="ts">
|
|
13
|
+
// Import Check icon from design system
|
|
14
|
+
import { Check } from '@widgetic/design-system/icons';
|
|
15
|
+
import icTrash from '../../../assets/icons/ic-browser/trash.svg?url';
|
|
16
|
+
|
|
17
|
+
export let recentItems: any[] = [];
|
|
18
|
+
export let title = "Recently used";
|
|
19
|
+
export let onItemSelect: (item: any) => void;
|
|
20
|
+
export let onItemDelete: (item: any, event: Event) => void;
|
|
21
|
+
export let isItemSelected: (item: any) => boolean;
|
|
22
|
+
export let renderItem: (item: any) => { html: string } | string;
|
|
23
|
+
export let isCustomItem: (item: any) => boolean;
|
|
24
|
+
export let getItemKey: (item: any) => string;
|
|
25
|
+
export let observeItem: ((node: HTMLElement) => { destroy: () => void }) | undefined = undefined;
|
|
26
|
+
export let displayMode: 'list' | 'grid' = 'list';
|
|
27
|
+
export let hideTrashIcon: boolean = false;
|
|
28
|
+
export let itemType: 'font' | 'vector' = 'font';
|
|
29
|
+
|
|
30
|
+
// Helper function to determine if the result has HTML content
|
|
31
|
+
function hasHtml(result: { html: string } | string): result is { html: string } {
|
|
32
|
+
return typeof result === 'object' && result !== null && 'html' in result;
|
|
33
|
+
}
|
|
34
|
+
</script>
|
|
35
|
+
|
|
36
|
+
{#if recentItems.length > 0}
|
|
37
|
+
<div class="px-4 pt-4 pb-4 widgetic-colors">
|
|
38
|
+
<h5 class="subtext text-grey7">{title}</h5>
|
|
39
|
+
|
|
40
|
+
{#if displayMode === 'list'}
|
|
41
|
+
<div class="grid grid-cols-1">
|
|
42
|
+
{#each recentItems as item (getItemKey(item))}
|
|
43
|
+
{@const renderedItem = renderItem(item)}
|
|
44
|
+
{@const selected = isItemSelected(item)}
|
|
45
|
+
|
|
46
|
+
{#if observeItem}
|
|
47
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
48
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
49
|
+
<div
|
|
50
|
+
class="w-full px-4 cursor-pointer overflow-hidden relative rounded-small"
|
|
51
|
+
class:bg-sage-green={selected}
|
|
52
|
+
class:text-white={selected}
|
|
53
|
+
class:hover:bg-light-green={!selected}
|
|
54
|
+
class:selected-item={selected}
|
|
55
|
+
onclick={() => onItemSelect(item)}
|
|
56
|
+
use:observeItem
|
|
57
|
+
data-item={getItemKey(item)}
|
|
58
|
+
>
|
|
59
|
+
<div class="flex items-center flex-1 min-w-0 group">
|
|
60
|
+
<Check class="mr-2 h-6 w-6 flex-shrink-0 {selected ? 'text-white' : 'text-sage-green opacity-0'}"/>
|
|
61
|
+
<div class="flex-1 overflow-hidden">
|
|
62
|
+
{#if typeof renderedItem === 'string'}
|
|
63
|
+
<span class="text-[24px]">{renderedItem}</span>
|
|
64
|
+
{:else if hasHtml(renderedItem)}
|
|
65
|
+
{@html renderedItem.html}
|
|
66
|
+
{/if}
|
|
67
|
+
</div>
|
|
68
|
+
|
|
69
|
+
{#if isCustomItem(item) && !hideTrashIcon}
|
|
70
|
+
<button
|
|
71
|
+
type="button"
|
|
72
|
+
class="p-1 rounded-full hover:bg-red-100 hover:text-red-500 transition-colors"
|
|
73
|
+
onclick={(e) => {
|
|
74
|
+
e.stopPropagation();
|
|
75
|
+
onItemDelete(item, e);
|
|
76
|
+
}}
|
|
77
|
+
>
|
|
78
|
+
<img src={icTrash} alt="Delete" class="w-4 h-4" />
|
|
79
|
+
</button>
|
|
80
|
+
{/if}
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
{:else}
|
|
84
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
85
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
86
|
+
<div
|
|
87
|
+
class="w-full px-4 cursor-pointer overflow-hidden relative rounded-small"
|
|
88
|
+
class:bg-sage-green={selected}
|
|
89
|
+
class:text-white={selected}
|
|
90
|
+
class:hover:bg-light-green={!selected}
|
|
91
|
+
class:selected-item={selected}
|
|
92
|
+
onclick={() => onItemSelect(item)}
|
|
93
|
+
data-item={getItemKey(item)}
|
|
94
|
+
>
|
|
95
|
+
<div class="flex items-center flex-1 min-w-0 group">
|
|
96
|
+
<Check class="mr-2 h-6 w-6 flex-shrink-0 {selected ? 'text-white' : 'text-sage-green opacity-0'}"/>
|
|
97
|
+
<div class="flex-1 overflow-hidden">
|
|
98
|
+
{#if typeof renderedItem === 'string'}
|
|
99
|
+
<span class="text-[24px]">{renderedItem}</span>
|
|
100
|
+
{:else if hasHtml(renderedItem)}
|
|
101
|
+
{@html renderedItem.html}
|
|
102
|
+
{/if}
|
|
103
|
+
</div>
|
|
104
|
+
|
|
105
|
+
{#if isCustomItem(item) && !hideTrashIcon}
|
|
106
|
+
<button
|
|
107
|
+
type="button"
|
|
108
|
+
class="p-1 rounded-full hover:bg-red-100 hover:text-red-500 transition-colors"
|
|
109
|
+
onclick={(e) => {
|
|
110
|
+
e.stopPropagation();
|
|
111
|
+
onItemDelete(item, e);
|
|
112
|
+
}}
|
|
113
|
+
>
|
|
114
|
+
<img src={icTrash} alt="Delete" class="w-4 h-4" />
|
|
115
|
+
</button>
|
|
116
|
+
{/if}
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
{/if}
|
|
120
|
+
{/each}
|
|
121
|
+
</div>
|
|
122
|
+
{:else}
|
|
123
|
+
<div class="grid grid-cols-3 gap-x-6 gap-y-4 pt-2 pb-0">
|
|
124
|
+
{#each recentItems as item (getItemKey(item))}
|
|
125
|
+
{@const renderedItem = renderItem(item)}
|
|
126
|
+
{@const selected = isItemSelected(item)}
|
|
127
|
+
|
|
128
|
+
{#if observeItem}
|
|
129
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
130
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
131
|
+
<div
|
|
132
|
+
class="flex-shrink-0 flex items-center justify-center widgetic-radius rounded transition-colors cursor-pointer border-2 border-grey2"
|
|
133
|
+
class:bg-sage-green={selected}
|
|
134
|
+
class:text-white={selected}
|
|
135
|
+
class:border-sage-green={selected}
|
|
136
|
+
class:hover:bg-light-green={!selected}
|
|
137
|
+
class:selected-item={selected}
|
|
138
|
+
onclick={() => onItemSelect(item)}
|
|
139
|
+
use:observeItem
|
|
140
|
+
data-item={getItemKey(item)}
|
|
141
|
+
data-grid-item
|
|
142
|
+
data-item-type={itemType}
|
|
143
|
+
>
|
|
144
|
+
<div class="relative w-full h-full flex items-center justify-center">
|
|
145
|
+
{#if typeof renderedItem === 'string'}
|
|
146
|
+
<span class="text-[24px]">{renderedItem}</span>
|
|
147
|
+
{:else if hasHtml(renderedItem)}
|
|
148
|
+
{@html renderedItem.html}
|
|
149
|
+
{/if}
|
|
150
|
+
|
|
151
|
+
{#if isCustomItem(item) && !hideTrashIcon}
|
|
152
|
+
<button
|
|
153
|
+
type="button"
|
|
154
|
+
class="absolute top-1 right-1 p-1 rounded-full hover:bg-red-100 hover:text-red-500 transition-colors bg-white"
|
|
155
|
+
onclick={(e) => {
|
|
156
|
+
e.stopPropagation();
|
|
157
|
+
onItemDelete(item, e);
|
|
158
|
+
}}
|
|
159
|
+
>
|
|
160
|
+
<img src={icTrash} alt="Delete" class="w-3 h-3" />
|
|
161
|
+
</button>
|
|
162
|
+
{/if}
|
|
163
|
+
</div>
|
|
164
|
+
</div>
|
|
165
|
+
{:else}
|
|
166
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
167
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
168
|
+
<div
|
|
169
|
+
class="flex-shrink-0 flex items-center justify-center widgetic-radius rounded transition-colors cursor-pointer border-2 border-grey2"
|
|
170
|
+
class:bg-sage-green={selected}
|
|
171
|
+
class:text-white={selected}
|
|
172
|
+
class:border-sage-green={selected}
|
|
173
|
+
class:hover:bg-light-green={!selected}
|
|
174
|
+
class:selected-item={selected}
|
|
175
|
+
onclick={() => onItemSelect(item)}
|
|
176
|
+
data-item={getItemKey(item)}
|
|
177
|
+
data-grid-item
|
|
178
|
+
data-item-type={itemType}
|
|
179
|
+
>
|
|
180
|
+
<div class="relative w-full h-full flex items-center justify-center">
|
|
181
|
+
{#if typeof renderedItem === 'string'}
|
|
182
|
+
<span class="text-[24px]">{renderedItem}</span>
|
|
183
|
+
{:else if hasHtml(renderedItem)}
|
|
184
|
+
{@html renderedItem.html}
|
|
185
|
+
{/if}
|
|
186
|
+
|
|
187
|
+
{#if isCustomItem(item) && !hideTrashIcon}
|
|
188
|
+
<button
|
|
189
|
+
type="button"
|
|
190
|
+
class="absolute top-1 right-1 p-1 rounded-full hover:bg-red-100 hover:text-red-500 transition-colors bg-white"
|
|
191
|
+
onclick={(e) => {
|
|
192
|
+
e.stopPropagation();
|
|
193
|
+
onItemDelete(item, e);
|
|
194
|
+
}}
|
|
195
|
+
>
|
|
196
|
+
<img src={icTrash} alt="Delete" class="w-3 h-3" />
|
|
197
|
+
</button>
|
|
198
|
+
{/if}
|
|
199
|
+
</div>
|
|
200
|
+
</div>
|
|
201
|
+
{/if}
|
|
202
|
+
{/each}
|
|
203
|
+
</div>
|
|
204
|
+
{/if}
|
|
205
|
+
</div>
|
|
206
|
+
{/if}
|
|
207
|
+
|
|
208
|
+
<style>
|
|
209
|
+
/* Override the global styles for data-item when in list mode */
|
|
210
|
+
:global([data-item]:not([data-grid-item])) {
|
|
211
|
+
width: auto !important;
|
|
212
|
+
height: 42px !important;
|
|
213
|
+
border: none !important;
|
|
214
|
+
border-radius: var(--radius-small) !important;
|
|
215
|
+
display: flex !important;
|
|
216
|
+
align-items: center !important;
|
|
217
|
+
justify-content: flex-start !important;
|
|
218
|
+
padding: 8px 16px !important;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/* Keep the grid styling for font items */
|
|
222
|
+
:global([data-grid-item][data-item-type="font"]) {
|
|
223
|
+
width: 98px !important;
|
|
224
|
+
height: 42px !important;
|
|
225
|
+
border: 2px solid hsl(var(--grey2)) !important;
|
|
226
|
+
border-radius: var(--radius-large) !important;
|
|
227
|
+
display: flex !important;
|
|
228
|
+
align-items: center !important;
|
|
229
|
+
justify-content: center !important;
|
|
230
|
+
padding: 0 !important;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/* Specific styling for vector items */
|
|
234
|
+
:global([data-grid-item][data-item-type="vector"]) {
|
|
235
|
+
width: 98px !important;
|
|
236
|
+
height: 96px !important;
|
|
237
|
+
border: 2px solid hsl(var(--grey2)) !important;
|
|
238
|
+
border-radius: var(--radius-large) !important;
|
|
239
|
+
display: flex !important;
|
|
240
|
+
align-items: center !important;
|
|
241
|
+
justify-content: center !important;
|
|
242
|
+
padding: 0 !important;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
:global([data-grid-item].bg-\[hsl\(var\(--sage-green\)\)\]) {
|
|
246
|
+
border-color: hsl(var(--sage-green)) !important;
|
|
247
|
+
background-color: hsl(var(--sage-green)) !important;
|
|
248
|
+
color: white !important;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
:global([data-grid-item]:not(.bg-\[hsl\(var\(--sage-green\)\)\]):hover) {
|
|
252
|
+
background-color: hsl(var(--light-green)) !important;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/* Prevent hover effect on selected items */
|
|
256
|
+
:global(.selected-item:hover) {
|
|
257
|
+
background-color: hsl(var(--sage-green)) !important;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
</style>
|