@onetype/framework 2.0.53 → 2.0.54

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 (150) hide show
  1. package/addons/float/popup/css/popup.css +2 -2
  2. package/addons/render/directives/front/functions/process.js +3 -1
  3. package/addons/render/directives/front/items/self/160-slot.js +9 -1
  4. package/addons/render/editor/addon.js +13 -0
  5. package/addons/render/editor/functions/block/add.js +57 -0
  6. package/addons/render/editor/functions/block/delete.js +32 -0
  7. package/addons/render/editor/functions/block/find.js +30 -0
  8. package/addons/render/editor/functions/render/block.js +114 -0
  9. package/addons/render/editor/functions/render/blocks.js +31 -0
  10. package/addons/render/editor/items/elements/editor.js +69 -0
  11. package/addons/render/editor/items/self/paragraph.js +21 -0
  12. package/addons/render/editor/styles/editor.css +252 -0
  13. package/addons/render/elements/front/functions/types/colors/badge.js +19 -0
  14. package/addons/render/elements/front/functions/types/colors/status.js +24 -0
  15. package/addons/render/elements/front/functions/types/escape.js +8 -0
  16. package/addons/render/elements/front/functions/types/format/currency.js +16 -0
  17. package/addons/render/elements/front/functions/types/format/date.js +16 -0
  18. package/addons/render/elements/front/functions/types/format/number.js +24 -0
  19. package/addons/render/elements/front/functions/types/format/timeago.js +43 -0
  20. package/addons/render/elements/front/functions/types/render/avatar.js +10 -0
  21. package/addons/render/elements/front/functions/types/render/badge.js +17 -0
  22. package/addons/render/elements/front/functions/types/render/boolean.js +8 -0
  23. package/addons/render/elements/front/functions/types/render/chip.js +6 -0
  24. package/addons/render/elements/front/functions/types/render/currency.js +7 -0
  25. package/addons/render/elements/front/functions/types/render/date.js +6 -0
  26. package/addons/render/elements/front/functions/types/render/description.js +12 -0
  27. package/addons/render/elements/front/functions/types/render/group.js +11 -0
  28. package/addons/render/elements/front/functions/types/render/icon.js +8 -0
  29. package/addons/render/elements/front/functions/types/render/image.js +9 -0
  30. package/addons/render/elements/front/functions/types/render/link.js +8 -0
  31. package/addons/render/elements/front/functions/types/render/media.js +16 -0
  32. package/addons/render/elements/front/functions/types/render/metric.js +13 -0
  33. package/addons/render/elements/front/functions/types/render/number.js +6 -0
  34. package/addons/render/elements/front/functions/types/render/progress.js +13 -0
  35. package/addons/render/elements/front/functions/types/render/status.js +12 -0
  36. package/addons/render/elements/front/functions/types/render/tag.js +6 -0
  37. package/addons/render/elements/front/functions/types/render/tags.js +11 -0
  38. package/addons/render/elements/front/functions/types/render/text.js +8 -0
  39. package/addons/render/elements/front/functions/types/render/timeago.js +6 -0
  40. package/addons/render/elements/front/functions/types/render.js +16 -0
  41. package/addons/render/elements/front/items/directives/element.js +8 -3
  42. package/addons/render/elements/front/items/self/cards/info/info.css +499 -0
  43. package/addons/render/elements/front/items/self/cards/info/info.js +224 -0
  44. package/addons/render/elements/front/items/self/cards/item/item.css +614 -0
  45. package/addons/render/elements/front/items/self/cards/item/item.js +200 -0
  46. package/addons/render/elements/front/items/self/cards/pricing/pricing.css +318 -46
  47. package/addons/render/elements/front/items/self/cards/pricing/pricing.js +81 -30
  48. package/addons/render/elements/front/items/self/cards/profile/profile.css +446 -0
  49. package/addons/render/elements/front/items/self/cards/profile/profile.js +186 -0
  50. package/addons/render/elements/front/items/self/cards/share/share.css +445 -0
  51. package/addons/render/elements/front/items/self/cards/share/share.js +316 -0
  52. package/addons/render/elements/front/items/self/cards/stat/stat.css +356 -0
  53. package/addons/render/elements/front/items/self/cards/stat/stat.js +146 -0
  54. package/addons/render/elements/front/items/self/charts/bar/bar.css +263 -0
  55. package/addons/render/elements/front/items/self/charts/bar/bar.js +156 -0
  56. package/addons/render/elements/front/items/self/charts/donut/donut.css +222 -0
  57. package/addons/render/elements/front/items/self/charts/donut/donut.js +164 -0
  58. package/addons/render/elements/front/items/self/charts/line/line.css +229 -0
  59. package/addons/render/elements/front/items/self/charts/line/line.js +249 -0
  60. package/addons/render/elements/front/items/self/charts/sparkline/sparkline.css +102 -0
  61. package/addons/render/elements/front/items/self/charts/sparkline/sparkline.js +164 -0
  62. package/addons/render/elements/front/items/self/core/builder/builder.css +71 -116
  63. package/addons/render/elements/front/items/self/core/builder/builder.js +212 -127
  64. package/addons/render/elements/front/items/self/core/repeater/repeater.css +338 -71
  65. package/addons/render/elements/front/items/self/core/repeater/repeater.js +191 -44
  66. package/addons/render/elements/front/items/self/data/filters/filters.css +541 -0
  67. package/addons/render/elements/front/items/self/data/filters/filters.js +504 -0
  68. package/addons/render/elements/front/items/self/data/table/table.css +588 -0
  69. package/addons/render/elements/front/items/self/data/table/table.js +589 -0
  70. package/addons/render/elements/front/items/self/form/button/button.css +430 -103
  71. package/addons/render/elements/front/items/self/form/button/button.js +109 -101
  72. package/addons/render/elements/front/items/self/form/checkbox/checkbox.css +356 -39
  73. package/addons/render/elements/front/items/self/form/checkbox/checkbox.js +109 -75
  74. package/addons/render/elements/front/items/self/form/color/color.css +255 -61
  75. package/addons/render/elements/front/items/self/form/color/color.js +135 -41
  76. package/addons/render/elements/front/items/self/form/date/date.css +289 -38
  77. package/addons/render/elements/front/items/self/form/date/date.js +108 -24
  78. package/addons/render/elements/front/items/self/form/editor/editor.css +447 -0
  79. package/addons/render/elements/front/items/self/form/editor/editor.js +794 -0
  80. package/addons/render/elements/front/items/self/form/field/field.css +160 -29
  81. package/addons/render/elements/front/items/self/form/field/field.js +36 -16
  82. package/addons/render/elements/front/items/self/form/input/input.css +272 -32
  83. package/addons/render/elements/front/items/self/form/input/input.js +324 -124
  84. package/addons/render/elements/front/items/self/form/radio/radio.css +310 -45
  85. package/addons/render/elements/front/items/self/form/radio/radio.js +99 -80
  86. package/addons/render/elements/front/items/self/form/rating/rating.css +234 -57
  87. package/addons/render/elements/front/items/self/form/rating/rating.js +216 -86
  88. package/addons/render/elements/front/items/self/form/section/section.css +247 -32
  89. package/addons/render/elements/front/items/self/form/section/section.js +53 -16
  90. package/addons/render/elements/front/items/self/form/select/select.css +362 -64
  91. package/addons/render/elements/front/items/self/form/select/select.js +156 -30
  92. package/addons/render/elements/front/items/self/form/slider/slider.css +331 -123
  93. package/addons/render/elements/front/items/self/form/slider/slider.js +124 -26
  94. package/addons/render/elements/front/items/self/form/tags/tags.css +328 -53
  95. package/addons/render/elements/front/items/self/form/tags/tags.js +155 -28
  96. package/addons/render/elements/front/items/self/form/textarea/textarea.css +128 -27
  97. package/addons/render/elements/front/items/self/form/textarea/textarea.js +172 -113
  98. package/addons/render/elements/front/items/self/form/toggle/toggle.css +239 -39
  99. package/addons/render/elements/front/items/self/form/toggle/toggle.js +32 -17
  100. package/addons/render/elements/front/items/self/form/transfer/transfer.css +377 -0
  101. package/addons/render/elements/front/items/self/form/transfer/transfer.js +453 -0
  102. package/addons/render/elements/front/items/self/form/upload/upload.css +408 -0
  103. package/addons/render/elements/front/items/self/form/upload/upload.js +469 -0
  104. package/addons/render/elements/front/items/self/global/accordion/accordion.css +377 -0
  105. package/addons/render/elements/front/items/self/global/accordion/accordion.js +135 -0
  106. package/addons/render/elements/front/items/self/global/code/code.css +207 -44
  107. package/addons/render/elements/front/items/self/global/code/code.js +327 -19
  108. package/addons/render/elements/front/items/self/global/gallery/gallery.css +521 -0
  109. package/addons/render/elements/front/items/self/global/gallery/gallery.js +291 -0
  110. package/addons/render/elements/front/items/self/global/heading/heading.css +151 -49
  111. package/addons/render/elements/front/items/self/global/heading/heading.js +30 -15
  112. package/addons/render/elements/front/items/self/global/markdown/markdown.css +284 -135
  113. package/addons/render/elements/front/items/self/global/markdown/markdown.js +35 -5
  114. package/addons/render/elements/front/items/self/global/menu/menu.css +311 -56
  115. package/addons/render/elements/front/items/self/global/menu/menu.js +95 -47
  116. package/addons/render/elements/front/items/self/global/notice/notice.css +263 -23
  117. package/addons/render/elements/front/items/self/global/notice/notice.js +51 -11
  118. package/addons/render/elements/front/items/self/global/parameters/parameters.css +276 -33
  119. package/addons/render/elements/front/items/self/global/parameters/parameters.js +86 -16
  120. package/addons/render/elements/front/items/self/global/tags/tags.css +215 -29
  121. package/addons/render/elements/front/items/self/global/tags/tags.js +91 -17
  122. package/addons/render/elements/front/items/self/navigation/dock/dock.css +221 -0
  123. package/addons/render/elements/front/items/self/navigation/dock/dock.js +134 -0
  124. package/addons/render/elements/front/items/self/navigation/footer/footer.css +356 -0
  125. package/addons/render/elements/front/items/self/navigation/footer/footer.js +219 -0
  126. package/addons/render/elements/front/items/self/navigation/navbar/navbar.css +736 -76
  127. package/addons/render/elements/front/items/self/navigation/navbar/navbar.js +437 -29
  128. package/addons/render/elements/front/items/self/navigation/sidebar/sidebar.css +327 -196
  129. package/addons/render/elements/front/items/self/navigation/sidebar/sidebar.js +115 -62
  130. package/addons/render/elements/front/items/self/navigation/steps/steps.css +345 -0
  131. package/addons/render/elements/front/items/self/navigation/steps/steps.js +113 -0
  132. package/addons/render/elements/front/items/self/navigation/tabs/tabs.css +507 -33
  133. package/addons/render/elements/front/items/self/navigation/tabs/tabs.js +62 -19
  134. package/addons/render/elements/front/items/self/status/code/code.css +83 -12
  135. package/addons/render/elements/front/items/self/status/code/code.js +15 -4
  136. package/addons/render/elements/front/items/self/status/empty/empty.css +95 -15
  137. package/addons/render/elements/front/items/self/status/empty/empty.js +17 -12
  138. package/addons/render/elements/front/items/self/status/error/error.css +99 -14
  139. package/addons/render/elements/front/items/self/status/error/error.js +21 -11
  140. package/addons/render/elements/front/items/self/status/loading/loading.css +85 -14
  141. package/addons/render/elements/front/items/self/status/loading/loading.js +5 -6
  142. package/addons/render/elements/front/styles/types.css +363 -0
  143. package/instructions.txt +28 -0
  144. package/lib/load.js +1 -0
  145. package/lib/styles/reset.css +89 -76
  146. package/package.json +1 -1
  147. package/addons/render/elements/front/items/self/form/editor-markdown/editor-markdown.css +0 -410
  148. package/addons/render/elements/front/items/self/form/editor-markdown/editor-markdown.js +0 -191
  149. package/addons/render/elements/front/items/self/global/faq/faq.css +0 -98
  150. package/addons/render/elements/front/items/self/global/faq/faq.js +0 -56
