unframer 4.1.8 → 4.2.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.
- package/README.md +5 -5
- package/dist/babel-jsx.d.ts +9 -0
- package/dist/babel-jsx.d.ts.map +1 -1
- package/dist/babel-jsx.js +72 -0
- package/dist/babel-jsx.js.map +1 -1
- package/dist/cli.d.ts +2 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +262 -42
- package/dist/cli.js.map +1 -1
- package/dist/css-core.d.ts +50 -0
- package/dist/css-core.d.ts.map +1 -0
- package/dist/css-core.js +231 -0
- package/dist/css-core.js.map +1 -0
- package/dist/css.d.ts +9 -43
- package/dist/css.d.ts.map +1 -1
- package/dist/css.js +9 -232
- package/dist/css.js.map +1 -1
- package/dist/exporter.d.ts +1 -1
- package/dist/exporter.d.ts.map +1 -1
- package/dist/exporter.js +72 -11
- package/dist/exporter.js.map +1 -1
- package/dist/exporter.test.js +78 -0
- package/dist/exporter.test.js.map +1 -1
- package/dist/framer-chunks/{SqliteDatabase-VAKIICSG-R7ZS6CHH.js → SqliteDatabase-VAKIICSG-OPV4MG3Y.js} +5 -4
- package/dist/framer-chunks/{chunk-2DZGP7C2.js → chunk-7ZLQTYXQ.js} +5 -24
- package/dist/framer-chunks/chunk-IKQSD2QC.js +10 -0
- package/dist/framer-chunks/default-blog-sqlite-7ZHEY3GT-TVGUYU6H.js +7 -0
- package/dist/framer-chunks/fontshare-4THNDPMZ-FLLTWCDO.js +7 -0
- package/dist/framer-chunks/fontshare-B2QLD7YB-5V3XZJAH.js +7 -0
- package/dist/framer-chunks/fontshare-O22OBJ3D-FIG3CRN3.js +7 -0
- package/dist/framer-chunks/framer-font-45AI7UCZ-CKGC4MJC.js +7 -0
- package/dist/framer-chunks/google-3FCAKCAC-AM34UPJK.js +7 -0
- package/dist/framer-chunks/google-3SZHWBC6-2VTQEQ7J.js +7 -0
- package/dist/framer-chunks/google-GXDJLGJB-JNEJGCGD.js +7 -0
- package/dist/framer-chunks/sqlite-wasm-FGP37EAY-NO5QVZDI.js +7 -0
- package/dist/framer-chunks/sqlite3-SISQ6ENZ-5WRKGWTY.js +7 -0
- package/dist/framer.d.ts +128 -0
- package/dist/framer.js +820 -428
- package/dist/plugin-mcp-dist/lib/framer.d.ts +1 -7
- package/dist/plugin-mcp-dist/lib/framer.d.ts.map +1 -1
- package/dist/plugin-mcp-dist/lib/framer.js +90 -23
- package/dist/plugin-mcp-dist/lib/framer.js.map +1 -1
- package/dist/plugin-mcp-dist/lib/framer.test.d.ts +2 -0
- package/dist/plugin-mcp-dist/lib/framer.test.d.ts.map +1 -0
- package/dist/plugin-mcp-dist/lib/framer.test.js +214 -0
- package/dist/plugin-mcp-dist/lib/framer.test.js.map +1 -0
- package/dist/plugin-mcp-dist/lib/mcp-handlers.d.ts.map +1 -1
- package/dist/plugin-mcp-dist/lib/mcp-handlers.js +69 -11
- package/dist/plugin-mcp-dist/lib/mcp-handlers.js.map +1 -1
- package/dist/plugin-mcp-dist/lib/mcp.test.js +340 -364
- package/dist/plugin-mcp-dist/lib/mcp.test.js.map +1 -1
- package/dist/plugin-mcp-dist/lib/plugin-websocket.d.ts.map +1 -1
- package/dist/plugin-mcp-dist/lib/plugin-websocket.js +0 -3
- package/dist/plugin-mcp-dist/lib/plugin-websocket.js.map +1 -1
- package/dist/plugin-mcp-dist/lib/react-export.d.ts.map +1 -1
- package/dist/plugin-mcp-dist/lib/react-export.js +79 -61
- package/dist/plugin-mcp-dist/lib/react-export.js.map +1 -1
- package/dist/plugin-mcp-dist/lib/schema.d.ts +8 -0
- package/dist/plugin-mcp-dist/lib/schema.d.ts.map +1 -1
- package/dist/plugin-mcp-dist/lib/schema.js +18 -1
- package/dist/plugin-mcp-dist/lib/schema.js.map +1 -1
- package/dist/plugin-mcp-dist/lib/store.d.ts +1 -1
- package/dist/plugin-mcp-dist/lib/store.d.ts.map +1 -1
- package/dist/plugin-mcp-dist/lib/tunnel-integration.test.d.ts +2 -0
- package/dist/plugin-mcp-dist/lib/tunnel-integration.test.d.ts.map +1 -0
- package/dist/plugin-mcp-dist/lib/tunnel-integration.test.js +147 -0
- package/dist/plugin-mcp-dist/lib/tunnel-integration.test.js.map +1 -0
- package/dist/plugin-mcp-dist/lib/tunnel.d.ts +46 -0
- package/dist/plugin-mcp-dist/lib/tunnel.d.ts.map +1 -0
- package/dist/plugin-mcp-dist/lib/tunnel.js +117 -0
- package/dist/plugin-mcp-dist/lib/tunnel.js.map +1 -0
- package/dist/plugin-mcp-dist/lib/upstream-socket.d.ts +13 -0
- package/dist/plugin-mcp-dist/lib/upstream-socket.d.ts.map +1 -0
- package/dist/plugin-mcp-dist/lib/upstream-socket.js +56 -0
- package/dist/plugin-mcp-dist/lib/upstream-socket.js.map +1 -0
- package/dist/plugin-mcp-dist/lib/upstream-socket.test.d.ts +2 -0
- package/dist/plugin-mcp-dist/lib/upstream-socket.test.d.ts.map +1 -0
- package/dist/plugin-mcp-dist/lib/upstream-socket.test.js +212 -0
- package/dist/plugin-mcp-dist/lib/upstream-socket.test.js.map +1 -0
- package/dist/plugin-mcp-dist/lib/utils.d.ts +1 -9
- package/dist/plugin-mcp-dist/lib/utils.d.ts.map +1 -1
- package/dist/plugin-mcp-dist/lib/utils.js +13 -9
- package/dist/plugin-mcp-dist/lib/utils.js.map +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +7 -13
- package/dist/react.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +7 -8
- package/src/babel-jsx.ts +99 -0
- package/src/cli.ts +295 -42
- package/src/css-core.ts +277 -0
- package/src/css.tsx +10 -276
- package/src/exporter.test.ts +82 -0
- package/src/exporter.ts +92 -11
- package/src/framer.d.ts +128 -0
- package/src/framer.js +820 -428
- package/src/plugin-mcp-dist/lib/framer.d.ts +2 -5
- package/src/plugin-mcp-dist/lib/framer.d.ts.map +1 -1
- package/src/plugin-mcp-dist/lib/framer.js +90 -23
- package/src/plugin-mcp-dist/lib/framer.js.map +1 -1
- package/src/plugin-mcp-dist/lib/framer.test.d.ts +2 -0
- package/src/plugin-mcp-dist/lib/framer.test.d.ts.map +1 -0
- package/src/plugin-mcp-dist/lib/framer.test.js +213 -0
- package/src/plugin-mcp-dist/lib/framer.test.js.map +1 -0
- package/src/plugin-mcp-dist/lib/mcp-handlers.d.ts +2 -2
- package/src/plugin-mcp-dist/lib/mcp-handlers.d.ts.map +1 -1
- package/src/plugin-mcp-dist/lib/mcp-handlers.js +69 -11
- package/src/plugin-mcp-dist/lib/mcp-handlers.js.map +1 -1
- package/src/plugin-mcp-dist/lib/mcp.test.js +340 -364
- package/src/plugin-mcp-dist/lib/mcp.test.js.map +1 -1
- package/src/plugin-mcp-dist/lib/plugin-websocket.d.ts.map +1 -1
- package/src/plugin-mcp-dist/lib/plugin-websocket.js +0 -3
- package/src/plugin-mcp-dist/lib/plugin-websocket.js.map +1 -1
- package/src/plugin-mcp-dist/lib/react-export.d.ts +1 -1
- package/src/plugin-mcp-dist/lib/react-export.d.ts.map +1 -1
- package/src/plugin-mcp-dist/lib/react-export.js +79 -61
- package/src/plugin-mcp-dist/lib/react-export.js.map +1 -1
- package/src/plugin-mcp-dist/lib/schema.d.ts +11 -3
- package/src/plugin-mcp-dist/lib/schema.d.ts.map +1 -1
- package/src/plugin-mcp-dist/lib/schema.js +18 -1
- package/src/plugin-mcp-dist/lib/schema.js.map +1 -1
- package/src/plugin-mcp-dist/lib/tunnel-integration.test.d.ts +2 -0
- package/src/plugin-mcp-dist/lib/tunnel-integration.test.d.ts.map +1 -0
- package/src/plugin-mcp-dist/lib/tunnel-integration.test.js +146 -0
- package/src/plugin-mcp-dist/lib/tunnel-integration.test.js.map +1 -0
- package/src/plugin-mcp-dist/lib/tunnel.d.ts +55 -0
- package/src/plugin-mcp-dist/lib/tunnel.d.ts.map +1 -0
- package/src/plugin-mcp-dist/lib/tunnel.js +116 -0
- package/src/plugin-mcp-dist/lib/tunnel.js.map +1 -0
- package/src/plugin-mcp-dist/lib/upstream-socket.d.ts +28 -0
- package/src/plugin-mcp-dist/lib/upstream-socket.d.ts.map +1 -0
- package/src/plugin-mcp-dist/lib/upstream-socket.js +55 -0
- package/src/plugin-mcp-dist/lib/upstream-socket.js.map +1 -0
- package/src/plugin-mcp-dist/lib/upstream-socket.test.d.ts +5 -0
- package/src/plugin-mcp-dist/lib/upstream-socket.test.d.ts.map +1 -0
- package/src/plugin-mcp-dist/lib/upstream-socket.test.js +211 -0
- package/src/plugin-mcp-dist/lib/upstream-socket.test.js.map +1 -0
- package/src/plugin-mcp-dist/lib/utils.d.ts +2 -2
- package/src/plugin-mcp-dist/lib/utils.d.ts.map +1 -1
- package/src/plugin-mcp-dist/lib/utils.js +13 -9
- package/src/plugin-mcp-dist/lib/utils.js.map +1 -1
- package/src/react.tsx +7 -19
- package/src/styles/framer.css +34 -64
- package/src/version.ts +1 -1
- package/dist/framer-chunks/default-blog-sqlite-7ZHEY3GT-27R5KAAW.js +0 -9
- package/dist/framer-chunks/fontshare-4THNDPMZ-BJQGNHXN.js +0 -27099
- package/dist/framer-chunks/fontshare-B2QLD7YB-4BZEAA37.js +0 -119
- package/dist/framer-chunks/fontshare-O22OBJ3D-ALBQLFE5.js +0 -825
- package/dist/framer-chunks/framer-font-45AI7UCZ-LU7DEIDM.js +0 -7
- package/dist/framer-chunks/google-3FCAKCAC-P5EL6KGL.js +0 -623876
- package/dist/framer-chunks/google-3SZHWBC6-OBXS3UIH.js +0 -1627
- package/dist/framer-chunks/google-GXDJLGJB-HHIXFE4M.js +0 -6885
- package/dist/framer-chunks/sqlite-wasm-FGP37EAY-HR6PIAJQ.js +0 -11479
- package/dist/framer-chunks/sqlite3-SISQ6ENZ-KMXYXSSV.js +0 -9
- package/dist/generated/api-client.d.ts +0 -21
- package/dist/generated/api-client.d.ts.map +0 -1
- package/dist/generated/api-client.js +0 -27
- package/dist/generated/api-client.js.map +0 -1
- package/src/generated/api-client.d.ts +0 -1238
- package/src/generated/api-client.js +0 -26
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests upstream socket selection and request/socket matching logic used by the MCP worker.
|
|
3
|
+
*/
|
|
4
|
+
import { describe, expect, test } from 'vitest';
|
|
5
|
+
import { matchesPendingRequestSocket, pickActiveUpstreamSocket, } from './upstream-socket.js';
|
|
6
|
+
function createSocket({ attachment, readyState, }) {
|
|
7
|
+
return {
|
|
8
|
+
deserializeAttachment() {
|
|
9
|
+
return attachment;
|
|
10
|
+
},
|
|
11
|
+
readyState,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
describe('pickActiveUpstreamSocket', () => {
|
|
15
|
+
test('prefers most recently connected ready socket', () => {
|
|
16
|
+
const olderSocket = createSocket({
|
|
17
|
+
attachment: {
|
|
18
|
+
role: 'up',
|
|
19
|
+
ids: ['user'],
|
|
20
|
+
connectionId: 'older',
|
|
21
|
+
connectionOrdinal: 1,
|
|
22
|
+
connectedAt: 10,
|
|
23
|
+
readyAcked: true,
|
|
24
|
+
},
|
|
25
|
+
readyState: 1,
|
|
26
|
+
});
|
|
27
|
+
const newerSocket = createSocket({
|
|
28
|
+
attachment: {
|
|
29
|
+
role: 'up',
|
|
30
|
+
ids: ['user'],
|
|
31
|
+
connectionId: 'newer',
|
|
32
|
+
connectionOrdinal: 2,
|
|
33
|
+
connectedAt: 20,
|
|
34
|
+
readyAcked: true,
|
|
35
|
+
},
|
|
36
|
+
readyState: 1,
|
|
37
|
+
});
|
|
38
|
+
expect(pickActiveUpstreamSocket({
|
|
39
|
+
sockets: [olderSocket, newerSocket],
|
|
40
|
+
})).toBe(newerSocket);
|
|
41
|
+
});
|
|
42
|
+
test('ignores connecting and closed sockets', () => {
|
|
43
|
+
const connectingSocket = createSocket({
|
|
44
|
+
attachment: {
|
|
45
|
+
role: 'up',
|
|
46
|
+
ids: ['user'],
|
|
47
|
+
connectionId: 'connecting',
|
|
48
|
+
connectionOrdinal: 3,
|
|
49
|
+
connectedAt: 30,
|
|
50
|
+
readyAcked: true,
|
|
51
|
+
},
|
|
52
|
+
readyState: 0,
|
|
53
|
+
});
|
|
54
|
+
const closedSocket = createSocket({
|
|
55
|
+
attachment: {
|
|
56
|
+
role: 'up',
|
|
57
|
+
ids: ['user'],
|
|
58
|
+
connectionId: 'closed',
|
|
59
|
+
connectionOrdinal: 4,
|
|
60
|
+
connectedAt: 40,
|
|
61
|
+
readyAcked: true,
|
|
62
|
+
},
|
|
63
|
+
readyState: 3,
|
|
64
|
+
});
|
|
65
|
+
const openSocket = createSocket({
|
|
66
|
+
attachment: {
|
|
67
|
+
role: 'up',
|
|
68
|
+
ids: ['user'],
|
|
69
|
+
connectionId: 'open',
|
|
70
|
+
connectionOrdinal: 2,
|
|
71
|
+
connectedAt: 20,
|
|
72
|
+
readyAcked: true,
|
|
73
|
+
},
|
|
74
|
+
readyState: 1,
|
|
75
|
+
});
|
|
76
|
+
expect(pickActiveUpstreamSocket({
|
|
77
|
+
sockets: [connectingSocket, closedSocket, openSocket],
|
|
78
|
+
})).toBe(openSocket);
|
|
79
|
+
});
|
|
80
|
+
test('ignores sockets that have not completed ready handshake', () => {
|
|
81
|
+
const unackedNewest = createSocket({
|
|
82
|
+
attachment: {
|
|
83
|
+
role: 'up',
|
|
84
|
+
ids: ['user'],
|
|
85
|
+
connectionId: 'unacked',
|
|
86
|
+
connectionOrdinal: 3,
|
|
87
|
+
connectedAt: 30,
|
|
88
|
+
readyAcked: false,
|
|
89
|
+
},
|
|
90
|
+
readyState: 1,
|
|
91
|
+
});
|
|
92
|
+
const readyOlder = createSocket({
|
|
93
|
+
attachment: {
|
|
94
|
+
role: 'up',
|
|
95
|
+
ids: ['user'],
|
|
96
|
+
connectionId: 'ready',
|
|
97
|
+
connectionOrdinal: 2,
|
|
98
|
+
connectedAt: 20,
|
|
99
|
+
readyAcked: true,
|
|
100
|
+
},
|
|
101
|
+
readyState: 1,
|
|
102
|
+
});
|
|
103
|
+
expect(pickActiveUpstreamSocket({
|
|
104
|
+
sockets: [readyOlder, unackedNewest],
|
|
105
|
+
})).toBe(readyOlder);
|
|
106
|
+
});
|
|
107
|
+
test('treats legacy attachments without readyAcked as usable', () => {
|
|
108
|
+
const legacySocket = createSocket({
|
|
109
|
+
attachment: {
|
|
110
|
+
role: 'up',
|
|
111
|
+
ids: ['user'],
|
|
112
|
+
},
|
|
113
|
+
readyState: 1,
|
|
114
|
+
});
|
|
115
|
+
expect(pickActiveUpstreamSocket({
|
|
116
|
+
sockets: [legacySocket],
|
|
117
|
+
})).toBe(legacySocket);
|
|
118
|
+
});
|
|
119
|
+
test('uses connection ordinal when timestamps are identical', () => {
|
|
120
|
+
const olderSocket = createSocket({
|
|
121
|
+
attachment: {
|
|
122
|
+
role: 'up',
|
|
123
|
+
ids: ['user'],
|
|
124
|
+
connectionId: 'older',
|
|
125
|
+
connectionOrdinal: 1,
|
|
126
|
+
connectedAt: 20,
|
|
127
|
+
readyAcked: true,
|
|
128
|
+
},
|
|
129
|
+
readyState: 1,
|
|
130
|
+
});
|
|
131
|
+
const newerSocket = createSocket({
|
|
132
|
+
attachment: {
|
|
133
|
+
role: 'up',
|
|
134
|
+
ids: ['user'],
|
|
135
|
+
connectionId: 'newer',
|
|
136
|
+
connectionOrdinal: 2,
|
|
137
|
+
connectedAt: 20,
|
|
138
|
+
readyAcked: true,
|
|
139
|
+
},
|
|
140
|
+
readyState: 1,
|
|
141
|
+
});
|
|
142
|
+
expect(pickActiveUpstreamSocket({
|
|
143
|
+
sockets: [olderSocket, newerSocket],
|
|
144
|
+
})).toBe(newerSocket);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
describe('matchesPendingRequestSocket', () => {
|
|
148
|
+
test('matches by connection id before falling back to timestamps', () => {
|
|
149
|
+
expect(matchesPendingRequestSocket({
|
|
150
|
+
attachment: {
|
|
151
|
+
role: 'up',
|
|
152
|
+
ids: ['user'],
|
|
153
|
+
connectionId: 'newer',
|
|
154
|
+
connectionOrdinal: 2,
|
|
155
|
+
connectedAt: 20,
|
|
156
|
+
readyAcked: true,
|
|
157
|
+
},
|
|
158
|
+
pendingRequest: {
|
|
159
|
+
upstreamConnectionId: 'newer',
|
|
160
|
+
upstreamConnectedAt: 10,
|
|
161
|
+
},
|
|
162
|
+
})).toBe(true);
|
|
163
|
+
expect(matchesPendingRequestSocket({
|
|
164
|
+
attachment: {
|
|
165
|
+
role: 'up',
|
|
166
|
+
ids: ['user'],
|
|
167
|
+
connectionId: 'older',
|
|
168
|
+
connectionOrdinal: 1,
|
|
169
|
+
connectedAt: 20,
|
|
170
|
+
readyAcked: true,
|
|
171
|
+
},
|
|
172
|
+
pendingRequest: {
|
|
173
|
+
upstreamConnectionId: 'newer',
|
|
174
|
+
upstreamConnectedAt: 20,
|
|
175
|
+
},
|
|
176
|
+
})).toBe(false);
|
|
177
|
+
});
|
|
178
|
+
test('rejects only requests sent through the closing socket', () => {
|
|
179
|
+
expect(matchesPendingRequestSocket({
|
|
180
|
+
attachment: {
|
|
181
|
+
role: 'up',
|
|
182
|
+
ids: ['user'],
|
|
183
|
+
connectionId: 'current',
|
|
184
|
+
connectionOrdinal: 2,
|
|
185
|
+
connectedAt: 20,
|
|
186
|
+
readyAcked: true,
|
|
187
|
+
},
|
|
188
|
+
pendingRequest: {
|
|
189
|
+
upstreamConnectionId: 'current',
|
|
190
|
+
upstreamConnectionOrdinal: 2,
|
|
191
|
+
upstreamConnectedAt: 20,
|
|
192
|
+
},
|
|
193
|
+
})).toBe(true);
|
|
194
|
+
expect(matchesPendingRequestSocket({
|
|
195
|
+
attachment: {
|
|
196
|
+
role: 'up',
|
|
197
|
+
ids: ['user'],
|
|
198
|
+
connectionId: 'older',
|
|
199
|
+
connectionOrdinal: 1,
|
|
200
|
+
connectedAt: 10,
|
|
201
|
+
readyAcked: true,
|
|
202
|
+
},
|
|
203
|
+
pendingRequest: {
|
|
204
|
+
upstreamConnectionId: 'current',
|
|
205
|
+
upstreamConnectionOrdinal: 2,
|
|
206
|
+
upstreamConnectedAt: 20,
|
|
207
|
+
},
|
|
208
|
+
})).toBe(false);
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
//# sourceMappingURL=upstream-socket.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upstream-socket.test.js","sourceRoot":"","sources":["../../src/lib/upstream-socket.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type SpiceflowFetch } from 'spiceflow/client';
|
|
2
2
|
import type { RouteType } from 'website/src/lib/spiceflow-plugins.server';
|
|
3
3
|
export type LoaderReturnType<T extends (...args: any) => any> = Awaited<ReturnType<T>>;
|
|
4
|
-
export declare const pluginApiClient:
|
|
4
|
+
export declare const pluginApiClient: SpiceflowFetch<RouteType>;
|
|
5
5
|
export declare const noop: any;
|
|
6
6
|
export declare function isTruthy<T>(val: T | undefined | null | false): val is T;
|
|
7
7
|
export declare enum Paths {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAA;AAGzE,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,IAAI,OAAO,CACnE,UAAU,CAAC,CAAC,CAAC,CAChB,CAAA;AAID,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,SAAS,CAoBhD,CAAA;AACN,eAAO,MAAM,IAAI,EAAE,GAAc,CAAA;AAEjC,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,IAAI,CAAC,CAEvE;AAED,oBAAY,KAAK;IACb,KAAK,WAAW;IAChB,IAAI,MAAM;CACb;AAED,oBAAY,QAAQ;IAChB,IAAI,SAAS;CAChB;AAED,eAAO,MAAM,WAAW,IAAK,CAAA;AAE7B,oBAAY,gBAAgB;IACxB,SAAS,0BAA0B;CACtC;AAED,wBAAgB,gBAAgB;;EAK/B;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAGrE;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { redirect } from 'react-router';
|
|
2
|
-
import {
|
|
2
|
+
import { createSpiceflowFetch } from 'spiceflow/client';
|
|
3
|
+
import { superjsonOnResponse } from 'website/src/lib/superjson-client';
|
|
3
4
|
const PUBLIC_URL = process.env.PUBLIC_URL || 'https://unframer.co';
|
|
4
|
-
export const pluginApiClient =
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
export const pluginApiClient = createSpiceflowFetch(PUBLIC_URL, {
|
|
6
|
+
onResponse: [
|
|
7
|
+
async (response) => {
|
|
8
|
+
if (response.status === 401) {
|
|
9
|
+
console.log('clearing session because api returned 401');
|
|
10
|
+
localStorage.removeItem(LocalStorageKeys.sessionId);
|
|
11
|
+
throw redirect(withMode(Paths.login));
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
superjsonOnResponse,
|
|
15
|
+
],
|
|
12
16
|
async onRequest() {
|
|
13
17
|
const { sessionKey } = getMcpPluginData();
|
|
14
18
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,oBAAoB,EAAuB,MAAM,kBAAkB,CAAA;AAE5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAMtE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,qBAAqB,CAAA;AAElE,MAAM,CAAC,MAAM,eAAe,GACxB,oBAAoB,CAAY,UAAU,EAAE;IACxC,UAAU,EAAE;QACR,KAAK,EAAE,QAAQ,EAAE,EAAE;YACf,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAA;gBACxD,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;gBACnD,MAAM,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;YACzC,CAAC;QACL,CAAC;QACD,mBAAmB;KACtB;IACD,KAAK,CAAC,SAAS;QACX,MAAM,EAAE,UAAU,EAAE,GAAG,gBAAgB,EAAE,CAAA;QACzC,OAAO;YACH,OAAO,EAAE;gBACL,UAAU;aACb;SACJ,CAAA;IACL,CAAC;CACJ,CAAC,CAAA;AACN,MAAM,CAAC,MAAM,IAAI,GAAQ,GAAG,EAAE,GAAE,CAAC,CAAA;AAEjC,MAAM,UAAU,QAAQ,CAAI,GAAiC;IACzD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;AACvB,CAAC;AAED,MAAM,CAAN,IAAY,KAGX;AAHD,WAAY,KAAK;IACb,yBAAgB,CAAA;IAChB,mBAAU,CAAA;AACd,CAAC,EAHW,KAAK,KAAL,KAAK,QAGhB;AAED,MAAM,CAAN,IAAY,QAEX;AAFD,WAAY,QAAQ;IAChB,yBAAa,CAAA;AACjB,CAAC,EAFW,QAAQ,KAAR,QAAQ,QAEnB;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAA;AAE7B,MAAM,CAAN,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IACxB,uDAAmC,CAAA;AACvC,CAAC,EAFW,gBAAgB,KAAhB,gBAAgB,QAE3B;AAED,MAAM,UAAU,gBAAgB;IAC5B,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;IACnE,OAAO;QACH,UAAU,EAAE,UAAU,IAAI,EAAE;KAC/B,CAAA;AACL,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,MAA+B;IAClE,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAA;IAChD,OAAO,GAAG,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AACnF,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAU;IAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAC5D,CAAC"}
|
package/src/react.tsx
CHANGED
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
breakpointsStylesLegacy,
|
|
16
16
|
defaultBreakpointSizes,
|
|
17
17
|
getFontsStyles,
|
|
18
|
-
} from './css.js'
|
|
18
|
+
} from './css-core.js'
|
|
19
19
|
import { version } from './version.js'
|
|
20
20
|
|
|
21
21
|
function classNames(...args) {
|
|
@@ -125,10 +125,7 @@ function removeInactiveUnframerHiddenElements() {
|
|
|
125
125
|
const activeBreakpoint = getBreakpointNameFromWindowWidth(windowWidth)
|
|
126
126
|
const activeClass = activeBreakpoint ? `unframer-${activeBreakpoint}` : null
|
|
127
127
|
|
|
128
|
-
console.log('Active unframer breakpoint class:', activeClass)
|
|
129
|
-
|
|
130
128
|
document.querySelectorAll('.unframer-hidden').forEach((el) => {
|
|
131
|
-
// Merge: Only remove the element itself if it has 'unframer-hidden' and does not match the current breakpoint's class.
|
|
132
129
|
if (
|
|
133
130
|
el.classList.contains('unframer-hidden') &&
|
|
134
131
|
activeClass &&
|
|
@@ -153,25 +150,16 @@ export const WithFramerBreakpoints = <
|
|
|
153
150
|
Component: T
|
|
154
151
|
variants: Record<UnframerBreakpoint, ComponentPropsWithoutRef<T>['variant']>
|
|
155
152
|
} & Omit<ComponentPropsWithoutRef<T>, 'variant'>): any => {
|
|
153
|
+
// getServerSnapshot must always return '' to match what the server rendered.
|
|
154
|
+
// During hydration React calls getServerSnapshot on the client too; if it
|
|
155
|
+
// returned the real breakpoint, the tree structure would differ from the
|
|
156
|
+
// server (server renders all variants, client would render only one).
|
|
156
157
|
const currentBreakpoint = useSyncExternalStore(
|
|
157
158
|
onResize,
|
|
158
159
|
() => {
|
|
159
|
-
|
|
160
|
-
const breakpoint = getBreakpointNameFromWindowWidth(
|
|
161
|
-
window.innerWidth,
|
|
162
|
-
)
|
|
163
|
-
return breakpoint
|
|
164
|
-
},
|
|
165
|
-
() => {
|
|
166
|
-
if (typeof window !== 'undefined') {
|
|
167
|
-
const breakpoint = getBreakpointNameFromWindowWidth(
|
|
168
|
-
window.innerWidth,
|
|
169
|
-
)
|
|
170
|
-
return breakpoint
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
return ''
|
|
160
|
+
return getBreakpointNameFromWindowWidth(window.innerWidth)
|
|
174
161
|
},
|
|
162
|
+
() => '',
|
|
175
163
|
)
|
|
176
164
|
if (isEmpty(_breakpointsMap)) {
|
|
177
165
|
// @ts-ignore
|
package/src/styles/framer.css
CHANGED
|
@@ -346,11 +346,11 @@ body { --framer-will-change-filter-override: none; }
|
|
|
346
346
|
span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {
|
|
347
347
|
/* Ensure the color is inherited from the link style rather than the parent text for nested spans */
|
|
348
348
|
color: inherit;
|
|
349
|
-
font-family: var(--framer-font-family-preview, var(--framer-
|
|
350
|
-
font-style: var(--framer-font-style-preview, var(--framer-
|
|
351
|
-
font-weight: var(--framer-font-weight-preview, var(--framer-
|
|
349
|
+
font-family: var(--framer-font-family-preview, var(--framer-link-font-family, var(--framer-blockquote-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));
|
|
350
|
+
font-style: var(--framer-font-style-preview, var(--framer-link-font-style, var(--framer-blockquote-font-style, var(--framer-font-style, normal))));
|
|
351
|
+
font-weight: var(--framer-font-weight-preview, var(--framer-link-font-weight, var(--framer-blockquote-font-weight, var(--framer-font-weight, 400))));
|
|
352
352
|
font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));
|
|
353
|
-
text-transform: var(--framer-
|
|
353
|
+
text-transform: var(--framer-link-text-transform, var(--framer-blockquote-text-transform, var(--framer-text-transform, none)));
|
|
354
354
|
/* Cursor inherit to overwrite the user agent stylesheet on rich text links. */
|
|
355
355
|
cursor: var(--framer-custom-cursors, pointer);
|
|
356
356
|
/* Don't inherit background styles from any parent text style. */
|
|
@@ -363,13 +363,13 @@ body { --framer-will-change-filter-override: none; }
|
|
|
363
363
|
|
|
364
364
|
a.framer-text,
|
|
365
365
|
span.framer-text[data-nested-link] {
|
|
366
|
-
color: var(--framer-
|
|
367
|
-
text-decoration-line: var(--framer-
|
|
368
|
-
text-decoration-style: var(--framer-
|
|
369
|
-
text-decoration-color: var(--framer-
|
|
370
|
-
text-decoration-thickness: var(--framer-
|
|
371
|
-
text-decoration-skip-ink: var(--framer-
|
|
372
|
-
text-underline-offset: var(--framer-
|
|
366
|
+
color: var(--framer-link-text-color, var(--framer-blockquote-text-color, var(--framer-text-color, #000)));
|
|
367
|
+
text-decoration-line: var(--framer-link-text-decoration, var(--framer-blockquote-text-decoration, var(--framer-text-decoration, initial)));
|
|
368
|
+
text-decoration-style: var(--framer-link-text-decoration-style, var(--framer-blockquote-text-decoration-style, var(--framer-text-decoration-style, initial)));
|
|
369
|
+
text-decoration-color: var(--framer-link-text-decoration-color, var(--framer-blockquote-text-decoration-color, var(--framer-text-decoration-color, initial)));
|
|
370
|
+
text-decoration-thickness: var(--framer-link-text-decoration-thickness, var(--framer-blockquote-text-decoration-thickness, var(--framer-text-decoration-thickness, initial)));
|
|
371
|
+
text-decoration-skip-ink: var(--framer-link-text-decoration-skip-ink, var(--framer-blockquote-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink, initial)));
|
|
372
|
+
text-underline-offset: var(--framer-link-text-decoration-offset, var(--framer-blockquote-text-decoration-offset, var(--framer-text-decoration-offset, initial)));
|
|
373
373
|
/* Don't inherit background styles from any parent text style. */
|
|
374
374
|
background-color: var(--framer-link-text-background-color, initial);
|
|
375
375
|
}
|
|
@@ -378,7 +378,7 @@ body { --framer-will-change-filter-override: none; }
|
|
|
378
378
|
@supports not (color: color(display-p3 1 1 1)) {
|
|
379
379
|
a.framer-text,
|
|
380
380
|
span.framer-text[data-nested-link] {
|
|
381
|
-
color: var(--framer-
|
|
381
|
+
color: var(--framer-link-text-color-rgb, var(--framer-link-text-color, var(--framer-blockquote-text-color-rgb, var(--framer-blockquote-text-color, var(--framer-text-color-rgb, var(--framer-text-color, #000))))));
|
|
382
382
|
background-color: var(--framer-link-text-background-color-rgb, var(--framer-link-text-background-color, initial));
|
|
383
383
|
text-decoration-color: var(--framer-link-text-decoration-color-rgb, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color-rgb, var(--framer-text-decoration-color, currentcolor))));
|
|
384
384
|
}
|
|
@@ -399,7 +399,7 @@ body { --framer-will-change-filter-override: none; }
|
|
|
399
399
|
|
|
400
400
|
code.framer-text a.framer-text,
|
|
401
401
|
code.framer-text span.framer-text[data-nested-link] {
|
|
402
|
-
color: var(--framer-
|
|
402
|
+
color: var(--framer-link-text-color, var(--framer-blockquote-text-color, var(--framer-code-text-color, var(--framer-text-color, #000))));
|
|
403
403
|
}
|
|
404
404
|
|
|
405
405
|
|
|
@@ -408,7 +408,7 @@ body { --framer-will-change-filter-override: none; }
|
|
|
408
408
|
code.framer-text a.framer-text span.framer-text:not([data-text-fill]),
|
|
409
409
|
code.framer-text span.framer-text[data-nested-link],
|
|
410
410
|
code.framer-text span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {
|
|
411
|
-
color: var(--framer-
|
|
411
|
+
color: var(--framer-link-text-color-rgb, var(--framer-link-text-color, var(--framer-blockquote-text-color-rgb, var(--framer-blockquote-text-color, var(--framer-code-text-color-rgb, var(--framer-code-text-color, var(--framer-text-color-rgb, var(--framer-text-color, #000))))))));
|
|
412
412
|
}
|
|
413
413
|
}
|
|
414
414
|
|
|
@@ -417,11 +417,11 @@ body { --framer-will-change-filter-override: none; }
|
|
|
417
417
|
a.framer-text:hover span.framer-text:not([data-text-fill]),
|
|
418
418
|
span.framer-text[data-nested-link]:hover,
|
|
419
419
|
span.framer-text[data-nested-link]:hover span.framer-text:not([data-text-fill]) {
|
|
420
|
-
font-family: var(--framer-font-family-preview, var(--framer-link-hover-font-family, var(--framer-
|
|
421
|
-
font-style: var(--framer-font-style-preview, var(--framer-link-hover-font-style, var(--framer-
|
|
422
|
-
font-weight: var(--framer-font-weight-preview, var(--framer-link-hover-font-weight, var(--framer-
|
|
420
|
+
font-family: var(--framer-font-family-preview, var(--framer-link-hover-font-family, var(--framer-link-font-family, var(--framer-blockquote-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)))));
|
|
421
|
+
font-style: var(--framer-font-style-preview, var(--framer-link-hover-font-style, var(--framer-link-font-style, var(--framer-blockquote-font-style, var(--framer-font-style, normal)))));
|
|
422
|
+
font-weight: var(--framer-font-weight-preview, var(--framer-link-hover-font-weight, var(--framer-link-font-weight, var(--framer-blockquote-font-weight, var(--framer-font-weight, 400)))));
|
|
423
423
|
font-size: calc(var(--framer-link-hover-font-size, var(--framer-blockquote-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));
|
|
424
|
-
text-transform: var(--framer-link-hover-text-transform, var(--framer-
|
|
424
|
+
text-transform: var(--framer-link-hover-text-transform, var(--framer-link-text-transform, var(--framer-blockquote-text-transform, var(--framer-text-transform, none))));
|
|
425
425
|
border-radius: var(--framer-link-hover-text-background-radius, var(--framer-link-text-background-radius, var(--framer-text-background-radius, initial)));
|
|
426
426
|
corner-shape: var(--framer-link-hover-text-background-corner-shape, var(--framer-link-text-background-corner-shape, var(--framer-text-background-corner-shape, initial)));
|
|
427
427
|
padding: var(--framer-link-hover-text-background-padding, var(--framer-link-text-background-padding, var(--framer-text-background-padding, initial)));
|
|
@@ -430,13 +430,13 @@ body { --framer-will-change-filter-override: none; }
|
|
|
430
430
|
|
|
431
431
|
a.framer-text:hover,
|
|
432
432
|
span.framer-text[data-nested-link]:hover {
|
|
433
|
-
color: var(--framer-link-hover-text-color, var(--framer-
|
|
434
|
-
text-decoration-line: var(--framer-link-hover-text-decoration, var(--framer-
|
|
435
|
-
text-decoration-style: var(--framer-link-hover-text-decoration-style, var(--framer-
|
|
436
|
-
text-decoration-color: var(--framer-link-hover-text-decoration-color, var(--framer-
|
|
437
|
-
text-decoration-thickness: var(--framer-link-hover-text-decoration-thickness, var(--framer-
|
|
438
|
-
text-decoration-skip-ink: var(--framer-link-hover-text-decoration-skip-ink, var(--framer-
|
|
439
|
-
text-underline-offset: var(--framer-link-hover-text-decoration-offset, var(--framer-
|
|
433
|
+
color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-blockquote-text-color, var(--framer-text-color, #000))));
|
|
434
|
+
text-decoration-line: var(--framer-link-hover-text-decoration, var(--framer-link-text-decoration, var(--framer-blockquote-text-decoration, var(--framer-text-decoration, initial))));
|
|
435
|
+
text-decoration-style: var(--framer-link-hover-text-decoration-style, var(--framer-link-text-decoration-style, var(--framer-blockquote-text-decoration-style, var(--framer-text-decoration-style, initial))));
|
|
436
|
+
text-decoration-color: var(--framer-link-hover-text-decoration-color, var(--framer-link-text-decoration-color, var(--framer-blockquote-text-decoration-color, var(--framer-text-decoration-color, initial))));
|
|
437
|
+
text-decoration-thickness: var(--framer-link-hover-text-decoration-thickness, var(--framer-link-text-decoration-thickness, var(--framer-blockquote-text-decoration-thickness, var(--framer-text-decoration-thickness, initial))));
|
|
438
|
+
text-decoration-skip-ink: var(--framer-link-hover-text-decoration-skip-ink, var(--framer-link-text-decoration-skip-ink, var(--framer-blockquote-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink, initial))));
|
|
439
|
+
text-underline-offset: var(--framer-link-hover-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-blockquote-text-decoration-offset, var(--framer-text-decoration-offset, initial))));
|
|
440
440
|
background-color: var(--framer-link-hover-text-background-color, var(--framer-link-text-background-color, var(--framer-text-background-color, initial)));
|
|
441
441
|
}
|
|
442
442
|
|
|
@@ -444,7 +444,7 @@ body { --framer-will-change-filter-override: none; }
|
|
|
444
444
|
@supports not (color: color(display-p3 1 1 1)) {
|
|
445
445
|
a.framer-text:hover,
|
|
446
446
|
span.framer-text[data-nested-link]:hover {
|
|
447
|
-
color: var(--framer-link-hover-text-color-rgb, var(--framer-link-hover-text-color, var(--framer-
|
|
447
|
+
color: var(--framer-link-hover-text-color-rgb, var(--framer-link-hover-text-color, var(--framer-link-text-color-rgb, var(--framer-link-text-color, var(--framer-blockquote-text-color-rgb, var(--framer-blockquote-text-color, var(--framer-text-color-rgb, var(--framer-text-color, #000))))))));
|
|
448
448
|
background-color: var(--framer-link-hover-text-background-color-rgb, var(--framer-link-hover-text-background-color, var(--framer-link-text-background-color-rgb, var(--framer-link-text-background-color, var(--framer-text-background-color-rgb, var(--framer-text-background-color, initial))))));
|
|
449
449
|
text-decoration-color: var(--framer-link-hover-text-decoration-color-rgb, var(--framer-link-hover-text-decoration-color, var(--framer-link-text-decoration-color-rgb, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color-rgb, var(--framer-text-decoration-color, currentcolor))))));
|
|
450
450
|
}
|
|
@@ -453,14 +453,14 @@ body { --framer-will-change-filter-override: none; }
|
|
|
453
453
|
|
|
454
454
|
code.framer-text a.framer-text:hover,
|
|
455
455
|
code.framer-text span.framer-text[data-nested-link]:hover {
|
|
456
|
-
color: var(--framer-link-hover-text-color, var(--framer-
|
|
456
|
+
color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-blockquote-text-color, var(--framer-code-text-color, var(--framer-text-color, #000)))));
|
|
457
457
|
}
|
|
458
458
|
|
|
459
459
|
|
|
460
460
|
@supports not (color: color(display-p3 1 1 1)) {
|
|
461
461
|
code.framer-text a.framer-text:hover,
|
|
462
462
|
code.framer-text span.framer-text[data-nested-link]:hover {
|
|
463
|
-
color: var(--framer-link-hover-text-color-rgb, var(--framer-link-hover-text-color, var(--framer-
|
|
463
|
+
color: var(--framer-link-hover-text-color-rgb, var(--framer-link-hover-text-color, var(--framer-link-text-color-rgb, var(--framer-link-text-color, var(--framer-blockquote-text-color-rgb, var(--framer-blockquote-text-color, var(--framer-code-text-color-rgb, var(--framer-code-text-color, var(--framer-text-color-rgb, var(--framer-text-color, #000))))))))));
|
|
464
464
|
}
|
|
465
465
|
}
|
|
466
466
|
|
|
@@ -638,6 +638,11 @@ body { --framer-will-change-filter-override: none; }
|
|
|
638
638
|
}
|
|
639
639
|
|
|
640
640
|
|
|
641
|
+
ol.framer-text > li.framer-text {
|
|
642
|
+
padding-inline-start: calc(calc(var(--max-list-digits, 1) + 1) * 1ch);
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
|
|
641
646
|
ol.framer-text > li.framer-text::before {
|
|
642
647
|
position: absolute;
|
|
643
648
|
inset-inline-start: 0;
|
|
@@ -646,42 +651,6 @@ body { --framer-will-change-filter-override: none; }
|
|
|
646
651
|
}
|
|
647
652
|
|
|
648
653
|
|
|
649
|
-
ol.framer-text > li.framer-text:nth-last-child(n + 10),
|
|
650
|
-
ol.framer-text > li.framer-text:nth-last-child(n + 10) ~ li {
|
|
651
|
-
padding-inline-start: 3ch;
|
|
652
|
-
}
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
ol.framer-text > li.framer-text:nth-last-child(n + 100),
|
|
656
|
-
ol.framer-text > li.framer-text:nth-last-child(n + 100) ~ li {
|
|
657
|
-
padding-inline-start: 4ch;
|
|
658
|
-
}
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
ol.framer-text > li.framer-text:nth-last-child(n + 1000),
|
|
662
|
-
ol.framer-text > li.framer-text:nth-last-child(n + 1000) ~ li {
|
|
663
|
-
padding-inline-start: 5ch;
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
ol.framer-text > li.framer-text:nth-last-child(n + 10000),
|
|
668
|
-
ol.framer-text > li.framer-text:nth-last-child(n + 10000) ~ li {
|
|
669
|
-
padding-inline-start: 6ch;
|
|
670
|
-
}
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
ol.framer-text > li.framer-text:nth-last-child(n + 100000),
|
|
674
|
-
ol.framer-text > li.framer-text:nth-last-child(n + 100000) ~ li {
|
|
675
|
-
padding-inline-start: 7ch;
|
|
676
|
-
}
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
ol.framer-text > li.framer-text:nth-last-child(n + 1000000),
|
|
680
|
-
ol.framer-text > li.framer-text:nth-last-child(n + 1000000) ~ li {
|
|
681
|
-
padding-inline-start: 8ch;
|
|
682
|
-
}
|
|
683
|
-
|
|
684
|
-
|
|
685
654
|
ul.framer-text > li.framer-text::before {
|
|
686
655
|
position: absolute;
|
|
687
656
|
inset-inline-start: 0;
|
|
@@ -707,6 +676,7 @@ body { --framer-will-change-filter-override: none; }
|
|
|
707
676
|
td.framer-text,
|
|
708
677
|
th.framer-text {
|
|
709
678
|
min-width: 16ch;
|
|
679
|
+
overflow-wrap: anywhere;
|
|
710
680
|
vertical-align: top;
|
|
711
681
|
}
|
|
712
682
|
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '4.
|
|
1
|
+
export const version = '4.2.0'
|