@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,100 @@
|
|
|
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 WidgetPreview: $$__sveltets_2_IsomorphicComponent<{
|
|
15
|
+
/** standalone = resolve URL + postMessage internally; controlled = parent supplies src/state */ mode?: "standalone" | "controlled";
|
|
16
|
+
class?: string;
|
|
17
|
+
style?: string;
|
|
18
|
+
widget?: any;
|
|
19
|
+
apiBaseUrl?: string;
|
|
20
|
+
widgetBuilderUrl?: string;
|
|
21
|
+
designValues?: any;
|
|
22
|
+
contentValues?: any;
|
|
23
|
+
src?: string | null;
|
|
24
|
+
displayUrl?: string | null;
|
|
25
|
+
previewLoading?: boolean;
|
|
26
|
+
previewHydrating?: boolean;
|
|
27
|
+
previewError?: string | null;
|
|
28
|
+
previewRetryCount?: number;
|
|
29
|
+
previewHasRuntimeError?: boolean;
|
|
30
|
+
previewRuntimeErrorStatus?: number | null;
|
|
31
|
+
isContentReady?: boolean;
|
|
32
|
+
isLoadingUrl?: boolean;
|
|
33
|
+
isGeneratingCode?: boolean;
|
|
34
|
+
forceMockReady?: boolean;
|
|
35
|
+
debugMode?: boolean;
|
|
36
|
+
iframeReloadKey?: number;
|
|
37
|
+
width?: string;
|
|
38
|
+
height?: string;
|
|
39
|
+
contentHeight?: string;
|
|
40
|
+
showUrlBar?: boolean;
|
|
41
|
+
showUrlBarButtons?: boolean;
|
|
42
|
+
/** Mobile + desktop viewport buttons in URL bar (before New tab) */ showViewportButtons?: boolean;
|
|
43
|
+
mobileViewportWidth?: number;
|
|
44
|
+
mobileViewportHeight?: number;
|
|
45
|
+
enableResize?: boolean;
|
|
46
|
+
/** Observe stage size and fill it (desktop modal) */ autoFitStage?: boolean;
|
|
47
|
+
/** No padding/border on preview-content-container — matches widget-creator Edit panel */ compactChrome?: boolean;
|
|
48
|
+
/** Fixed preview stage size; inner iframe resizes within these bounds */ boundsWidth?: number | null;
|
|
49
|
+
boundsHeight?: number | null;
|
|
50
|
+
resizeWidth?: number | null;
|
|
51
|
+
resizeHeight?: number | null;
|
|
52
|
+
iframeEl?: HTMLIFrameElement | null;
|
|
53
|
+
getResizeLimits?: () => {
|
|
54
|
+
maxWidth: number;
|
|
55
|
+
maxHeight: number;
|
|
56
|
+
};
|
|
57
|
+
nudgeIframePaint?: () => void;
|
|
58
|
+
fitToContainer?: () => void;
|
|
59
|
+
sendMessageToPreview?: (message: Record<string, unknown>) => void;
|
|
60
|
+
goToItem?: (index: number) => void;
|
|
61
|
+
refreshValues?: () => void;
|
|
62
|
+
}, {
|
|
63
|
+
load: CustomEvent<{
|
|
64
|
+
src: string | null;
|
|
65
|
+
}>;
|
|
66
|
+
error: CustomEvent<{
|
|
67
|
+
src: string | null;
|
|
68
|
+
}>;
|
|
69
|
+
refresh: CustomEvent<void>;
|
|
70
|
+
openInTab: CustomEvent<void>;
|
|
71
|
+
resize: CustomEvent<{
|
|
72
|
+
width: number;
|
|
73
|
+
height: number;
|
|
74
|
+
}>;
|
|
75
|
+
mobileViewport: CustomEvent<{
|
|
76
|
+
width: number;
|
|
77
|
+
height: number;
|
|
78
|
+
}>;
|
|
79
|
+
desktopViewport: CustomEvent<void>;
|
|
80
|
+
iframeLoad: CustomEvent<Event>;
|
|
81
|
+
iframeError: CustomEvent<Event>;
|
|
82
|
+
retry: CustomEvent<void>;
|
|
83
|
+
fixErrors: CustomEvent<void>;
|
|
84
|
+
viewErrors: CustomEvent<void>;
|
|
85
|
+
retryPreview: CustomEvent<void>;
|
|
86
|
+
} & {
|
|
87
|
+
[evt: string]: CustomEvent<any>;
|
|
88
|
+
}, {}, {
|
|
89
|
+
getResizeLimits: () => {
|
|
90
|
+
maxWidth: number;
|
|
91
|
+
maxHeight: number;
|
|
92
|
+
};
|
|
93
|
+
nudgeIframePaint: () => void;
|
|
94
|
+
fitToContainer: () => void;
|
|
95
|
+
sendMessageToPreview: (message: Record<string, unknown>) => void;
|
|
96
|
+
goToItem: (index: number) => void;
|
|
97
|
+
refreshValues: () => void;
|
|
98
|
+
}, string>;
|
|
99
|
+
type WidgetPreview = InstanceType<typeof WidgetPreview>;
|
|
100
|
+
export default WidgetPreview;
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
// Svelte imports
|
|
3
|
+
import { createEventDispatcher } from "svelte";
|
|
4
|
+
const dispatch = createEventDispatcher();
|
|
5
|
+
|
|
6
|
+
// Constants imports
|
|
7
|
+
import {
|
|
8
|
+
eps,
|
|
9
|
+
border_size,
|
|
10
|
+
gap_size
|
|
11
|
+
} from "./constants";
|
|
12
|
+
|
|
13
|
+
// Render functions imports
|
|
14
|
+
import { render_main_image, render_slider_image } from "./render";
|
|
15
|
+
|
|
16
|
+
import { oklab_to_okhsv, okhsv_to_oklab, rgb_to_okhsv, okhsv_to_rgb } from "./color";
|
|
17
|
+
const instanceId = `okhsv_${Math.random().toString(36).slice(2, 8)}`;
|
|
18
|
+
|
|
19
|
+
export let rgb: RGB | undefined = undefined;
|
|
20
|
+
export let a: number = 1;
|
|
21
|
+
export let oklab: OKLab | undefined = undefined;
|
|
22
|
+
export let okhsv: OKHSV | undefined = undefined;
|
|
23
|
+
export let pickerSize = 200;
|
|
24
|
+
export let sliderWidth = 30;
|
|
25
|
+
export let onchange: ((detail: any) => void) | undefined = undefined;
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
$: width = pickerSize + sliderWidth + gap_size + border_size * 2;
|
|
29
|
+
$: height = pickerSize + border_size * 2;
|
|
30
|
+
$: color = convertToInternal(rgb, oklab, okhsv);
|
|
31
|
+
$: uihsv = scale_to_ui(color);
|
|
32
|
+
|
|
33
|
+
// TypeScript type fixes
|
|
34
|
+
/**
|
|
35
|
+
* Types for color objects
|
|
36
|
+
*/
|
|
37
|
+
type RGB = { r: number; g: number; b: number; a?: number };
|
|
38
|
+
type OKLab = { l: number; a: number; b: number };
|
|
39
|
+
type OKHSV = { h: number; s: number; v: number };
|
|
40
|
+
|
|
41
|
+
function scale_to_ui(okhsv2: OKHSV): { h: number; s: number; v: number } {
|
|
42
|
+
return {
|
|
43
|
+
h: clamp_ui(okhsv2.h / 360),
|
|
44
|
+
s: clamp_ui(okhsv2.s),
|
|
45
|
+
v: clamp_ui(1 - okhsv2.v)
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function clamp(x: number): number {
|
|
49
|
+
return x < eps ? eps : x > 1 - eps ? 1 - eps : x;
|
|
50
|
+
}
|
|
51
|
+
function clamp_ui(value: number): number {
|
|
52
|
+
return value < 0 ? 0 : value > 1 ? pickerSize : value * pickerSize;
|
|
53
|
+
}
|
|
54
|
+
function convertToInternal(rgb2: RGB | undefined, oklab2: OKLab | undefined, okhsv2: OKHSV | undefined): OKHSV {
|
|
55
|
+
if (okhsv2) {
|
|
56
|
+
return okhsv2;
|
|
57
|
+
}
|
|
58
|
+
if (oklab2) {
|
|
59
|
+
return oklab_to_okhsv(oklab2);
|
|
60
|
+
}
|
|
61
|
+
if (rgb2) {
|
|
62
|
+
return rgb_to_okhsv(rgb2);
|
|
63
|
+
}
|
|
64
|
+
throw "rgb, oklab, or okhsv required";
|
|
65
|
+
}
|
|
66
|
+
async function update_input(): Promise<void> {
|
|
67
|
+
if (okhsv) {
|
|
68
|
+
const detail = { okhsv: color, a };
|
|
69
|
+
dispatch("change", detail);
|
|
70
|
+
onchange?.(detail);
|
|
71
|
+
}
|
|
72
|
+
if (oklab) {
|
|
73
|
+
const detail = { oklab: okhsv_to_oklab(color), a };
|
|
74
|
+
dispatch("change", detail);
|
|
75
|
+
onchange?.(detail);
|
|
76
|
+
}
|
|
77
|
+
if (rgb) {
|
|
78
|
+
const rgbColor = okhsv_to_rgb(color);
|
|
79
|
+
const detail = { rgb: { ...rgbColor, a }, a };
|
|
80
|
+
dispatch("change", detail);
|
|
81
|
+
onchange?.(detail);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function update_sv(x: number, y: number): void {
|
|
85
|
+
let new_s = clamp(x / pickerSize);
|
|
86
|
+
let new_v = clamp(1 - y / pickerSize);
|
|
87
|
+
color.s = new_s;
|
|
88
|
+
color.v = new_v;
|
|
89
|
+
update_input();
|
|
90
|
+
}
|
|
91
|
+
function update_h(x: number, y: number): void {
|
|
92
|
+
let h = clamp(y / pickerSize);
|
|
93
|
+
color.h = h * 360;
|
|
94
|
+
color.s = Math.max(color.s, 1e-5);
|
|
95
|
+
color.v = Math.max(color.v, 1e-5);
|
|
96
|
+
update_input();
|
|
97
|
+
}
|
|
98
|
+
function pointer(node: HTMLElement, fn: (x: number, y: number) => void) {
|
|
99
|
+
let active = false;
|
|
100
|
+
function update(event: PointerEvent) {
|
|
101
|
+
const x = event.offsetX;
|
|
102
|
+
const y = event.offsetY;
|
|
103
|
+
fn(x, y);
|
|
104
|
+
}
|
|
105
|
+
function onpointerdown(event: PointerEvent) {
|
|
106
|
+
event.stopPropagation();
|
|
107
|
+
node.setPointerCapture(event.pointerId);
|
|
108
|
+
update(event);
|
|
109
|
+
active = true;
|
|
110
|
+
}
|
|
111
|
+
function onpointermove(event: PointerEvent) {
|
|
112
|
+
event.stopPropagation();
|
|
113
|
+
if (active) {
|
|
114
|
+
update(event);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
function onpointerend(event: PointerEvent) {
|
|
118
|
+
event.stopPropagation();
|
|
119
|
+
node.releasePointerCapture(event.pointerId);
|
|
120
|
+
active = false;
|
|
121
|
+
}
|
|
122
|
+
node.addEventListener("pointerdown", onpointerdown, { passive: true });
|
|
123
|
+
node.addEventListener("pointermove", onpointermove, { passive: true });
|
|
124
|
+
node.addEventListener("pointerup", onpointerend, { passive: true });
|
|
125
|
+
node.addEventListener("pointercancel", onpointerend, { passive: true });
|
|
126
|
+
return {
|
|
127
|
+
destroy() {
|
|
128
|
+
node.removeEventListener("pointerdown", onpointerdown);
|
|
129
|
+
node.removeEventListener("pointermove", onpointermove);
|
|
130
|
+
node.removeEventListener("pointerup", onpointerend);
|
|
131
|
+
node.removeEventListener("pointercancel", onpointerend);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function onKeydown(event: KeyboardEvent) {
|
|
136
|
+
const keyHandled = () => {
|
|
137
|
+
event.preventDefault();
|
|
138
|
+
event.stopPropagation();
|
|
139
|
+
};
|
|
140
|
+
const step = event.shiftKey ? 10 : 1;
|
|
141
|
+
switch (event.key) {
|
|
142
|
+
case "ArrowUp":
|
|
143
|
+
if (event.altKey) {
|
|
144
|
+
update_h(0, Math.round(uihsv.h - step));
|
|
145
|
+
} else {
|
|
146
|
+
update_sv(uihsv.s, Math.round(uihsv.v - step));
|
|
147
|
+
}
|
|
148
|
+
keyHandled();
|
|
149
|
+
break;
|
|
150
|
+
case "ArrowDown":
|
|
151
|
+
if (event.altKey) {
|
|
152
|
+
update_h(0, Math.round(uihsv.h + step));
|
|
153
|
+
} else {
|
|
154
|
+
update_sv(uihsv.s, Math.round(uihsv.v + step));
|
|
155
|
+
}
|
|
156
|
+
keyHandled();
|
|
157
|
+
break;
|
|
158
|
+
case "ArrowLeft":
|
|
159
|
+
update_sv(Math.round(uihsv.s - step), uihsv.v);
|
|
160
|
+
keyHandled();
|
|
161
|
+
break;
|
|
162
|
+
case "ArrowRight":
|
|
163
|
+
update_sv(Math.round(uihsv.s + step), uihsv.v);
|
|
164
|
+
keyHandled();
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// When the color or alpha changes, update the bound value
|
|
169
|
+
$: if (rgb && typeof a === 'number') {
|
|
170
|
+
rgb.a = a;
|
|
171
|
+
}
|
|
172
|
+
</script>
|
|
173
|
+
|
|
174
|
+
<!-- svelte-ignore a11y-no-noninteractive-tabindex -->
|
|
175
|
+
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
176
|
+
<div
|
|
177
|
+
class={$$props.class}
|
|
178
|
+
tabindex="0"
|
|
179
|
+
style="width: {width}px; height: {height}px;"
|
|
180
|
+
on:keydown={onKeydown}
|
|
181
|
+
>
|
|
182
|
+
<!-- svelte-ignore element_invalid_self_closing_tag -->
|
|
183
|
+
<canvas
|
|
184
|
+
id="{instanceId}_sv"
|
|
185
|
+
width={pickerSize}
|
|
186
|
+
height={pickerSize}
|
|
187
|
+
style:top="{border_size}px"
|
|
188
|
+
style:left="{border_size}px"
|
|
189
|
+
use:pointer={update_sv}
|
|
190
|
+
use:render_main_image={color.h}
|
|
191
|
+
/>
|
|
192
|
+
<!-- svelte-ignore element_invalid_self_closing_tag -->
|
|
193
|
+
<canvas
|
|
194
|
+
width={sliderWidth}
|
|
195
|
+
height={pickerSize}
|
|
196
|
+
style:top="{border_size}px"
|
|
197
|
+
style:left="{pickerSize + gap_size}px"
|
|
198
|
+
use:pointer={update_h}
|
|
199
|
+
use:render_slider_image
|
|
200
|
+
/>
|
|
201
|
+
|
|
202
|
+
<svg {width} {height}>
|
|
203
|
+
<g transform="translate({border_size},{border_size})">
|
|
204
|
+
<g transform="translate({uihsv.s},{uihsv.v})">
|
|
205
|
+
<circle
|
|
206
|
+
cx="0"
|
|
207
|
+
cy="0"
|
|
208
|
+
r="5"
|
|
209
|
+
fill="none"
|
|
210
|
+
stroke-width="1.75"
|
|
211
|
+
stroke="#fff"
|
|
212
|
+
/>
|
|
213
|
+
<circle
|
|
214
|
+
cx="0"
|
|
215
|
+
cy="0"
|
|
216
|
+
r="6"
|
|
217
|
+
fill="none"
|
|
218
|
+
stroke-width="1.25"
|
|
219
|
+
stroke="#000"
|
|
220
|
+
/>
|
|
221
|
+
</g>
|
|
222
|
+
</g>
|
|
223
|
+
<g transform="translate({pickerSize + gap_size},{border_size})">
|
|
224
|
+
<g transform="translate(0,{uihsv.h})">
|
|
225
|
+
<polygon
|
|
226
|
+
points="-7,-4 -1,0 -7,4"
|
|
227
|
+
fill="#fff"
|
|
228
|
+
stroke-width="0.8"
|
|
229
|
+
stroke="#000"
|
|
230
|
+
/>
|
|
231
|
+
<polygon
|
|
232
|
+
points="{sliderWidth + 7},-4 {sliderWidth + 1},0 {sliderWidth +
|
|
233
|
+
7},4"
|
|
234
|
+
fill="#fff"
|
|
235
|
+
stroke-width="0.8"
|
|
236
|
+
stroke="#000"
|
|
237
|
+
/>
|
|
238
|
+
</g>
|
|
239
|
+
</g>
|
|
240
|
+
</svg>
|
|
241
|
+
</div>
|
|
242
|
+
|
|
243
|
+
<style>
|
|
244
|
+
div {
|
|
245
|
+
position: relative;
|
|
246
|
+
outline: 0;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
canvas,
|
|
250
|
+
svg {
|
|
251
|
+
touch-action: none;
|
|
252
|
+
position: absolute;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
svg {
|
|
256
|
+
pointer-events: none;
|
|
257
|
+
}
|
|
258
|
+
</style>
|
|
@@ -0,0 +1,42 @@
|
|
|
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 ColorSelect: $$__sveltets_2_IsomorphicComponent<{
|
|
15
|
+
[x: string]: any;
|
|
16
|
+
rgb?: {
|
|
17
|
+
r: number;
|
|
18
|
+
g: number;
|
|
19
|
+
b: number;
|
|
20
|
+
a?: number;
|
|
21
|
+
} | undefined;
|
|
22
|
+
a?: number;
|
|
23
|
+
oklab?: {
|
|
24
|
+
l: number;
|
|
25
|
+
a: number;
|
|
26
|
+
b: number;
|
|
27
|
+
} | undefined;
|
|
28
|
+
okhsv?: {
|
|
29
|
+
h: number;
|
|
30
|
+
s: number;
|
|
31
|
+
v: number;
|
|
32
|
+
} | undefined;
|
|
33
|
+
pickerSize?: number;
|
|
34
|
+
sliderWidth?: number;
|
|
35
|
+
onchange?: ((detail: any) => void) | undefined;
|
|
36
|
+
}, {
|
|
37
|
+
change: CustomEvent<any>;
|
|
38
|
+
} & {
|
|
39
|
+
[evt: string]: CustomEvent<any>;
|
|
40
|
+
}, {}, {}, string>;
|
|
41
|
+
type ColorSelect = InstanceType<typeof ColorSelect>;
|
|
42
|
+
export default ColorSelect;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export function oklab_to_okhsv(oklab: any): {
|
|
2
|
+
h: number;
|
|
3
|
+
s: number;
|
|
4
|
+
v: number;
|
|
5
|
+
};
|
|
6
|
+
export function okhsv_to_rgb(okhsv: any): {
|
|
7
|
+
r: number;
|
|
8
|
+
g: number;
|
|
9
|
+
b: number;
|
|
10
|
+
};
|
|
11
|
+
export function okhsv_to_oklab(okhsv: any): {
|
|
12
|
+
l: number;
|
|
13
|
+
a: number;
|
|
14
|
+
b: number;
|
|
15
|
+
};
|
|
16
|
+
export function rgb_to_okhsv(rgb: any): {
|
|
17
|
+
h: number;
|
|
18
|
+
s: number;
|
|
19
|
+
v: number;
|
|
20
|
+
};
|
|
21
|
+
export function okhsl_to_rgb(okhsl: any): {
|
|
22
|
+
r: number;
|
|
23
|
+
g: number;
|
|
24
|
+
b: number;
|
|
25
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { convert, OKHSL, OKHSV, OKLab, sRGB } from '@texel/color';
|
|
2
|
+
export function oklab_to_okhsv(oklab) {
|
|
3
|
+
const [h, s, v] = convert([oklab.l, oklab.a, oklab.b], OKLab, OKHSV);
|
|
4
|
+
return { h: h ?? 0, s, v };
|
|
5
|
+
}
|
|
6
|
+
export function okhsv_to_rgb(okhsv) {
|
|
7
|
+
const [r, g, b] = convert([okhsv.h, okhsv.s, okhsv.v], OKHSV, sRGB);
|
|
8
|
+
return { r, g, b };
|
|
9
|
+
}
|
|
10
|
+
export function okhsv_to_oklab(okhsv) {
|
|
11
|
+
const [l, a, b] = convert([okhsv.h, okhsv.s, okhsv.v], OKHSV, OKLab);
|
|
12
|
+
return { l, a, b };
|
|
13
|
+
}
|
|
14
|
+
export function rgb_to_okhsv(rgb) {
|
|
15
|
+
const [h, s, v] = convert([rgb.r, rgb.g, rgb.b], sRGB, OKHSV);
|
|
16
|
+
return { h, s, v };
|
|
17
|
+
}
|
|
18
|
+
export function okhsl_to_rgb(okhsl) {
|
|
19
|
+
const [r, g, b] = convert([okhsl.h, okhsl.s, okhsl.l], OKHSL, sRGB);
|
|
20
|
+
return { r, g, b };
|
|
21
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { f_shader, v_shader } from './shaders';
|
|
2
|
+
import { picker_size, slider_width } from './constants';
|
|
3
|
+
import { okhsl_to_rgb } from './color';
|
|
4
|
+
export function render_slider_image(canvas) {
|
|
5
|
+
const ctx = canvas.getContext('2d');
|
|
6
|
+
const data = new Uint8ClampedArray(picker_size * slider_width * 4);
|
|
7
|
+
for (let i = 0; i < picker_size; i++) {
|
|
8
|
+
const a_ = Math.cos(2 * Math.PI * i / picker_size);
|
|
9
|
+
const b_ = Math.sin(2 * Math.PI * i / picker_size);
|
|
10
|
+
const rgb = okhsl_to_rgb({
|
|
11
|
+
h: i / picker_size * 360,
|
|
12
|
+
s: 0.9,
|
|
13
|
+
l: 0.65 + 0.17 * b_ - 0.08 * a_,
|
|
14
|
+
});
|
|
15
|
+
for (let j = 0; j < slider_width; j++) {
|
|
16
|
+
const index = 4 * (i * slider_width + j);
|
|
17
|
+
data[index + 0] = rgb.r * 255;
|
|
18
|
+
data[index + 1] = rgb.g * 255;
|
|
19
|
+
data[index + 2] = rgb.b * 255;
|
|
20
|
+
data[index + 3] = 255;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const imageData = new ImageData(data, slider_width);
|
|
24
|
+
ctx.putImageData(imageData, 0, 0);
|
|
25
|
+
}
|
|
26
|
+
export function render_main_image(canvas, hue) {
|
|
27
|
+
const gl = canvas.getContext('webgl');
|
|
28
|
+
gl.viewport(0, 0, gl.canvas.width, gl.canvas.height);
|
|
29
|
+
const shaderProgram = initShaderProgram(gl, v_shader, f_shader);
|
|
30
|
+
const position = gl.getAttribLocation(shaderProgram, "position");
|
|
31
|
+
const resolution = gl.getUniformLocation(shaderProgram, "resolution");
|
|
32
|
+
const hue_rad = gl.getUniformLocation(shaderProgram, "hue_rad");
|
|
33
|
+
gl.useProgram(shaderProgram);
|
|
34
|
+
gl.uniform2fv(resolution, [gl.canvas.width, gl.canvas.height]);
|
|
35
|
+
const positions = [1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, -1.0];
|
|
36
|
+
const positionBuffer = gl.createBuffer();
|
|
37
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);
|
|
38
|
+
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW);
|
|
39
|
+
gl.enableVertexAttribArray(position);
|
|
40
|
+
gl.vertexAttribPointer(position, 2, gl.FLOAT, false, 0, 0);
|
|
41
|
+
function update(hue) {
|
|
42
|
+
requestAnimationFrame(() => {
|
|
43
|
+
gl.uniform1f(hue_rad, hue / 360);
|
|
44
|
+
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
update(hue);
|
|
48
|
+
return {
|
|
49
|
+
update,
|
|
50
|
+
destroy() {
|
|
51
|
+
gl.deleteProgram(shaderProgram);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function initShaderProgram(gl, vsSource, fsSource) {
|
|
56
|
+
const vertexShader = loadShader(gl, gl.VERTEX_SHADER, vsSource);
|
|
57
|
+
const fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fsSource);
|
|
58
|
+
const shaderProgram = gl.createProgram();
|
|
59
|
+
gl.attachShader(shaderProgram, vertexShader);
|
|
60
|
+
gl.attachShader(shaderProgram, fragmentShader);
|
|
61
|
+
gl.linkProgram(shaderProgram);
|
|
62
|
+
if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {
|
|
63
|
+
throw `unable to init shader: ${gl.getProgramInfoLog(shaderProgram)}`;
|
|
64
|
+
}
|
|
65
|
+
return shaderProgram;
|
|
66
|
+
}
|
|
67
|
+
function loadShader(gl, type, source) {
|
|
68
|
+
const shader = gl.createShader(type);
|
|
69
|
+
gl.shaderSource(shader, source);
|
|
70
|
+
gl.compileShader(shader);
|
|
71
|
+
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
|
|
72
|
+
const info = gl.getShaderInfoLog(shader);
|
|
73
|
+
gl.deleteShader(shader);
|
|
74
|
+
throw `error compiling shaders: ${info}`;
|
|
75
|
+
}
|
|
76
|
+
return shader;
|
|
77
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
var _ = `precision mediump float;uniform vec2 resolution;uniform float hue_rad;precision mediump float;
|
|
2
|
+
#define M_PI 3.1415926536
|
|
3
|
+
float cbrt(float x){return sign(x)*pow(abs(x),1.0/3.0);}float srgb_transfer_function(float a){return .0031308>=a ? 12.92*a : 1.055*pow(a,.4166666666666667)-.055;}vec3 oklab_to_linear_srgb(vec3 c){float l_=c.x+0.3963377774*c.y+0.2158037573*c.z;float m_=c.x-0.1055613458*c.y-0.0638541728*c.z;float s_=c.x-0.0894841775*c.y-1.2914855480*c.z;float l=l_*l_*l_;float m=m_*m_*m_;float s=s_*s_*s_;return vec3(+4.0767416621*l-3.3077115913*m+0.2309699292*s,-1.2684380046*l+2.6097574011*m-0.3413193965*s,-0.0041960863*l-0.7034186147*m+1.7076147010*s);}float compute_max_saturation(float a,float b){float k0,k1,k2,k3,k4,wl,wm,ws;if(-1.88170328*a-0.80936493*b>1.0){k0=+1.19086277;k1=+1.76576728;k2=+0.59662641;k3=+0.75515197;k4=+0.56771245;wl=+4.0767416621;wm=-3.3077115913;ws=+0.2309699292;}else if(1.81444104*a-1.19445276*b>1.0){k0=+0.73956515;k1=-0.45954404;k2=+0.08285427;k3=+0.12541070;k4=+0.14503204;wl=-1.2684380046;wm=+2.6097574011;ws=-0.3413193965;}else{k0=+1.35733652;k1=-0.00915799;k2=-1.15130210;k3=-0.50559606;k4=+0.00692167;wl=-0.0041960863;wm=-0.7034186147;ws=+1.7076147010;}float S=k0+k1*a+k2*b+k3*a*a+k4*a*b;float k_l=+0.3963377774*a+0.2158037573*b;float k_m=-0.1055613458*a-0.0638541728*b;float k_s=-0.0894841775*a-1.2914855480*b;{float l_=1.0+S*k_l;float m_=1.0+S*k_m;float s_=1.0+S*k_s;float l=l_*l_*l_;float m=m_*m_*m_;float s=s_*s_*s_;float l_dS=3.0*k_l*l_*l_;float m_dS=3.0*k_m*m_*m_;float s_dS=3.0*k_s*s_*s_;float l_dS2=6.0*k_l*k_l*l_;float m_dS2=6.0*k_m*k_m*m_;float s_dS2=6.0*k_s*k_s*s_;float f=wl*l+wm*m+ws*s;float f1=wl*l_dS+wm*m_dS+ws*s_dS;float f2=wl*l_dS2+wm*m_dS2+ws*s_dS2;S=S-f*f1/(f1*f1-0.5*f*f2);}return S;}vec2 find_cusp(float a,float b){float S_cusp=compute_max_saturation(a,b);vec3 rgb_at_max=oklab_to_linear_srgb(vec3(1,S_cusp*a,S_cusp*b));float L_cusp=cbrt(1.0/max(max(rgb_at_max.r,rgb_at_max.g),rgb_at_max.b));float C_cusp=L_cusp*S_cusp;return vec2(L_cusp,C_cusp);}float toe_inv(float x){float k_1=0.206;float k_2=0.03;float k_3=(1.0+k_1)/(1.0+k_2);return(x*x+k_1*x)/(k_3*(x+k_2));}vec2 to_ST(vec2 cusp){float L=cusp.x;float C=cusp.y;return vec2(C/L,C/(1.0-L));}vec3 okhsv_to_srgb(vec3 hsv){float h=hsv.x;float s=hsv.y;float v=hsv.z;float a_=cos(2.0*M_PI*h);float b_=sin(2.0*M_PI*h);vec2 cusp=find_cusp(a_,b_);vec2 ST_max=to_ST(cusp);float S_max=ST_max.x;float T_max=ST_max.y;float S_0=0.5;float k=1.0-S_0/S_max;float L_v=1.0-s*S_0/(S_0+T_max-T_max*k*s);float C_v=s*T_max*S_0/(S_0+T_max-T_max*k*s);float L=v*L_v;float C=v*C_v;float L_vt=toe_inv(L_v);float C_vt=C_v*L_vt/L_v;float L_new=toe_inv(L);C=C*L_new/L;L=L_new;vec3 rgb_scale=oklab_to_linear_srgb(vec3(L_vt,a_*C_vt,b_*C_vt));float scale_L=cbrt(1.0/max(max(rgb_scale.r,rgb_scale.g),max(rgb_scale.b,0.0)));L=L*scale_L;C=C*scale_L;vec3 rgb=oklab_to_linear_srgb(vec3(L,C*a_,C*b_));return vec3(srgb_transfer_function(rgb.r),srgb_transfer_function(rgb.g),srgb_transfer_function(rgb.b));}void main(){vec2 uv=gl_FragCoord.xy/resolution;float l=uv.y;float h=hue_rad;vec3 hsl=vec3(h,uv.x,uv.y);vec3 hsvRGB=okhsv_to_srgb(hsl);gl_FragColor=vec4(hsvRGB,1.0);}`, a = "attribute vec4 position;void main(){gl_Position=position;}";
|
|
4
|
+
const l = _, t = a;
|
|
5
|
+
export {
|
|
6
|
+
l as f_shader,
|
|
7
|
+
t as v_shader
|
|
8
|
+
};
|