@@ -209,8 +209,8 @@
209
209
  border-top: 1px solid var(--ot-bg-1-border);
210
210
  }
211
211
 
212
- .ot-confirm > .actions > *
212
+ .ot-confirm > .actions > *,
213
+ .ot-confirm > .actions > * > *
213
214
  {
214
- flex: 1;
215
215
  width: 100%;
216
216
  }
@@ -24,7 +24,9 @@ directives.Fn('process', function(trigger, item, compile, node, identifier)
24
24
 
25
25
  if(node.nodeType === 1)
26
26
  {
27
- if(!node.attributes.length && !node.tagName.includes('-'))
27
+ const tagLower = node.tagName.toLowerCase();
28
+
29
+ if(!node.attributes.length && !tagLower.includes('-') && tagLower !== 'slot' && tagLower !== 'render')
28
30
  {
29
31
  return;
30
32
  }
@@ -9,12 +9,20 @@ onetype.AddonReady('directives', function(directives)
9
9
  trigger: 'node',
10
10
  order: 160,
11
11
  tag: 'slot',
12
+ strict: true,
12
13
  attributes: {
13
14
  'name': ['string']
14
15
  },
15
16
  code: function(data, item, compile, node, id)
16
17
  {
17
- const name = data['name']?.value || 'default';
18
+ const name = data['name']?.value;
19
+
20
+ if(!name)
21
+ {
22
+ node.remove();
23
+ return;
24
+ }
25
+
18
26
  const slot = item.Slots[name];
19
27
 
20
28
  if (slot && slot.Element)
@@ -0,0 +1,13 @@
1
+ const editor = onetype.Addon('editor', (addon) =>
2
+ {
3
+ addon.Field('id', ['string']);
4
+ addon.Field('icon', ['string', 'edit_note']);
5
+ addon.Field('name', ['string', '']);
6
+ addon.Field('category', ['string', '']);
7
+ addon.Field('editable', ['boolean', false]);
8
+ addon.Field('children', ['boolean', false]);
9
+ addon.Field('config', ['object', {}]);
10
+ addon.Field('insert', ['function']);
11
+ addon.Field('update', ['function']);
12
+ addon.Field('remove', ['function']);
13
+ });
@@ -0,0 +1,57 @@
1
+ onetype.AddonReady('editor', (editor) =>
2
+ {
3
+ editor.Fn('block.add', function(instance, type, afterUid, data)
4
+ {
5
+ const block = {
6
+ uid: onetype.GenerateUID(),
7
+ type: type,
8
+ data: data || {},
9
+ children: []
10
+ };
11
+
12
+ const container = instance.Element.querySelector('.ot-editor-blocks');
13
+
14
+ if(!container)
15
+ {
16
+ return null;
17
+ }
18
+
19
+ const node = editor.Fn('render.block', instance, block);
20
+
21
+ if(!node)
22
+ {
23
+ return null;
24
+ }
25
+
26
+ if(afterUid)
27
+ {
28
+ const index = instance.blocks.findIndex(b => b.uid === afterUid);
29
+ const afterNode = container.querySelector('[data-uid="' + afterUid + '"]');
30
+
31
+ if(index !== -1 && afterNode)
32
+ {
33
+ instance.blocks.splice(index + 1, 0, block);
34
+ afterNode.after(node);
35
+ }
36
+ else
37
+ {
38
+ instance.blocks.push(block);
39
+ container.appendChild(node);
40
+ }
41
+ }
42
+ else
43
+ {
44
+ instance.blocks.push(block);
45
+ container.appendChild(node);
46
+ }
47
+
48
+ const placeholder = instance.Element.querySelector('.ot-editor-placeholder');
49
+
50
+ if(placeholder)
51
+ {
52
+ placeholder.style.display = 'none';
53
+ }
54
+
55
+ return block;
56
+ });
57
+ });
@@ -0,0 +1,32 @@
1
+ onetype.AddonReady('editor', (editor) =>
2
+ {
3
+ editor.Fn('block.delete', function(instance, uid)
4
+ {
5
+ const found = editor.Fn('block.find', instance, uid);
6
+
7
+ if(!found)
8
+ {
9
+ return;
10
+ }
11
+
12
+ const type = editor.ItemGet(found.block.type);
13
+ const node = instance.Element.querySelector('[data-uid="' + uid + '"]');
14
+
15
+ if(type && type.Get('remove'))
16
+ {
17
+ type.Get('remove').call(null, node);
18
+ }
19
+
20
+ found.list.splice(found.index, 1);
21
+
22
+ if(node)
23
+ {
24
+ node.remove();
25
+ }
26
+
27
+ if(!instance.blocks.length)
28
+ {
29
+ editor.Fn('block.add', instance, 'paragraph', null, {});
30
+ }
31
+ });
32
+ });
@@ -0,0 +1,30 @@
1
+ onetype.AddonReady('editor', (editor) =>
2
+ {
3
+ editor.Fn('block.find', function(instance, uid, source)
4
+ {
5
+ source = source || instance.blocks;
6
+
7
+ for(let i = 0; i < source.length; i++)
8
+ {
9
+ if(source[i].uid === uid)
10
+ {
11
+ return { block: source[i], list: source, index: i };
12
+ }
13
+
14
+ if(source[i].children)
15
+ {
16
+ for(let z = 0; z < source[i].children.length; z++)
17
+ {
18
+ const found = editor.Fn('block.find', instance, uid, source[i].children[z]);
19
+
20
+ if(found)
21
+ {
22
+ return found;
23
+ }
24
+ }
25
+ }
26
+ }
27
+
28
+ return null;
29
+ });
30
+ });
@@ -0,0 +1,114 @@
1
+ onetype.AddonReady('editor', (editor) =>
2
+ {
3
+ editor.Fn('render.block', function(instance, block)
4
+ {
5
+ const type = editor.ItemGet(block.type);
6
+
7
+ if(!type)
8
+ {
9
+ return null;
10
+ }
11
+
12
+ const wrapper = document.createElement('div');
13
+ wrapper.className = 'ot-block';
14
+ wrapper.setAttribute('data-uid', block.uid);
15
+ wrapper.setAttribute('data-type', block.type);
16
+ wrapper.setAttribute('tabindex', '-1');
17
+
18
+ const gutter = document.createElement('div');
19
+ gutter.className = 'ot-block-gutter';
20
+ gutter.innerHTML = '<button class="ot-block-handle" draggable="true"><i>drag_indicator</i></button><button class="ot-block-add"><i>add</i></button>';
21
+
22
+ const content = document.createElement('div');
23
+ content.className = 'ot-block-content';
24
+ content.innerHTML = type.Get('insert').call(null, block.data);
25
+
26
+ const actions = document.createElement('div');
27
+ actions.className = 'ot-block-actions';
28
+ actions.innerHTML = '<button class="ot-block-settings"><i>more_vert</i></button>';
29
+
30
+ wrapper.appendChild(gutter);
31
+ wrapper.appendChild(content);
32
+ wrapper.appendChild(actions);
33
+
34
+ if(type.Get('editable'))
35
+ {
36
+ const target = content.firstElementChild;
37
+
38
+ if(target)
39
+ {
40
+ target.setAttribute('contenteditable', 'true');
41
+ target.setAttribute('data-placeholder', instance.placeholder || 'Type something...');
42
+
43
+ target.addEventListener('input', () =>
44
+ {
45
+ block.data.content = target.innerHTML;
46
+
47
+ if(instance._change)
48
+ {
49
+ instance._change({ value: instance.getValue() });
50
+ }
51
+ });
52
+
53
+ target.addEventListener('keydown', (e) =>
54
+ {
55
+ if(e.key === 'Enter' && !e.shiftKey)
56
+ {
57
+ e.preventDefault();
58
+ const newBlock = editor.Fn('block.add', instance, 'paragraph', block.uid, {});
59
+
60
+ if(newBlock)
61
+ {
62
+ const newNode = instance.Element.querySelector('[data-uid="' + newBlock.uid + '"]');
63
+
64
+ if(newNode)
65
+ {
66
+ const editable = newNode.querySelector('[contenteditable]');
67
+ if(editable) editable.focus();
68
+ }
69
+ }
70
+ }
71
+
72
+ if(e.key === 'Backspace' && target.innerHTML === '' && instance.blocks.length > 1)
73
+ {
74
+ e.preventDefault();
75
+
76
+ const index = instance.blocks.findIndex(b => b.uid === block.uid);
77
+ const prev = index > 0 ? instance.blocks[index - 1] : null;
78
+
79
+ editor.Fn('block.delete', instance, block.uid);
80
+
81
+ if(prev)
82
+ {
83
+ const prevNode = instance.Element.querySelector('[data-uid="' + prev.uid + '"]');
84
+
85
+ if(prevNode)
86
+ {
87
+ const editable = prevNode.querySelector('[contenteditable]');
88
+ if(editable) editable.focus();
89
+ }
90
+ }
91
+ }
92
+ });
93
+ }
94
+ }
95
+
96
+ gutter.querySelector('.ot-block-add').addEventListener('click', () =>
97
+ {
98
+ const newBlock = editor.Fn('block.add', instance, 'paragraph', block.uid, {});
99
+
100
+ if(newBlock)
101
+ {
102
+ const newNode = instance.Element.querySelector('[data-uid="' + newBlock.uid + '"]');
103
+
104
+ if(newNode)
105
+ {
106
+ const editable = newNode.querySelector('[contenteditable]');
107
+ if(editable) editable.focus();
108
+ }
109
+ }
110
+ });
111
+
112
+ return wrapper;
113
+ });
114
+ });
@@ -0,0 +1,31 @@
1
+ onetype.AddonReady('editor', (editor) =>
2
+ {
3
+ editor.Fn('render.blocks', function(instance)
4
+ {
5
+ const container = instance.Element.querySelector('.ot-editor-blocks');
6
+
7
+ if(!container)
8
+ {
9
+ return;
10
+ }
11
+
12
+ container.innerHTML = '';
13
+
14
+ instance.blocks.forEach(block =>
15
+ {
16
+ const node = editor.Fn('render.block', instance, block);
17
+
18
+ if(node)
19
+ {
20
+ container.appendChild(node);
21
+ }
22
+ });
23
+
24
+ const placeholder = instance.Element.querySelector('.ot-editor-placeholder');
25
+
26
+ if(placeholder)
27
+ {
28
+ placeholder.style.display = instance.blocks.length ? 'none' : '';
29
+ }
30
+ });
31
+ });
@@ -0,0 +1,69 @@
1
+ onetype.AddonReady('elements', (elements) =>
2
+ {
3
+ elements.ItemAdd({
4
+ id: 'editor',
5
+ icon: 'edit_note',
6
+ name: 'Block Editor',
7
+ description: 'Block-based content editor.',
8
+ category: 'Form',
9
+ config: {
10
+ value: {
11
+ type: 'array',
12
+ value: []
13
+ },
14
+ placeholder: {
15
+ type: 'string',
16
+ value: 'Type something...'
17
+ },
18
+ readonly: {
19
+ type: 'boolean',
20
+ value: false
21
+ },
22
+ variant: {
23
+ type: 'array',
24
+ value: [],
25
+ options: ['compact', 'bordered']
26
+ },
27
+ _change: {
28
+ type: 'function'
29
+ }
30
+ },
31
+ render: function()
32
+ {
33
+ const addon = onetype.AddonGet('editor');
34
+
35
+ this.blocks = [];
36
+
37
+ this.getValue = () =>
38
+ {
39
+ return this.blocks.map(block => ({
40
+ type: block.type,
41
+ data: Object.assign({}, block.data),
42
+ children: block.children || []
43
+ }));
44
+ };
45
+
46
+ this.OnReady(() =>
47
+ {
48
+ if(this.value && this.value.length)
49
+ {
50
+ this.value.forEach(block =>
51
+ {
52
+ addon.Fn('block.add', this, block.type, null, Object.assign({}, block.data));
53
+ });
54
+ }
55
+ else
56
+ {
57
+ addon.Fn('block.add', this, 'paragraph', null, {});
58
+ }
59
+ });
60
+
61
+ return /* html */ `
62
+ <div :class="'ot-editor ' + variant.join(' ')">
63
+ <div class="ot-editor-blocks"></div>
64
+ <div class="ot-editor-placeholder">{{ placeholder }}</div>
65
+ </div>
66
+ `;
67
+ }
68
+ });
69
+ });
@@ -0,0 +1,21 @@
1
+ onetype.AddonReady('editor', (editor) =>
2
+ {
3
+ editor.ItemAdd({
4
+ id: 'paragraph',
5
+ icon: 'text_fields',
6
+ name: 'Text',
7
+ category: 'basic',
8
+ editable: true,
9
+ children: false,
10
+ config: {},
11
+ insert: function(data)
12
+ {
13
+ return '<p>' + (data.content || '') + '</p>';
14
+ },
15
+ update: function(data)
16
+ {
17
+ return '<p>' + (data.content || '') + '</p>';
18
+ },
19
+ remove: function(node) {}
20
+ });
21
+ });
@@ -0,0 +1,252 @@
1
+ /* Root */
2
+
3
+ .e-5511e8fd
4
+ {
5
+ display: block;
6
+ width: 100%;
7
+ }
8
+
9
+ /* Editor */
10
+
11
+ .e-5511e8fd > .ot-editor
12
+ {
13
+ position: relative;
14
+ max-width: 720px;
15
+ margin: 0 auto;
16
+ padding: var(--ot-spacing-l) 0;
17
+ }
18
+
19
+ /* Blocks Container */
20
+
21
+ .e-5511e8fd > .ot-editor > .ot-editor-blocks
22
+ {
23
+ display: flex;
24
+ flex-direction: column;
25
+ }
26
+
27
+ /* Placeholder */
28
+
29
+ .e-5511e8fd > .ot-editor > .ot-editor-placeholder
30
+ {
31
+ color: var(--ot-text-3);
32
+ font-size: var(--ot-size-m);
33
+ padding: 0 var(--ot-spacing-m);
34
+ padding-left: 44px;
35
+ pointer-events: none;
36
+ }
37
+
38
+ /* Block */
39
+
40
+ .e-5511e8fd .ot-block
41
+ {
42
+ position: relative;
43
+ display: flex;
44
+ align-items: flex-start;
45
+ padding: 2px 0;
46
+ border-radius: var(--ot-radius-m);
47
+ outline: none;
48
+ transition: background 0.1s ease;
49
+ }
50
+
51
+ .e-5511e8fd .ot-block:hover
52
+ {
53
+ background: var(--ot-bg-1-hover);
54
+ }
55
+
56
+ /* Gutter */
57
+
58
+ .e-5511e8fd .ot-block-gutter
59
+ {
60
+ display: flex;
61
+ flex-direction: column;
62
+ align-items: center;
63
+ width: 44px;
64
+ flex-shrink: 0;
65
+ opacity: 0;
66
+ transition: opacity 0.15s ease;
67
+ padding-top: 2px;
68
+ }
69
+
70
+ .e-5511e8fd .ot-block:hover > .ot-block-gutter
71
+ {
72
+ opacity: 1;
73
+ }
74
+
75
+ .e-5511e8fd .ot-block-handle,
76
+ .e-5511e8fd .ot-block-add
77
+ {
78
+ width: 24px;
79
+ height: 24px;
80
+ border-radius: var(--ot-radius-s);
81
+ display: flex;
82
+ align-items: center;
83
+ justify-content: center;
84
+ color: var(--ot-text-3);
85
+ background: none;
86
+ border: none;
87
+ cursor: pointer;
88
+ padding: 0;
89
+ transition: background 0.15s ease, color 0.15s ease;
90
+ }
91
+
92
+ .e-5511e8fd .ot-block-handle:hover,
93
+ .e-5511e8fd .ot-block-add:hover
94
+ {
95
+ background: var(--ot-bg-3);
96
+ color: var(--ot-text-1);
97
+ }
98
+
99
+ .e-5511e8fd .ot-block-handle > i,
100
+ .e-5511e8fd .ot-block-add > i
101
+ {
102
+ font-size: 16px;
103
+ }
104
+
105
+ .e-5511e8fd .ot-block-handle
106
+ {
107
+ cursor: grab;
108
+ }
109
+
110
+ .e-5511e8fd .ot-block-handle:active
111
+ {
112
+ cursor: grabbing;
113
+ }
114
+
115
+ /* Content */
116
+
117
+ .e-5511e8fd .ot-block-content
118
+ {
119
+ flex: 1;
120
+ min-width: 0;
121
+ min-height: 24px;
122
+ outline: none;
123
+ }
124
+
125
+ .e-5511e8fd .ot-block-content > [contenteditable]
126
+ {
127
+ outline: none;
128
+ min-height: 24px;
129
+ word-break: break-word;
130
+ overflow-wrap: break-word;
131
+ }
132
+
133
+ .e-5511e8fd .ot-block-content > [contenteditable]:empty::before
134
+ {
135
+ content: attr(data-placeholder);
136
+ color: var(--ot-text-3);
137
+ pointer-events: none;
138
+ }
139
+
140
+ /* Paragraph */
141
+
142
+ .e-5511e8fd .ot-block-content > p
143
+ {
144
+ margin: 0;
145
+ font-size: var(--ot-size-m);
146
+ line-height: 1.7;
147
+ color: var(--ot-text-1);
148
+ }
149
+
150
+ /* Inline Formats */
151
+
152
+ .e-5511e8fd .ot-block-content strong
153
+ {
154
+ font-weight: 600;
155
+ color: var(--ot-text-1);
156
+ }
157
+
158
+ .e-5511e8fd .ot-block-content em
159
+ {
160
+ font-style: italic;
161
+ }
162
+
163
+ .e-5511e8fd .ot-block-content code
164
+ {
165
+ font-family: ui-monospace, 'SF Mono', Menlo, monospace;
166
+ font-size: 0.9em;
167
+ padding: 0.15em 0.4em;
168
+ border-radius: var(--ot-radius-s);
169
+ background: var(--ot-bg-2);
170
+ border: 1px solid var(--ot-bg-2-border);
171
+ }
172
+
173
+ .e-5511e8fd .ot-block-content a
174
+ {
175
+ color: var(--ot-brand);
176
+ text-decoration: underline;
177
+ text-decoration-color: var(--ot-brand-opacity);
178
+ text-underline-offset: 3px;
179
+ }
180
+
181
+ /* Actions */
182
+
183
+ .e-5511e8fd .ot-block-actions
184
+ {
185
+ display: flex;
186
+ align-items: flex-start;
187
+ flex-shrink: 0;
188
+ opacity: 0;
189
+ transition: opacity 0.15s ease;
190
+ padding-top: 2px;
191
+ }
192
+
193
+ .e-5511e8fd .ot-block:hover > .ot-block-actions
194
+ {
195
+ opacity: 1;
196
+ }
197
+
198
+ .e-5511e8fd .ot-block-settings
199
+ {
200
+ width: 24px;
201
+ height: 24px;
202
+ border-radius: var(--ot-radius-s);
203
+ display: flex;
204
+ align-items: center;
205
+ justify-content: center;
206
+ color: var(--ot-text-3);
207
+ background: none;
208
+ border: none;
209
+ cursor: pointer;
210
+ padding: 0;
211
+ transition: background 0.15s ease, color 0.15s ease;
212
+ }
213
+
214
+ .e-5511e8fd .ot-block-settings:hover
215
+ {
216
+ background: var(--ot-bg-3);
217
+ color: var(--ot-text-1);
218
+ }
219
+
220
+ .e-5511e8fd .ot-block-settings > i
221
+ {
222
+ font-size: 16px;
223
+ }
224
+
225
+ /* Selection */
226
+
227
+ .e-5511e8fd .ot-block-selected
228
+ {
229
+ background: var(--ot-brand-opacity);
230
+ }
231
+
232
+ .e-5511e8fd .ot-block-focused
233
+ {
234
+ background: transparent;
235
+ }
236
+
237
+ /* Bordered variant */
238
+
239
+ .e-5511e8fd > .ot-editor.bordered
240
+ {
241
+ border: 1px solid var(--ot-bg-1-border);
242
+ border-radius: var(--ot-radius-l);
243
+ padding: var(--ot-spacing-l);
244
+ }
245
+
246
+ /* Compact variant */
247
+
248
+ .e-5511e8fd > .ot-editor.compact
249
+ {
250
+ max-width: 100%;
251
+ padding: var(--ot-spacing-m) 0;
252
+ }
@@ -0,0 +1,19 @@
1
+ onetype.AddonReady('elements', () =>
2
+ {
3
+ const colors = {
4
+ new: 'brand',
5
+ featured: 'brand',
6
+ pro: 'brand',
7
+ premium: 'brand',
8
+ beta: 'blue',
9
+ info: 'blue',
10
+ warning: 'orange',
11
+ danger: 'red',
12
+ success: 'green'
13
+ };
14
+
15
+ elements.Fn('type.colors.badge', function(overrides)
16
+ {
17
+ return { ...colors, ...(overrides || {}) };
18
+ });
19
+ });