@zipify/wysiwyg 1.0.0-dev.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 (255) hide show
  1. package/.editorconfig +18 -0
  2. package/.eslintrc.js +253 -0
  3. package/.github/actions/deploy-example/action.yaml +61 -0
  4. package/.github/actions/lint-css/action.yaml +15 -0
  5. package/.github/actions/lint-js/action.yaml +22 -0
  6. package/.github/actions/setup/action.yaml +19 -0
  7. package/.github/actions/unit-tests/action.yaml +13 -0
  8. package/.github/actions/unit-tests/jest.config.js +8 -0
  9. package/.github/dependabot.yaml +17 -0
  10. package/.github/pull_request_template.md +17 -0
  11. package/.github/workflows/frontend-ci.yaml +120 -0
  12. package/.husky/pre-commit +4 -0
  13. package/.lintstagedrc +12 -0
  14. package/.release-it.json +6 -0
  15. package/.stylelintrc +110 -0
  16. package/README.md +61 -0
  17. package/babel.config.js +15 -0
  18. package/ci/example/deploy.sh +25 -0
  19. package/config/jest/TestEnvironment.js +27 -0
  20. package/config/jest/matchers/index.js +6 -0
  21. package/config/jest/matchers/toElementHasStyle.js +27 -0
  22. package/config/jest/matchers/toVueContainComponent.js +20 -0
  23. package/config/jest/matchers/toVueContainElement.js +34 -0
  24. package/config/jest/matchers/toVueContainLazyComponent.js +19 -0
  25. package/config/jest/matchers/toVueEmpty.js +16 -0
  26. package/config/jest/matchers/toVuexActionHasBeenDispatched.js +19 -0
  27. package/config/jest/setupMatchers.js +4 -0
  28. package/config/jest/setupTests.js +32 -0
  29. package/config/jest/typing.d.ts +14 -0
  30. package/config/svgo.js +22 -0
  31. package/config/webpack/example.config.js +86 -0
  32. package/config/webpack/loaders/index.js +6 -0
  33. package/config/webpack/loaders/js-loader.js +5 -0
  34. package/config/webpack/loaders/style-loader.js +7 -0
  35. package/config/webpack/loaders/svg-loader.js +4 -0
  36. package/config/webpack/loaders/vue-loader.js +4 -0
  37. package/config/webpack/settings.js +9 -0
  38. package/example/ExampleApp.vue +136 -0
  39. package/example/example.html +17 -0
  40. package/example/example.js +19 -0
  41. package/example/fonts.js +474 -0
  42. package/example/presets.js +245 -0
  43. package/example/tooltip/Tooltip.js +241 -0
  44. package/example/tooltip/TooltipManager.js +132 -0
  45. package/example/tooltip/index.js +3 -0
  46. package/example/tooltip/modifiers/TooltipCloseOnScrollModifier.js +73 -0
  47. package/example/tooltip/modifiers/index.js +1 -0
  48. package/example/tooltip/tooltip.css +95 -0
  49. package/jest.config.js +17 -0
  50. package/lib/Wysiwyg.vue +156 -0
  51. package/lib/__mocks__/svgMock.js +1 -0
  52. package/lib/__tests__/utils/NodeFactory.js +67 -0
  53. package/lib/__tests__/utils/index.js +4 -0
  54. package/lib/__tests__/utils/setReadonlyProperty.js +9 -0
  55. package/lib/__tests__/utils/waitAsyncOperation.js +6 -0
  56. package/lib/__tests__/utils/withComponentContext.js +14 -0
  57. package/lib/assets/icons.svg +69 -0
  58. package/lib/components/base/Button.vue +117 -0
  59. package/lib/components/base/ButtonToggle.vue +40 -0
  60. package/lib/components/base/FieldLabel.vue +28 -0
  61. package/lib/components/base/Icon.vue +67 -0
  62. package/lib/components/base/Modal.vue +116 -0
  63. package/lib/components/base/NumberField.vue +242 -0
  64. package/lib/components/base/Range.vue +196 -0
  65. package/lib/components/base/ScrollView.vue +60 -0
  66. package/lib/components/base/__tests__/Button.test.js +50 -0
  67. package/lib/components/base/__tests__/Icon.test.js +56 -0
  68. package/lib/components/base/__tests__/Modal.test.js +69 -0
  69. package/lib/components/base/__tests__/Range.test.js +39 -0
  70. package/lib/components/base/colorPicker/ColorPicker.vue +93 -0
  71. package/lib/components/base/colorPicker/composables/__tests__/usePickerApi.test.js +81 -0
  72. package/lib/components/base/colorPicker/composables/index.js +2 -0
  73. package/lib/components/base/colorPicker/composables/usePickerApi.js +35 -0
  74. package/lib/components/base/colorPicker/composables/usePickerHotkeys.js +25 -0
  75. package/lib/components/base/colorPicker/index.js +1 -0
  76. package/lib/components/base/composables/__tests__/useActivatedListener.test.js +89 -0
  77. package/lib/components/base/composables/__tests__/useDeselectionLock.test.js +80 -0
  78. package/lib/components/base/composables/__tests__/useElementRef.test.js +29 -0
  79. package/lib/components/base/composables/__tests__/useModalToggler.test.js +55 -0
  80. package/lib/components/base/composables/__tests__/useNumberValue.test.js +153 -0
  81. package/lib/components/base/composables/__tests__/useScrollView.test.js +43 -0
  82. package/lib/components/base/composables/__tests__/useTempValue.test.js +38 -0
  83. package/lib/components/base/composables/index.js +7 -0
  84. package/lib/components/base/composables/useActivatedListener.js +23 -0
  85. package/lib/components/base/composables/useDeselectionLock.js +35 -0
  86. package/lib/components/base/composables/useElementRef.js +5 -0
  87. package/lib/components/base/composables/useModalToggler.js +58 -0
  88. package/lib/components/base/composables/useNumberValue.js +53 -0
  89. package/lib/components/base/composables/useScrollView.js +22 -0
  90. package/lib/components/base/composables/useTempValue.js +11 -0
  91. package/lib/components/base/dropdown/Dropdown.vue +88 -0
  92. package/lib/components/base/dropdown/DropdownActivator.vue +81 -0
  93. package/lib/components/base/dropdown/DropdownDivider.vue +21 -0
  94. package/lib/components/base/dropdown/DropdownGroup.vue +55 -0
  95. package/lib/components/base/dropdown/DropdownMenu.vue +62 -0
  96. package/lib/components/base/dropdown/DropdownOption.vue +91 -0
  97. package/lib/components/base/dropdown/__tests__/DropdownActivator.test.js +54 -0
  98. package/lib/components/base/dropdown/__tests__/DropdownMenu.test.js +67 -0
  99. package/lib/components/base/dropdown/__tests__/DropdownOption.test.js +81 -0
  100. package/lib/components/base/dropdown/composables/__tests__/useActiveOptionManager.test.js +41 -0
  101. package/lib/components/base/dropdown/composables/__tests__/useDropdownEntityTitle.test.js +24 -0
  102. package/lib/components/base/dropdown/composables/index.js +2 -0
  103. package/lib/components/base/dropdown/composables/useActiveOptionManager.js +25 -0
  104. package/lib/components/base/dropdown/composables/useDropdownEntityTitle.js +5 -0
  105. package/lib/components/base/dropdown/index.js +2 -0
  106. package/lib/components/base/dropdown/injectionTokens.js +5 -0
  107. package/lib/components/base/index.js +11 -0
  108. package/lib/components/index.js +1 -0
  109. package/lib/components/toolbar/Toolbar.vue +56 -0
  110. package/lib/components/toolbar/ToolbarDevice.vue +35 -0
  111. package/lib/components/toolbar/ToolbarDivider.vue +50 -0
  112. package/lib/components/toolbar/ToolbarFull.vue +94 -0
  113. package/lib/components/toolbar/ToolbarGroup.vue +18 -0
  114. package/lib/components/toolbar/ToolbarRow.vue +19 -0
  115. package/lib/components/toolbar/__tests__/Toolbar.test.js +33 -0
  116. package/lib/components/toolbar/__tests__/ToolbarDivider.test.js +26 -0
  117. package/lib/components/toolbar/controls/AlignmentControl.vue +72 -0
  118. package/lib/components/toolbar/controls/AlignmentDeviceControl.vue +67 -0
  119. package/lib/components/toolbar/controls/BackgroundColorControl.vue +48 -0
  120. package/lib/components/toolbar/controls/CaseStyleControl.vue +54 -0
  121. package/lib/components/toolbar/controls/FontColorControl.vue +48 -0
  122. package/lib/components/toolbar/controls/FontFamilyControl.vue +96 -0
  123. package/lib/components/toolbar/controls/FontSizeControl.vue +45 -0
  124. package/lib/components/toolbar/controls/FontWeightControl.vue +43 -0
  125. package/lib/components/toolbar/controls/ItalicControl.vue +47 -0
  126. package/lib/components/toolbar/controls/LineHeightControl.vue +102 -0
  127. package/lib/components/toolbar/controls/ListControl.vue +86 -0
  128. package/lib/components/toolbar/controls/RemoveFormatControl.vue +37 -0
  129. package/lib/components/toolbar/controls/StrikeThroughControl.vue +44 -0
  130. package/lib/components/toolbar/controls/StylePresetControl.vue +95 -0
  131. package/lib/components/toolbar/controls/SuperscriptControl.vue +44 -0
  132. package/lib/components/toolbar/controls/UnderlineControl.vue +44 -0
  133. package/lib/components/toolbar/controls/__tests__/AlignmentControl.test.js +51 -0
  134. package/lib/components/toolbar/controls/__tests__/AlignmentDeviceControl.test.js +77 -0
  135. package/lib/components/toolbar/controls/__tests__/BackgroundColorControl.test.js +59 -0
  136. package/lib/components/toolbar/controls/__tests__/CaseStyleControl.test.js +43 -0
  137. package/lib/components/toolbar/controls/__tests__/FontColorControl.test.js +59 -0
  138. package/lib/components/toolbar/controls/__tests__/FontFamilyControl.test.js +57 -0
  139. package/lib/components/toolbar/controls/__tests__/FontSizeControl.test.js +47 -0
  140. package/lib/components/toolbar/controls/__tests__/FontWeightControl.test.js +45 -0
  141. package/lib/components/toolbar/controls/__tests__/ItalicControl.test.js +63 -0
  142. package/lib/components/toolbar/controls/__tests__/LineHeightControl.test.js +120 -0
  143. package/lib/components/toolbar/controls/__tests__/ListControl.test.js +82 -0
  144. package/lib/components/toolbar/controls/__tests__/RemoveFormatControl.test.js +34 -0
  145. package/lib/components/toolbar/controls/__tests__/StrikeThroughControl.test.js +44 -0
  146. package/lib/components/toolbar/controls/__tests__/StylePresetControl.test.js +129 -0
  147. package/lib/components/toolbar/controls/__tests__/SuperscriptControl.test.js +44 -0
  148. package/lib/components/toolbar/controls/__tests__/UnderlineControl.test.js +44 -0
  149. package/lib/components/toolbar/controls/composables/__tests__/useRecentFonts.test.js +69 -0
  150. package/lib/components/toolbar/controls/composables/index.js +1 -0
  151. package/lib/components/toolbar/controls/composables/useRecentFonts.js +18 -0
  152. package/lib/components/toolbar/controls/index.js +16 -0
  153. package/lib/components/toolbar/index.js +1 -0
  154. package/lib/composables/__tests__/__snapshots__/useEditor.test.js.snap +24 -0
  155. package/lib/composables/__tests__/useEditor.test.js +67 -0
  156. package/lib/composables/__tests__/useToolbar.test.js +56 -0
  157. package/lib/composables/index.js +2 -0
  158. package/lib/composables/useEditor.js +21 -0
  159. package/lib/composables/useToolbar.js +44 -0
  160. package/lib/directives/__tests__/outClick.test.js +86 -0
  161. package/lib/directives/__tests__/tooltip.test.js +39 -0
  162. package/lib/directives/index.js +2 -0
  163. package/lib/directives/outClick.js +37 -0
  164. package/lib/directives/tooltip.js +7 -0
  165. package/lib/enums/Alignments.js +6 -0
  166. package/lib/enums/CaseStyles.js +5 -0
  167. package/lib/enums/Devices.js +15 -0
  168. package/lib/enums/ListTypes.js +23 -0
  169. package/lib/enums/NodeTypes.js +12 -0
  170. package/lib/enums/TextSettings.js +30 -0
  171. package/lib/enums/index.js +6 -0
  172. package/lib/extensions/Alignment.js +67 -0
  173. package/lib/extensions/BackgroundColor.js +28 -0
  174. package/lib/extensions/CaseStyle.js +36 -0
  175. package/lib/extensions/DeviceManager.js +16 -0
  176. package/lib/extensions/FontColor.js +36 -0
  177. package/lib/extensions/FontFamily.js +62 -0
  178. package/lib/extensions/FontSize.js +74 -0
  179. package/lib/extensions/FontStyle.js +62 -0
  180. package/lib/extensions/FontWeight.js +56 -0
  181. package/lib/extensions/LineHeight.js +60 -0
  182. package/lib/extensions/StylePreset.js +168 -0
  183. package/lib/extensions/Superscript.js +5 -0
  184. package/lib/extensions/TextDecoration.js +97 -0
  185. package/lib/extensions/__tests__/Alignment.test.js +107 -0
  186. package/lib/extensions/__tests__/BackgroundColor.test.js +75 -0
  187. package/lib/extensions/__tests__/CaseStyle.test.js +58 -0
  188. package/lib/extensions/__tests__/FontColor.test.js +85 -0
  189. package/lib/extensions/__tests__/FontFamily.test.js +171 -0
  190. package/lib/extensions/__tests__/FontSize.test.js +183 -0
  191. package/lib/extensions/__tests__/FontStyle.test.js +136 -0
  192. package/lib/extensions/__tests__/FontWeight.test.js +151 -0
  193. package/lib/extensions/__tests__/LineHeight.test.js +106 -0
  194. package/lib/extensions/__tests__/StylePreset.test.js +400 -0
  195. package/lib/extensions/__tests__/TextDecoration.test.js +258 -0
  196. package/lib/extensions/__tests__/__snapshots__/Alignment.test.js.snap +29 -0
  197. package/lib/extensions/__tests__/__snapshots__/BackgroundColor.test.js.snap +28 -0
  198. package/lib/extensions/__tests__/__snapshots__/CaseStyle.test.js.snap +69 -0
  199. package/lib/extensions/__tests__/__snapshots__/FontColor.test.js.snap +28 -0
  200. package/lib/extensions/__tests__/__snapshots__/FontFamily.test.js.snap +158 -0
  201. package/lib/extensions/__tests__/__snapshots__/FontSize.test.js.snap +140 -0
  202. package/lib/extensions/__tests__/__snapshots__/FontStyle.test.js.snap +87 -0
  203. package/lib/extensions/__tests__/__snapshots__/FontWeight.test.js.snap +140 -0
  204. package/lib/extensions/__tests__/__snapshots__/LineHeight.test.js.snap +29 -0
  205. package/lib/extensions/__tests__/__snapshots__/StylePreset.test.js.snap +310 -0
  206. package/lib/extensions/__tests__/__snapshots__/TextDecoration.test.js.snap +206 -0
  207. package/lib/extensions/core/NodeProcessor.js +32 -0
  208. package/lib/extensions/core/SelectionProcessor.js +37 -0
  209. package/lib/extensions/core/TextProcessor.js +57 -0
  210. package/lib/extensions/core/__tests__/NodeProcessor.test.js +120 -0
  211. package/lib/extensions/core/__tests__/SelectionProcessor.test.js +78 -0
  212. package/lib/extensions/core/__tests__/TextProcessor.test.js +61 -0
  213. package/lib/extensions/core/__tests__/__snapshots__/NodeProcessor.test.js.snap +93 -0
  214. package/lib/extensions/core/__tests__/__snapshots__/TextProcessor.test.js.snap +43 -0
  215. package/lib/extensions/core/index.js +17 -0
  216. package/lib/extensions/core/inputRules/closeDoubleQuote.js +6 -0
  217. package/lib/extensions/core/inputRules/closeSingleQuote.js +6 -0
  218. package/lib/extensions/core/inputRules/copyright.js +6 -0
  219. package/lib/extensions/core/inputRules/ellipsis.js +6 -0
  220. package/lib/extensions/core/inputRules/emDash.js +6 -0
  221. package/lib/extensions/core/inputRules/index.js +9 -0
  222. package/lib/extensions/core/inputRules/openDoubleQuote.js +6 -0
  223. package/lib/extensions/core/inputRules/openSingleQuote.js +6 -0
  224. package/lib/extensions/core/inputRules/registeredTrademark.js +6 -0
  225. package/lib/extensions/core/inputRules/trademark.js +6 -0
  226. package/lib/extensions/index.js +49 -0
  227. package/lib/extensions/list/List.js +81 -0
  228. package/lib/extensions/list/ListItem.js +12 -0
  229. package/lib/extensions/list/__tests__/List.test.js +130 -0
  230. package/lib/extensions/list/__tests__/__snapshots__/List.test.js.snap +212 -0
  231. package/lib/extensions/list/index.js +1 -0
  232. package/lib/index.js +1 -0
  233. package/lib/injectionTokens.js +7 -0
  234. package/lib/models/Font.js +37 -0
  235. package/lib/models/__tests__/Font.test.js +58 -0
  236. package/lib/models/index.js +1 -0
  237. package/lib/services/FavoriteColors.js +6 -0
  238. package/lib/services/JsonSerializer.js +15 -0
  239. package/lib/services/Storage.js +49 -0
  240. package/lib/services/index.js +3 -0
  241. package/lib/styles/content.css +39 -0
  242. package/lib/styles/helpers/common.css +3 -0
  243. package/lib/styles/helpers/offsets.css +3 -0
  244. package/lib/styles/helpers/text.css +6 -0
  245. package/lib/styles/main.css +5 -0
  246. package/lib/styles/variables.css +57 -0
  247. package/lib/utils/__tests__/__snapshots__/renderInlineSetting.test.js.snap +40 -0
  248. package/lib/utils/__tests__/capitalize.test.js +11 -0
  249. package/lib/utils/__tests__/renderInlineSetting.test.js +39 -0
  250. package/lib/utils/capitalize.js +3 -0
  251. package/lib/utils/createCommand.js +3 -0
  252. package/lib/utils/createKeyboardShortcut.js +6 -0
  253. package/lib/utils/index.js +4 -0
  254. package/lib/utils/renderInlineSetting.js +17 -0
  255. package/package.json +75 -0
