@widgetic/editor 3.11.3 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. package/README.md +245 -0
  2. package/dist/assets/fonts.json +331 -0
  3. package/dist/assets/icons/ic-browser/audio.svg +7 -0
  4. package/dist/assets/icons/ic-browser/document.svg +11 -0
  5. package/dist/assets/icons/ic-browser/error.svg +5 -0
  6. package/dist/assets/icons/ic-browser/folder.svg +28 -0
  7. package/dist/assets/icons/ic-browser/player-pause.svg +1 -0
  8. package/dist/assets/icons/ic-browser/player-play.svg +1 -0
  9. package/dist/assets/icons/ic-browser/trash.svg +1 -0
  10. package/dist/assets/icons/ic-fixed-position/background-deselected.svg +3 -0
  11. package/dist/assets/icons/ic-fixed-position/background-selected.svg +3 -0
  12. package/dist/assets/icons/ic-fixed-position/bottom-left-background-deselected.svg +3 -0
  13. package/dist/assets/icons/ic-fixed-position/bottom-left-background-selected.svg +3 -0
  14. package/dist/assets/icons/ic-fixed-position/bottom-left-icon.svg +4 -0
  15. package/dist/assets/icons/ic-fixed-position/bottom-right-background-deselected.svg +3 -0
  16. package/dist/assets/icons/ic-fixed-position/bottom-right-background-selected.svg +3 -0
  17. package/dist/assets/icons/ic-fixed-position/bottom-right-icon.svg +4 -0
  18. package/dist/assets/icons/ic-fixed-position/center-bottom-icon.svg +5 -0
  19. package/dist/assets/icons/ic-fixed-position/center-center-icon.svg +3 -0
  20. package/dist/assets/icons/ic-fixed-position/center-left-icon.svg +5 -0
  21. package/dist/assets/icons/ic-fixed-position/center-right-icon.svg +5 -0
  22. package/dist/assets/icons/ic-fixed-position/center-top-icon.svg +5 -0
  23. package/dist/assets/icons/ic-fixed-position/top-left-background-deselected.svg +3 -0
  24. package/dist/assets/icons/ic-fixed-position/top-left-background-selected.svg +3 -0
  25. package/dist/assets/icons/ic-fixed-position/top-left-icon.svg +4 -0
  26. package/dist/assets/icons/ic-fixed-position/top-right-background-deselected.svg +3 -0
  27. package/dist/assets/icons/ic-fixed-position/top-right-background-selected.svg +3 -0
  28. package/dist/assets/icons/ic-fixed-position/top-right-icon.svg +4 -0
  29. package/dist/assets/icons/trash.svg +1 -0
  30. package/dist/components/MockWidget.svelte +108 -0
  31. package/dist/components/MockWidget.svelte.d.ts +22 -0
  32. package/dist/components/WidgetPreview.svelte +852 -0
  33. package/dist/components/WidgetPreview.svelte.d.ts +100 -0
  34. package/dist/components/color-select/ColorSelect.svelte +258 -0
  35. package/dist/components/color-select/ColorSelect.svelte.d.ts +42 -0
  36. package/dist/components/color-select/color.d.ts +25 -0
  37. package/dist/components/color-select/color.js +21 -0
  38. package/dist/components/color-select/constants.d.ts +5 -0
  39. package/dist/components/color-select/constants.js +5 -0
  40. package/dist/components/color-select/render.d.ts +5 -0
  41. package/dist/components/color-select/render.js +77 -0
  42. package/dist/components/color-select/shaders.d.ts +3 -0
  43. package/dist/components/color-select/shaders.js +8 -0
  44. package/dist/components/editors/EmbedEditor.svelte +700 -0
  45. package/dist/components/editors/EmbedEditor.svelte.d.ts +50 -0
  46. package/dist/components/editors/PropsEditor.svelte +3952 -0
  47. package/dist/components/editors/PropsEditor.svelte.d.ts +62 -0
  48. package/dist/components/editors/props-editor.css +73 -0
  49. package/dist/components/ic/AngleInputController.svelte +276 -0
  50. package/dist/components/ic/AngleInputController.svelte.d.ts +26 -0
  51. package/dist/components/ic/BrowserInputController.svelte +724 -0
  52. package/dist/components/ic/BrowserInputController.svelte.d.ts +39 -0
  53. package/dist/components/ic/CheckboxInputController.svelte +203 -0
  54. package/dist/components/ic/CheckboxInputController.svelte.d.ts +41 -0
  55. package/dist/components/ic/ColorPickerInputController.svelte +1584 -0
  56. package/dist/components/ic/ColorPickerInputController.svelte.d.ts +50 -0
  57. package/dist/components/ic/DateFieldInputController.svelte +453 -0
  58. package/dist/components/ic/DateFieldInputController.svelte.d.ts +35 -0
  59. package/dist/components/ic/DatePickerInputController.svelte +364 -0
  60. package/dist/components/ic/DatePickerInputController.svelte.d.ts +28 -0
  61. package/dist/components/ic/DropdownInputController.svelte +226 -0
  62. package/dist/components/ic/DropdownInputController.svelte.d.ts +43 -0
  63. package/dist/components/ic/FixedPositionInputController.svelte +353 -0
  64. package/dist/components/ic/FixedPositionInputController.svelte.d.ts +23 -0
  65. package/dist/components/ic/FontInputController.svelte +2062 -0
  66. package/dist/components/ic/FontInputController.svelte.d.ts +47 -0
  67. package/dist/components/ic/InputControllerHeader.svelte +147 -0
  68. package/dist/components/ic/InputControllerHeader.svelte.d.ts +23 -0
  69. package/dist/components/ic/NumberControls.svelte +299 -0
  70. package/dist/components/ic/NumberControls.svelte.d.ts +30 -0
  71. package/dist/components/ic/NumberInputController.svelte +397 -0
  72. package/dist/components/ic/NumberInputController.svelte.d.ts +30 -0
  73. package/dist/components/ic/PositionInputController.svelte +252 -0
  74. package/dist/components/ic/PositionInputController.svelte.d.ts +37 -0
  75. package/dist/components/ic/RadioGroupInputController.svelte +162 -0
  76. package/dist/components/ic/RadioGroupInputController.svelte.d.ts +38 -0
  77. package/dist/components/ic/RangeCalendarInputController.svelte +262 -0
  78. package/dist/components/ic/RangeCalendarInputController.svelte.d.ts +32 -0
  79. package/dist/components/ic/RoundedCornersInputController.svelte +469 -0
  80. package/dist/components/ic/RoundedCornersInputController.svelte.d.ts +37 -0
  81. package/dist/components/ic/SliderInputController.svelte +411 -0
  82. package/dist/components/ic/SliderInputController.svelte.d.ts +46 -0
  83. package/dist/components/ic/SliderRangeInputController.svelte +155 -0
  84. package/dist/components/ic/SliderRangeInputController.svelte.d.ts +33 -0
  85. package/dist/components/ic/SwitchInputController.svelte +107 -0
  86. package/dist/components/ic/SwitchInputController.svelte.d.ts +24 -0
  87. package/dist/components/ic/TagsInputController.svelte +125 -0
  88. package/dist/components/ic/TagsInputController.svelte.d.ts +27 -0
  89. package/dist/components/ic/TextAreaInputController.svelte +1804 -0
  90. package/dist/components/ic/TextAreaInputController.svelte.d.ts +13 -0
  91. package/dist/components/ic/TextAreaPreviewInputController.svelte +476 -0
  92. package/dist/components/ic/TextAreaPreviewInputController.svelte.d.ts +28 -0
  93. package/dist/components/ic/TextInputController.svelte +70 -0
  94. package/dist/components/ic/TextInputController.svelte.d.ts +30 -0
  95. package/dist/components/ic/TimeInputController.svelte +434 -0
  96. package/dist/components/ic/TimeInputController.svelte.d.ts +25 -0
  97. package/dist/components/ic/VectorInputController.svelte +1826 -0
  98. package/dist/components/ic/VectorInputController.svelte.d.ts +47 -0
  99. package/dist/components/ic/index.d.ts +39 -0
  100. package/dist/components/ic/index.js +24 -0
  101. package/dist/components/ic/shared/CategoryTabs.svelte +40 -0
  102. package/dist/components/ic/shared/CategoryTabs.svelte.d.ts +25 -0
  103. package/dist/components/ic/shared/ItemGrid.svelte +181 -0
  104. package/dist/components/ic/shared/ItemGrid.svelte.d.ts +35 -0
  105. package/dist/components/ic/shared/RecentItemsSection.svelte +260 -0
  106. package/dist/components/ic/shared/RecentItemsSection.svelte.d.ts +35 -0
  107. package/dist/components/ic/shared/index.d.ts +8 -0
  108. package/dist/components/ic/shared/index.js +9 -0
  109. package/dist/components/icons/addnew.svelte +21 -0
  110. package/dist/components/icons/addnew.svelte.d.ts +20 -0
  111. package/dist/components/icons/drag.svelte +29 -0
  112. package/dist/components/icons/drag.svelte.d.ts +20 -0
  113. package/dist/components/icons/drag.svg +1 -0
  114. package/dist/components/icons/locked.svelte +4 -0
  115. package/dist/components/icons/locked.svelte.d.ts +26 -0
  116. package/dist/components/icons/locked.svg +4 -0
  117. package/dist/components/icons/ok.svelte +20 -0
  118. package/dist/components/icons/ok.svelte.d.ts +20 -0
  119. package/dist/components/icons/ok.svg +11 -0
  120. package/dist/components/icons/unlocked.svelte +4 -0
  121. package/dist/components/icons/unlocked.svelte.d.ts +26 -0
  122. package/dist/components/icons/unlocked.svg +4 -0
  123. package/dist/components/icons/x.svelte +14 -0
  124. package/dist/components/icons/x.svelte.d.ts +20 -0
  125. package/dist/components/icons/x.svg +5 -0
  126. package/dist/components/ui/arrows/OpacitySliderArrows.svelte +43 -0
  127. package/dist/components/ui/arrows/OpacitySliderArrows.svelte.d.ts +23 -0
  128. package/dist/components/ui/checkerboard-background/CheckerboardBackground.svelte +15 -0
  129. package/dist/components/ui/checkerboard-background/CheckerboardBackground.svelte.d.ts +20 -0
  130. package/dist/config.d.ts +5 -0
  131. package/dist/config.js +19 -0
  132. package/dist/index.d.ts +4 -0
  133. package/dist/index.js +8 -0
  134. package/dist/stores/userSession.d.ts +7 -0
  135. package/dist/stores/userSession.js +28 -0
  136. package/dist/utils/FontManager.d.ts +276 -0
  137. package/dist/utils/FontManager.js +1283 -0
  138. package/dist/utils/MediaManager.d.ts +35 -0
  139. package/dist/utils/MediaManager.js +59 -0
  140. package/dist/utils/VectorManager.d.ts +190 -0
  141. package/dist/utils/VectorManager.js +754 -0
  142. package/dist/utils/colorAutocomplete.d.ts +10 -0
  143. package/dist/utils/colorAutocomplete.js +28 -0
  144. package/dist/utils/colorNames.d.ts +3 -0
  145. package/dist/utils/colorNames.js +152 -0
  146. package/dist/utils/colorTransparency.d.ts +52 -0
  147. package/dist/utils/colorTransparency.js +114 -0
  148. package/dist/utils/fontUtils.d.ts +34 -0
  149. package/dist/utils/fontUtils.js +132 -0
  150. package/dist/utils/passiveEvents.js +20 -0
  151. package/dist/utils/recentColors.d.ts +10 -0
  152. package/dist/utils/recentColors.js +63 -0
  153. package/dist/utils/skipFonts.d.ts +3 -0
  154. package/dist/utils/skipFonts.js +49 -0
  155. package/dist/utils/vectorUtils.d.ts +34 -0
  156. package/dist/utils/vectorUtils.js +71 -0
  157. package/dist/utils.d.ts +11 -0
  158. package/dist/utils.js +38 -0
  159. package/package.json +134 -74
  160. package/.babelrc +0 -10
  161. package/.bowerrc +0 -4
  162. package/.nvmrc +0 -1
  163. package/Gruntfile.coffee +0 -69
  164. package/bower.json +0 -28
  165. package/css/browser/entries/activateable.styl +0 -29
  166. package/css/browser/entries/audio.styl +0 -39
  167. package/css/browser/entries/folder.styl +0 -79
  168. package/css/browser/entries/image.styl +0 -26
  169. package/css/browser/entries/index.styl +0 -66
  170. package/css/browser/entries/rss.styl +0 -11
  171. package/css/browser/entries/video.styl +0 -11
  172. package/css/browser/index.styl +0 -86
  173. package/css/browser/intent/index.styl +0 -61
  174. package/css/browser/nav/index.styl +0 -73
  175. package/css/browser/social-browser.styl +0 -23
  176. package/css/controls/clock.styl +0 -110
  177. package/css/controls/config.styl +0 -6
  178. package/css/controls/control-audio-details.styl +0 -63
  179. package/css/controls/control-audio.styl +0 -28
  180. package/css/controls/control-browser.styl +0 -48
  181. package/css/controls/control-color.styl +0 -423
  182. package/css/controls/control-date_time.styl +0 -191
  183. package/css/controls/control-dropdown.styl +0 -79
  184. package/css/controls/control-font.styl +0 -147
  185. package/css/controls/control-image-details.styl +0 -35
  186. package/css/controls/control-image.styl +0 -43
  187. package/css/controls/control-order-picker.styl +0 -29
  188. package/css/controls/control-position.styl +0 -390
  189. package/css/controls/control-range.styl +0 -68
  190. package/css/controls/control-scale.styl +0 -30
  191. package/css/controls/control-slider.styl +0 -38
  192. package/css/controls/control-spinner.styl +0 -39
  193. package/css/controls/control-textarea.styl +0 -52
  194. package/css/controls/control-toggle.styl +0 -34
  195. package/css/controls/control-url.styl +0 -32
  196. package/css/controls/control-video-details.styl +0 -85
  197. package/css/controls/control-video.styl +0 -43
  198. package/css/controls/general.styl +0 -98
  199. package/css/controls/index.styl +0 -25
  200. package/css/editor/colors.styl +0 -7
  201. package/css/editor/content/directinput.styl +0 -47
  202. package/css/editor/content/index.styl +0 -111
  203. package/css/editor/content/message.styl +0 -53
  204. package/css/editor/content/tabs.styl +0 -75
  205. package/css/editor/copied-from-old-style.styl +0 -197
  206. package/css/editor/details/bulk-editor.styl +0 -104
  207. package/css/editor/details/index.styl +0 -21
  208. package/css/editor/details/item.styl +0 -153
  209. package/css/editor/embed.styl +0 -106
  210. package/css/editor/footer.styl +0 -180
  211. package/css/editor/full-editor.styl +0 -16
  212. package/css/editor/index.styl +0 -124
  213. package/css/editor/login-popup.styl +0 -13
  214. package/css/editor/preview.styl +0 -257
  215. package/css/editor/skin/editor/index.styl +0 -54
  216. package/css/editor/skin/editor/tabs.styl +0 -111
  217. package/css/editor/skin/index.styl +0 -138
  218. package/css/editor/skin/popup.styl +0 -152
  219. package/css/editor/skin/presets/dropdown.styl +0 -61
  220. package/css/editor/skin/presets/index.styl +0 -86
  221. package/css/editor/skin/presets/list.styl +0 -244
  222. package/css/editor/tooltips.styl +0 -85
  223. package/css/fonts.styl +0 -47
  224. package/css/icons/BlogvioEditor.dev.svg +0 -112
  225. package/css/icons.styl +0 -16
  226. package/css/img/arrow-right-rounded-v-small.png +0 -0
  227. package/css/img/browser-folder-separator.png +0 -0
  228. package/css/img/calendar-input-icons.png +0 -0
  229. package/css/img/check.png +0 -0
  230. package/css/img/close.png +0 -0
  231. package/css/img/composition/edit-icon.png +0 -0
  232. package/css/img/content/audio-icon.png +0 -0
  233. package/css/img/content/folder-icon.png +0 -0
  234. package/css/img/content/messages/error-background.png +0 -0
  235. package/css/img/content/messages/error-icon.png +0 -0
  236. package/css/img/content/messages/notification-background.png +0 -0
  237. package/css/img/content/messages/notification-icon.png +0 -0
  238. package/css/img/content/no-files-audio.png +0 -0
  239. package/css/img/content/no-files-image.png +0 -0
  240. package/css/img/content/no-files-video.png +0 -0
  241. package/css/img/content/no-files.png +0 -0
  242. package/css/img/content/rss-icon.png +0 -0
  243. package/css/img/content/selected.png +0 -0
  244. package/css/img/content/video-icon.png +0 -0
  245. package/css/img/content/with-control-text.png +0 -0
  246. package/css/img/control-dropdown-arrow.png +0 -0
  247. package/css/img/control-image-valid.png +0 -0
  248. package/css/img/control-position-icon.png +0 -0
  249. package/css/img/control-scale-lock-icon.png +0 -0
  250. package/css/img/control-slider-arrows-hover.png +0 -0
  251. package/css/img/control-slider-arrows.png +0 -0
  252. package/css/img/control-spinner-buttons-hover.png +0 -0
  253. package/css/img/control-spinner-buttons.png +0 -0
  254. package/css/img/control-textarea-bold-active.png +0 -0
  255. package/css/img/control-textarea-bold.png +0 -0
  256. package/css/img/control-textarea-italic-active.png +0 -0
  257. package/css/img/control-textarea-italic.png +0 -0
  258. package/css/img/control-textarea-underline-active.png +0 -0
  259. package/css/img/control-textarea-underline.png +0 -0
  260. package/css/img/custom-checkbox-sprite.png +0 -0
  261. package/css/img/details/item-collapse-icon.png +0 -0
  262. package/css/img/details/item-expand-icon.png +0 -0
  263. package/css/img/details/item-sort-icon.png +0 -0
  264. package/css/img/done-arrow.png +0 -0
  265. package/css/img/fb-logo-icon-w.png +0 -0
  266. package/css/img/grid-icons.png +0 -0
  267. package/css/img/icon-reference.png +0 -0
  268. package/css/img/indicator.png +0 -0
  269. package/css/img/loader.gif +0 -0
  270. package/css/img/loaders/audio-white.png +0 -0
  271. package/css/img/loaders/audio.png +0 -0
  272. package/css/img/loaders/photo-white.png +0 -0
  273. package/css/img/loaders/photo.png +0 -0
  274. package/css/img/loaders/util-white.png +0 -0
  275. package/css/img/loaders/util.png +0 -0
  276. package/css/img/loaders/video-white.png +0 -0
  277. package/css/img/loaders/video.png +0 -0
  278. package/css/img/maximize.png +0 -0
  279. package/css/img/minimize.png +0 -0
  280. package/css/img/next-btn.png +0 -0
  281. package/css/img/search-icon-sprite.png +0 -0
  282. package/css/img/services/blogvio.png +0 -0
  283. package/css/img/services/drive.png +0 -0
  284. package/css/img/services/dropbox-login.png +0 -0
  285. package/css/img/services/dropbox.png +0 -0
  286. package/css/img/services/facebook-login.png +0 -0
  287. package/css/img/services/facebook.png +0 -0
  288. package/css/img/services/flickr-login.png +0 -0
  289. package/css/img/services/flickr.png +0 -0
  290. package/css/img/services/instagram-login.png +0 -0
  291. package/css/img/services/instagram.png +0 -0
  292. package/css/img/services/text.png +0 -0
  293. package/css/img/services/uploads.png +0 -0
  294. package/css/img/services/uploads.svg +0 -689
  295. package/css/img/services/webaddress-bw.png +0 -0
  296. package/css/img/services/webaddress.png +0 -0
  297. package/css/img/services/webadress.png +0 -0
  298. package/css/img/services/websearch.png +0 -0
  299. package/css/img/services/wix.png +0 -0
  300. package/css/img/skin/item-active-indicator.png +0 -0
  301. package/css/img/skin/item-hover-icon.png +0 -0
  302. package/css/img/skin/overwrite.png +0 -0
  303. package/css/img/skin/popup-name-icon.png +0 -0
  304. package/css/img/skin/popup-save.png +0 -0
  305. package/css/img/skin/preset.png +0 -0
  306. package/css/img/skin/presets-arrow-purple.png +0 -0
  307. package/css/img/tw-icon-w.png +0 -0
  308. package/css/img/warning.png +0 -0
  309. package/css/img/white-rounded-check.png +0 -0
  310. package/css/index.styl +0 -9
  311. package/css/mixins.styl +0 -62
  312. package/css/scrollable.styl +0 -101
  313. package/karma.conf.js +0 -73
  314. package/lib/control.js +0 -1
  315. package/lib/controls.js +0 -1
  316. package/lib/core.editor.js +0 -4
  317. package/lib/core.js +0 -1
  318. package/lib/core.vendor.js +0 -3
  319. package/lib/dev/control.js +0 -845
  320. package/lib/dev/controls.js +0 -7774
  321. package/lib/dev/core.editor.js +0 -6439
  322. package/lib/dev/core.js +0 -1486
  323. package/lib/dev/core.vendor.js +0 -10708
  324. package/lib/dev/editor.css +0 -166
  325. package/lib/dev/editor.js +0 -29710
  326. package/lib/dev/editor.vendor.js +0 -15119
  327. package/lib/dev/jquery.nanoscroller.js.map +0 -10
  328. package/lib/editor.css +0 -167
  329. package/lib/editor.js +0 -49
  330. package/lib/editor.vendor.js +0 -11
  331. package/src/api/index.coffee +0 -23
  332. package/src/api/mixin.coffee +0 -89
  333. package/src/browser/controller/entry/audio.coffee +0 -38
  334. package/src/browser/controller/entry/button.coffee +0 -16
  335. package/src/browser/controller/entry/file.coffee +0 -35
  336. package/src/browser/controller/entry/folder.coffee +0 -14
  337. package/src/browser/controller/entry/image.coffee +0 -24
  338. package/src/browser/controller/entry/index.coffee +0 -18
  339. package/src/browser/controller/entry/rss.coffee +0 -5
  340. package/src/browser/controller/entry/video.coffee +0 -4
  341. package/src/browser/controller/index.coffee +0 -289
  342. package/src/browser/controller/instagram.coffee +0 -129
  343. package/src/browser/controller/navbar.coffee +0 -48
  344. package/src/browser/controller/social.coffee +0 -213
  345. package/src/browser/model/entry.coffee +0 -18
  346. package/src/browser/model/index.coffee +0 -34
  347. package/src/core/controller/font-loader.coffee +0 -65
  348. package/src/core/controller/lazyload.coffee +0 -14
  349. package/src/core/controller/overlay.coffee +0 -146
  350. package/src/core/controller/popup.coffee +0 -36
  351. package/src/core/controller/scrollable.coffee +0 -68
  352. package/src/core/controls/audio.coffee +0 -56
  353. package/src/core/controls/browser.coffee +0 -271
  354. package/src/core/controls/color.coffee +0 -121
  355. package/src/core/controls/date-time/calendar/index.coffee +0 -99
  356. package/src/core/controls/date-time/calendar/months.coffee +0 -52
  357. package/src/core/controls/date-time/calendar/years.coffee +0 -58
  358. package/src/core/controls/date-time/clock.coffee +0 -62
  359. package/src/core/controls/date-time/helper.coffee +0 -31
  360. package/src/core/controls/date-time/index.coffee +0 -62
  361. package/src/core/controls/date-time/popup.coffee +0 -56
  362. package/src/core/controls/details/audio.coffee +0 -33
  363. package/src/core/controls/details/image.coffee +0 -19
  364. package/src/core/controls/details/video.coffee +0 -14
  365. package/src/core/controls/dropdown.coffee +0 -100
  366. package/src/core/controls/font/font-item.coffee +0 -22
  367. package/src/core/controls/font/font-list.coffee +0 -108
  368. package/src/core/controls/font/fonts-popup.coffee +0 -91
  369. package/src/core/controls/font/index.coffee +0 -66
  370. package/src/core/controls/image.coffee +0 -37
  371. package/src/core/controls/index.coffee +0 -88
  372. package/src/core/controls/orderPicker.coffee +0 -93
  373. package/src/core/controls/position/grid-panel.coffee +0 -75
  374. package/src/core/controls/position/index.coffee +0 -98
  375. package/src/core/controls/position/panel.coffee +0 -68
  376. package/src/core/controls/position/pixel-panel.coffee +0 -54
  377. package/src/core/controls/position/popup.coffee +0 -63
  378. package/src/core/controls/position/reference-panel.coffee +0 -26
  379. package/src/core/controls/range.coffee +0 -191
  380. package/src/core/controls/rss.coffee +0 -16
  381. package/src/core/controls/scale.coffee +0 -78
  382. package/src/core/controls/slider.coffee +0 -122
  383. package/src/core/controls/stepper.coffee +0 -97
  384. package/src/core/controls/text.coffee +0 -54
  385. package/src/core/controls/textarea.coffee +0 -78
  386. package/src/core/controls/toggle.coffee +0 -29
  387. package/src/core/controls/url.coffee +0 -88
  388. package/src/core/controls/video.coffee +0 -9
  389. package/src/core/embed/api.js +0 -178
  390. package/src/core/embed/controller.js +0 -331
  391. package/src/core/models/composition.coffee +0 -178
  392. package/src/core/models/content.coffee +0 -79
  393. package/src/core/models/skin.coffee +0 -91
  394. package/src/core/models/user.coffee +0 -6
  395. package/src/core/models/widget.coffee +0 -88
  396. package/src/core/router/index.coffee +0 -44
  397. package/src/core/services/container/index.js +0 -18
  398. package/src/core/services/container/instance.js +0 -3
  399. package/src/core/services/content.js +0 -80
  400. package/src/core/services/instagram.coffee +0 -47
  401. package/src/core/services/mixin/events.js +0 -17
  402. package/src/core/services/service.js +0 -1
  403. package/src/core/services/sounds.js +0 -81
  404. package/src/core/services/uploads.js +0 -299
  405. package/src/core/utils/popup.coffee +0 -67
  406. package/src/core/utils/should-show.coffee +0 -12
  407. package/src/core/views/audio-details.pug +0 -9
  408. package/src/core/views/audio.pug +0 -7
  409. package/src/core/views/browser.pug +0 -4
  410. package/src/core/views/color.pug +0 -8
  411. package/src/core/views/date-time/calendar.pug +0 -3
  412. package/src/core/views/date-time/clock.pug +0 -12
  413. package/src/core/views/date-time/grid.pug +0 -6
  414. package/src/core/views/date-time/input.pug +0 -4
  415. package/src/core/views/date-time/table.pug +0 -6
  416. package/src/core/views/dropdown.pug +0 -9
  417. package/src/core/views/font/font-item.pug +0 -3
  418. package/src/core/views/font/fonts-list.pug +0 -7
  419. package/src/core/views/font/fonts-popup.pug +0 -5
  420. package/src/core/views/font/index.pug +0 -7
  421. package/src/core/views/image-details.pug +0 -6
  422. package/src/core/views/image.pug +0 -5
  423. package/src/core/views/input-layout.pug +0 -15
  424. package/src/core/views/order-items.pug +0 -7
  425. package/src/core/views/order-picker.pug +0 -7
  426. package/src/core/views/pixelpanel.pug +0 -69
  427. package/src/core/views/position.pug +0 -10
  428. package/src/core/views/range.pug +0 -9
  429. package/src/core/views/scale.pug +0 -7
  430. package/src/core/views/slider.pug +0 -6
  431. package/src/core/views/stepper.pug +0 -6
  432. package/src/core/views/text.pug +0 -4
  433. package/src/core/views/textarea.pug +0 -8
  434. package/src/core/views/toggle.pug +0 -5
  435. package/src/core/views/video-details.pug +0 -7
  436. package/src/core/views/video.pug +0 -4
  437. package/src/core/widget/index.coffee +0 -66
  438. package/src/editor/content/browser/dropzone.html +0 -268
  439. package/src/editor/content/browser/file.html +0 -124
  440. package/src/editor/content/browser/scroll-pane.html +0 -32
  441. package/src/editor/content/browser/service.html +0 -53
  442. package/src/editor/content/browser/upload.coffee +0 -44
  443. package/src/editor/content/browser/upload.html +0 -439
  444. package/src/editor/content/index.coffee +0 -294
  445. package/src/editor/content/input/field.coffee +0 -45
  446. package/src/editor/content/input/index.coffee +0 -115
  447. package/src/editor/content/service/base/photoitem.coffee +0 -49
  448. package/src/editor/content/service/cache.coffee +0 -20
  449. package/src/editor/content/service/default.coffee +0 -59
  450. package/src/editor/content/service/dropbox.coffee +0 -71
  451. package/src/editor/content/service/facebook.coffee +0 -143
  452. package/src/editor/content/service/flickr.coffee +0 -85
  453. package/src/editor/content/service/google-drive-sdk.coffee +0 -18
  454. package/src/editor/content/service/google-drive.coffee +0 -144
  455. package/src/editor/content/service/instagram-social.coffee +0 -84
  456. package/src/editor/content/service/instagram.coffee +0 -168
  457. package/src/editor/content/service/share-popup.coffee +0 -15
  458. package/src/editor/content/service/soundcloud.coffee +0 -163
  459. package/src/editor/content/tab.coffee +0 -27
  460. package/src/editor/details/bulk-editor/attributes-panel.coffee +0 -11
  461. package/src/editor/details/bulk-editor/index.coffee +0 -86
  462. package/src/editor/details/index.coffee +0 -156
  463. package/src/editor/details/item/attributes.coffee +0 -45
  464. package/src/editor/details/item/index.coffee +0 -82
  465. package/src/editor/editor.coffee +0 -274
  466. package/src/editor/footer/breadcrumb.coffee +0 -17
  467. package/src/editor/footer/index.coffee +0 -36
  468. package/src/editor/index.coffee +0 -79
  469. package/src/editor/listeners/embed-listener.coffee +0 -143
  470. package/src/editor/login-popup.coffee +0 -29
  471. package/src/editor/notification-controller.coffee +0 -35
  472. package/src/editor/popup.coffee +0 -68
  473. package/src/editor/remote-preview.coffee +0 -68
  474. package/src/editor/save/index.coffee +0 -62
  475. package/src/editor/skin/delete.coffee +0 -33
  476. package/src/editor/skin/editor/index.coffee +0 -188
  477. package/src/editor/skin/editor/panel.coffee +0 -37
  478. package/src/editor/skin/index.coffee +0 -126
  479. package/src/editor/skin/save.coffee +0 -58
  480. package/src/editor/skin/selector/index.coffee +0 -59
  481. package/src/editor/skin/selector/item.coffee +0 -123
  482. package/src/editor/skin/selector/list.coffee +0 -97
  483. package/src/editor/views/embed.pug +0 -10
  484. package/src/editor/views/loginbutton.pug +0 -8
  485. package/src/editor/views/popup.pug +0 -17
  486. package/src/editor/views/presets.pug +0 -8
  487. package/src/editor/views/presetslist-header.pug +0 -8
  488. package/src/editor/views/skinitem.pug +0 -13
  489. package/src/modules/control.js +0 -3
  490. package/src/modules/controls.js +0 -29
  491. package/src/modules/core.js +0 -19
  492. package/src/modules/editor.js +0 -80
  493. package/test/config.js +0 -3
  494. package/test/core/models/skin-spec.js +0 -209
  495. package/webpack.config.js +0 -46
  496. package/webpack.config.prod.js +0 -9
  497. /package/{src/core/views/date-time/popup.pug → dist/utils/passiveEvents.d.ts} +0 -0
