@shoplix-ai/sdui-schema 1.18.0 → 1.31.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/dist/account-settings.d.ts +46 -0
- package/dist/account-settings.d.ts.map +1 -1
- package/dist/account-settings.js +53 -10
- package/dist/account-settings.js.map +1 -1
- package/dist/action.d.ts +33 -0
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js +43 -12
- package/dist/action.js.map +1 -1
- package/dist/assets.d.ts.map +1 -1
- package/dist/assets.js +13 -3
- package/dist/assets.js.map +1 -1
- package/dist/block-definition.d.ts +74 -8
- package/dist/block-definition.d.ts.map +1 -1
- package/dist/block-definition.js +37 -1
- package/dist/block-definition.js.map +1 -1
- package/dist/blocks.d.ts +946 -109
- package/dist/blocks.d.ts.map +1 -1
- package/dist/blocks.js +338 -4
- package/dist/blocks.js.map +1 -1
- package/dist/collection-references.d.ts +16 -0
- package/dist/collection-references.d.ts.map +1 -0
- package/dist/collection-references.js +34 -0
- package/dist/collection-references.js.map +1 -0
- package/dist/compat.d.ts +75 -0
- package/dist/compat.d.ts.map +1 -0
- package/dist/compat.js +292 -0
- package/dist/compat.js.map +1 -0
- package/dist/deep-link.d.ts +6 -0
- package/dist/deep-link.d.ts.map +1 -1
- package/dist/deep-link.js +23 -0
- package/dist/deep-link.js.map +1 -1
- package/dist/display.d.ts +82 -1
- package/dist/display.d.ts.map +1 -1
- package/dist/display.js +48 -1
- package/dist/display.js.map +1 -1
- package/dist/envelope.d.ts +265 -165
- package/dist/envelope.d.ts.map +1 -1
- package/dist/envelope.js +16 -9
- package/dist/envelope.js.map +1 -1
- package/dist/index.d.ts +26 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -10
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +6 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +60 -1
- package/dist/manifest.js.map +1 -1
- package/dist/must-obey.d.ts +9 -0
- package/dist/must-obey.d.ts.map +1 -0
- package/dist/must-obey.js +15 -0
- package/dist/must-obey.js.map +1 -0
- package/dist/parse.d.ts +2 -0
- package/dist/parse.d.ts.map +1 -1
- package/dist/parse.js +4 -0
- package/dist/parse.js.map +1 -1
- package/dist/primitives.d.ts +11 -0
- package/dist/primitives.d.ts.map +1 -1
- package/dist/primitives.js +22 -0
- package/dist/primitives.js.map +1 -1
- package/dist/sample-shopper.d.ts +50 -0
- package/dist/sample-shopper.d.ts.map +1 -0
- package/dist/sample-shopper.js +120 -0
- package/dist/sample-shopper.js.map +1 -0
- package/dist/screen.d.ts +19 -3
- package/dist/screen.d.ts.map +1 -1
- package/dist/screen.js +9 -0
- package/dist/screen.js.map +1 -1
- package/dist/starters/account.d.ts +8 -1
- package/dist/starters/account.d.ts.map +1 -1
- package/dist/starters/account.js +120 -27
- package/dist/starters/account.js.map +1 -1
- package/dist/starters/index.d.ts +2 -2
- package/dist/starters/index.d.ts.map +1 -1
- package/dist/starters/index.js +1 -1
- package/dist/starters/index.js.map +1 -1
- package/dist/starters/melora.d.ts +11 -2
- package/dist/starters/melora.d.ts.map +1 -1
- package/dist/starters/melora.js +45 -5
- package/dist/starters/melora.js.map +1 -1
- package/dist/theme-settings.d.ts +94 -0
- package/dist/theme-settings.d.ts.map +1 -0
- package/dist/theme-settings.js +35 -0
- package/dist/theme-settings.js.map +1 -0
- package/dist/theme.d.ts +5 -1
- package/dist/theme.d.ts.map +1 -1
- package/dist/tokens.d.ts +15 -0
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +19 -0
- package/dist/tokens.js.map +1 -1
- package/dist/tolerant-reader.d.ts +50 -0
- package/dist/tolerant-reader.d.ts.map +1 -0
- package/dist/tolerant-reader.js +197 -0
- package/dist/tolerant-reader.js.map +1 -0
- package/dist/version.d.ts +6 -0
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -1
- package/dist/zod-introspection.d.ts +24 -0
- package/dist/zod-introspection.d.ts.map +1 -0
- package/dist/zod-introspection.js +5 -0
- package/dist/zod-introspection.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { type LocalizedText } from './locale.js';
|
|
2
3
|
/**
|
|
3
4
|
* The key of one Profile Field: the metafield key a custom field is written
|
|
4
5
|
* under, and the name a fixed field is read by. Snake case, the way a
|
|
@@ -31,6 +32,10 @@ declare const fixedProfileFieldSchema: z.ZodObject<{
|
|
|
31
32
|
}>;
|
|
32
33
|
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
33
34
|
}, z.core.$strict>;
|
|
35
|
+
declare const profileChoiceSchema: z.ZodObject<{
|
|
36
|
+
value: z.ZodString;
|
|
37
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
38
|
+
}, z.core.$strict>;
|
|
34
39
|
declare const customProfileFieldSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
35
40
|
type: z.ZodLiteral<"short_text">;
|
|
36
41
|
key: z.ZodString;
|
|
@@ -183,6 +188,46 @@ export declare const accountSettingsSchema: z.ZodObject<{
|
|
|
183
188
|
}, z.core.$strict>;
|
|
184
189
|
deletionCopy: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
185
190
|
}, z.core.$strict>;
|
|
191
|
+
/**
|
|
192
|
+
* Where one Profile Field's answer is written: the two names live on the
|
|
193
|
+
* customer record, and everything else in an app-owned customer metafield
|
|
194
|
+
* under the namespace above.
|
|
195
|
+
*/
|
|
196
|
+
export type ProfileAnswerPlace = 'customer' | 'metafield';
|
|
197
|
+
/** What one question takes: a line of text, one choice from a list, or a calendar day. */
|
|
198
|
+
export type ProfileQuestionType = CustomProfileFieldType | 'date';
|
|
199
|
+
/**
|
|
200
|
+
* One question the profile form asks: the catalog key its answer is written
|
|
201
|
+
* under, where that is, whether the shopper may leave it empty, the shape it
|
|
202
|
+
* takes and the words the merchant put above it.
|
|
203
|
+
*/
|
|
204
|
+
export interface ProfileQuestion {
|
|
205
|
+
readonly key: string;
|
|
206
|
+
readonly where: ProfileAnswerPlace;
|
|
207
|
+
readonly required: boolean;
|
|
208
|
+
readonly type: ProfileQuestionType;
|
|
209
|
+
readonly label: LocalizedText;
|
|
210
|
+
readonly choices?: readonly ProfileChoice[];
|
|
211
|
+
}
|
|
212
|
+
/** What a shopper's answers are read off: the names on the record, and the app-owned fields beside them. */
|
|
213
|
+
export interface ProfileAnswers {
|
|
214
|
+
readonly firstName?: string | undefined;
|
|
215
|
+
readonly lastName?: string | undefined;
|
|
216
|
+
readonly profileFields?: Readonly<Record<string, string>> | undefined;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Every question the catalog asks, in the order the form draws them: the two
|
|
220
|
+
* names, the birthday, the gender, then the merchant's own. A hidden field is
|
|
221
|
+
* one nobody asks for and nobody reads, so it is no question at all.
|
|
222
|
+
*/
|
|
223
|
+
export declare function profileQuestionsOf(fields: ProfileFields): readonly ProfileQuestion[];
|
|
224
|
+
/** What the shopper has already answered one question with; blanks are no answer. */
|
|
225
|
+
export declare function profileAnswerOf(question: ProfileQuestion, answers: ProfileAnswers): string;
|
|
226
|
+
/**
|
|
227
|
+
* The required questions this shopper has left empty. None, and the merchant
|
|
228
|
+
* knows everything they asked for, so the Completion Sheet has nothing to ask.
|
|
229
|
+
*/
|
|
230
|
+
export declare function unansweredProfileQuestions(fields: ProfileFields, answers: ProfileAnswers): readonly ProfileQuestion[];
|
|
186
231
|
/**
|
|
187
232
|
* The Profile Fields Shopify keeps as app-owned metafields: the catalog's own,
|
|
188
233
|
* minus the two names the customer record holds, minus every field the
|
|
@@ -190,6 +235,7 @@ export declare const accountSettingsSchema: z.ZodObject<{
|
|
|
190
235
|
*/
|
|
191
236
|
export declare function profileMetafieldKeysOf(fields: ProfileFields): readonly string[];
|
|
192
237
|
export type FixedProfileField = z.infer<typeof fixedProfileFieldSchema>;
|
|
238
|
+
export type ProfileChoice = z.infer<typeof profileChoiceSchema>;
|
|
193
239
|
export type CustomProfileField = z.infer<typeof customProfileFieldSchema>;
|
|
194
240
|
export type ProfileFields = z.infer<typeof profileFieldsSchema>;
|
|
195
241
|
export type AccountSettings = z.infer<typeof accountSettingsSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-settings.d.ts","sourceRoot":"","sources":["../src/account-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"account-settings.d.ts","sourceRoot":"","sources":["../src/account-settings.ts"],"names":[],"mappings":"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"}
|
package/dist/account-settings.js
CHANGED
|
@@ -102,22 +102,65 @@ export const accountSettingsSchema = z.strictObject({
|
|
|
102
102
|
profileFields: profileFieldsSchema,
|
|
103
103
|
deletionCopy: localizedTextSchema,
|
|
104
104
|
});
|
|
105
|
+
function fixedEntry(key, where, type, field) {
|
|
106
|
+
return {
|
|
107
|
+
state: field.state,
|
|
108
|
+
question: { key, where, required: field.state === 'required', type, label: field.label },
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
function customEntry(field) {
|
|
112
|
+
return {
|
|
113
|
+
state: field.state,
|
|
114
|
+
question: {
|
|
115
|
+
key: field.key,
|
|
116
|
+
where: 'metafield',
|
|
117
|
+
required: field.state === 'required',
|
|
118
|
+
type: field.type,
|
|
119
|
+
label: field.label,
|
|
120
|
+
...(field.type === 'single_choice' ? { choices: field.choices } : {}),
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Every question the catalog asks, in the order the form draws them: the two
|
|
126
|
+
* names, the birthday, the gender, then the merchant's own. A hidden field is
|
|
127
|
+
* one nobody asks for and nobody reads, so it is no question at all.
|
|
128
|
+
*/
|
|
129
|
+
export function profileQuestionsOf(fields) {
|
|
130
|
+
const entries = [
|
|
131
|
+
fixedEntry('first_name', 'customer', 'short_text', fields.firstName),
|
|
132
|
+
fixedEntry('last_name', 'customer', 'short_text', fields.lastName),
|
|
133
|
+
fixedEntry('birthday', 'metafield', 'date', fields.birthday),
|
|
134
|
+
fixedEntry('gender', 'metafield', 'short_text', fields.gender),
|
|
135
|
+
...fields.custom.map(customEntry),
|
|
136
|
+
];
|
|
137
|
+
return entries.filter((entry) => entry.state !== 'hidden').map((entry) => entry.question);
|
|
138
|
+
}
|
|
139
|
+
/** What the shopper has already answered one question with; blanks are no answer. */
|
|
140
|
+
export function profileAnswerOf(question, answers) {
|
|
141
|
+
const held = question.where === 'metafield'
|
|
142
|
+
? answers.profileFields?.[question.key]
|
|
143
|
+
: question.key === 'first_name'
|
|
144
|
+
? answers.firstName
|
|
145
|
+
: answers.lastName;
|
|
146
|
+
return (held ?? '').trim();
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* The required questions this shopper has left empty. None, and the merchant
|
|
150
|
+
* knows everything they asked for, so the Completion Sheet has nothing to ask.
|
|
151
|
+
*/
|
|
152
|
+
export function unansweredProfileQuestions(fields, answers) {
|
|
153
|
+
return profileQuestionsOf(fields).filter((question) => question.required && profileAnswerOf(question, answers) === '');
|
|
154
|
+
}
|
|
105
155
|
/**
|
|
106
156
|
* The Profile Fields Shopify keeps as app-owned metafields: the catalog's own,
|
|
107
157
|
* minus the two names the customer record holds, minus every field the
|
|
108
158
|
* merchant hides. A hidden field is one nobody asks for and nobody reads.
|
|
109
159
|
*/
|
|
110
160
|
export function profileMetafieldKeysOf(fields) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
if (fields.gender.state !== 'hidden')
|
|
115
|
-
keys.push('gender');
|
|
116
|
-
for (const field of fields.custom) {
|
|
117
|
-
if (field.state !== 'hidden')
|
|
118
|
-
keys.push(field.key);
|
|
119
|
-
}
|
|
120
|
-
return keys;
|
|
161
|
+
return profileQuestionsOf(fields)
|
|
162
|
+
.filter((question) => question.where === 'metafield')
|
|
163
|
+
.map((question) => question.key);
|
|
121
164
|
}
|
|
122
165
|
/** What a theme that chooses nothing gets: the names asked for, the rest hidden, and the plain deletion copy. */
|
|
123
166
|
export const DEFAULT_ACCOUNT_SETTINGS = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-settings.js","sourceRoot":"","sources":["../src/account-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"account-settings.js","sourceRoot":"","sources":["../src/account-settings.ts"],"names":[],"mappings":"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"}
|
package/dist/action.d.ts
CHANGED
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
/** An address on the web a document may open: https, and nothing else. */
|
|
3
|
+
export declare const httpsUrlSchema: z.ZodURL;
|
|
2
4
|
/**
|
|
3
5
|
* The closed action set for standalone tappable blocks. Cards inside bound
|
|
4
6
|
* lists navigate implicitly and never carry an action. The seven account
|
|
5
7
|
* actions reach the account from any screen: the host gates the ones that
|
|
6
8
|
* need an Account Session behind the sign-in page and returns afterwards.
|
|
9
|
+
* A collection is a place the Shop owns rather than a screen of the design,
|
|
10
|
+
* so the document names its Shopify id and the host opens the collection
|
|
11
|
+
* screen the same way a collection tile does.
|
|
7
12
|
*/
|
|
8
13
|
export declare const actionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
9
14
|
type: z.ZodLiteral<"open_screen">;
|
|
10
15
|
screenId: z.ZodUUID;
|
|
16
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
17
|
+
type: z.ZodLiteral<"open_collection">;
|
|
18
|
+
collectionId: z.ZodString;
|
|
11
19
|
}, z.core.$strip>, z.ZodObject<{
|
|
12
20
|
type: z.ZodLiteral<"open_cart">;
|
|
13
21
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -30,8 +38,33 @@ export declare const actionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
30
38
|
}, z.core.$strip>, z.ZodObject<{
|
|
31
39
|
type: z.ZodLiteral<"delete_account">;
|
|
32
40
|
}, z.core.$strip>], "type">;
|
|
41
|
+
/**
|
|
42
|
+
* Where a row of the account links may lead: the three account pages, the two
|
|
43
|
+
* destructive moves, one of the merchant's own custom screens, or an address
|
|
44
|
+
* on the web. Each is a member of the action set as it stands, so a row is run
|
|
45
|
+
* the way any tappable block is and no second vocabulary exists to keep in step.
|
|
46
|
+
*/
|
|
47
|
+
export declare const accountLinkTargetSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
48
|
+
type: z.ZodLiteral<"open_orders">;
|
|
49
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
50
|
+
type: z.ZodLiteral<"open_addresses">;
|
|
51
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
52
|
+
type: z.ZodLiteral<"open_profile">;
|
|
53
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
54
|
+
type: z.ZodLiteral<"sign_out">;
|
|
55
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
56
|
+
type: z.ZodLiteral<"delete_account">;
|
|
57
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
58
|
+
type: z.ZodLiteral<"open_screen">;
|
|
59
|
+
screenId: z.ZodUUID;
|
|
60
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
61
|
+
type: z.ZodLiteral<"open_url">;
|
|
62
|
+
url: z.ZodURL;
|
|
63
|
+
}, z.core.$strip>], "type">;
|
|
33
64
|
export type Action = z.infer<typeof actionSchema>;
|
|
34
65
|
export type ActionType = Action['type'];
|
|
66
|
+
export type AccountLinkTarget = z.infer<typeof accountLinkTargetSchema>;
|
|
67
|
+
export declare function isDestructiveTarget(target: AccountLinkTarget): boolean;
|
|
35
68
|
/**
|
|
36
69
|
* One resolved value read back as an action, or nothing when it is not one.
|
|
37
70
|
* A setting a definition names may be absent from a placed block's props, and
|
package/dist/action.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,0EAA0E;AAC1E,eAAO,MAAM,cAAc,UAEoE,CAAC;AAUhG;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAavB,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;2BAQlC,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAClD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxC,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAKxE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAG3D"}
|
package/dist/action.js
CHANGED
|
@@ -1,28 +1,59 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { entityIdSchema } from './binding.js';
|
|
3
|
+
const openScreenActionSchema = z.object({ type: z.literal('open_screen'), screenId: z.uuid() });
|
|
4
|
+
/** An address on the web a document may open: https, and nothing else. */
|
|
5
|
+
export const httpsUrlSchema = z
|
|
6
|
+
.url()
|
|
7
|
+
.refine((value) => value.startsWith('https://'), { message: 'external links must be https' });
|
|
8
|
+
const openUrlActionSchema = z.object({ type: z.literal('open_url'), url: httpsUrlSchema });
|
|
9
|
+
const signOutActionSchema = z.object({ type: z.literal('sign_out') });
|
|
10
|
+
const openOrdersActionSchema = z.object({ type: z.literal('open_orders') });
|
|
11
|
+
const openAddressesActionSchema = z.object({ type: z.literal('open_addresses') });
|
|
12
|
+
const openProfileActionSchema = z.object({ type: z.literal('open_profile') });
|
|
13
|
+
const deleteAccountActionSchema = z.object({ type: z.literal('delete_account') });
|
|
2
14
|
/**
|
|
3
15
|
* The closed action set for standalone tappable blocks. Cards inside bound
|
|
4
16
|
* lists navigate implicitly and never carry an action. The seven account
|
|
5
17
|
* actions reach the account from any screen: the host gates the ones that
|
|
6
18
|
* need an Account Session behind the sign-in page and returns afterwards.
|
|
19
|
+
* A collection is a place the Shop owns rather than a screen of the design,
|
|
20
|
+
* so the document names its Shopify id and the host opens the collection
|
|
21
|
+
* screen the same way a collection tile does.
|
|
7
22
|
*/
|
|
8
23
|
export const actionSchema = z.discriminatedUnion('type', [
|
|
9
|
-
|
|
24
|
+
openScreenActionSchema,
|
|
25
|
+
z.object({ type: z.literal('open_collection'), collectionId: entityIdSchema }),
|
|
10
26
|
z.object({ type: z.literal('open_cart') }),
|
|
11
|
-
|
|
12
|
-
type: z.literal('open_url'),
|
|
13
|
-
url: z
|
|
14
|
-
.url()
|
|
15
|
-
.refine((value) => value.startsWith('https://'), { message: 'external links must be https' }),
|
|
16
|
-
}),
|
|
27
|
+
openUrlActionSchema,
|
|
17
28
|
z.object({ type: z.literal('none') }),
|
|
18
29
|
z.object({ type: z.literal('sign_in') }),
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
30
|
+
signOutActionSchema,
|
|
31
|
+
openOrdersActionSchema,
|
|
32
|
+
openAddressesActionSchema,
|
|
33
|
+
openProfileActionSchema,
|
|
23
34
|
z.object({ type: z.literal('add_address') }),
|
|
24
|
-
|
|
35
|
+
deleteAccountActionSchema,
|
|
25
36
|
]);
|
|
37
|
+
/**
|
|
38
|
+
* Where a row of the account links may lead: the three account pages, the two
|
|
39
|
+
* destructive moves, one of the merchant's own custom screens, or an address
|
|
40
|
+
* on the web. Each is a member of the action set as it stands, so a row is run
|
|
41
|
+
* the way any tappable block is and no second vocabulary exists to keep in step.
|
|
42
|
+
*/
|
|
43
|
+
export const accountLinkTargetSchema = z.discriminatedUnion('type', [
|
|
44
|
+
openOrdersActionSchema,
|
|
45
|
+
openAddressesActionSchema,
|
|
46
|
+
openProfileActionSchema,
|
|
47
|
+
signOutActionSchema,
|
|
48
|
+
deleteAccountActionSchema,
|
|
49
|
+
openScreenActionSchema,
|
|
50
|
+
openUrlActionSchema,
|
|
51
|
+
]);
|
|
52
|
+
/** The two rows that take something from the shopper, and so are drawn apart from the rest. */
|
|
53
|
+
const DESTRUCTIVE_TARGETS = new Set(['sign_out', 'delete_account']);
|
|
54
|
+
export function isDestructiveTarget(target) {
|
|
55
|
+
return DESTRUCTIVE_TARGETS.has(target.type);
|
|
56
|
+
}
|
|
26
57
|
/**
|
|
27
58
|
* One resolved value read back as an action, or nothing when it is not one.
|
|
28
59
|
* A setting a definition names may be absent from a placed block's props, and
|
package/dist/action.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"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"}
|
package/dist/assets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAe,KAAK,KAAK,EAAmB,MAAM,aAAa,CAAC;AAIvE,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CAC7C;
|
|
1
|
+
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAe,KAAK,KAAK,EAAmB,MAAM,aAAa,CAAC;AAIvE,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CAC7C;AA2BD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,cAAc,EAAE,CAqCzE;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC5C,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,YAAY,EAAE,CA4BpE;AAaD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CA2BjE;AAED,QAAA,MAAM,oBAAoB;;;;iBAIxB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;iBAS7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;mBAAqD,CAAC;AAEvF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
package/dist/assets.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { BLOCK_TYPES } from './blocks.js';
|
|
3
3
|
const KNOWN_TYPES = new Set(BLOCK_TYPES);
|
|
4
|
+
/** One picture a block carries under a prop of its own, where it carries any. */
|
|
5
|
+
function propImageOf(prop, image) {
|
|
6
|
+
return image ? [{ assetId: image.assetId, path: ['props', prop, 'assetId'] }] : [];
|
|
7
|
+
}
|
|
4
8
|
/** The one picture a block carries in its own props, where it carries any. */
|
|
5
9
|
function ownImageOf(image) {
|
|
6
|
-
return image
|
|
10
|
+
return propImageOf('image', image);
|
|
7
11
|
}
|
|
8
12
|
/** The picture of every entry of a list of them, each at its own place in the list. */
|
|
9
13
|
function listImagesOf(prop, entries) {
|
|
@@ -47,8 +51,12 @@ export function assetReferencesOf(block) {
|
|
|
47
51
|
return known.props.cards === undefined
|
|
48
52
|
? ownImageOf(known.props.image)
|
|
49
53
|
: listImagesOf('cards', known.props.cards);
|
|
54
|
+
case 'store_header':
|
|
55
|
+
return propImageOf('logo', known.props.logo);
|
|
50
56
|
case 'brand_rail':
|
|
51
57
|
return listImagesOf('brands', known.props.brands);
|
|
58
|
+
case 'collection_circles':
|
|
59
|
+
return listImagesOf('items', known.props.items ?? []);
|
|
52
60
|
case 'cart_empty':
|
|
53
61
|
return ownImageOf(known.props.image);
|
|
54
62
|
default:
|
|
@@ -76,6 +84,8 @@ export function missingMediaOf(block) {
|
|
|
76
84
|
}
|
|
77
85
|
case 'brand_rail':
|
|
78
86
|
return known.props.brands.flatMap((brand, index) => brand.image ? [] : [{ path: ['props', 'brands', index, 'image'], label: 'an image' }]);
|
|
87
|
+
case 'collection_circles':
|
|
88
|
+
return (known.props.items ?? []).flatMap((item, index) => item.image ? [] : [{ path: ['props', 'items', index, 'image'], label: 'an image' }]);
|
|
79
89
|
case 'video':
|
|
80
90
|
return known.props.assetId ? [] : [{ path: ['props', 'assetId'], label: 'a video' }];
|
|
81
91
|
default:
|
|
@@ -103,7 +113,7 @@ export function withoutUnchosenMedia(block) {
|
|
|
103
113
|
return block;
|
|
104
114
|
const cleaned = { ...props };
|
|
105
115
|
let changed = false;
|
|
106
|
-
for (const key of ['image', 'poster']) {
|
|
116
|
+
for (const key of ['image', 'poster', 'logo']) {
|
|
107
117
|
const ref = cleaned[key];
|
|
108
118
|
if (ref && !ref.assetId) {
|
|
109
119
|
delete cleaned[key];
|
|
@@ -114,7 +124,7 @@ export function withoutUnchosenMedia(block) {
|
|
|
114
124
|
delete cleaned.assetId;
|
|
115
125
|
changed = true;
|
|
116
126
|
}
|
|
117
|
-
for (const key of ['slides', 'cards', 'brands']) {
|
|
127
|
+
for (const key of ['slides', 'cards', 'brands', 'items']) {
|
|
118
128
|
if (!Array.isArray(cleaned[key]))
|
|
119
129
|
continue;
|
|
120
130
|
const entries = cleaned[key];
|
package/dist/assets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAA+B,MAAM,aAAa,CAAC;AAEvE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,WAAW,CAAC,CAAC;AAYjD,
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"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"}
|