@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.
Files changed (497) hide show
  1. package/README.md +245 -0
  2. package/dist/assets/fonts.json +331 -0
  3. package/dist/assets/icons/ic-browser/audio.svg +7 -0
  4. package/dist/assets/icons/ic-browser/document.svg +11 -0
  5. package/dist/assets/icons/ic-browser/error.svg +5 -0
  6. package/dist/assets/icons/ic-browser/folder.svg +28 -0
  7. package/dist/assets/icons/ic-browser/player-pause.svg +1 -0
  8. package/dist/assets/icons/ic-browser/player-play.svg +1 -0
  9. package/dist/assets/icons/ic-browser/trash.svg +1 -0
  10. package/dist/assets/icons/ic-fixed-position/background-deselected.svg +3 -0
  11. package/dist/assets/icons/ic-fixed-position/background-selected.svg +3 -0
  12. package/dist/assets/icons/ic-fixed-position/bottom-left-background-deselected.svg +3 -0
  13. package/dist/assets/icons/ic-fixed-position/bottom-left-background-selected.svg +3 -0
  14. package/dist/assets/icons/ic-fixed-position/bottom-left-icon.svg +4 -0
  15. package/dist/assets/icons/ic-fixed-position/bottom-right-background-deselected.svg +3 -0
  16. package/dist/assets/icons/ic-fixed-position/bottom-right-background-selected.svg +3 -0
  17. package/dist/assets/icons/ic-fixed-position/bottom-right-icon.svg +4 -0
  18. package/dist/assets/icons/ic-fixed-position/center-bottom-icon.svg +5 -0
  19. package/dist/assets/icons/ic-fixed-position/center-center-icon.svg +3 -0
  20. package/dist/assets/icons/ic-fixed-position/center-left-icon.svg +5 -0
  21. package/dist/assets/icons/ic-fixed-position/center-right-icon.svg +5 -0
  22. package/dist/assets/icons/ic-fixed-position/center-top-icon.svg +5 -0
  23. package/dist/assets/icons/ic-fixed-position/top-left-background-deselected.svg +3 -0
  24. package/dist/assets/icons/ic-fixed-position/top-left-background-selected.svg +3 -0
  25. package/dist/assets/icons/ic-fixed-position/top-left-icon.svg +4 -0
  26. package/dist/assets/icons/ic-fixed-position/top-right-background-deselected.svg +3 -0
  27. package/dist/assets/icons/ic-fixed-position/top-right-background-selected.svg +3 -0
  28. package/dist/assets/icons/ic-fixed-position/top-right-icon.svg +4 -0
  29. package/dist/assets/icons/trash.svg +1 -0
  30. package/dist/components/MockWidget.svelte +108 -0
  31. package/dist/components/MockWidget.svelte.d.ts +22 -0
  32. package/dist/components/WidgetPreview.svelte +852 -0
  33. package/dist/components/WidgetPreview.svelte.d.ts +100 -0
  34. package/dist/components/color-select/ColorSelect.svelte +258 -0
  35. package/dist/components/color-select/ColorSelect.svelte.d.ts +42 -0
  36. package/dist/components/color-select/color.d.ts +25 -0
  37. package/dist/components/color-select/color.js +21 -0
  38. package/dist/components/color-select/constants.d.ts +5 -0
  39. package/dist/components/color-select/constants.js +5 -0
  40. package/dist/components/color-select/render.d.ts +5 -0
  41. package/dist/components/color-select/render.js +77 -0
  42. package/dist/components/color-select/shaders.d.ts +3 -0
  43. package/dist/components/color-select/shaders.js +8 -0
  44. package/dist/components/editors/EmbedEditor.svelte +700 -0
  45. package/dist/components/editors/EmbedEditor.svelte.d.ts +50 -0
  46. package/dist/components/editors/PropsEditor.svelte +4009 -0
  47. package/dist/components/editors/PropsEditor.svelte.d.ts +62 -0
  48. package/dist/components/editors/props-editor.css +73 -0
  49. package/dist/components/ic/AngleInputController.svelte +276 -0
  50. package/dist/components/ic/AngleInputController.svelte.d.ts +26 -0
  51. package/dist/components/ic/BrowserInputController.svelte +731 -0
  52. package/dist/components/ic/BrowserInputController.svelte.d.ts +39 -0
  53. package/dist/components/ic/CheckboxInputController.svelte +203 -0
  54. package/dist/components/ic/CheckboxInputController.svelte.d.ts +41 -0
  55. package/dist/components/ic/ColorPickerInputController.svelte +1584 -0
  56. package/dist/components/ic/ColorPickerInputController.svelte.d.ts +50 -0
  57. package/dist/components/ic/DateFieldInputController.svelte +453 -0
  58. package/dist/components/ic/DateFieldInputController.svelte.d.ts +35 -0
  59. package/dist/components/ic/DatePickerInputController.svelte +364 -0
  60. package/dist/components/ic/DatePickerInputController.svelte.d.ts +28 -0
  61. package/dist/components/ic/DropdownInputController.svelte +226 -0
  62. package/dist/components/ic/DropdownInputController.svelte.d.ts +43 -0
  63. package/dist/components/ic/FixedPositionInputController.svelte +353 -0
  64. package/dist/components/ic/FixedPositionInputController.svelte.d.ts +23 -0
  65. package/dist/components/ic/FontInputController.svelte +2098 -0
  66. package/dist/components/ic/FontInputController.svelte.d.ts +47 -0
  67. package/dist/components/ic/InputControllerHeader.svelte +147 -0
  68. package/dist/components/ic/InputControllerHeader.svelte.d.ts +23 -0
  69. package/dist/components/ic/NumberControls.svelte +299 -0
  70. package/dist/components/ic/NumberControls.svelte.d.ts +30 -0
  71. package/dist/components/ic/NumberInputController.svelte +397 -0
  72. package/dist/components/ic/NumberInputController.svelte.d.ts +30 -0
  73. package/dist/components/ic/PositionInputController.svelte +252 -0
  74. package/dist/components/ic/PositionInputController.svelte.d.ts +37 -0
  75. package/dist/components/ic/RadioGroupInputController.svelte +162 -0
  76. package/dist/components/ic/RadioGroupInputController.svelte.d.ts +38 -0
  77. package/dist/components/ic/RangeCalendarInputController.svelte +262 -0
  78. package/dist/components/ic/RangeCalendarInputController.svelte.d.ts +32 -0
  79. package/dist/components/ic/RoundedCornersInputController.svelte +469 -0
  80. package/dist/components/ic/RoundedCornersInputController.svelte.d.ts +37 -0
  81. package/dist/components/ic/SliderInputController.svelte +411 -0
  82. package/dist/components/ic/SliderInputController.svelte.d.ts +46 -0
  83. package/dist/components/ic/SliderRangeInputController.svelte +155 -0
  84. package/dist/components/ic/SliderRangeInputController.svelte.d.ts +33 -0
  85. package/dist/components/ic/SwitchInputController.svelte +107 -0
  86. package/dist/components/ic/SwitchInputController.svelte.d.ts +24 -0
  87. package/dist/components/ic/TagsInputController.svelte +125 -0
  88. package/dist/components/ic/TagsInputController.svelte.d.ts +27 -0
  89. package/dist/components/ic/TextAreaInputController.svelte +1932 -0
  90. package/dist/components/ic/TextAreaInputController.svelte.d.ts +14 -0
  91. package/dist/components/ic/TextAreaPreviewInputController.svelte +478 -0
  92. package/dist/components/ic/TextAreaPreviewInputController.svelte.d.ts +28 -0
  93. package/dist/components/ic/TextInputController.svelte +70 -0
  94. package/dist/components/ic/TextInputController.svelte.d.ts +30 -0
  95. package/dist/components/ic/TimeInputController.svelte +434 -0
  96. package/dist/components/ic/TimeInputController.svelte.d.ts +25 -0
  97. package/dist/components/ic/VectorInputController.svelte +1826 -0
  98. package/dist/components/ic/VectorInputController.svelte.d.ts +47 -0
  99. package/dist/components/ic/index.d.ts +39 -0
  100. package/dist/components/ic/index.js +24 -0
  101. package/dist/components/ic/shared/CategoryTabs.svelte +40 -0
  102. package/dist/components/ic/shared/CategoryTabs.svelte.d.ts +25 -0
  103. package/dist/components/ic/shared/ItemGrid.svelte +181 -0
  104. package/dist/components/ic/shared/ItemGrid.svelte.d.ts +35 -0
  105. package/dist/components/ic/shared/RecentItemsSection.svelte +260 -0
  106. package/dist/components/ic/shared/RecentItemsSection.svelte.d.ts +35 -0
  107. package/dist/components/ic/shared/index.d.ts +8 -0
  108. package/dist/components/ic/shared/index.js +9 -0
  109. package/dist/components/icons/addnew.svelte +21 -0
  110. package/dist/components/icons/addnew.svelte.d.ts +20 -0
  111. package/dist/components/icons/drag.svelte +29 -0
  112. package/dist/components/icons/drag.svelte.d.ts +20 -0
  113. package/dist/components/icons/drag.svg +1 -0
  114. package/dist/components/icons/locked.svelte +4 -0
  115. package/dist/components/icons/locked.svelte.d.ts +26 -0
  116. package/dist/components/icons/locked.svg +4 -0
  117. package/dist/components/icons/ok.svelte +20 -0
  118. package/dist/components/icons/ok.svelte.d.ts +20 -0
  119. package/dist/components/icons/ok.svg +11 -0
  120. package/dist/components/icons/unlocked.svelte +4 -0
  121. package/dist/components/icons/unlocked.svelte.d.ts +26 -0
  122. package/dist/components/icons/unlocked.svg +4 -0
  123. package/dist/components/icons/x.svelte +14 -0
  124. package/dist/components/icons/x.svelte.d.ts +20 -0
  125. package/dist/components/icons/x.svg +5 -0
  126. package/dist/components/ui/arrows/OpacitySliderArrows.svelte +43 -0
  127. package/dist/components/ui/arrows/OpacitySliderArrows.svelte.d.ts +23 -0
  128. package/dist/components/ui/checkerboard-background/CheckerboardBackground.svelte +15 -0
  129. package/dist/components/ui/checkerboard-background/CheckerboardBackground.svelte.d.ts +20 -0
  130. package/dist/config.d.ts +11 -0
  131. package/dist/config.js +31 -0
  132. package/dist/index.d.ts +5 -0
  133. package/dist/index.js +9 -0
  134. package/dist/stores/userSession.d.ts +7 -0
  135. package/dist/stores/userSession.js +28 -0
  136. package/dist/utils/FontManager.d.ts +278 -0
  137. package/dist/utils/FontManager.js +1302 -0
  138. package/dist/utils/MediaManager.d.ts +35 -0
  139. package/dist/utils/MediaManager.js +59 -0
  140. package/dist/utils/VectorManager.d.ts +190 -0
  141. package/dist/utils/VectorManager.js +754 -0
  142. package/dist/utils/colorAutocomplete.d.ts +10 -0
  143. package/dist/utils/colorAutocomplete.js +28 -0
  144. package/dist/utils/colorNames.d.ts +3 -0
  145. package/dist/utils/colorNames.js +152 -0
  146. package/dist/utils/colorTransparency.d.ts +52 -0
  147. package/dist/utils/colorTransparency.js +114 -0
  148. package/dist/utils/fontUtils.d.ts +34 -0
  149. package/dist/utils/fontUtils.js +132 -0
  150. package/dist/utils/passiveEvents.js +20 -0
  151. package/dist/utils/recentColors.d.ts +10 -0
  152. package/dist/utils/recentColors.js +63 -0
  153. package/dist/utils/skipFonts.d.ts +3 -0
  154. package/dist/utils/skipFonts.js +49 -0
  155. package/dist/utils/vectorUtils.d.ts +34 -0
  156. package/dist/utils/vectorUtils.js +71 -0
  157. package/dist/utils.d.ts +11 -0
  158. package/dist/utils.js +38 -0
  159. package/package.json +134 -74
  160. package/.babelrc +0 -10
  161. package/.bowerrc +0 -4
  162. package/.nvmrc +0 -1
  163. package/Gruntfile.coffee +0 -69
  164. package/bower.json +0 -28
  165. package/css/browser/entries/activateable.styl +0 -29
  166. package/css/browser/entries/audio.styl +0 -39
  167. package/css/browser/entries/folder.styl +0 -79
  168. package/css/browser/entries/image.styl +0 -26
  169. package/css/browser/entries/index.styl +0 -66
  170. package/css/browser/entries/rss.styl +0 -11
  171. package/css/browser/entries/video.styl +0 -11
  172. package/css/browser/index.styl +0 -86
  173. package/css/browser/intent/index.styl +0 -61
  174. package/css/browser/nav/index.styl +0 -73
  175. package/css/browser/social-browser.styl +0 -23
  176. package/css/controls/clock.styl +0 -110
  177. package/css/controls/config.styl +0 -6
  178. package/css/controls/control-audio-details.styl +0 -63
  179. package/css/controls/control-audio.styl +0 -28
  180. package/css/controls/control-browser.styl +0 -48
  181. package/css/controls/control-color.styl +0 -423
  182. package/css/controls/control-date_time.styl +0 -191
  183. package/css/controls/control-dropdown.styl +0 -79
  184. package/css/controls/control-font.styl +0 -147
  185. package/css/controls/control-image-details.styl +0 -35
  186. package/css/controls/control-image.styl +0 -43
  187. package/css/controls/control-order-picker.styl +0 -29
  188. package/css/controls/control-position.styl +0 -390
  189. package/css/controls/control-range.styl +0 -68
  190. package/css/controls/control-scale.styl +0 -30
  191. package/css/controls/control-slider.styl +0 -38
  192. package/css/controls/control-spinner.styl +0 -39
  193. package/css/controls/control-textarea.styl +0 -52
  194. package/css/controls/control-toggle.styl +0 -34
  195. package/css/controls/control-url.styl +0 -32
  196. package/css/controls/control-video-details.styl +0 -85
  197. package/css/controls/control-video.styl +0 -43
  198. package/css/controls/general.styl +0 -98
  199. package/css/controls/index.styl +0 -25
  200. package/css/editor/colors.styl +0 -7
  201. package/css/editor/content/directinput.styl +0 -47
  202. package/css/editor/content/index.styl +0 -111
  203. package/css/editor/content/message.styl +0 -53
  204. package/css/editor/content/tabs.styl +0 -75
  205. package/css/editor/copied-from-old-style.styl +0 -197
  206. package/css/editor/details/bulk-editor.styl +0 -104
  207. package/css/editor/details/index.styl +0 -21
  208. package/css/editor/details/item.styl +0 -153
  209. package/css/editor/embed.styl +0 -106
  210. package/css/editor/footer.styl +0 -180
  211. package/css/editor/full-editor.styl +0 -16
  212. package/css/editor/index.styl +0 -124
  213. package/css/editor/login-popup.styl +0 -13
  214. package/css/editor/preview.styl +0 -257
  215. package/css/editor/skin/editor/index.styl +0 -54
  216. package/css/editor/skin/editor/tabs.styl +0 -111
  217. package/css/editor/skin/index.styl +0 -138
  218. package/css/editor/skin/popup.styl +0 -152
  219. package/css/editor/skin/presets/dropdown.styl +0 -61
  220. package/css/editor/skin/presets/index.styl +0 -86
  221. package/css/editor/skin/presets/list.styl +0 -244
  222. package/css/editor/tooltips.styl +0 -85
  223. package/css/fonts.styl +0 -47
  224. package/css/icons/BlogvioEditor.dev.svg +0 -112
  225. package/css/icons.styl +0 -16
  226. package/css/img/arrow-right-rounded-v-small.png +0 -0
  227. package/css/img/browser-folder-separator.png +0 -0
  228. package/css/img/calendar-input-icons.png +0 -0
  229. package/css/img/check.png +0 -0
  230. package/css/img/close.png +0 -0
  231. package/css/img/composition/edit-icon.png +0 -0
  232. package/css/img/content/audio-icon.png +0 -0
  233. package/css/img/content/folder-icon.png +0 -0
  234. package/css/img/content/messages/error-background.png +0 -0
  235. package/css/img/content/messages/error-icon.png +0 -0
  236. package/css/img/content/messages/notification-background.png +0 -0
  237. package/css/img/content/messages/notification-icon.png +0 -0
  238. package/css/img/content/no-files-audio.png +0 -0
  239. package/css/img/content/no-files-image.png +0 -0
  240. package/css/img/content/no-files-video.png +0 -0
  241. package/css/img/content/no-files.png +0 -0
  242. package/css/img/content/rss-icon.png +0 -0
  243. package/css/img/content/selected.png +0 -0
  244. package/css/img/content/video-icon.png +0 -0
  245. package/css/img/content/with-control-text.png +0 -0
  246. package/css/img/control-dropdown-arrow.png +0 -0
  247. package/css/img/control-image-valid.png +0 -0
  248. package/css/img/control-position-icon.png +0 -0
  249. package/css/img/control-scale-lock-icon.png +0 -0
  250. package/css/img/control-slider-arrows-hover.png +0 -0
  251. package/css/img/control-slider-arrows.png +0 -0
  252. package/css/img/control-spinner-buttons-hover.png +0 -0
  253. package/css/img/control-spinner-buttons.png +0 -0
  254. package/css/img/control-textarea-bold-active.png +0 -0
  255. package/css/img/control-textarea-bold.png +0 -0
  256. package/css/img/control-textarea-italic-active.png +0 -0
  257. package/css/img/control-textarea-italic.png +0 -0
  258. package/css/img/control-textarea-underline-active.png +0 -0
  259. package/css/img/control-textarea-underline.png +0 -0
  260. package/css/img/custom-checkbox-sprite.png +0 -0
  261. package/css/img/details/item-collapse-icon.png +0 -0
  262. package/css/img/details/item-expand-icon.png +0 -0
  263. package/css/img/details/item-sort-icon.png +0 -0
  264. package/css/img/done-arrow.png +0 -0
  265. package/css/img/fb-logo-icon-w.png +0 -0
  266. package/css/img/grid-icons.png +0 -0
  267. package/css/img/icon-reference.png +0 -0
  268. package/css/img/indicator.png +0 -0
  269. package/css/img/loader.gif +0 -0
  270. package/css/img/loaders/audio-white.png +0 -0
  271. package/css/img/loaders/audio.png +0 -0
  272. package/css/img/loaders/photo-white.png +0 -0
  273. package/css/img/loaders/photo.png +0 -0
  274. package/css/img/loaders/util-white.png +0 -0
  275. package/css/img/loaders/util.png +0 -0
  276. package/css/img/loaders/video-white.png +0 -0
  277. package/css/img/loaders/video.png +0 -0
  278. package/css/img/maximize.png +0 -0
  279. package/css/img/minimize.png +0 -0
  280. package/css/img/next-btn.png +0 -0
  281. package/css/img/search-icon-sprite.png +0 -0
  282. package/css/img/services/blogvio.png +0 -0
  283. package/css/img/services/drive.png +0 -0
  284. package/css/img/services/dropbox-login.png +0 -0
  285. package/css/img/services/dropbox.png +0 -0
  286. package/css/img/services/facebook-login.png +0 -0
  287. package/css/img/services/facebook.png +0 -0
  288. package/css/img/services/flickr-login.png +0 -0
  289. package/css/img/services/flickr.png +0 -0
  290. package/css/img/services/instagram-login.png +0 -0
  291. package/css/img/services/instagram.png +0 -0
  292. package/css/img/services/text.png +0 -0
  293. package/css/img/services/uploads.png +0 -0
  294. package/css/img/services/uploads.svg +0 -689
  295. package/css/img/services/webaddress-bw.png +0 -0
  296. package/css/img/services/webaddress.png +0 -0
  297. package/css/img/services/webadress.png +0 -0
  298. package/css/img/services/websearch.png +0 -0
  299. package/css/img/services/wix.png +0 -0
  300. package/css/img/skin/item-active-indicator.png +0 -0
  301. package/css/img/skin/item-hover-icon.png +0 -0
  302. package/css/img/skin/overwrite.png +0 -0
  303. package/css/img/skin/popup-name-icon.png +0 -0
  304. package/css/img/skin/popup-save.png +0 -0
  305. package/css/img/skin/preset.png +0 -0
  306. package/css/img/skin/presets-arrow-purple.png +0 -0
  307. package/css/img/tw-icon-w.png +0 -0
  308. package/css/img/warning.png +0 -0
  309. package/css/img/white-rounded-check.png +0 -0
  310. package/css/index.styl +0 -9
  311. package/css/mixins.styl +0 -62
  312. package/css/scrollable.styl +0 -101
  313. package/karma.conf.js +0 -73
  314. package/lib/control.js +0 -1
  315. package/lib/controls.js +0 -1
  316. package/lib/core.editor.js +0 -4
  317. package/lib/core.js +0 -1
  318. package/lib/core.vendor.js +0 -3
  319. package/lib/dev/control.js +0 -845
  320. package/lib/dev/controls.js +0 -7774
  321. package/lib/dev/core.editor.js +0 -6439
  322. package/lib/dev/core.js +0 -1486
  323. package/lib/dev/core.vendor.js +0 -10708
  324. package/lib/dev/editor.css +0 -166
  325. package/lib/dev/editor.js +0 -29710
  326. package/lib/dev/editor.vendor.js +0 -15119
  327. package/lib/dev/jquery.nanoscroller.js.map +0 -10
  328. package/lib/editor.css +0 -167
  329. package/lib/editor.js +0 -49
  330. package/lib/editor.vendor.js +0 -11
  331. package/src/api/index.coffee +0 -23
  332. package/src/api/mixin.coffee +0 -89
  333. package/src/browser/controller/entry/audio.coffee +0 -38
  334. package/src/browser/controller/entry/button.coffee +0 -16
  335. package/src/browser/controller/entry/file.coffee +0 -35
  336. package/src/browser/controller/entry/folder.coffee +0 -14
  337. package/src/browser/controller/entry/image.coffee +0 -24
  338. package/src/browser/controller/entry/index.coffee +0 -18
  339. package/src/browser/controller/entry/rss.coffee +0 -5
  340. package/src/browser/controller/entry/video.coffee +0 -4
  341. package/src/browser/controller/index.coffee +0 -289
  342. package/src/browser/controller/instagram.coffee +0 -129
  343. package/src/browser/controller/navbar.coffee +0 -48
  344. package/src/browser/controller/social.coffee +0 -213
  345. package/src/browser/model/entry.coffee +0 -18
  346. package/src/browser/model/index.coffee +0 -34
  347. package/src/core/controller/font-loader.coffee +0 -65
  348. package/src/core/controller/lazyload.coffee +0 -14
  349. package/src/core/controller/overlay.coffee +0 -146
  350. package/src/core/controller/popup.coffee +0 -36
  351. package/src/core/controller/scrollable.coffee +0 -68
  352. package/src/core/controls/audio.coffee +0 -56
  353. package/src/core/controls/browser.coffee +0 -271
  354. package/src/core/controls/color.coffee +0 -121
  355. package/src/core/controls/date-time/calendar/index.coffee +0 -99
  356. package/src/core/controls/date-time/calendar/months.coffee +0 -52
  357. package/src/core/controls/date-time/calendar/years.coffee +0 -58
  358. package/src/core/controls/date-time/clock.coffee +0 -62
  359. package/src/core/controls/date-time/helper.coffee +0 -31
  360. package/src/core/controls/date-time/index.coffee +0 -62
  361. package/src/core/controls/date-time/popup.coffee +0 -56
  362. package/src/core/controls/details/audio.coffee +0 -33
  363. package/src/core/controls/details/image.coffee +0 -19
  364. package/src/core/controls/details/video.coffee +0 -14
  365. package/src/core/controls/dropdown.coffee +0 -100
  366. package/src/core/controls/font/font-item.coffee +0 -22
  367. package/src/core/controls/font/font-list.coffee +0 -108
  368. package/src/core/controls/font/fonts-popup.coffee +0 -91
  369. package/src/core/controls/font/index.coffee +0 -66
  370. package/src/core/controls/image.coffee +0 -37
  371. package/src/core/controls/index.coffee +0 -88
  372. package/src/core/controls/orderPicker.coffee +0 -93
  373. package/src/core/controls/position/grid-panel.coffee +0 -75
  374. package/src/core/controls/position/index.coffee +0 -98
  375. package/src/core/controls/position/panel.coffee +0 -68
  376. package/src/core/controls/position/pixel-panel.coffee +0 -54
  377. package/src/core/controls/position/popup.coffee +0 -63
  378. package/src/core/controls/position/reference-panel.coffee +0 -26
  379. package/src/core/controls/range.coffee +0 -191
  380. package/src/core/controls/rss.coffee +0 -16
  381. package/src/core/controls/scale.coffee +0 -78
  382. package/src/core/controls/slider.coffee +0 -122
  383. package/src/core/controls/stepper.coffee +0 -97
  384. package/src/core/controls/text.coffee +0 -54
  385. package/src/core/controls/textarea.coffee +0 -78
  386. package/src/core/controls/toggle.coffee +0 -29
  387. package/src/core/controls/url.coffee +0 -88
  388. package/src/core/controls/video.coffee +0 -9
  389. package/src/core/embed/api.js +0 -178
  390. package/src/core/embed/controller.js +0 -331
  391. package/src/core/models/composition.coffee +0 -178
  392. package/src/core/models/content.coffee +0 -79
  393. package/src/core/models/skin.coffee +0 -91
  394. package/src/core/models/user.coffee +0 -6
  395. package/src/core/models/widget.coffee +0 -88
  396. package/src/core/router/index.coffee +0 -44
  397. package/src/core/services/container/index.js +0 -18
  398. package/src/core/services/container/instance.js +0 -3
  399. package/src/core/services/content.js +0 -80
  400. package/src/core/services/instagram.coffee +0 -47
  401. package/src/core/services/mixin/events.js +0 -17
  402. package/src/core/services/service.js +0 -1
  403. package/src/core/services/sounds.js +0 -81
  404. package/src/core/services/uploads.js +0 -299
  405. package/src/core/utils/popup.coffee +0 -67
  406. package/src/core/utils/should-show.coffee +0 -12
  407. package/src/core/views/audio-details.pug +0 -9
  408. package/src/core/views/audio.pug +0 -7
  409. package/src/core/views/browser.pug +0 -4
  410. package/src/core/views/color.pug +0 -8
  411. package/src/core/views/date-time/calendar.pug +0 -3
  412. package/src/core/views/date-time/clock.pug +0 -12
  413. package/src/core/views/date-time/grid.pug +0 -6
  414. package/src/core/views/date-time/input.pug +0 -4
  415. package/src/core/views/date-time/table.pug +0 -6
  416. package/src/core/views/dropdown.pug +0 -9
  417. package/src/core/views/font/font-item.pug +0 -3
  418. package/src/core/views/font/fonts-list.pug +0 -7
  419. package/src/core/views/font/fonts-popup.pug +0 -5
  420. package/src/core/views/font/index.pug +0 -7
  421. package/src/core/views/image-details.pug +0 -6
  422. package/src/core/views/image.pug +0 -5
  423. package/src/core/views/input-layout.pug +0 -15
  424. package/src/core/views/order-items.pug +0 -7
  425. package/src/core/views/order-picker.pug +0 -7
  426. package/src/core/views/pixelpanel.pug +0 -69
  427. package/src/core/views/position.pug +0 -10
  428. package/src/core/views/range.pug +0 -9
  429. package/src/core/views/scale.pug +0 -7
  430. package/src/core/views/slider.pug +0 -6
  431. package/src/core/views/stepper.pug +0 -6
  432. package/src/core/views/text.pug +0 -4
  433. package/src/core/views/textarea.pug +0 -8
  434. package/src/core/views/toggle.pug +0 -5
  435. package/src/core/views/video-details.pug +0 -7
  436. package/src/core/views/video.pug +0 -4
  437. package/src/core/widget/index.coffee +0 -66
  438. package/src/editor/content/browser/dropzone.html +0 -268
  439. package/src/editor/content/browser/file.html +0 -124
  440. package/src/editor/content/browser/scroll-pane.html +0 -32
  441. package/src/editor/content/browser/service.html +0 -53
  442. package/src/editor/content/browser/upload.coffee +0 -44
  443. package/src/editor/content/browser/upload.html +0 -439
  444. package/src/editor/content/index.coffee +0 -294
  445. package/src/editor/content/input/field.coffee +0 -45
  446. package/src/editor/content/input/index.coffee +0 -115
  447. package/src/editor/content/service/base/photoitem.coffee +0 -49
  448. package/src/editor/content/service/cache.coffee +0 -20
  449. package/src/editor/content/service/default.coffee +0 -59
  450. package/src/editor/content/service/dropbox.coffee +0 -71
  451. package/src/editor/content/service/facebook.coffee +0 -143
  452. package/src/editor/content/service/flickr.coffee +0 -85
  453. package/src/editor/content/service/google-drive-sdk.coffee +0 -18
  454. package/src/editor/content/service/google-drive.coffee +0 -144
  455. package/src/editor/content/service/instagram-social.coffee +0 -84
  456. package/src/editor/content/service/instagram.coffee +0 -168
  457. package/src/editor/content/service/share-popup.coffee +0 -15
  458. package/src/editor/content/service/soundcloud.coffee +0 -163
  459. package/src/editor/content/tab.coffee +0 -27
  460. package/src/editor/details/bulk-editor/attributes-panel.coffee +0 -11
  461. package/src/editor/details/bulk-editor/index.coffee +0 -86
  462. package/src/editor/details/index.coffee +0 -156
  463. package/src/editor/details/item/attributes.coffee +0 -45
  464. package/src/editor/details/item/index.coffee +0 -82
  465. package/src/editor/editor.coffee +0 -274
  466. package/src/editor/footer/breadcrumb.coffee +0 -17
  467. package/src/editor/footer/index.coffee +0 -36
  468. package/src/editor/index.coffee +0 -79
  469. package/src/editor/listeners/embed-listener.coffee +0 -143
  470. package/src/editor/login-popup.coffee +0 -29
  471. package/src/editor/notification-controller.coffee +0 -35
  472. package/src/editor/popup.coffee +0 -68
  473. package/src/editor/remote-preview.coffee +0 -68
  474. package/src/editor/save/index.coffee +0 -62
  475. package/src/editor/skin/delete.coffee +0 -33
  476. package/src/editor/skin/editor/index.coffee +0 -188
  477. package/src/editor/skin/editor/panel.coffee +0 -37
  478. package/src/editor/skin/index.coffee +0 -126
  479. package/src/editor/skin/save.coffee +0 -58
  480. package/src/editor/skin/selector/index.coffee +0 -59
  481. package/src/editor/skin/selector/item.coffee +0 -123
  482. package/src/editor/skin/selector/list.coffee +0 -97
  483. package/src/editor/views/embed.pug +0 -10
  484. package/src/editor/views/loginbutton.pug +0 -8
  485. package/src/editor/views/popup.pug +0 -17
  486. package/src/editor/views/presets.pug +0 -8
  487. package/src/editor/views/presetslist-header.pug +0 -8
  488. package/src/editor/views/skinitem.pug +0 -13
  489. package/src/modules/control.js +0 -3
  490. package/src/modules/controls.js +0 -29
  491. package/src/modules/core.js +0 -19
  492. package/src/modules/editor.js +0 -80
  493. package/test/config.js +0 -3
  494. package/test/core/models/skin-spec.js +0 -209
  495. package/webpack.config.js +0 -46
  496. package/webpack.config.prod.js +0 -9
  497. /package/{src/core/views/date-time/popup.pug → dist/utils/passiveEvents.d.ts} +0 -0
@@ -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,5 @@
1
+ export const picker_size: 256;
2
+ export const slider_width: 31;
3
+ export const border_size: 10;
4
+ export const gap_size: 30;
5
+ export const eps: 0.0001;
@@ -0,0 +1,5 @@
1
+ export const picker_size = 256;
2
+ export const slider_width = 31;
3
+ export const border_size = 10;
4
+ export const gap_size = 30;
5
+ export const eps = 0.0001;
@@ -0,0 +1,5 @@
1
+ export function render_slider_image(canvas: any): void;
2
+ export function render_main_image(canvas: any, hue: any): {
3
+ update: (hue: any) => void;
4
+ destroy(): void;
5
+ };
@@ -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,3 @@
1
+ declare const l: string;
2
+ declare const t: string;
3
+ export { l as f_shader, t as v_shader };
@@ -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
+ };