@@ -0,0 +1,13 @@
1
+ import type { InputControllerConfig } from './index';
2
+ type $$ComponentProps = {
3
+ class: string;
4
+ label: string;
5
+ value: string;
6
+ onChange: (newValue: string) => void;
7
+ config?: InputControllerConfig;
8
+ description?: string;
9
+ onFocus?: () => void;
10
+ };
11
+ declare const TextAreaInputController: import("svelte").Component<$$ComponentProps, {}, "value">;
12
+ type TextAreaInputController = ReturnType<typeof TextAreaInputController>;
13
+ export default TextAreaInputController;
@@ -0,0 +1,476 @@
1
+ <script lang="ts">
2
+ // Import Shadcn UI components from Widgetic design-system package
3
+ import { Button, Portal } from '@widgetic/design-system/components';
4
+ import { IconArrowsDiagonal, IconArrowsMaximize, IconX, IconBrush, IconBold, IconItalic, IconUnderline, IconLink } from '@widgetic/design-system/icons';
5
+ import { onMount, onDestroy } from 'svelte';
6
+
7
+ // Local components
8
+ import { InputControllerHeader, TextAreaInputController } from './index';
9
+ import type { InputControllerConfig } from './index';
10
+
11
+ /**
12
+ * Component props
13
+ */
14
+ export let label: string = '';
15
+ export let value: string = '';
16
+ export let onChange: any;
17
+ export let config: InputControllerConfig = {};
18
+ export let description: string | undefined = undefined;
19
+ export let portalTarget: string = '';
20
+ /**
21
+ * Local Variables
22
+ */
23
+
24
+ // Use config values with fallbacks
25
+ const placeholder: string = config.placeholder || '';
26
+
27
+ let isShowingTextArea = false;
28
+
29
+ // Add a computed property to determine if we're showing placeholder
30
+ $: isShowingPlaceholder = !value && placeholder;
31
+
32
+ // Create a preview version of the text that preserves formatting
33
+ $: previewText = value ? createPreviewText(value) : placeholder;
34
+
35
+ // Add this to track the current color
36
+ let currentColor = '#1a1a1a'; // Default color
37
+
38
+ // Add this near the top with other state declarations
39
+ let isPortalHovered = false;
40
+
41
+ // Add this to store the background rect ref
42
+ let backgroundRectRef: HTMLDivElement;
43
+
44
+ // Add these near the top with other state declarations
45
+ let isClosing = false;
46
+
47
+ /**
48
+ * Methods
49
+ */
50
+ function createPreviewText(text: string) {
51
+ if (!text) return '';
52
+
53
+ const parser = new DOMParser();
54
+ const doc = parser.parseFromString(text, 'text/html');
55
+
56
+ function processNode(node: Node): string {
57
+ if (node.nodeType === Node.TEXT_NODE) {
58
+ return node.textContent || '';
59
+ }
60
+
61
+ if (node.nodeType === Node.ELEMENT_NODE) {
62
+ const element = node as Element;
63
+ const tag = element.tagName.toLowerCase();
64
+ const attributes: Record<string, string> = {};
65
+
66
+ // Preserve all style attributes
67
+ const style = element.getAttribute('style');
68
+ if (style) {
69
+ // Extract color value from style
70
+ const colorMatch = style.match(/color:\s*([^;]+)/);
71
+ if (colorMatch) {
72
+ const color = colorMatch[1];
73
+ // Set the color as a CSS variable
74
+ attributes.style = `--color: ${color}; ${style}`;
75
+ } else {
76
+ attributes.style = style;
77
+ }
78
+ }
79
+
80
+ // Preserve data-text-style attribute
81
+ const textStyle = element.getAttribute('data-text-style');
82
+ if (textStyle) {
83
+ attributes['data-text-style'] = textStyle;
84
+ // Add preserve-color class
85
+ attributes.class = (attributes.class || '') + ' preserve-color';
86
+ }
87
+
88
+ // Preserve heading classes
89
+ if (tag.match(/^h[1-4]$/)) {
90
+ attributes.class = (attributes.class || '') + ' tiptap-heading';
91
+ }
92
+
93
+ // Build start tag with attributes
94
+ let startTag = `<${tag}`;
95
+ for (const [key, value] of Object.entries(attributes)) {
96
+ startTag += ` ${key}="${value.trim()}"`;
97
+ }
98
+ startTag += '>';
99
+
100
+ // Process child nodes
101
+ const children = Array.from(node.childNodes)
102
+ .map(child => processNode(child))
103
+ .join('');
104
+
105
+ return `${startTag}${children}</${tag}>`;
106
+ }
107
+
108
+ return '';
109
+ }
110
+
111
+ const processedNodes = Array.from(doc.body.childNodes)
112
+ .map(node => processNode(node))
113
+ .join('');
114
+
115
+ return processedNodes;
116
+ }
117
+
118
+ function handleClick() {
119
+ console.log('Opening text area in portal');
120
+ isShowingTextArea = !isShowingTextArea;
121
+ }
122
+
123
+ $: if (isShowingTextArea) {
124
+ setTimeout(() => {
125
+ const editor = document.querySelector('.ProseMirror');
126
+ if (editor instanceof HTMLElement) {
127
+ editor.focus();
128
+ }
129
+ }, 100); // Give a bit more time for the portal to mount
130
+ }
131
+
132
+ // Update value reactively to track color changes
133
+ $: {
134
+ if (value) {
135
+ const colorMatch = value.match(/color:\s*(#[0-9A-Fa-f]{6}|rgb\([^)]+\))/);
136
+ if (colorMatch) {
137
+ currentColor = colorMatch[1];
138
+ }
139
+ }
140
+ }
141
+
142
+ function handlePortalMouseEnter() {
143
+ // console.log('Portal mouse entered');
144
+ isPortalHovered = true;
145
+ }
146
+
147
+ function handlePortalMouseLeave(event: MouseEvent) {
148
+ // if (!backgroundRectRef) return;
149
+ // console.log('Portal mouse leave: ', event, backgroundRectRef.getBoundingClientRect());
150
+
151
+ // Get mouse position relative to the portal content
152
+ const { offsetX, offsetY } = event;
153
+ const offsetWidth = backgroundRectRef.getBoundingClientRect().width;
154
+ const offsetHeight = backgroundRectRef.getBoundingClientRect().height;
155
+ // console.log('Portal mouse leave mousePosition: ', offsetX, offsetY, offsetWidth, offsetHeight);
156
+
157
+ // Check if cursor is within the background rect boundaries
158
+ if (
159
+ 0 < offsetX && offsetX < offsetWidth &&
160
+ 0 < offsetY && offsetY < offsetHeight
161
+ ) {
162
+ // console.log('Portal mouse leave mousePosition: ', offsetX, offsetY, offsetWidth, offsetHeight);
163
+ return;
164
+ }
165
+
166
+ // console.log('Portal mouse leave mousePosition: ', offsetX, offsetY, offsetWidth, offsetHeight);
167
+ isPortalHovered = false;
168
+ }
169
+
170
+ // Add keyboard event handler for Escape key
171
+ function handleKeydown(event: KeyboardEvent) {
172
+ if (event.key === 'Escape' && isShowingTextArea) {
173
+ handleClose();
174
+ }
175
+ }
176
+
177
+ onMount(() => {
178
+ // Add keyboard event listener when component mounts
179
+ window.addEventListener('keydown', handleKeydown);
180
+ });
181
+
182
+ onDestroy(() => {
183
+ // Remove keyboard event listener when component is destroyed
184
+ window.removeEventListener('keydown', handleKeydown);
185
+ });
186
+
187
+ // Update the close handler
188
+ function handleClose() {
189
+ if (isClosing) return; // Prevent multiple closes
190
+ isClosing = true;
191
+
192
+ // Add animation end handler
193
+ const content = document.querySelector('.text-area-portal-content') as HTMLDivElement;
194
+ const overlay = content?.previousElementSibling as HTMLDivElement;
195
+
196
+ const handleAnimationEnd = () => {
197
+ if (content) content.dataset.state = 'complete';
198
+ if (overlay) overlay.dataset.state = 'complete';
199
+
200
+ // Remove the elements after a short delay
201
+ setTimeout(() => {
202
+ isShowingTextArea = false;
203
+ isClosing = false;
204
+ if (content) content.dataset.state = '';
205
+ if (overlay) overlay.dataset.state = '';
206
+ }, 50);
207
+ };
208
+
209
+ // Listen for the end of the scale animation
210
+ content?.addEventListener('animationend', handleAnimationEnd, { once: true });
211
+ }
212
+ </script>
213
+
214
+ <div class="text-area-preview-input-controller flex items-center justify-between w-full widgetic-colors">
215
+ <div class="header-container flex-1 min-w-0">
216
+ <InputControllerHeader {label} />
217
+ </div>
218
+
219
+ <div
220
+ class="text-area-preview-main-container w-[185px] flex-shrink-0"
221
+ >
222
+ <div
223
+ class="h-[92px] w-full border border-grey2 flex items-start bg-grey1 transition-colors duration-200 hover:border-forest-green cursor-pointer group overflow-hidden"
224
+ style="border-radius: var(--radius-large);"
225
+ on:click={handleClick}
226
+ on:keydown={(e) => e.key === 'Enter' && handleClick()}
227
+ role="button"
228
+ tabindex="0"
229
+ >
230
+ <div class="relative w-full h-full">
231
+ <div
232
+ class="absolute top-0 left-0 w-full h-full flex flex-col"
233
+ >
234
+ <div class="flex-1" style="padding: 13px 48px 16px 16px;">
235
+ <div
236
+ class="subtext line-clamp-3 break-words text-ellipsis prose-sm w-[129px] text-grey7"
237
+ class:text-grey3={isShowingPlaceholder}
238
+ style="display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden;"
239
+ >
240
+ {@html previewText}
241
+ </div>
242
+ </div>
243
+ <div class="absolute top-[14px] right-[12px]">
244
+ <IconArrowsDiagonal
245
+ class="w-5 h-5 text-grey5 group-hover:text-grey7 transition-colors duration-200"
246
+ />
247
+ </div>
248
+ </div>
249
+ </div>
250
+ </div>
251
+ </div>
252
+
253
+ <!-- Description -->
254
+ {#if description}
255
+ <p class="subtext text-grey5">{description}</p>
256
+ {/if}
257
+
258
+ <!-- Text Area Input Controller in Portal -->
259
+ {#if isShowingTextArea}
260
+ <Portal
261
+ target={portalTarget}
262
+ class="text-area-portal absolute top-0 left-0 w-full h-full"
263
+ >
264
+ <!-- Blocking overlay -->
265
+ <div
266
+ class="absolute inset-0 bg-white {isClosing ? 'fade-out-animation' : 'fade-in-animation'}"
267
+ style="z-index: 50; transform: translateZ(0); backface-visibility: hidden;"
268
+ ></div>
269
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
270
+ <div
271
+ class="text-area-portal-content absolute mt-4 mx-6 mb-6 inset-0 {isClosing ? 'scale-out-animation' : 'scale-in-animation'}"
272
+ style="z-index: 51; transform: translateZ(0); backface-visibility: hidden;"
273
+ on:mouseenter={handlePortalMouseEnter}
274
+ on:mouseleave={handlePortalMouseLeave}
275
+ >
276
+ <!-- Background rect that defines our hover boundaries -->
277
+ <div
278
+ bind:this={backgroundRectRef}
279
+ class="portal-background-rect absolute inset-0 bg-transparent pointer-events-none"
280
+ style="border-radius: var(--radius-large);"
281
+ ></div>
282
+
283
+ <Button
284
+ variant="ghost"
285
+ class="absolute z-[999] p-0 hover:bg-transparent h-[32px] w-[32px] top-[10px] right-[10px]"
286
+ onclick={handleClose}
287
+ >
288
+ <IconX
289
+ class="w-[24px] h-[24px] text-grey5 hover:text-grey7 transition-colors duration-200"
290
+ style="min-width: 24px; min-height: 24px;"
291
+ />
292
+ </Button>
293
+
294
+ <TextAreaInputController
295
+ class="text-area w-full h-full transition-colors duration-200 {isPortalHovered ? 'border-solid !border-forest-green' : ''}"
296
+ label={label}
297
+ value={value}
298
+ onChange={onChange}
299
+ config={config}
300
+ description={description}
301
+ />
302
+ </div>
303
+ </Portal>
304
+ {/if}
305
+
306
+ </div>
307
+
308
+ <style>
309
+ /* Keep only preview-specific styles */
310
+ :global(.text-area-preview-main-container .group) {
311
+ position: relative;
312
+ isolation: isolate;
313
+ }
314
+
315
+ :global(.text-area-preview-main-container .group:hover) {
316
+ border-color: hsl(var(--forest-green)) !important;
317
+ }
318
+
319
+
320
+ /* Heading styles matching tiptap editor */
321
+ :global(.subtext h1.tiptap-heading) {
322
+ font-size: 2em !important;
323
+ font-weight: 600 !important;
324
+ line-height: 1.2 !important;
325
+ margin-top: 0 !important;
326
+ margin-bottom: 0 !important;
327
+ color: inherit !important;
328
+ }
329
+
330
+ :global(.subtext h2.tiptap-heading) {
331
+ font-size: 1.5em !important;
332
+ font-weight: 600 !important;
333
+ line-height: 1.3 !important;
334
+ margin-top: 0.4em !important;
335
+ margin-bottom: 0.2em !important;
336
+ color: inherit !important;
337
+ }
338
+
339
+ :global(.subtext h3.tiptap-heading) {
340
+ font-size: 1.17em !important;
341
+ font-weight: 600 !important;
342
+ line-height: 1.3 !important;
343
+ margin-top: 0.3em !important;
344
+ margin-bottom: 0.2em !important;
345
+ color: inherit !important;
346
+ }
347
+
348
+ :global(.subtext h4.tiptap-heading) {
349
+ font-size: 1em !important;
350
+ font-weight: 600 !important;
351
+ line-height: 1.4 !important;
352
+ margin-top: 0.2em !important;
353
+ margin-bottom: 0.1em !important;
354
+ color: inherit !important;
355
+ }
356
+
357
+ /* Color preservation */
358
+ :global(.subtext [style*="color"]) {
359
+ color: var(--color) !important;
360
+ }
361
+
362
+ /* Text formatting */
363
+ :global(.subtext strong),
364
+ :global(.subtext em),
365
+ :global(.subtext u) {
366
+ color: inherit !important;
367
+ }
368
+
369
+ :global(.subtext strong[style*="color"]),
370
+ :global(.subtext em[style*="color"]),
371
+ :global(.subtext u[style*="color"]) {
372
+ color: var(--color) !important;
373
+ }
374
+
375
+ /* Add specific color inheritance for data-text-style */
376
+ :global(.subtext [data-text-style*="color"]) {
377
+ color: var(--color) !important;
378
+ }
379
+
380
+ /* Ensure all text elements can inherit colors */
381
+ :global(.subtext *) {
382
+ color: inherit;
383
+ }
384
+
385
+ /* Ensure paragraphs have no margins */
386
+ :global(.subtext p) {
387
+ margin-top: 0 !important;
388
+ margin-bottom: 0 !important;
389
+ }
390
+
391
+ /* Ensure line-clamp ellipsis inherits color */
392
+ :global(.line-clamp-3) {
393
+ -webkit-box-orient: vertical;
394
+ -webkit-line-clamp: 3;
395
+ line-clamp: 3;
396
+ display: -webkit-box;
397
+ overflow: hidden;
398
+ color: inherit;
399
+ }
400
+
401
+ /* Add scale animation */
402
+ @keyframes scaleIn {
403
+ from {
404
+ transform: scale(0.95) translateZ(0);
405
+ opacity: 0;
406
+ }
407
+ to {
408
+ transform: scale(1) translateZ(0);
409
+ opacity: 1;
410
+ }
411
+ }
412
+
413
+ @keyframes fadeIn {
414
+ from {
415
+ opacity: 0;
416
+ }
417
+ to {
418
+ opacity: 1;
419
+ }
420
+ }
421
+
422
+ :global(.scale-in-animation) {
423
+ animation: scaleIn 0.2s cubic-bezier(0.16, 1, 0.3, 1);
424
+ transform-origin: center center;
425
+ will-change: transform, opacity;
426
+ backface-visibility: hidden;
427
+ }
428
+
429
+ :global(.fade-in-animation) {
430
+ animation: fadeIn 0.15s ease-out;
431
+ will-change: opacity;
432
+ backface-visibility: hidden;
433
+ }
434
+
435
+ /* Add scale out animation */
436
+ @keyframes scaleOut {
437
+ 0% {
438
+ transform: scale(1) translateZ(0);
439
+ opacity: 1;
440
+ }
441
+ 100% {
442
+ transform: scale(0.95) translateZ(0);
443
+ opacity: 0;
444
+ }
445
+ }
446
+
447
+ @keyframes fadeOut {
448
+ 0% {
449
+ opacity: 1;
450
+ }
451
+ 100% {
452
+ opacity: 0;
453
+ }
454
+ }
455
+
456
+ :global(.scale-out-animation) {
457
+ animation: scaleOut 0.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
458
+ transform-origin: center center;
459
+ will-change: transform, opacity;
460
+ backface-visibility: hidden;
461
+ pointer-events: none;
462
+ }
463
+
464
+ :global(.fade-out-animation) {
465
+ animation: fadeOut 0.15s ease-out forwards;
466
+ will-change: opacity;
467
+ backface-visibility: hidden;
468
+ pointer-events: none;
469
+ }
470
+
471
+ /* Add a class to handle visibility at animation end */
472
+ :global(.scale-out-animation[data-state="complete"]),
473
+ :global(.fade-out-animation[data-state="complete"]) {
474
+ visibility: hidden;
475
+ }
476
+ </style>
@@ -0,0 +1,28 @@
1
+ import type { InputControllerConfig } from './index';
2
+ 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> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: Props & {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports & {
10
+ $set?: any;
11
+ $on?: any;
12
+ };
13
+ z_$$bindings?: Bindings;
14
+ }
15
+ declare const TextAreaPreviewInputController: $$__sveltets_2_IsomorphicComponent<{
16
+ /**
17
+ * Component props
18
+ */ label?: string;
19
+ value?: string;
20
+ onChange: any;
21
+ config?: InputControllerConfig;
22
+ description?: string | undefined;
23
+ portalTarget?: string;
24
+ }, {
25
+ [evt: string]: CustomEvent<any>;
26
+ }, {}, {}, string>;
27
+ type TextAreaPreviewInputController = InstanceType<typeof TextAreaPreviewInputController>;
28
+ export default TextAreaPreviewInputController;
@@ -0,0 +1,70 @@
1
+ <script lang="ts">
2
+ // Import Shadcn UI components from Widgetic design-system package
3
+ import { Input } from '@widgetic/design-system/components';
4
+ import { InputControllerHeader } from './index';
5
+
6
+ // Component props
7
+ import type { InputControllerConfig } from './index';
8
+
9
+ /**
10
+ * Component props
11
+ */
12
+ export let label: string;
13
+ export let value: string;
14
+ export let onChange: (newValue: string) => void;
15
+ export let config: InputControllerConfig = {};
16
+
17
+ // Use config values with fallbacks
18
+ export let type: 'text' | 'email' | 'url' = 'text';
19
+ export let placeholder: string = config.placeholder || '';
20
+ export let description: string | undefined = undefined;
21
+ export let onFocus: () => void = () => {};
22
+
23
+ /**
24
+ * Methods
25
+ */
26
+ function validate(value: string): boolean {
27
+ switch (type) {
28
+ case 'email':
29
+ return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value);
30
+ case 'url':
31
+ return /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/.test(value);
32
+ default:
33
+ return true;
34
+ }
35
+ }
36
+ </script>
37
+
38
+ <div class="flex flex-col gap-2 widgetic-colors">
39
+ <div class="flex items-center w-full relative">
40
+ <div class="flex-1 min-w-0">
41
+ <InputControllerHeader {label} />
42
+ </div>
43
+
44
+ <div class="absolute right-0">
45
+ <div
46
+ class="h-[48px] w-[185px] rounded-large border border-grey2 flex items-center bg-grey1 transition-colors duration-200 hover:border-forest-green"
47
+ on:focusin={onFocus}
48
+ >
49
+ <Input
50
+ id="text-input"
51
+ {type}
52
+ {value}
53
+ {placeholder}
54
+ onfocus={onFocus}
55
+ oninput={(e) => {
56
+ const newValue = e.currentTarget.value;
57
+ if (validate(newValue)) {
58
+ onChange(newValue);
59
+ }
60
+ }}
61
+ class="h-full w-full border-none bg-transparent focus-visible:ring-0 focus-visible:ring-offset-0 subtext text-grey7 placeholder:text-grey3 placeholder:subtext px-4"
62
+ />
63
+ </div>
64
+ </div>
65
+ </div>
66
+
67
+ {#if description}
68
+ <p class="subtext text-grey5">{description}</p>
69
+ {/if}
70
+ </div>
@@ -0,0 +1,30 @@
1
+ import type { InputControllerConfig } from './index';
2
+ 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> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: Props & {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports & {
10
+ $set?: any;
11
+ $on?: any;
12
+ };
13
+ z_$$bindings?: Bindings;
14
+ }
15
+ declare const TextInputController: $$__sveltets_2_IsomorphicComponent<{
16
+ /**
17
+ * Component props
18
+ */ label: string;
19
+ value: string;
20
+ onChange: (newValue: string) => void;
21
+ config?: InputControllerConfig;
22
+ type?: "text" | "email" | "url";
23
+ placeholder?: string;
24
+ description?: string | undefined;
25
+ onFocus?: () => void;
26
+ }, {
27
+ [evt: string]: CustomEvent<any>;
28
+ }, {}, {}, string>;
29
+ type TextInputController = InstanceType<typeof TextInputController>;
30
+ export default TextInputController;