lkb-fields-document 1.0.0

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 (112) hide show
  1. package/component-blocks/dist/lkb-fields-document-component-blocks.cjs.d.ts +2 -0
  2. package/component-blocks/dist/lkb-fields-document-component-blocks.cjs.js +306 -0
  3. package/component-blocks/dist/lkb-fields-document-component-blocks.esm.js +300 -0
  4. package/component-blocks/dist/lkb-fields-document-component-blocks.node.cjs.js +306 -0
  5. package/component-blocks/dist/lkb-fields-document-component-blocks.node.esm.js +300 -0
  6. package/component-blocks/package.json +4 -0
  7. package/dist/Cell-0ac0ac66.node.cjs.js +21 -0
  8. package/dist/Cell-242f7404.esm.js +17 -0
  9. package/dist/Cell-3103f73d.node.esm.js +17 -0
  10. package/dist/Cell-bfb56d74.cjs.js +21 -0
  11. package/dist/Field-0e0f75ed.node.cjs.js +1628 -0
  12. package/dist/Field-28177061.cjs.js +1628 -0
  13. package/dist/Field-35b79e6b.node.esm.js +1619 -0
  14. package/dist/Field-92d13205.esm.js +1619 -0
  15. package/dist/api-2f524611.esm.js +502 -0
  16. package/dist/api-73636987.cjs.js +506 -0
  17. package/dist/api-8e2b20b8.node.cjs.js +506 -0
  18. package/dist/api-c32e360e.node.esm.js +502 -0
  19. package/dist/callout-ui-2aded278.cjs.js +131 -0
  20. package/dist/callout-ui-3e5ca544.node.esm.js +126 -0
  21. package/dist/callout-ui-8b5f2376.esm.js +126 -0
  22. package/dist/callout-ui-ad50f301.node.cjs.js +131 -0
  23. package/dist/declarations/src/component-blocks.d.ts +4 -0
  24. package/dist/declarations/src/component-blocks.d.ts.map +1 -0
  25. package/dist/declarations/src/document-editor/component-blocks/api.d.ts +120 -0
  26. package/dist/declarations/src/document-editor/component-blocks/api.d.ts.map +1 -0
  27. package/dist/declarations/src/document-editor/component-blocks/types.d.ts +241 -0
  28. package/dist/declarations/src/document-editor/component-blocks/types.d.ts.map +1 -0
  29. package/dist/declarations/src/document-editor/toolset/relationship/relationship-shared.d.ts +10 -0
  30. package/dist/declarations/src/document-editor/toolset/relationship/relationship-shared.d.ts.map +1 -0
  31. package/dist/declarations/src/index.d.ts +7 -0
  32. package/dist/declarations/src/index.d.ts.map +1 -0
  33. package/dist/declarations/src/my-component-blocks/index.d.ts +46 -0
  34. package/dist/declarations/src/my-component-blocks/index.d.ts.map +1 -0
  35. package/dist/declarations/src/structure/Cell.d.ts +5 -0
  36. package/dist/declarations/src/structure/Cell.d.ts.map +1 -0
  37. package/dist/declarations/src/structure/Field.d.ts +5 -0
  38. package/dist/declarations/src/structure/Field.d.ts.map +1 -0
  39. package/dist/declarations/src/structure/controller.d.ts +10 -0
  40. package/dist/declarations/src/structure/controller.d.ts.map +1 -0
  41. package/dist/declarations/src/structure/structure.d.ts +4 -0
  42. package/dist/declarations/src/structure/structure.d.ts.map +1 -0
  43. package/dist/declarations/src/structure-views.d.ts +5 -0
  44. package/dist/declarations/src/structure-views.d.ts.map +1 -0
  45. package/dist/declarations/src/types/DocumentFeatures.d.ts +33 -0
  46. package/dist/declarations/src/types/DocumentFeatures.d.ts.map +1 -0
  47. package/dist/declarations/src/types/DocumentFieldConfig.d.ts +18 -0
  48. package/dist/declarations/src/types/DocumentFieldConfig.d.ts.map +1 -0
  49. package/dist/declarations/src/types/FormattingConfig.d.ts +28 -0
  50. package/dist/declarations/src/types/FormattingConfig.d.ts.map +1 -0
  51. package/dist/declarations/src/types/RelationshipsConfig.d.ts +9 -0
  52. package/dist/declarations/src/types/RelationshipsConfig.d.ts.map +1 -0
  53. package/dist/declarations/src/types/StructureFieldConfig.d.ts +10 -0
  54. package/dist/declarations/src/types/StructureFieldConfig.d.ts.map +1 -0
  55. package/dist/declarations/src/validation/structure-validation.d.ts +218 -0
  56. package/dist/declarations/src/validation/structure-validation.d.ts.map +1 -0
  57. package/dist/declarations/src/views/Cell.d.ts +5 -0
  58. package/dist/declarations/src/views/Cell.d.ts.map +1 -0
  59. package/dist/declarations/src/views/Field.d.ts +5 -0
  60. package/dist/declarations/src/views/Field.d.ts.map +1 -0
  61. package/dist/declarations/src/views/controller.d.ts +15 -0
  62. package/dist/declarations/src/views/controller.d.ts.map +1 -0
  63. package/dist/declarations/src/views/document.d.ts +4 -0
  64. package/dist/declarations/src/views/document.d.ts.map +1 -0
  65. package/dist/declarations/src/views.d.ts +7 -0
  66. package/dist/declarations/src/views.d.ts.map +1 -0
  67. package/dist/editor-shared-a6e340e6.node.esm.js +1993 -0
  68. package/dist/editor-shared-a997ae98.node.cjs.js +2007 -0
  69. package/dist/editor-shared-cc1293ed.cjs.js +2007 -0
  70. package/dist/editor-shared-da518ba3.esm.js +1993 -0
  71. package/dist/form-from-preview-2042b9ef.cjs.js +512 -0
  72. package/dist/form-from-preview-5df6e492.node.esm.js +508 -0
  73. package/dist/form-from-preview-9e501058.node.cjs.js +512 -0
  74. package/dist/form-from-preview-b3a66f37.esm.js +508 -0
  75. package/dist/index-06c36775.cjs.js +14 -0
  76. package/dist/index-586adb8f.node.esm.js +11 -0
  77. package/dist/index-67d52357.esm.js +11 -0
  78. package/dist/index-c3223fdc.node.cjs.js +14 -0
  79. package/dist/layouts-6412fa2a.esm.js +189 -0
  80. package/dist/layouts-a4a3cf0b.node.cjs.js +196 -0
  81. package/dist/layouts-ba9a558b.cjs.js +196 -0
  82. package/dist/layouts-e653b908.node.esm.js +189 -0
  83. package/dist/lkb-fields-document.cjs.d.ts +2 -0
  84. package/dist/lkb-fields-document.cjs.js +1167 -0
  85. package/dist/lkb-fields-document.esm.js +1162 -0
  86. package/dist/lkb-fields-document.node.cjs.js +1167 -0
  87. package/dist/lkb-fields-document.node.esm.js +1162 -0
  88. package/dist/shared-0533009e.cjs.js +594 -0
  89. package/dist/shared-4684cc24.node.cjs.js +594 -0
  90. package/dist/shared-5e864055.node.esm.js +579 -0
  91. package/dist/shared-aaba5901.esm.js +579 -0
  92. package/dist/toolbar-state-3359e2f3.cjs.js +994 -0
  93. package/dist/toolbar-state-945823b8.node.esm.js +971 -0
  94. package/dist/toolbar-state-9611743f.node.cjs.js +994 -0
  95. package/dist/toolbar-state-bc8fe661.esm.js +971 -0
  96. package/dist/utils-06bcddc4.node.cjs.js +747 -0
  97. package/dist/utils-200ff260.node.esm.js +722 -0
  98. package/dist/utils-6409f730.cjs.js +747 -0
  99. package/dist/utils-bc6a0b82.esm.js +722 -0
  100. package/package.json +118 -0
  101. package/structure-views/dist/lkb-fields-document-structure-views.cjs.d.ts +2 -0
  102. package/structure-views/dist/lkb-fields-document-structure-views.cjs.js +138 -0
  103. package/structure-views/dist/lkb-fields-document-structure-views.esm.js +131 -0
  104. package/structure-views/dist/lkb-fields-document-structure-views.node.cjs.js +138 -0
  105. package/structure-views/dist/lkb-fields-document-structure-views.node.esm.js +131 -0
  106. package/structure-views/package.json +4 -0
  107. package/views/dist/lkb-fields-document-views.cjs.d.ts +2 -0
  108. package/views/dist/lkb-fields-document-views.cjs.js +114 -0
  109. package/views/dist/lkb-fields-document-views.esm.js +95 -0
  110. package/views/dist/lkb-fields-document-views.node.cjs.js +114 -0
  111. package/views/dist/lkb-fields-document-views.node.esm.js +95 -0
  112. package/views/package.json +4 -0