@@ -0,0 +1,136 @@
1
+ <template>
2
+ <div>
3
+ <select class="zw-device-switcher" v-model="device">
4
+ <option value="desktop">
5
+ Desktop
6
+ </option>
7
+ <option value="tablet">
8
+ Tablet
9
+ </option>
10
+ <option value="mobile">
11
+ Mobile
12
+ </option>
13
+ </select>
14
+
15
+ <span>Deployed at {{ updatedAt }}</span>
16
+
17
+ <Wysiwyg
18
+ v-model="content"
19
+ base-list-class="zw-list--"
20
+ default-preset-id="regular-1"
21
+ ref="wswgRef"
22
+ :fonts="fonts"
23
+ :presets="presets"
24
+ :make-preset-variable="$options.makePresetVariable"
25
+ :favorite-colors="favoriteColors"
26
+ :device="device"
27
+ @updateFavoriteColors="updateFavoriteColors"
28
+ />
29
+ <pre class="zw-content-structure" v-html="structurePreview" />
30
+ </div>
31
+ </template>
32
+
33
+ <script>
34
+ import { computed, onMounted, ref } from '@vue/composition-api';
35
+ import { Wysiwyg } from '../lib';
36
+ import { FONTS } from './fonts';
37
+ import { PRESETS, renderPresetVariable } from './presets';
38
+
39
+ export default {
40
+ name: 'ExampleApp',
41
+
42
+ makePresetVariable: renderPresetVariable,
43
+
44
+ components: {
45
+ Wysiwyg
46
+ },
47
+
48
+ setup() {
49
+ const wswgRef = ref(null);
50
+ const content = ref({
51
+ type: 'doc',
52
+ content: [
53
+ {
54
+ type: 'paragraph',
55
+ content: [
56
+ {
57
+ type: 'text',
58
+ text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate deleniti doloremque doloribus nobis praesentium repellendus soluta. Ab distinctio eos eveniet quaerat quia recusandae repellendus. Error optio perferendis qui sapiente sequi.'
59
+ }
60
+ ]
61
+ },
62
+ {
63
+ type: 'paragraph',
64
+ content: [
65
+ {
66
+ type: 'text',
67
+ text: 'Ab et laborum molestias omnis provident soluta suscipit tenetur voluptatum! Accusamus aliquam asperiores blanditiis dolorum enim, inventore ipsa molestias, omnis optio quod rem repellendus reprehenderit saepe, suscipit tempora ullam voluptatibus?'
68
+ }
69
+ ]
70
+ }
71
+ ]
72
+ });
73
+ const presets = ref(PRESETS);
74
+ const device = ref('desktop');
75
+ const updatedAt = new Date(ZW_UPDATED_AT).toLocaleString('ua-UA');
76
+
77
+ const structurePreview = computed(() => {
78
+ const json = JSON.stringify(content.value, null, ' ');
79
+ const { value } = window.hljs.highlight(json, { language: 'json' });
80
+
81
+ return value;
82
+ });
83
+
84
+ const fonts = ref(FONTS);
85
+ const favoriteColors = ref(JSON.parse(localStorage.getItem('favoriteColors') || '[]'));
86
+
87
+ function updateFavoriteColors(colors) {
88
+ localStorage.setItem('favoriteColors', JSON.stringify(colors));
89
+ favoriteColors.value = colors;
90
+ }
91
+
92
+ onMounted(() => window.tiptap = wswgRef.value.editor);
93
+
94
+ return {
95
+ wswgRef,
96
+ content,
97
+ fonts,
98
+ structurePreview,
99
+ favoriteColors,
100
+ updateFavoriteColors,
101
+ device,
102
+ updatedAt,
103
+ presets
104
+ };
105
+ }
106
+ };
107
+ </script>
108
+
109
+ <style>
110
+ body {
111
+ padding: 50px 20px;
112
+ max-width: 1200px;
113
+ margin: auto;
114
+ font-family: "Lato";
115
+ }
116
+
117
+ .zw-device-switcher {
118
+ margin-bottom: 50px;
119
+ margin-right: 20px;
120
+ }
121
+
122
+ .zw-content-structure {
123
+ background-color: #F1F1F1;
124
+ padding: 8px;
125
+ margin-top: 56px;
126
+ border-radius: 3px;
127
+ overflow-x: scroll;
128
+ }
129
+
130
+ .zw-list--decimal { list-style-type: decimal }
131
+ .zw-list--disc { list-style-type: disc }
132
+ .zw-list--circle { list-style-type: circle }
133
+ .zw-list--square { list-style-type: square }
134
+ .zw-list--latin { list-style-type: upper-roman }
135
+ .zw-list--roman { list-style-type: upper-latin }
136
+ </style>
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>ZipifyWysiwyg</title>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" integrity="sha512-NhSC1YmyruXifcj/KFRWoC561YpHpc5Jtzgvbuzx5VozKpWvQ+4nXhPdFgmx8xqexRcpAglTj9sIBWINXa8x5w==" crossorigin="anonymous" referrerpolicy="no-referrer" />
9
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.1/styles/default.min.css" integrity="sha512-hasIneQUHlh06VNBe7f6ZcHmeRTLIaQWFd43YriJ0UND19bvYRauxthDg8E4eVNPm9bRUhr5JGeqH7FRFXQu5g==" crossorigin="anonymous" referrerpolicy="no-referrer" />
10
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.1/highlight.min.js" integrity="sha512-yUUc0qWm2rhM7X0EFe82LNnv2moqArj5nro/w1bi05A09hRVeIZbN6jlMoyu0+4I/Bu4Ck/85JQIU82T82M28w==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
11
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
12
+ <style>body{font-synthesis:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}</style>
13
+ </head>
14
+ <body>
15
+ <div data-app></div>
16
+ </body>
17
+ </html>
@@ -0,0 +1,19 @@
1
+ import Vue from 'vue';
2
+ import CompositionAPI from '@vue/composition-api';
3
+ import ExampleApp from './ExampleApp';
4
+ import { loadFonts } from './fonts';
5
+ import { renderPresets } from './presets';
6
+ import { tooltipManager } from './tooltip';
7
+
8
+ (async () => {
9
+ tooltipManager.init();
10
+ loadFonts();
11
+ renderPresets();
12
+
13
+ Vue.use(CompositionAPI);
14
+
15
+ new Vue({
16
+ el: '[data-app]',
17
+ render: (h) => h(ExampleApp)
18
+ });
19
+ })();
@@ -0,0 +1,474 @@
1
+ export const FONTS = [
2
+ {
3
+ 'name': 'Merriweather',
4
+ 'styles': [
5
+ '300',
6
+ '300i',
7
+ '400',
8
+ '400i',
9
+ '700',
10
+ '700i',
11
+ '900',
12
+ '900i'
13
+ ],
14
+ 'category': 'Serif'
15
+ },
16
+ {
17
+ 'name': 'Arvo',
18
+ 'styles': [
19
+ '400',
20
+ '400i',
21
+ '700',
22
+ '700i'
23
+ ],
24
+ 'category': 'Serif'
25
+ },
26
+ {
27
+ 'name': 'BioRhyme',
28
+ 'styles': [
29
+ '200',
30
+ '300',
31
+ '400',
32
+ '700',
33
+ '800'
34
+ ],
35
+ 'category': 'Serif'
36
+ },
37
+ {
38
+ 'name': 'Josefin Slab',
39
+ 'styles': [
40
+ '100',
41
+ '100i',
42
+ '300',
43
+ '300i',
44
+ '400',
45
+ '400i',
46
+ '600',
47
+ '600i',
48
+ '700',
49
+ '700i'
50
+ ],
51
+ 'category': 'Serif'
52
+ },
53
+ {
54
+ 'name': 'Rubik',
55
+ 'styles': [
56
+ '300',
57
+ '300i',
58
+ '400',
59
+ '400i',
60
+ '500',
61
+ '500i',
62
+ '700',
63
+ '700i',
64
+ '900',
65
+ '900i'
66
+ ],
67
+ 'category': 'Serif'
68
+ },
69
+ {
70
+ 'name': 'Alegreya',
71
+ 'styles': [
72
+ '400',
73
+ '400i',
74
+ '500',
75
+ '500i',
76
+ '700',
77
+ '700i',
78
+ '800',
79
+ '800i',
80
+ '900',
81
+ '900i'
82
+ ],
83
+ 'category': 'Serif'
84
+ },
85
+ {
86
+ 'name': 'Crimson Text',
87
+ 'styles': [
88
+ '400',
89
+ '400i',
90
+ '600',
91
+ '600i',
92
+ '700',
93
+ '700i'
94
+ ],
95
+ 'category': 'Serif'
96
+ },
97
+ {
98
+ 'name': 'PT Serif',
99
+ 'styles': [
100
+ '400',
101
+ '400i',
102
+ '700',
103
+ '700i'
104
+ ],
105
+ 'category': 'Serif'
106
+ },
107
+ {
108
+ 'name': 'Anonymous Pro',
109
+ 'styles': [
110
+ '400',
111
+ '400i',
112
+ '700',
113
+ '700i'
114
+ ],
115
+ 'category': 'Serif'
116
+ },
117
+ {
118
+ 'name': 'Roboto Slab',
119
+ 'styles': [
120
+ '100',
121
+ '300',
122
+ '400',
123
+ '700'
124
+ ],
125
+ 'category': 'Serif'
126
+ },
127
+ {
128
+ 'name': 'Scope One',
129
+ 'styles': [
130
+ '400'
131
+ ],
132
+ 'category': 'Serif'
133
+ },
134
+ {
135
+ 'name': 'Droid Serif',
136
+ 'styles': [
137
+ '400',
138
+ '400i',
139
+ '700',
140
+ '700i'
141
+ ],
142
+ 'category': 'Serif'
143
+ },
144
+ {
145
+ 'name': 'Josefin Sans',
146
+ 'styles': [
147
+ '100',
148
+ '100i',
149
+ '300',
150
+ '300i',
151
+ '400',
152
+ '400i',
153
+ '600',
154
+ '600i',
155
+ '700',
156
+ '700i'
157
+ ],
158
+ 'category': 'Sans Serif'
159
+ },
160
+ {
161
+ 'name': 'Work Sans',
162
+ 'styles': [
163
+ '100',
164
+ '200',
165
+ '300',
166
+ '400',
167
+ '500',
168
+ '600',
169
+ '700',
170
+ '800',
171
+ '900'
172
+ ],
173
+ 'category': 'Sans Serif'
174
+ },
175
+ {
176
+ 'name': 'Fira Sans',
177
+ 'styles': [
178
+ '100',
179
+ '100i',
180
+ '200',
181
+ '200i',
182
+ '300',
183
+ '300i',
184
+ '400',
185
+ '400i',
186
+ '500',
187
+ '500i',
188
+ '600',
189
+ '600i',
190
+ '700',
191
+ '700i',
192
+ '800',
193
+ '800i',
194
+ '900',
195
+ '900i'
196
+ ],
197
+ 'category': 'Sans Serif'
198
+ },
199
+ {
200
+ 'name': 'Alegreya Sans',
201
+ 'styles': [
202
+ '100',
203
+ '100i',
204
+ '300',
205
+ '300i',
206
+ '400',
207
+ '400i',
208
+ '500',
209
+ '500i',
210
+ '700',
211
+ '700i',
212
+ '800',
213
+ '800i',
214
+ '900',
215
+ '900i'
216
+ ],
217
+ 'category': 'Sans Serif'
218
+ },
219
+ {
220
+ 'name': 'Source Sans Pro',
221
+ 'styles': [
222
+ '200',
223
+ '200i',
224
+ '300',
225
+ '300i',
226
+ '400',
227
+ '400i',
228
+ '600',
229
+ '600i',
230
+ '700',
231
+ '700i',
232
+ '900',
233
+ '900i'
234
+ ],
235
+ 'category': 'Sans Serif'
236
+ },
237
+ {
238
+ 'name': 'Rajdhani',
239
+ 'styles': [
240
+ '300',
241
+ '400',
242
+ '500',
243
+ '600',
244
+ '700'
245
+ ],
246
+ 'category': 'Sans Serif'
247
+ },
248
+ {
249
+ 'name': 'Ubuntu',
250
+ 'styles': [
251
+ '300',
252
+ '300i',
253
+ '400',
254
+ '400i',
255
+ '500',
256
+ '500i',
257
+ '700',
258
+ '700i'
259
+ ],
260
+ 'category': 'Sans Serif'
261
+ },
262
+ {
263
+ 'name': 'Dosis',
264
+ 'styles': [
265
+ '200',
266
+ '300',
267
+ '400',
268
+ '500',
269
+ '600',
270
+ '700',
271
+ '800'
272
+ ],
273
+ 'category': 'Sans Serif'
274
+ },
275
+ {
276
+ 'name': 'PT Sans Narrow',
277
+ 'styles': [
278
+ '400',
279
+ '700'
280
+ ],
281
+ 'category': 'Sans Serif'
282
+ },
283
+ {
284
+ 'name': 'Raleway',
285
+ 'styles': [
286
+ '100',
287
+ '100i',
288
+ '200',
289
+ '200i',
290
+ '300',
291
+ '300i',
292
+ '400',
293
+ '400i',
294
+ '500',
295
+ '500i',
296
+ '600',
297
+ '600i',
298
+ '700',
299
+ '700i',
300
+ '800',
301
+ '800i',
302
+ '900',
303
+ '900i'
304
+ ],
305
+ 'category': 'Sans Serif'
306
+ },
307
+ {
308
+ 'name': 'Lato',
309
+ 'styles': [
310
+ '100',
311
+ '100i',
312
+ '300',
313
+ '300i',
314
+ '400',
315
+ '400i',
316
+ '700',
317
+ '700i',
318
+ '900',
319
+ '900i'
320
+ ],
321
+ 'category': 'Sans Serif'
322
+ },
323
+ {
324
+ 'name': 'Open Sans',
325
+ 'styles': [
326
+ '300',
327
+ '300i',
328
+ '400',
329
+ '400i',
330
+ '600',
331
+ '600i',
332
+ '700',
333
+ '700i',
334
+ '800',
335
+ '800i'
336
+ ],
337
+ 'category': 'Sans Serif'
338
+ },
339
+ {
340
+ 'name': 'Bungee',
341
+ 'styles': [
342
+ '400'
343
+ ],
344
+ 'category': 'Headings / Display'
345
+ },
346
+ {
347
+ 'name': 'Abril Fatface',
348
+ 'styles': [
349
+ '400'
350
+ ],
351
+ 'category': 'Headings / Display'
352
+ },
353
+ {
354
+ 'name': 'Ultra',
355
+ 'styles': [
356
+ '400'
357
+ ],
358
+ 'category': 'Headings / Display'
359
+ },
360
+ {
361
+ 'name': 'Lobster Two',
362
+ 'styles': [
363
+ '400',
364
+ '400i',
365
+ '700',
366
+ '700i'
367
+ ],
368
+ 'category': 'Headings / Display'
369
+ },
370
+ {
371
+ 'name': 'Dancing Script',
372
+ 'styles': [
373
+ '400',
374
+ '700'
375
+ ],
376
+ 'category': 'Headings / Display'
377
+ },
378
+ {
379
+ 'name': 'Caveat',
380
+ 'styles': [
381
+ '400',
382
+ '700'
383
+ ],
384
+ 'category': 'Headings / Display'
385
+ },
386
+ {
387
+ 'name': 'Reenie Beanie',
388
+ 'styles': [
389
+ '400'
390
+ ],
391
+ 'category': 'Headings / Display'
392
+ },
393
+ {
394
+ 'name': 'Amatica SC',
395
+ 'styles': [
396
+ '400',
397
+ '700'
398
+ ],
399
+ 'category': 'Headings / Display'
400
+ },
401
+ {
402
+ 'name': 'Kaushan Script',
403
+ 'styles': [
404
+ '400'
405
+ ],
406
+ 'category': 'Headings / Display'
407
+ },
408
+ {
409
+ 'name': 'Just Another Hand',
410
+ 'styles': [
411
+ '400'
412
+ ],
413
+ 'category': 'Headings / Display'
414
+ },
415
+ {
416
+ 'name': 'Poiret One',
417
+ 'styles': [
418
+ '400'
419
+ ],
420
+ 'category': 'Headings / Display'
421
+ },
422
+ {
423
+ 'name': 'Montserrat',
424
+ 'styles': [
425
+ '100',
426
+ '100i',
427
+ '200',
428
+ '200i',
429
+ '300',
430
+ '300i',
431
+ '400',
432
+ '400i',
433
+ '500',
434
+ '500i',
435
+ '600',
436
+ '600i',
437
+ '700',
438
+ '700i',
439
+ '800',
440
+ '800i',
441
+ '900',
442
+ '900i'
443
+ ],
444
+ 'category': 'Regular'
445
+ },
446
+ {
447
+ 'name': 'Roboto',
448
+ 'styles': [
449
+ '100',
450
+ '100i',
451
+ '300',
452
+ '300i',
453
+ '400',
454
+ '400i',
455
+ '500',
456
+ '500i',
457
+ '700',
458
+ '700i',
459
+ '900',
460
+ '900i'
461
+ ],
462
+ 'category': 'Regular'
463
+ }
464
+ ];
465
+
466
+ export function loadFonts() {
467
+ const families = FONTS.map((font) => `${font.name}:${font.styles.join(',')}`);
468
+
469
+ window.WebFont.load({
470
+ google: { families },
471
+ classes: false,
472
+ timeout: 9000
473
+ });
474
+ }