@@ -0,0 +1,189 @@
1
+ 'use client';
2
+ import { createContext, useContext, useMemo } from 'react';
3
+ import { Transforms } from 'slate';
4
+ import { useSlateStatic, ReactEditor } from 'slate-react';
5
+ import { Icon } from '@keystar/ui/icon';
6
+ import { columnsIcon } from '@keystar/ui/icon/icons/columnsIcon';
7
+ import { trash2Icon } from '@keystar/ui/icon/icons/trash2Icon';
8
+ import { j as isElementActive } from './utils-bc6a0b82.esm.js';
9
+ import { j as blockElementSpacing, B as BlockPopoverTrigger, c as BlockPopover, d as useToolbarState } from './toolbar-state-bc8fe661.esm.js';
10
+ import { i as insertLayout } from './shared-aaba5901.esm.js';
11
+ import { css, tokenSchema } from '@keystar/ui/style';
12
+ import { ActionGroup } from '@keystar/ui/action-group';
13
+ import { ActionButton } from '@keystar/ui/button';
14
+ import { Flex } from '@keystar/ui/layout';
15
+ import { Item } from '@keystar/ui/tag';
16
+ import { TooltipTrigger, Tooltip } from '@keystar/ui/tooltip';
17
+ import { EditorToolbarButton } from '@keystar/ui/editor';
18
+ import { jsx, jsxs } from 'react/jsx-runtime';
19
+ import '@keystar/ui/typography';
20
+ import './api-2f524611.esm.js';
21
+ import 'lkb-core';
22
+ import '@keystar/ui/drag-and-drop';
23
+ import './index-67d52357.esm.js';
24
+ import '@braintree/sanitize-url';
25
+ import '@react-aria/i18n';
26
+ import '@keystar/ui/number-field';
27
+ import '@keystar/ui/picker';
28
+ import '@keystar/ui/combobox';
29
+ import '@keystar/ui/text-field';
30
+ import '@keystar/ui/checkbox';
31
+ import './form-from-preview-b3a66f37.esm.js';
32
+ import 'lkb-core/admin-ui/context';
33
+ import 'lkb-core/fields/types/relationship/views';
34
+ import 'lkb-core/admin-ui/utils';
35
+ import '@keystar/ui/dialog';
36
+ import '@keystar/ui/field';
37
+ import '@keystar/ui/list-view';
38
+ import '@keystar/ui/slots';
39
+ import '@keystar/ui/icon/icons/trashIcon';
40
+ import '@react-aria/overlays';
41
+ import '@react-aria/utils';
42
+ import '@react-stately/overlays';
43
+ import '@keystar/ui/overlays';
44
+ import '@emotion/weak-memoize';
45
+ import './layouts-6412fa2a.esm.js';
46
+
47
+ const LayoutOptionsContext = /*#__PURE__*/createContext([]);
48
+ const LayoutOptionsProvider = LayoutOptionsContext.Provider;
49
+
50
+ // UI Components
51
+ const LayoutContainer = ({
52
+ attributes,
53
+ children,
54
+ element
55
+ }) => {
56
+ const editor = useSlateStatic();
57
+ const layout = element.layout;
58
+ const layoutOptions = useContext(LayoutOptionsContext);
59
+ const currentLayoutIndex = layoutOptions.findIndex(x => x.toString() === layout.toString());
60
+ return /*#__PURE__*/jsx("div", {
61
+ className: blockElementSpacing,
62
+ ...attributes,
63
+ children: /*#__PURE__*/jsxs(BlockPopoverTrigger, {
64
+ element: element,
65
+ children: [/*#__PURE__*/jsx("div", {
66
+ className: css({
67
+ columnGap: tokenSchema.size.space.regular,
68
+ display: 'grid'
69
+ }),
70
+ style: {
71
+ gridTemplateColumns: layout.map(x => `${x}fr`).join(' ')
72
+ },
73
+ children: children
74
+ }), /*#__PURE__*/jsx(BlockPopover, {
75
+ children: /*#__PURE__*/jsxs(Flex, {
76
+ padding: "regular",
77
+ gap: "regular",
78
+ children: [/*#__PURE__*/jsx(ActionGroup, {
79
+ selectionMode: "single",
80
+ prominence: "low",
81
+ density: "compact",
82
+ onAction: key => {
83
+ const path = ReactEditor.findPath(editor, element);
84
+ const layoutOption = layoutOptions[key];
85
+ Transforms.setNodes(editor, {
86
+ type: 'layout',
87
+ layout: layoutOption
88
+ }, {
89
+ at: path
90
+ });
91
+ ReactEditor.focus(editor);
92
+ },
93
+ selectedKeys: currentLayoutIndex !== -1 ? [currentLayoutIndex.toString()] : [],
94
+ children: layoutOptions.map((layoutOption, i) => /*#__PURE__*/jsx(Item, {
95
+ children: makeLayoutIcon(layoutOption)
96
+ }, i))
97
+ }), /*#__PURE__*/jsxs(TooltipTrigger, {
98
+ children: [/*#__PURE__*/jsx(ActionButton, {
99
+ prominence: "low",
100
+ onPress: () => {
101
+ const path = ReactEditor.findPath(editor, element);
102
+ Transforms.removeNodes(editor, {
103
+ at: path
104
+ });
105
+ },
106
+ children: /*#__PURE__*/jsx(Icon, {
107
+ src: trash2Icon
108
+ })
109
+ }), /*#__PURE__*/jsx(Tooltip, {
110
+ tone: "critical",
111
+ children: "\u5220\u9664"
112
+ })]
113
+ })]
114
+ })
115
+ })]
116
+ })
117
+ });
118
+ };
119
+ const LayoutArea = ({
120
+ attributes,
121
+ children
122
+ }) => {
123
+ return /*#__PURE__*/jsx("div", {
124
+ className: css({
125
+ borderColor: tokenSchema.color.border.neutral,
126
+ borderRadius: tokenSchema.size.radius.regular,
127
+ borderStyle: 'dashed',
128
+ borderWidth: tokenSchema.size.border.regular,
129
+ padding: tokenSchema.size.space.medium
130
+ }),
131
+ ...attributes,
132
+ children: children
133
+ });
134
+ };
135
+ function makeLayoutIcon(ratios) {
136
+ const size = 16;
137
+ const element = /*#__PURE__*/jsx("div", {
138
+ role: "img",
139
+ className: css({
140
+ display: 'grid',
141
+ gridTemplateColumns: ratios.map(r => `${r}fr`).join(' '),
142
+ gap: 2,
143
+ width: size,
144
+ height: size
145
+ }),
146
+ children: ratios.map((_, i) => {
147
+ return /*#__PURE__*/jsx("div", {
148
+ className: css({
149
+ backgroundColor: 'currentcolor',
150
+ borderRadius: 1
151
+ })
152
+ }, i);
153
+ })
154
+ });
155
+ return element;
156
+ }
157
+ const layoutsIcon = /*#__PURE__*/jsx(Icon, {
158
+ src: columnsIcon
159
+ });
160
+ const LayoutsButton = ({
161
+ layouts
162
+ }) => {
163
+ const {
164
+ editor,
165
+ layouts: {
166
+ isSelected
167
+ }
168
+ } = useToolbarState();
169
+ return useMemo(() => /*#__PURE__*/jsxs(TooltipTrigger, {
170
+ children: [/*#__PURE__*/jsx(EditorToolbarButton, {
171
+ isSelected: isSelected,
172
+ onPress: () => {
173
+ if (isElementActive(editor, 'layout')) {
174
+ Transforms.unwrapNodes(editor, {
175
+ match: node => node.type === 'layout'
176
+ });
177
+ } else {
178
+ insertLayout(editor, layouts[0]);
179
+ }
180
+ ReactEditor.focus(editor);
181
+ },
182
+ children: layoutsIcon
183
+ }), /*#__PURE__*/jsx(Tooltip, {
184
+ children: "\u5E03\u5C40"
185
+ })]
186
+ }), [editor, isSelected, layouts]);
187
+ };
188
+
189
+ export { LayoutArea, LayoutContainer, LayoutOptionsProvider, LayoutsButton };
@@ -0,0 +1,196 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var React = require('react');
7
+ var slate = require('slate');
8
+ var slateReact = require('slate-react');
9
+ var icon = require('@keystar/ui/icon');
10
+ var columnsIcon = require('@keystar/ui/icon/icons/columnsIcon');
11
+ var trash2Icon = require('@keystar/ui/icon/icons/trash2Icon');
12
+ var utils = require('./utils-06bcddc4.node.cjs.js');
13
+ var toolbarState = require('./toolbar-state-9611743f.node.cjs.js');
14
+ var shared = require('./shared-4684cc24.node.cjs.js');
15
+ var style = require('@keystar/ui/style');
16
+ var actionGroup = require('@keystar/ui/action-group');
17
+ var button = require('@keystar/ui/button');
18
+ var layout = require('@keystar/ui/layout');
19
+ var tag = require('@keystar/ui/tag');
20
+ var tooltip = require('@keystar/ui/tooltip');
21
+ var editor = require('@keystar/ui/editor');
22
+ var jsxRuntime = require('react/jsx-runtime');
23
+ require('@keystar/ui/typography');
24
+ require('./api-8e2b20b8.node.cjs.js');
25
+ require('lkb-core');
26
+ require('@keystar/ui/drag-and-drop');
27
+ require('./index-c3223fdc.node.cjs.js');
28
+ require('@braintree/sanitize-url');
29
+ require('@react-aria/i18n');
30
+ require('@keystar/ui/number-field');
31
+ require('@keystar/ui/picker');
32
+ require('@keystar/ui/combobox');
33
+ require('@keystar/ui/text-field');
34
+ require('@keystar/ui/checkbox');
35
+ require('./form-from-preview-9e501058.node.cjs.js');
36
+ require('lkb-core/admin-ui/context');
37
+ require('lkb-core/fields/types/relationship/views');
38
+ require('lkb-core/admin-ui/utils');
39
+ require('@keystar/ui/dialog');
40
+ require('@keystar/ui/field');
41
+ require('@keystar/ui/list-view');
42
+ require('@keystar/ui/slots');
43
+ require('@keystar/ui/icon/icons/trashIcon');
44
+ require('@react-aria/overlays');
45
+ require('@react-aria/utils');
46
+ require('@react-stately/overlays');
47
+ require('@keystar/ui/overlays');
48
+ require('@emotion/weak-memoize');
49
+ require('./layouts-a4a3cf0b.node.cjs.js');
50
+
51
+ const LayoutOptionsContext = /*#__PURE__*/React.createContext([]);
52
+ const LayoutOptionsProvider = LayoutOptionsContext.Provider;
53
+
54
+ // UI Components
55
+ const LayoutContainer = ({
56
+ attributes,
57
+ children,
58
+ element
59
+ }) => {
60
+ const editor = slateReact.useSlateStatic();
61
+ const layout$1 = element.layout;
62
+ const layoutOptions = React.useContext(LayoutOptionsContext);
63
+ const currentLayoutIndex = layoutOptions.findIndex(x => x.toString() === layout$1.toString());
64
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
65
+ className: toolbarState.blockElementSpacing,
66
+ ...attributes,
67
+ children: /*#__PURE__*/jsxRuntime.jsxs(toolbarState.BlockPopoverTrigger, {
68
+ element: element,
69
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
70
+ className: style.css({
71
+ columnGap: style.tokenSchema.size.space.regular,
72
+ display: 'grid'
73
+ }),
74
+ style: {
75
+ gridTemplateColumns: layout$1.map(x => `${x}fr`).join(' ')
76
+ },
77
+ children: children
78
+ }), /*#__PURE__*/jsxRuntime.jsx(toolbarState.BlockPopover, {
79
+ children: /*#__PURE__*/jsxRuntime.jsxs(layout.Flex, {
80
+ padding: "regular",
81
+ gap: "regular",
82
+ children: [/*#__PURE__*/jsxRuntime.jsx(actionGroup.ActionGroup, {
83
+ selectionMode: "single",
84
+ prominence: "low",
85
+ density: "compact",
86
+ onAction: key => {
87
+ const path = slateReact.ReactEditor.findPath(editor, element);
88
+ const layoutOption = layoutOptions[key];
89
+ slate.Transforms.setNodes(editor, {
90
+ type: 'layout',
91
+ layout: layoutOption
92
+ }, {
93
+ at: path
94
+ });
95
+ slateReact.ReactEditor.focus(editor);
96
+ },
97
+ selectedKeys: currentLayoutIndex !== -1 ? [currentLayoutIndex.toString()] : [],
98
+ children: layoutOptions.map((layoutOption, i) => /*#__PURE__*/jsxRuntime.jsx(tag.Item, {
99
+ children: makeLayoutIcon(layoutOption)
100
+ }, i))
101
+ }), /*#__PURE__*/jsxRuntime.jsxs(tooltip.TooltipTrigger, {
102
+ children: [/*#__PURE__*/jsxRuntime.jsx(button.ActionButton, {
103
+ prominence: "low",
104
+ onPress: () => {
105
+ const path = slateReact.ReactEditor.findPath(editor, element);
106
+ slate.Transforms.removeNodes(editor, {
107
+ at: path
108
+ });
109
+ },
110
+ children: /*#__PURE__*/jsxRuntime.jsx(icon.Icon, {
111
+ src: trash2Icon.trash2Icon
112
+ })
113
+ }), /*#__PURE__*/jsxRuntime.jsx(tooltip.Tooltip, {
114
+ tone: "critical",
115
+ children: "\u5220\u9664"
116
+ })]
117
+ })]
118
+ })
119
+ })]
120
+ })
121
+ });
122
+ };
123
+ const LayoutArea = ({
124
+ attributes,
125
+ children
126
+ }) => {
127
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
128
+ className: style.css({
129
+ borderColor: style.tokenSchema.color.border.neutral,
130
+ borderRadius: style.tokenSchema.size.radius.regular,
131
+ borderStyle: 'dashed',
132
+ borderWidth: style.tokenSchema.size.border.regular,
133
+ padding: style.tokenSchema.size.space.medium
134
+ }),
135
+ ...attributes,
136
+ children: children
137
+ });
138
+ };
139
+ function makeLayoutIcon(ratios) {
140
+ const size = 16;
141
+ const element = /*#__PURE__*/jsxRuntime.jsx("div", {
142
+ role: "img",
143
+ className: style.css({
144
+ display: 'grid',
145
+ gridTemplateColumns: ratios.map(r => `${r}fr`).join(' '),
146
+ gap: 2,
147
+ width: size,
148
+ height: size
149
+ }),
150
+ children: ratios.map((_, i) => {
151
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
152
+ className: style.css({
153
+ backgroundColor: 'currentcolor',
154
+ borderRadius: 1
155
+ })
156
+ }, i);
157
+ })
158
+ });
159
+ return element;
160
+ }
161
+ const layoutsIcon = /*#__PURE__*/jsxRuntime.jsx(icon.Icon, {
162
+ src: columnsIcon.columnsIcon
163
+ });
164
+ const LayoutsButton = ({
165
+ layouts
166
+ }) => {
167
+ const {
168
+ editor: editor$1,
169
+ layouts: {
170
+ isSelected
171
+ }
172
+ } = toolbarState.useToolbarState();
173
+ return React.useMemo(() => /*#__PURE__*/jsxRuntime.jsxs(tooltip.TooltipTrigger, {
174
+ children: [/*#__PURE__*/jsxRuntime.jsx(editor.EditorToolbarButton, {
175
+ isSelected: isSelected,
176
+ onPress: () => {
177
+ if (utils.isElementActive(editor$1, 'layout')) {
178
+ slate.Transforms.unwrapNodes(editor$1, {
179
+ match: node => node.type === 'layout'
180
+ });
181
+ } else {
182
+ shared.insertLayout(editor$1, layouts[0]);
183
+ }
184
+ slateReact.ReactEditor.focus(editor$1);
185
+ },
186
+ children: layoutsIcon
187
+ }), /*#__PURE__*/jsxRuntime.jsx(tooltip.Tooltip, {
188
+ children: "\u5E03\u5C40"
189
+ })]
190
+ }), [editor$1, isSelected, layouts]);
191
+ };
192
+
193
+ exports.LayoutArea = LayoutArea;
194
+ exports.LayoutContainer = LayoutContainer;
195
+ exports.LayoutOptionsProvider = LayoutOptionsProvider;
196
+ exports.LayoutsButton = LayoutsButton;
@@ -0,0 +1,196 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var React = require('react');
7
+ var slate = require('slate');
8
+ var slateReact = require('slate-react');
9
+ var icon = require('@keystar/ui/icon');
10
+ var columnsIcon = require('@keystar/ui/icon/icons/columnsIcon');
11
+ var trash2Icon = require('@keystar/ui/icon/icons/trash2Icon');
12
+ var utils = require('./utils-6409f730.cjs.js');
13
+ var toolbarState = require('./toolbar-state-3359e2f3.cjs.js');
14
+ var shared = require('./shared-0533009e.cjs.js');
15
+ var style = require('@keystar/ui/style');
16
+ var actionGroup = require('@keystar/ui/action-group');
17
+ var button = require('@keystar/ui/button');
18
+ var layout = require('@keystar/ui/layout');
19
+ var tag = require('@keystar/ui/tag');
20
+ var tooltip = require('@keystar/ui/tooltip');
21
+ var editor = require('@keystar/ui/editor');
22
+ var jsxRuntime = require('react/jsx-runtime');
23
+ require('@keystar/ui/typography');
24
+ require('./api-73636987.cjs.js');
25
+ require('lkb-core');
26
+ require('@keystar/ui/drag-and-drop');
27
+ require('./index-06c36775.cjs.js');
28
+ require('@braintree/sanitize-url');
29
+ require('@react-aria/i18n');
30
+ require('@keystar/ui/number-field');
31
+ require('@keystar/ui/picker');
32
+ require('@keystar/ui/combobox');
33
+ require('@keystar/ui/text-field');
34
+ require('@keystar/ui/checkbox');
35
+ require('./form-from-preview-2042b9ef.cjs.js');
36
+ require('lkb-core/admin-ui/context');
37
+ require('lkb-core/fields/types/relationship/views');
38
+ require('lkb-core/admin-ui/utils');
39
+ require('@keystar/ui/dialog');
40
+ require('@keystar/ui/field');
41
+ require('@keystar/ui/list-view');
42
+ require('@keystar/ui/slots');
43
+ require('@keystar/ui/icon/icons/trashIcon');
44
+ require('@react-aria/overlays');
45
+ require('@react-aria/utils');
46
+ require('@react-stately/overlays');
47
+ require('@keystar/ui/overlays');
48
+ require('@emotion/weak-memoize');
49
+ require('./layouts-ba9a558b.cjs.js');
50
+
51
+ const LayoutOptionsContext = /*#__PURE__*/React.createContext([]);
52
+ const LayoutOptionsProvider = LayoutOptionsContext.Provider;
53
+
54
+ // UI Components
55
+ const LayoutContainer = ({
56
+ attributes,
57
+ children,
58
+ element
59
+ }) => {
60
+ const editor = slateReact.useSlateStatic();
61
+ const layout$1 = element.layout;
62
+ const layoutOptions = React.useContext(LayoutOptionsContext);
63
+ const currentLayoutIndex = layoutOptions.findIndex(x => x.toString() === layout$1.toString());
64
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
65
+ className: toolbarState.blockElementSpacing,
66
+ ...attributes,
67
+ children: /*#__PURE__*/jsxRuntime.jsxs(toolbarState.BlockPopoverTrigger, {
68
+ element: element,
69
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
70
+ className: style.css({
71
+ columnGap: style.tokenSchema.size.space.regular,
72
+ display: 'grid'
73
+ }),
74
+ style: {
75
+ gridTemplateColumns: layout$1.map(x => `${x}fr`).join(' ')
76
+ },
77
+ children: children
78
+ }), /*#__PURE__*/jsxRuntime.jsx(toolbarState.BlockPopover, {
79
+ children: /*#__PURE__*/jsxRuntime.jsxs(layout.Flex, {
80
+ padding: "regular",
81
+ gap: "regular",
82
+ children: [/*#__PURE__*/jsxRuntime.jsx(actionGroup.ActionGroup, {
83
+ selectionMode: "single",
84
+ prominence: "low",
85
+ density: "compact",
86
+ onAction: key => {
87
+ const path = slateReact.ReactEditor.findPath(editor, element);
88
+ const layoutOption = layoutOptions[key];
89
+ slate.Transforms.setNodes(editor, {
90
+ type: 'layout',
91
+ layout: layoutOption
92
+ }, {
93
+ at: path
94
+ });
95
+ slateReact.ReactEditor.focus(editor);
96
+ },
97
+ selectedKeys: currentLayoutIndex !== -1 ? [currentLayoutIndex.toString()] : [],
98
+ children: layoutOptions.map((layoutOption, i) => /*#__PURE__*/jsxRuntime.jsx(tag.Item, {
99
+ children: makeLayoutIcon(layoutOption)
100
+ }, i))
101
+ }), /*#__PURE__*/jsxRuntime.jsxs(tooltip.TooltipTrigger, {
102
+ children: [/*#__PURE__*/jsxRuntime.jsx(button.ActionButton, {
103
+ prominence: "low",
104
+ onPress: () => {
105
+ const path = slateReact.ReactEditor.findPath(editor, element);
106
+ slate.Transforms.removeNodes(editor, {
107
+ at: path
108
+ });
109
+ },
110
+ children: /*#__PURE__*/jsxRuntime.jsx(icon.Icon, {
111
+ src: trash2Icon.trash2Icon
112
+ })
113
+ }), /*#__PURE__*/jsxRuntime.jsx(tooltip.Tooltip, {
114
+ tone: "critical",
115
+ children: "\u5220\u9664"
116
+ })]
117
+ })]
118
+ })
119
+ })]
120
+ })
121
+ });
122
+ };
123
+ const LayoutArea = ({
124
+ attributes,
125
+ children
126
+ }) => {
127
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
128
+ className: style.css({
129
+ borderColor: style.tokenSchema.color.border.neutral,
130
+ borderRadius: style.tokenSchema.size.radius.regular,
131
+ borderStyle: 'dashed',
132
+ borderWidth: style.tokenSchema.size.border.regular,
133
+ padding: style.tokenSchema.size.space.medium
134
+ }),
135
+ ...attributes,
136
+ children: children
137
+ });
138
+ };
139
+ function makeLayoutIcon(ratios) {
140
+ const size = 16;
141
+ const element = /*#__PURE__*/jsxRuntime.jsx("div", {
142
+ role: "img",
143
+ className: style.css({
144
+ display: 'grid',
145
+ gridTemplateColumns: ratios.map(r => `${r}fr`).join(' '),
146
+ gap: 2,
147
+ width: size,
148
+ height: size
149
+ }),
150
+ children: ratios.map((_, i) => {
151
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
152
+ className: style.css({
153
+ backgroundColor: 'currentcolor',
154
+ borderRadius: 1
155
+ })
156
+ }, i);
157
+ })
158
+ });
159
+ return element;
160
+ }
161
+ const layoutsIcon = /*#__PURE__*/jsxRuntime.jsx(icon.Icon, {
162
+ src: columnsIcon.columnsIcon
163
+ });
164
+ const LayoutsButton = ({
165
+ layouts
166
+ }) => {
167
+ const {
168
+ editor: editor$1,
169
+ layouts: {
170
+ isSelected
171
+ }
172
+ } = toolbarState.useToolbarState();
173
+ return React.useMemo(() => /*#__PURE__*/jsxRuntime.jsxs(tooltip.TooltipTrigger, {
174
+ children: [/*#__PURE__*/jsxRuntime.jsx(editor.EditorToolbarButton, {
175
+ isSelected: isSelected,
176
+ onPress: () => {
177
+ if (utils.isElementActive(editor$1, 'layout')) {
178
+ slate.Transforms.unwrapNodes(editor$1, {
179
+ match: node => node.type === 'layout'
180
+ });
181
+ } else {
182
+ shared.insertLayout(editor$1, layouts[0]);
183
+ }
184
+ slateReact.ReactEditor.focus(editor$1);
185
+ },
186
+ children: layoutsIcon
187
+ }), /*#__PURE__*/jsxRuntime.jsx(tooltip.Tooltip, {
188
+ children: "\u5E03\u5C40"
189
+ })]
190
+ }), [editor$1, isSelected, layouts]);
191
+ };
192
+
193
+ exports.LayoutArea = LayoutArea;
194
+ exports.LayoutContainer = LayoutContainer;
195
+ exports.LayoutOptionsProvider = LayoutOptionsProvider;
196
+ exports.LayoutsButton = LayoutsButton;