@zag-js/avatar 0.50.0 → 0.51.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/index.js +1 -198
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -167
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -1,199 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/index.ts
|
|
21
|
-
var src_exports = {};
|
|
22
|
-
__export(src_exports, {
|
|
23
|
-
anatomy: () => anatomy,
|
|
24
|
-
connect: () => connect,
|
|
25
|
-
machine: () => machine,
|
|
26
|
-
props: () => props,
|
|
27
|
-
splitProps: () => splitProps
|
|
28
|
-
});
|
|
29
|
-
module.exports = __toCommonJS(src_exports);
|
|
30
|
-
|
|
31
|
-
// src/avatar.anatomy.ts
|
|
32
|
-
var import_anatomy = require("@zag-js/anatomy");
|
|
33
|
-
var anatomy = (0, import_anatomy.createAnatomy)("avatar").parts("root", "image", "fallback");
|
|
34
|
-
var parts = anatomy.build();
|
|
35
|
-
|
|
36
|
-
// src/avatar.dom.ts
|
|
37
|
-
var import_dom_query = require("@zag-js/dom-query");
|
|
38
|
-
var dom = (0, import_dom_query.createScope)({
|
|
39
|
-
getRootId: (ctx) => ctx.ids?.root ?? `avatar:${ctx.id}`,
|
|
40
|
-
getImageId: (ctx) => ctx.ids?.image ?? `avatar:${ctx.id}:image`,
|
|
41
|
-
getFallbackId: (ctx) => ctx.ids?.fallback ?? `avatar:${ctx.id}:fallback`,
|
|
42
|
-
getRootEl: (ctx) => dom.getById(ctx, dom.getRootId(ctx)),
|
|
43
|
-
getImageEl: (ctx) => dom.getById(ctx, dom.getImageId(ctx))
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
// src/avatar.connect.ts
|
|
47
|
-
function connect(state, send, normalize) {
|
|
48
|
-
const loaded = state.matches("loaded");
|
|
49
|
-
return {
|
|
50
|
-
loaded,
|
|
51
|
-
setSrc(src) {
|
|
52
|
-
send({ type: "SRC.SET", src });
|
|
53
|
-
},
|
|
54
|
-
setLoaded() {
|
|
55
|
-
send({ type: "IMG.LOADED", src: "api" });
|
|
56
|
-
},
|
|
57
|
-
setError() {
|
|
58
|
-
send({ type: "IMG.ERROR", src: "api" });
|
|
59
|
-
},
|
|
60
|
-
rootProps: normalize.element({
|
|
61
|
-
...parts.root.attrs,
|
|
62
|
-
dir: state.context.dir,
|
|
63
|
-
id: dom.getRootId(state.context)
|
|
64
|
-
}),
|
|
65
|
-
imageProps: normalize.img({
|
|
66
|
-
...parts.image.attrs,
|
|
67
|
-
hidden: !loaded,
|
|
68
|
-
dir: state.context.dir,
|
|
69
|
-
id: dom.getImageId(state.context),
|
|
70
|
-
"data-state": loaded ? "visible" : "hidden",
|
|
71
|
-
onLoad() {
|
|
72
|
-
send({ type: "IMG.LOADED", src: "element" });
|
|
73
|
-
},
|
|
74
|
-
onError() {
|
|
75
|
-
send({ type: "IMG.ERROR", src: "element" });
|
|
76
|
-
}
|
|
77
|
-
}),
|
|
78
|
-
fallbackProps: normalize.element({
|
|
79
|
-
...parts.fallback.attrs,
|
|
80
|
-
dir: state.context.dir,
|
|
81
|
-
id: dom.getFallbackId(state.context),
|
|
82
|
-
hidden: loaded,
|
|
83
|
-
"data-state": loaded ? "hidden" : "visible"
|
|
84
|
-
})
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
// src/avatar.machine.ts
|
|
89
|
-
var import_core = require("@zag-js/core");
|
|
90
|
-
var import_dom_query2 = require("@zag-js/dom-query");
|
|
91
|
-
var import_utils = require("@zag-js/utils");
|
|
92
|
-
function machine(userContext) {
|
|
93
|
-
const ctx = (0, import_utils.compact)(userContext);
|
|
94
|
-
return (0, import_core.createMachine)(
|
|
95
|
-
{
|
|
96
|
-
id: "avatar",
|
|
97
|
-
initial: "loading",
|
|
98
|
-
activities: ["trackImageRemoval"],
|
|
99
|
-
context: ctx,
|
|
100
|
-
on: {
|
|
101
|
-
"SRC.CHANGE": {
|
|
102
|
-
target: "loading"
|
|
103
|
-
},
|
|
104
|
-
"IMG.UNMOUNT": {
|
|
105
|
-
target: "error"
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
|
-
states: {
|
|
109
|
-
loading: {
|
|
110
|
-
activities: ["trackSrcChange"],
|
|
111
|
-
entry: ["checkImgStatus"],
|
|
112
|
-
on: {
|
|
113
|
-
"IMG.LOADED": {
|
|
114
|
-
target: "loaded",
|
|
115
|
-
actions: ["invokeOnLoad"]
|
|
116
|
-
},
|
|
117
|
-
"IMG.ERROR": {
|
|
118
|
-
target: "error",
|
|
119
|
-
actions: ["invokeOnError"]
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
|
-
error: {
|
|
124
|
-
activities: ["trackSrcChange"],
|
|
125
|
-
on: {
|
|
126
|
-
"IMG.LOADED": {
|
|
127
|
-
target: "loaded",
|
|
128
|
-
actions: ["invokeOnLoad"]
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
},
|
|
132
|
-
loaded: {
|
|
133
|
-
activities: ["trackSrcChange"],
|
|
134
|
-
on: {
|
|
135
|
-
"IMG.ERROR": {
|
|
136
|
-
target: "error",
|
|
137
|
-
actions: ["invokeOnError"]
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
activities: {
|
|
145
|
-
trackSrcChange(ctx2, _evt, { send }) {
|
|
146
|
-
const imageEl = dom.getImageEl(ctx2);
|
|
147
|
-
return (0, import_dom_query2.observeAttributes)(imageEl, {
|
|
148
|
-
attributes: ["src", "srcset"],
|
|
149
|
-
callback() {
|
|
150
|
-
send({ type: "SRC.CHANGE" });
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
},
|
|
154
|
-
trackImageRemoval(ctx2, _evt, { send }) {
|
|
155
|
-
const rootEl = dom.getRootEl(ctx2);
|
|
156
|
-
return (0, import_dom_query2.observeChildren)(rootEl, {
|
|
157
|
-
callback(records) {
|
|
158
|
-
const removedNodes = Array.from(records[0].removedNodes);
|
|
159
|
-
const removed = removedNodes.find((node) => node.matches("[data-scope=avatar][data-part=image]"));
|
|
160
|
-
if (removed) {
|
|
161
|
-
send({ type: "IMG.UNMOUNT" });
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
},
|
|
167
|
-
actions: {
|
|
168
|
-
invokeOnLoad(ctx2) {
|
|
169
|
-
ctx2.onStatusChange?.({ status: "loaded" });
|
|
170
|
-
},
|
|
171
|
-
invokeOnError(ctx2) {
|
|
172
|
-
ctx2.onStatusChange?.({ status: "error" });
|
|
173
|
-
},
|
|
174
|
-
checkImgStatus(ctx2, _evt, { send }) {
|
|
175
|
-
const img = dom.getImageEl(ctx2);
|
|
176
|
-
if (img?.complete) {
|
|
177
|
-
const type = img.currentSrc ? "IMG.LOADED" : "IMG.ERROR";
|
|
178
|
-
send({ type, src: "ssr" });
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
// src/avatar.props.ts
|
|
187
|
-
var import_types = require("@zag-js/types");
|
|
188
|
-
var import_utils2 = require("@zag-js/utils");
|
|
189
|
-
var props = (0, import_types.createProps)()(["dir", "id", "ids", "onStatusChange", "getRootNode"]);
|
|
190
|
-
var splitProps = (0, import_utils2.createSplitProps)(props);
|
|
191
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
192
|
-
0 && (module.exports = {
|
|
193
|
-
anatomy,
|
|
194
|
-
connect,
|
|
195
|
-
machine,
|
|
196
|
-
props,
|
|
197
|
-
splitProps
|
|
198
|
-
});
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from==="object"||typeof from==="function"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:true}),mod);var src_exports={};__export(src_exports,{anatomy:()=>anatomy,connect:()=>connect,machine:()=>machine,props:()=>props,splitProps:()=>splitProps});module.exports=__toCommonJS(src_exports);var import_anatomy=require("@zag-js/anatomy");var anatomy=(0,import_anatomy.createAnatomy)("avatar").parts("root","image","fallback");var parts=anatomy.build();var import_dom_query=require("@zag-js/dom-query");var dom=(0,import_dom_query.createScope)({getRootId:ctx=>ctx.ids?.root??`avatar:${ctx.id}`,getImageId:ctx=>ctx.ids?.image??`avatar:${ctx.id}:image`,getFallbackId:ctx=>ctx.ids?.fallback??`avatar:${ctx.id}:fallback`,getRootEl:ctx=>dom.getById(ctx,dom.getRootId(ctx)),getImageEl:ctx=>dom.getById(ctx,dom.getImageId(ctx))});function connect(state,send,normalize){const loaded=state.matches("loaded");return{loaded,setSrc(src){send({type:"SRC.SET",src})},setLoaded(){send({type:"IMG.LOADED",src:"api"})},setError(){send({type:"IMG.ERROR",src:"api"})},rootProps:normalize.element({...parts.root.attrs,dir:state.context.dir,id:dom.getRootId(state.context)}),imageProps:normalize.img({...parts.image.attrs,hidden:!loaded,dir:state.context.dir,id:dom.getImageId(state.context),"data-state":loaded?"visible":"hidden",onLoad(){send({type:"IMG.LOADED",src:"element"})},onError(){send({type:"IMG.ERROR",src:"element"})}}),fallbackProps:normalize.element({...parts.fallback.attrs,dir:state.context.dir,id:dom.getFallbackId(state.context),hidden:loaded,"data-state":loaded?"hidden":"visible"})}}var import_core=require("@zag-js/core");var import_dom_query2=require("@zag-js/dom-query");var import_utils=require("@zag-js/utils");function machine(userContext){const ctx=(0,import_utils.compact)(userContext);return(0,import_core.createMachine)({id:"avatar",initial:"loading",activities:["trackImageRemoval"],context:ctx,on:{"SRC.CHANGE":{target:"loading"},"IMG.UNMOUNT":{target:"error"}},states:{loading:{activities:["trackSrcChange"],entry:["checkImgStatus"],on:{"IMG.LOADED":{target:"loaded",actions:["invokeOnLoad"]},"IMG.ERROR":{target:"error",actions:["invokeOnError"]}}},error:{activities:["trackSrcChange"],on:{"IMG.LOADED":{target:"loaded",actions:["invokeOnLoad"]}}},loaded:{activities:["trackSrcChange"],on:{"IMG.ERROR":{target:"error",actions:["invokeOnError"]}}}}},{activities:{trackSrcChange(ctx2,_evt,{send}){const imageEl=dom.getImageEl(ctx2);return(0,import_dom_query2.observeAttributes)(imageEl,{attributes:["src","srcset"],callback(){send({type:"SRC.CHANGE"})}})},trackImageRemoval(ctx2,_evt,{send}){const rootEl=dom.getRootEl(ctx2);return(0,import_dom_query2.observeChildren)(rootEl,{callback(records){const removedNodes=Array.from(records[0].removedNodes);const removed=removedNodes.find(node=>node.matches("[data-scope=avatar][data-part=image]"));if(removed){send({type:"IMG.UNMOUNT"})}}})}},actions:{invokeOnLoad(ctx2){ctx2.onStatusChange?.({status:"loaded"})},invokeOnError(ctx2){ctx2.onStatusChange?.({status:"error"})},checkImgStatus(ctx2,_evt,{send}){const img=dom.getImageEl(ctx2);if(img?.complete){const type=img.currentSrc?"IMG.LOADED":"IMG.ERROR";send({type,src:"ssr"})}}}})}var import_types=require("@zag-js/types");var import_utils2=require("@zag-js/utils");var props=(0,import_types.createProps)()(["dir","id","ids","onStatusChange","getRootNode"]);var splitProps=(0,import_utils2.createSplitProps)(props);0&&(module.exports={anatomy,connect,machine,props,splitProps});
|
|
199
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/avatar.anatomy.ts","../src/avatar.dom.ts","../src/avatar.connect.ts","../src/avatar.machine.ts","../src/avatar.props.ts"],"sourcesContent":["export { anatomy } from \"./avatar.anatomy\"\nexport { connect } from \"./avatar.connect\"\nexport { machine } from \"./avatar.machine\"\nexport * from \"./avatar.props\"\nexport type {\n MachineApi as Api,\n UserDefinedContext as Context,\n ElementIds,\n LoadStatus,\n StatusChangeDetails,\n} from \"./avatar.types\"\n","import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"avatar\").parts(\"root\", \"image\", \"fallback\")\n\nexport const parts = anatomy.build()\n","import { createScope } from \"@zag-js/dom-query\"\nimport type { MachineContext as Ctx } from \"./avatar.types\"\n\nexport const dom = createScope({\n getRootId: (ctx: Ctx) => ctx.ids?.root ?? `avatar:${ctx.id}`,\n getImageId: (ctx: Ctx) => ctx.ids?.image ?? `avatar:${ctx.id}:image`,\n getFallbackId: (ctx: Ctx) => ctx.ids?.fallback ?? `avatar:${ctx.id}:fallback`,\n\n getRootEl: (ctx: Ctx) => dom.getById(ctx, dom.getRootId(ctx)),\n getImageEl: (ctx: Ctx) => dom.getById<HTMLImageElement>(ctx, dom.getImageId(ctx)),\n})\n","import type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { parts } from \"./avatar.anatomy\"\nimport { dom } from \"./avatar.dom\"\nimport type { MachineApi, Send, State } from \"./avatar.types\"\n\nexport function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): MachineApi<T> {\n const loaded = state.matches(\"loaded\")\n return {\n loaded,\n setSrc(src) {\n send({ type: \"SRC.SET\", src })\n },\n setLoaded() {\n send({ type: \"IMG.LOADED\", src: \"api\" })\n },\n setError() {\n send({ type: \"IMG.ERROR\", src: \"api\" })\n },\n\n rootProps: normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n }),\n\n imageProps: normalize.img({\n ...parts.image.attrs,\n hidden: !loaded,\n dir: state.context.dir,\n id: dom.getImageId(state.context),\n \"data-state\": loaded ? \"visible\" : \"hidden\",\n onLoad() {\n send({ type: \"IMG.LOADED\", src: \"element\" })\n },\n onError() {\n send({ type: \"IMG.ERROR\", src: \"element\" })\n },\n }),\n\n fallbackProps: normalize.element({\n ...parts.fallback.attrs,\n dir: state.context.dir,\n id: dom.getFallbackId(state.context),\n hidden: loaded,\n \"data-state\": loaded ? \"hidden\" : \"visible\",\n }),\n }\n}\n","import { createMachine } from \"@zag-js/core\"\nimport { observeAttributes, observeChildren } from \"@zag-js/dom-query\"\nimport { compact } from \"@zag-js/utils\"\nimport { dom } from \"./avatar.dom\"\nimport type { MachineContext, MachineState, UserDefinedContext } from \"./avatar.types\"\n\nexport function machine(userContext: UserDefinedContext) {\n const ctx = compact(userContext)\n return createMachine<MachineContext, MachineState>(\n {\n id: \"avatar\",\n initial: \"loading\",\n activities: [\"trackImageRemoval\"],\n\n context: ctx,\n\n on: {\n \"SRC.CHANGE\": {\n target: \"loading\",\n },\n \"IMG.UNMOUNT\": {\n target: \"error\",\n },\n },\n\n states: {\n loading: {\n activities: [\"trackSrcChange\"],\n entry: [\"checkImgStatus\"],\n on: {\n \"IMG.LOADED\": {\n target: \"loaded\",\n actions: [\"invokeOnLoad\"],\n },\n \"IMG.ERROR\": {\n target: \"error\",\n actions: [\"invokeOnError\"],\n },\n },\n },\n error: {\n activities: [\"trackSrcChange\"],\n on: {\n \"IMG.LOADED\": {\n target: \"loaded\",\n actions: [\"invokeOnLoad\"],\n },\n },\n },\n loaded: {\n activities: [\"trackSrcChange\"],\n on: {\n \"IMG.ERROR\": {\n target: \"error\",\n actions: [\"invokeOnError\"],\n },\n },\n },\n },\n },\n {\n activities: {\n trackSrcChange(ctx, _evt, { send }) {\n const imageEl = dom.getImageEl(ctx)\n return observeAttributes(imageEl, {\n attributes: [\"src\", \"srcset\"],\n callback() {\n send({ type: \"SRC.CHANGE\" })\n },\n })\n },\n trackImageRemoval(ctx, _evt, { send }) {\n const rootEl = dom.getRootEl(ctx)\n return observeChildren(rootEl, {\n callback(records) {\n const removedNodes = Array.from(records[0].removedNodes) as HTMLElement[]\n const removed = removedNodes.find((node) => node.matches(\"[data-scope=avatar][data-part=image]\"))\n if (removed) {\n send({ type: \"IMG.UNMOUNT\" })\n }\n },\n })\n },\n },\n actions: {\n invokeOnLoad(ctx) {\n ctx.onStatusChange?.({ status: \"loaded\" })\n },\n invokeOnError(ctx) {\n ctx.onStatusChange?.({ status: \"error\" })\n },\n checkImgStatus(ctx, _evt, { send }) {\n const img = dom.getImageEl(ctx)\n if (img?.complete) {\n const type = img.currentSrc ? \"IMG.LOADED\" : \"IMG.ERROR\"\n send({ type, src: \"ssr\" })\n }\n },\n },\n },\n )\n}\n","import { createProps } from \"@zag-js/types\"\nimport { createSplitProps } from \"@zag-js/utils\"\nimport type { UserDefinedContext } from \"./avatar.types\"\n\nexport const props = createProps<UserDefinedContext>()([\"dir\", \"id\", \"ids\", \"onStatusChange\", \"getRootNode\"])\nexport const splitProps = createSplitProps<Partial<UserDefinedContext>>(props)\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/avatar.anatomy.ts","../src/avatar.dom.ts","../src/avatar.connect.ts","../src/avatar.machine.ts","../src/avatar.props.ts"],"sourcesContent":["export { anatomy } from \"./avatar.anatomy\"\nexport { connect } from \"./avatar.connect\"\nexport { machine } from \"./avatar.machine\"\nexport * from \"./avatar.props\"\nexport type {\n MachineApi as Api,\n UserDefinedContext as Context,\n ElementIds,\n LoadStatus,\n StatusChangeDetails,\n} from \"./avatar.types\"\n","import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"avatar\").parts(\"root\", \"image\", \"fallback\")\n\nexport const parts = anatomy.build()\n","import { createScope } from \"@zag-js/dom-query\"\nimport type { MachineContext as Ctx } from \"./avatar.types\"\n\nexport const dom = createScope({\n getRootId: (ctx: Ctx) => ctx.ids?.root ?? `avatar:${ctx.id}`,\n getImageId: (ctx: Ctx) => ctx.ids?.image ?? `avatar:${ctx.id}:image`,\n getFallbackId: (ctx: Ctx) => ctx.ids?.fallback ?? `avatar:${ctx.id}:fallback`,\n\n getRootEl: (ctx: Ctx) => dom.getById(ctx, dom.getRootId(ctx)),\n getImageEl: (ctx: Ctx) => dom.getById<HTMLImageElement>(ctx, dom.getImageId(ctx)),\n})\n","import type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { parts } from \"./avatar.anatomy\"\nimport { dom } from \"./avatar.dom\"\nimport type { MachineApi, Send, State } from \"./avatar.types\"\n\nexport function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): MachineApi<T> {\n const loaded = state.matches(\"loaded\")\n return {\n loaded,\n setSrc(src) {\n send({ type: \"SRC.SET\", src })\n },\n setLoaded() {\n send({ type: \"IMG.LOADED\", src: \"api\" })\n },\n setError() {\n send({ type: \"IMG.ERROR\", src: \"api\" })\n },\n\n rootProps: normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n }),\n\n imageProps: normalize.img({\n ...parts.image.attrs,\n hidden: !loaded,\n dir: state.context.dir,\n id: dom.getImageId(state.context),\n \"data-state\": loaded ? \"visible\" : \"hidden\",\n onLoad() {\n send({ type: \"IMG.LOADED\", src: \"element\" })\n },\n onError() {\n send({ type: \"IMG.ERROR\", src: \"element\" })\n },\n }),\n\n fallbackProps: normalize.element({\n ...parts.fallback.attrs,\n dir: state.context.dir,\n id: dom.getFallbackId(state.context),\n hidden: loaded,\n \"data-state\": loaded ? \"hidden\" : \"visible\",\n }),\n }\n}\n","import { createMachine } from \"@zag-js/core\"\nimport { observeAttributes, observeChildren } from \"@zag-js/dom-query\"\nimport { compact } from \"@zag-js/utils\"\nimport { dom } from \"./avatar.dom\"\nimport type { MachineContext, MachineState, UserDefinedContext } from \"./avatar.types\"\n\nexport function machine(userContext: UserDefinedContext) {\n const ctx = compact(userContext)\n return createMachine<MachineContext, MachineState>(\n {\n id: \"avatar\",\n initial: \"loading\",\n activities: [\"trackImageRemoval\"],\n\n context: ctx,\n\n on: {\n \"SRC.CHANGE\": {\n target: \"loading\",\n },\n \"IMG.UNMOUNT\": {\n target: \"error\",\n },\n },\n\n states: {\n loading: {\n activities: [\"trackSrcChange\"],\n entry: [\"checkImgStatus\"],\n on: {\n \"IMG.LOADED\": {\n target: \"loaded\",\n actions: [\"invokeOnLoad\"],\n },\n \"IMG.ERROR\": {\n target: \"error\",\n actions: [\"invokeOnError\"],\n },\n },\n },\n error: {\n activities: [\"trackSrcChange\"],\n on: {\n \"IMG.LOADED\": {\n target: \"loaded\",\n actions: [\"invokeOnLoad\"],\n },\n },\n },\n loaded: {\n activities: [\"trackSrcChange\"],\n on: {\n \"IMG.ERROR\": {\n target: \"error\",\n actions: [\"invokeOnError\"],\n },\n },\n },\n },\n },\n {\n activities: {\n trackSrcChange(ctx, _evt, { send }) {\n const imageEl = dom.getImageEl(ctx)\n return observeAttributes(imageEl, {\n attributes: [\"src\", \"srcset\"],\n callback() {\n send({ type: \"SRC.CHANGE\" })\n },\n })\n },\n trackImageRemoval(ctx, _evt, { send }) {\n const rootEl = dom.getRootEl(ctx)\n return observeChildren(rootEl, {\n callback(records) {\n const removedNodes = Array.from(records[0].removedNodes) as HTMLElement[]\n const removed = removedNodes.find((node) => node.matches(\"[data-scope=avatar][data-part=image]\"))\n if (removed) {\n send({ type: \"IMG.UNMOUNT\" })\n }\n },\n })\n },\n },\n actions: {\n invokeOnLoad(ctx) {\n ctx.onStatusChange?.({ status: \"loaded\" })\n },\n invokeOnError(ctx) {\n ctx.onStatusChange?.({ status: \"error\" })\n },\n checkImgStatus(ctx, _evt, { send }) {\n const img = dom.getImageEl(ctx)\n if (img?.complete) {\n const type = img.currentSrc ? \"IMG.LOADED\" : \"IMG.ERROR\"\n send({ type, src: \"ssr\" })\n }\n },\n },\n },\n )\n}\n","import { createProps } from \"@zag-js/types\"\nimport { createSplitProps } from \"@zag-js/utils\"\nimport type { UserDefinedContext } from \"./avatar.types\"\n\nexport const props = createProps<UserDefinedContext>()([\"dir\", \"id\", \"ids\", \"onStatusChange\", \"getRootNode\"])\nexport const splitProps = createSplitProps<Partial<UserDefinedContext>>(props)\n"],"mappings":"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","names":["import_dom_query","ctx","import_utils"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,168 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { createAnatomy } from "@zag-js/anatomy";
|
|
3
|
-
var anatomy = createAnatomy("avatar").parts("root", "image", "fallback");
|
|
4
|
-
var parts = anatomy.build();
|
|
5
|
-
|
|
6
|
-
// src/avatar.dom.ts
|
|
7
|
-
import { createScope } from "@zag-js/dom-query";
|
|
8
|
-
var dom = createScope({
|
|
9
|
-
getRootId: (ctx) => ctx.ids?.root ?? `avatar:${ctx.id}`,
|
|
10
|
-
getImageId: (ctx) => ctx.ids?.image ?? `avatar:${ctx.id}:image`,
|
|
11
|
-
getFallbackId: (ctx) => ctx.ids?.fallback ?? `avatar:${ctx.id}:fallback`,
|
|
12
|
-
getRootEl: (ctx) => dom.getById(ctx, dom.getRootId(ctx)),
|
|
13
|
-
getImageEl: (ctx) => dom.getById(ctx, dom.getImageId(ctx))
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
// src/avatar.connect.ts
|
|
17
|
-
function connect(state, send, normalize) {
|
|
18
|
-
const loaded = state.matches("loaded");
|
|
19
|
-
return {
|
|
20
|
-
loaded,
|
|
21
|
-
setSrc(src) {
|
|
22
|
-
send({ type: "SRC.SET", src });
|
|
23
|
-
},
|
|
24
|
-
setLoaded() {
|
|
25
|
-
send({ type: "IMG.LOADED", src: "api" });
|
|
26
|
-
},
|
|
27
|
-
setError() {
|
|
28
|
-
send({ type: "IMG.ERROR", src: "api" });
|
|
29
|
-
},
|
|
30
|
-
rootProps: normalize.element({
|
|
31
|
-
...parts.root.attrs,
|
|
32
|
-
dir: state.context.dir,
|
|
33
|
-
id: dom.getRootId(state.context)
|
|
34
|
-
}),
|
|
35
|
-
imageProps: normalize.img({
|
|
36
|
-
...parts.image.attrs,
|
|
37
|
-
hidden: !loaded,
|
|
38
|
-
dir: state.context.dir,
|
|
39
|
-
id: dom.getImageId(state.context),
|
|
40
|
-
"data-state": loaded ? "visible" : "hidden",
|
|
41
|
-
onLoad() {
|
|
42
|
-
send({ type: "IMG.LOADED", src: "element" });
|
|
43
|
-
},
|
|
44
|
-
onError() {
|
|
45
|
-
send({ type: "IMG.ERROR", src: "element" });
|
|
46
|
-
}
|
|
47
|
-
}),
|
|
48
|
-
fallbackProps: normalize.element({
|
|
49
|
-
...parts.fallback.attrs,
|
|
50
|
-
dir: state.context.dir,
|
|
51
|
-
id: dom.getFallbackId(state.context),
|
|
52
|
-
hidden: loaded,
|
|
53
|
-
"data-state": loaded ? "hidden" : "visible"
|
|
54
|
-
})
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// src/avatar.machine.ts
|
|
59
|
-
import { createMachine } from "@zag-js/core";
|
|
60
|
-
import { observeAttributes, observeChildren } from "@zag-js/dom-query";
|
|
61
|
-
import { compact } from "@zag-js/utils";
|
|
62
|
-
function machine(userContext) {
|
|
63
|
-
const ctx = compact(userContext);
|
|
64
|
-
return createMachine(
|
|
65
|
-
{
|
|
66
|
-
id: "avatar",
|
|
67
|
-
initial: "loading",
|
|
68
|
-
activities: ["trackImageRemoval"],
|
|
69
|
-
context: ctx,
|
|
70
|
-
on: {
|
|
71
|
-
"SRC.CHANGE": {
|
|
72
|
-
target: "loading"
|
|
73
|
-
},
|
|
74
|
-
"IMG.UNMOUNT": {
|
|
75
|
-
target: "error"
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
states: {
|
|
79
|
-
loading: {
|
|
80
|
-
activities: ["trackSrcChange"],
|
|
81
|
-
entry: ["checkImgStatus"],
|
|
82
|
-
on: {
|
|
83
|
-
"IMG.LOADED": {
|
|
84
|
-
target: "loaded",
|
|
85
|
-
actions: ["invokeOnLoad"]
|
|
86
|
-
},
|
|
87
|
-
"IMG.ERROR": {
|
|
88
|
-
target: "error",
|
|
89
|
-
actions: ["invokeOnError"]
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
|
-
error: {
|
|
94
|
-
activities: ["trackSrcChange"],
|
|
95
|
-
on: {
|
|
96
|
-
"IMG.LOADED": {
|
|
97
|
-
target: "loaded",
|
|
98
|
-
actions: ["invokeOnLoad"]
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
},
|
|
102
|
-
loaded: {
|
|
103
|
-
activities: ["trackSrcChange"],
|
|
104
|
-
on: {
|
|
105
|
-
"IMG.ERROR": {
|
|
106
|
-
target: "error",
|
|
107
|
-
actions: ["invokeOnError"]
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
activities: {
|
|
115
|
-
trackSrcChange(ctx2, _evt, { send }) {
|
|
116
|
-
const imageEl = dom.getImageEl(ctx2);
|
|
117
|
-
return observeAttributes(imageEl, {
|
|
118
|
-
attributes: ["src", "srcset"],
|
|
119
|
-
callback() {
|
|
120
|
-
send({ type: "SRC.CHANGE" });
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
},
|
|
124
|
-
trackImageRemoval(ctx2, _evt, { send }) {
|
|
125
|
-
const rootEl = dom.getRootEl(ctx2);
|
|
126
|
-
return observeChildren(rootEl, {
|
|
127
|
-
callback(records) {
|
|
128
|
-
const removedNodes = Array.from(records[0].removedNodes);
|
|
129
|
-
const removed = removedNodes.find((node) => node.matches("[data-scope=avatar][data-part=image]"));
|
|
130
|
-
if (removed) {
|
|
131
|
-
send({ type: "IMG.UNMOUNT" });
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
},
|
|
137
|
-
actions: {
|
|
138
|
-
invokeOnLoad(ctx2) {
|
|
139
|
-
ctx2.onStatusChange?.({ status: "loaded" });
|
|
140
|
-
},
|
|
141
|
-
invokeOnError(ctx2) {
|
|
142
|
-
ctx2.onStatusChange?.({ status: "error" });
|
|
143
|
-
},
|
|
144
|
-
checkImgStatus(ctx2, _evt, { send }) {
|
|
145
|
-
const img = dom.getImageEl(ctx2);
|
|
146
|
-
if (img?.complete) {
|
|
147
|
-
const type = img.currentSrc ? "IMG.LOADED" : "IMG.ERROR";
|
|
148
|
-
send({ type, src: "ssr" });
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// src/avatar.props.ts
|
|
157
|
-
import { createProps } from "@zag-js/types";
|
|
158
|
-
import { createSplitProps } from "@zag-js/utils";
|
|
159
|
-
var props = createProps()(["dir", "id", "ids", "onStatusChange", "getRootNode"]);
|
|
160
|
-
var splitProps = createSplitProps(props);
|
|
161
|
-
export {
|
|
162
|
-
anatomy,
|
|
163
|
-
connect,
|
|
164
|
-
machine,
|
|
165
|
-
props,
|
|
166
|
-
splitProps
|
|
167
|
-
};
|
|
1
|
+
import{createAnatomy}from"@zag-js/anatomy";var anatomy=createAnatomy("avatar").parts("root","image","fallback");var parts=anatomy.build();import{createScope}from"@zag-js/dom-query";var dom=createScope({getRootId:ctx=>ctx.ids?.root??`avatar:${ctx.id}`,getImageId:ctx=>ctx.ids?.image??`avatar:${ctx.id}:image`,getFallbackId:ctx=>ctx.ids?.fallback??`avatar:${ctx.id}:fallback`,getRootEl:ctx=>dom.getById(ctx,dom.getRootId(ctx)),getImageEl:ctx=>dom.getById(ctx,dom.getImageId(ctx))});function connect(state,send,normalize){const loaded=state.matches("loaded");return{loaded,setSrc(src){send({type:"SRC.SET",src})},setLoaded(){send({type:"IMG.LOADED",src:"api"})},setError(){send({type:"IMG.ERROR",src:"api"})},rootProps:normalize.element({...parts.root.attrs,dir:state.context.dir,id:dom.getRootId(state.context)}),imageProps:normalize.img({...parts.image.attrs,hidden:!loaded,dir:state.context.dir,id:dom.getImageId(state.context),"data-state":loaded?"visible":"hidden",onLoad(){send({type:"IMG.LOADED",src:"element"})},onError(){send({type:"IMG.ERROR",src:"element"})}}),fallbackProps:normalize.element({...parts.fallback.attrs,dir:state.context.dir,id:dom.getFallbackId(state.context),hidden:loaded,"data-state":loaded?"hidden":"visible"})}}import{createMachine}from"@zag-js/core";import{observeAttributes,observeChildren}from"@zag-js/dom-query";import{compact}from"@zag-js/utils";function machine(userContext){const ctx=compact(userContext);return createMachine({id:"avatar",initial:"loading",activities:["trackImageRemoval"],context:ctx,on:{"SRC.CHANGE":{target:"loading"},"IMG.UNMOUNT":{target:"error"}},states:{loading:{activities:["trackSrcChange"],entry:["checkImgStatus"],on:{"IMG.LOADED":{target:"loaded",actions:["invokeOnLoad"]},"IMG.ERROR":{target:"error",actions:["invokeOnError"]}}},error:{activities:["trackSrcChange"],on:{"IMG.LOADED":{target:"loaded",actions:["invokeOnLoad"]}}},loaded:{activities:["trackSrcChange"],on:{"IMG.ERROR":{target:"error",actions:["invokeOnError"]}}}}},{activities:{trackSrcChange(ctx2,_evt,{send}){const imageEl=dom.getImageEl(ctx2);return observeAttributes(imageEl,{attributes:["src","srcset"],callback(){send({type:"SRC.CHANGE"})}})},trackImageRemoval(ctx2,_evt,{send}){const rootEl=dom.getRootEl(ctx2);return observeChildren(rootEl,{callback(records){const removedNodes=Array.from(records[0].removedNodes);const removed=removedNodes.find(node=>node.matches("[data-scope=avatar][data-part=image]"));if(removed){send({type:"IMG.UNMOUNT"})}}})}},actions:{invokeOnLoad(ctx2){ctx2.onStatusChange?.({status:"loaded"})},invokeOnError(ctx2){ctx2.onStatusChange?.({status:"error"})},checkImgStatus(ctx2,_evt,{send}){const img=dom.getImageEl(ctx2);if(img?.complete){const type=img.currentSrc?"IMG.LOADED":"IMG.ERROR";send({type,src:"ssr"})}}}})}import{createProps}from"@zag-js/types";import{createSplitProps}from"@zag-js/utils";var props=createProps()(["dir","id","ids","onStatusChange","getRootNode"]);var splitProps=createSplitProps(props);export{anatomy,connect,machine,props,splitProps};
|
|
168
2
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/avatar.anatomy.ts","../src/avatar.dom.ts","../src/avatar.connect.ts","../src/avatar.machine.ts","../src/avatar.props.ts"],"sourcesContent":["import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"avatar\").parts(\"root\", \"image\", \"fallback\")\n\nexport const parts = anatomy.build()\n","import { createScope } from \"@zag-js/dom-query\"\nimport type { MachineContext as Ctx } from \"./avatar.types\"\n\nexport const dom = createScope({\n getRootId: (ctx: Ctx) => ctx.ids?.root ?? `avatar:${ctx.id}`,\n getImageId: (ctx: Ctx) => ctx.ids?.image ?? `avatar:${ctx.id}:image`,\n getFallbackId: (ctx: Ctx) => ctx.ids?.fallback ?? `avatar:${ctx.id}:fallback`,\n\n getRootEl: (ctx: Ctx) => dom.getById(ctx, dom.getRootId(ctx)),\n getImageEl: (ctx: Ctx) => dom.getById<HTMLImageElement>(ctx, dom.getImageId(ctx)),\n})\n","import type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { parts } from \"./avatar.anatomy\"\nimport { dom } from \"./avatar.dom\"\nimport type { MachineApi, Send, State } from \"./avatar.types\"\n\nexport function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): MachineApi<T> {\n const loaded = state.matches(\"loaded\")\n return {\n loaded,\n setSrc(src) {\n send({ type: \"SRC.SET\", src })\n },\n setLoaded() {\n send({ type: \"IMG.LOADED\", src: \"api\" })\n },\n setError() {\n send({ type: \"IMG.ERROR\", src: \"api\" })\n },\n\n rootProps: normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n }),\n\n imageProps: normalize.img({\n ...parts.image.attrs,\n hidden: !loaded,\n dir: state.context.dir,\n id: dom.getImageId(state.context),\n \"data-state\": loaded ? \"visible\" : \"hidden\",\n onLoad() {\n send({ type: \"IMG.LOADED\", src: \"element\" })\n },\n onError() {\n send({ type: \"IMG.ERROR\", src: \"element\" })\n },\n }),\n\n fallbackProps: normalize.element({\n ...parts.fallback.attrs,\n dir: state.context.dir,\n id: dom.getFallbackId(state.context),\n hidden: loaded,\n \"data-state\": loaded ? \"hidden\" : \"visible\",\n }),\n }\n}\n","import { createMachine } from \"@zag-js/core\"\nimport { observeAttributes, observeChildren } from \"@zag-js/dom-query\"\nimport { compact } from \"@zag-js/utils\"\nimport { dom } from \"./avatar.dom\"\nimport type { MachineContext, MachineState, UserDefinedContext } from \"./avatar.types\"\n\nexport function machine(userContext: UserDefinedContext) {\n const ctx = compact(userContext)\n return createMachine<MachineContext, MachineState>(\n {\n id: \"avatar\",\n initial: \"loading\",\n activities: [\"trackImageRemoval\"],\n\n context: ctx,\n\n on: {\n \"SRC.CHANGE\": {\n target: \"loading\",\n },\n \"IMG.UNMOUNT\": {\n target: \"error\",\n },\n },\n\n states: {\n loading: {\n activities: [\"trackSrcChange\"],\n entry: [\"checkImgStatus\"],\n on: {\n \"IMG.LOADED\": {\n target: \"loaded\",\n actions: [\"invokeOnLoad\"],\n },\n \"IMG.ERROR\": {\n target: \"error\",\n actions: [\"invokeOnError\"],\n },\n },\n },\n error: {\n activities: [\"trackSrcChange\"],\n on: {\n \"IMG.LOADED\": {\n target: \"loaded\",\n actions: [\"invokeOnLoad\"],\n },\n },\n },\n loaded: {\n activities: [\"trackSrcChange\"],\n on: {\n \"IMG.ERROR\": {\n target: \"error\",\n actions: [\"invokeOnError\"],\n },\n },\n },\n },\n },\n {\n activities: {\n trackSrcChange(ctx, _evt, { send }) {\n const imageEl = dom.getImageEl(ctx)\n return observeAttributes(imageEl, {\n attributes: [\"src\", \"srcset\"],\n callback() {\n send({ type: \"SRC.CHANGE\" })\n },\n })\n },\n trackImageRemoval(ctx, _evt, { send }) {\n const rootEl = dom.getRootEl(ctx)\n return observeChildren(rootEl, {\n callback(records) {\n const removedNodes = Array.from(records[0].removedNodes) as HTMLElement[]\n const removed = removedNodes.find((node) => node.matches(\"[data-scope=avatar][data-part=image]\"))\n if (removed) {\n send({ type: \"IMG.UNMOUNT\" })\n }\n },\n })\n },\n },\n actions: {\n invokeOnLoad(ctx) {\n ctx.onStatusChange?.({ status: \"loaded\" })\n },\n invokeOnError(ctx) {\n ctx.onStatusChange?.({ status: \"error\" })\n },\n checkImgStatus(ctx, _evt, { send }) {\n const img = dom.getImageEl(ctx)\n if (img?.complete) {\n const type = img.currentSrc ? \"IMG.LOADED\" : \"IMG.ERROR\"\n send({ type, src: \"ssr\" })\n }\n },\n },\n },\n )\n}\n","import { createProps } from \"@zag-js/types\"\nimport { createSplitProps } from \"@zag-js/utils\"\nimport type { UserDefinedContext } from \"./avatar.types\"\n\nexport const props = createProps<UserDefinedContext>()([\"dir\", \"id\", \"ids\", \"onStatusChange\", \"getRootNode\"])\nexport const splitProps = createSplitProps<Partial<UserDefinedContext>>(props)\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/avatar.anatomy.ts","../src/avatar.dom.ts","../src/avatar.connect.ts","../src/avatar.machine.ts","../src/avatar.props.ts"],"sourcesContent":["import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"avatar\").parts(\"root\", \"image\", \"fallback\")\n\nexport const parts = anatomy.build()\n","import { createScope } from \"@zag-js/dom-query\"\nimport type { MachineContext as Ctx } from \"./avatar.types\"\n\nexport const dom = createScope({\n getRootId: (ctx: Ctx) => ctx.ids?.root ?? `avatar:${ctx.id}`,\n getImageId: (ctx: Ctx) => ctx.ids?.image ?? `avatar:${ctx.id}:image`,\n getFallbackId: (ctx: Ctx) => ctx.ids?.fallback ?? `avatar:${ctx.id}:fallback`,\n\n getRootEl: (ctx: Ctx) => dom.getById(ctx, dom.getRootId(ctx)),\n getImageEl: (ctx: Ctx) => dom.getById<HTMLImageElement>(ctx, dom.getImageId(ctx)),\n})\n","import type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { parts } from \"./avatar.anatomy\"\nimport { dom } from \"./avatar.dom\"\nimport type { MachineApi, Send, State } from \"./avatar.types\"\n\nexport function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): MachineApi<T> {\n const loaded = state.matches(\"loaded\")\n return {\n loaded,\n setSrc(src) {\n send({ type: \"SRC.SET\", src })\n },\n setLoaded() {\n send({ type: \"IMG.LOADED\", src: \"api\" })\n },\n setError() {\n send({ type: \"IMG.ERROR\", src: \"api\" })\n },\n\n rootProps: normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n }),\n\n imageProps: normalize.img({\n ...parts.image.attrs,\n hidden: !loaded,\n dir: state.context.dir,\n id: dom.getImageId(state.context),\n \"data-state\": loaded ? \"visible\" : \"hidden\",\n onLoad() {\n send({ type: \"IMG.LOADED\", src: \"element\" })\n },\n onError() {\n send({ type: \"IMG.ERROR\", src: \"element\" })\n },\n }),\n\n fallbackProps: normalize.element({\n ...parts.fallback.attrs,\n dir: state.context.dir,\n id: dom.getFallbackId(state.context),\n hidden: loaded,\n \"data-state\": loaded ? \"hidden\" : \"visible\",\n }),\n }\n}\n","import { createMachine } from \"@zag-js/core\"\nimport { observeAttributes, observeChildren } from \"@zag-js/dom-query\"\nimport { compact } from \"@zag-js/utils\"\nimport { dom } from \"./avatar.dom\"\nimport type { MachineContext, MachineState, UserDefinedContext } from \"./avatar.types\"\n\nexport function machine(userContext: UserDefinedContext) {\n const ctx = compact(userContext)\n return createMachine<MachineContext, MachineState>(\n {\n id: \"avatar\",\n initial: \"loading\",\n activities: [\"trackImageRemoval\"],\n\n context: ctx,\n\n on: {\n \"SRC.CHANGE\": {\n target: \"loading\",\n },\n \"IMG.UNMOUNT\": {\n target: \"error\",\n },\n },\n\n states: {\n loading: {\n activities: [\"trackSrcChange\"],\n entry: [\"checkImgStatus\"],\n on: {\n \"IMG.LOADED\": {\n target: \"loaded\",\n actions: [\"invokeOnLoad\"],\n },\n \"IMG.ERROR\": {\n target: \"error\",\n actions: [\"invokeOnError\"],\n },\n },\n },\n error: {\n activities: [\"trackSrcChange\"],\n on: {\n \"IMG.LOADED\": {\n target: \"loaded\",\n actions: [\"invokeOnLoad\"],\n },\n },\n },\n loaded: {\n activities: [\"trackSrcChange\"],\n on: {\n \"IMG.ERROR\": {\n target: \"error\",\n actions: [\"invokeOnError\"],\n },\n },\n },\n },\n },\n {\n activities: {\n trackSrcChange(ctx, _evt, { send }) {\n const imageEl = dom.getImageEl(ctx)\n return observeAttributes(imageEl, {\n attributes: [\"src\", \"srcset\"],\n callback() {\n send({ type: \"SRC.CHANGE\" })\n },\n })\n },\n trackImageRemoval(ctx, _evt, { send }) {\n const rootEl = dom.getRootEl(ctx)\n return observeChildren(rootEl, {\n callback(records) {\n const removedNodes = Array.from(records[0].removedNodes) as HTMLElement[]\n const removed = removedNodes.find((node) => node.matches(\"[data-scope=avatar][data-part=image]\"))\n if (removed) {\n send({ type: \"IMG.UNMOUNT\" })\n }\n },\n })\n },\n },\n actions: {\n invokeOnLoad(ctx) {\n ctx.onStatusChange?.({ status: \"loaded\" })\n },\n invokeOnError(ctx) {\n ctx.onStatusChange?.({ status: \"error\" })\n },\n checkImgStatus(ctx, _evt, { send }) {\n const img = dom.getImageEl(ctx)\n if (img?.complete) {\n const type = img.currentSrc ? \"IMG.LOADED\" : \"IMG.ERROR\"\n send({ type, src: \"ssr\" })\n }\n },\n },\n },\n )\n}\n","import { createProps } from \"@zag-js/types\"\nimport { createSplitProps } from \"@zag-js/utils\"\nimport type { UserDefinedContext } from \"./avatar.types\"\n\nexport const props = createProps<UserDefinedContext>()([\"dir\", \"id\", \"ids\", \"onStatusChange\", \"getRootNode\"])\nexport const splitProps = createSplitProps<Partial<UserDefinedContext>>(props)\n"],"mappings":"AAAA,OAAS,kBAAqB,kBAEvB,IAAM,QAAU,cAAc,QAAQ,EAAE,MAAM,OAAQ,QAAS,UAAU,EAEzE,IAAM,MAAQ,QAAQ,MAAM,ECJnC,OAAS,gBAAmB,oBAGrB,IAAM,IAAM,YAAY,CAC7B,UAAY,KAAa,IAAI,KAAK,MAAQ,UAAU,IAAI,EAAE,GAC1D,WAAa,KAAa,IAAI,KAAK,OAAS,UAAU,IAAI,EAAE,SAC5D,cAAgB,KAAa,IAAI,KAAK,UAAY,UAAU,IAAI,EAAE,YAElE,UAAY,KAAa,IAAI,QAAQ,IAAK,IAAI,UAAU,GAAG,CAAC,EAC5D,WAAa,KAAa,IAAI,QAA0B,IAAK,IAAI,WAAW,GAAG,CAAC,CAClF,CAAC,ECLM,SAAS,QAA6B,MAAc,KAAY,UAA6C,CAClH,MAAM,OAAS,MAAM,QAAQ,QAAQ,EACrC,MAAO,CACL,OACA,OAAO,IAAK,CACV,KAAK,CAAE,KAAM,UAAW,GAAI,CAAC,CAC/B,EACA,WAAY,CACV,KAAK,CAAE,KAAM,aAAc,IAAK,KAAM,CAAC,CACzC,EACA,UAAW,CACT,KAAK,CAAE,KAAM,YAAa,IAAK,KAAM,CAAC,CACxC,EAEA,UAAW,UAAU,QAAQ,CAC3B,GAAG,MAAM,KAAK,MACd,IAAK,MAAM,QAAQ,IACnB,GAAI,IAAI,UAAU,MAAM,OAAO,CACjC,CAAC,EAED,WAAY,UAAU,IAAI,CACxB,GAAG,MAAM,MAAM,MACf,OAAQ,CAAC,OACT,IAAK,MAAM,QAAQ,IACnB,GAAI,IAAI,WAAW,MAAM,OAAO,EAChC,aAAc,OAAS,UAAY,SACnC,QAAS,CACP,KAAK,CAAE,KAAM,aAAc,IAAK,SAAU,CAAC,CAC7C,EACA,SAAU,CACR,KAAK,CAAE,KAAM,YAAa,IAAK,SAAU,CAAC,CAC5C,CACF,CAAC,EAED,cAAe,UAAU,QAAQ,CAC/B,GAAG,MAAM,SAAS,MAClB,IAAK,MAAM,QAAQ,IACnB,GAAI,IAAI,cAAc,MAAM,OAAO,EACnC,OAAQ,OACR,aAAc,OAAS,SAAW,SACpC,CAAC,CACH,CACF,CC/CA,OAAS,kBAAqB,eAC9B,OAAS,kBAAmB,oBAAuB,oBACnD,OAAS,YAAe,gBAIjB,SAAS,QAAQ,YAAiC,CACvD,MAAM,IAAM,QAAQ,WAAW,EAC/B,OAAO,cACL,CACE,GAAI,SACJ,QAAS,UACT,WAAY,CAAC,mBAAmB,EAEhC,QAAS,IAET,GAAI,CACF,aAAc,CACZ,OAAQ,SACV,EACA,cAAe,CACb,OAAQ,OACV,CACF,EAEA,OAAQ,CACN,QAAS,CACP,WAAY,CAAC,gBAAgB,EAC7B,MAAO,CAAC,gBAAgB,EACxB,GAAI,CACF,aAAc,CACZ,OAAQ,SACR,QAAS,CAAC,cAAc,CAC1B,EACA,YAAa,CACX,OAAQ,QACR,QAAS,CAAC,eAAe,CAC3B,CACF,CACF,EACA,MAAO,CACL,WAAY,CAAC,gBAAgB,EAC7B,GAAI,CACF,aAAc,CACZ,OAAQ,SACR,QAAS,CAAC,cAAc,CAC1B,CACF,CACF,EACA,OAAQ,CACN,WAAY,CAAC,gBAAgB,EAC7B,GAAI,CACF,YAAa,CACX,OAAQ,QACR,QAAS,CAAC,eAAe,CAC3B,CACF,CACF,CACF,CACF,EACA,CACE,WAAY,CACV,eAAeA,KAAK,KAAM,CAAE,IAAK,EAAG,CAClC,MAAM,QAAU,IAAI,WAAWA,IAAG,EAClC,OAAO,kBAAkB,QAAS,CAChC,WAAY,CAAC,MAAO,QAAQ,EAC5B,UAAW,CACT,KAAK,CAAE,KAAM,YAAa,CAAC,CAC7B,CACF,CAAC,CACH,EACA,kBAAkBA,KAAK,KAAM,CAAE,IAAK,EAAG,CACrC,MAAM,OAAS,IAAI,UAAUA,IAAG,EAChC,OAAO,gBAAgB,OAAQ,CAC7B,SAAS,QAAS,CAChB,MAAM,aAAe,MAAM,KAAK,QAAQ,CAAC,EAAE,YAAY,EACvD,MAAM,QAAU,aAAa,KAAM,MAAS,KAAK,QAAQ,sCAAsC,CAAC,EAChG,GAAI,QAAS,CACX,KAAK,CAAE,KAAM,aAAc,CAAC,CAC9B,CACF,CACF,CAAC,CACH,CACF,EACA,QAAS,CACP,aAAaA,KAAK,CAChBA,KAAI,iBAAiB,CAAE,OAAQ,QAAS,CAAC,CAC3C,EACA,cAAcA,KAAK,CACjBA,KAAI,iBAAiB,CAAE,OAAQ,OAAQ,CAAC,CAC1C,EACA,eAAeA,KAAK,KAAM,CAAE,IAAK,EAAG,CAClC,MAAM,IAAM,IAAI,WAAWA,IAAG,EAC9B,GAAI,KAAK,SAAU,CACjB,MAAM,KAAO,IAAI,WAAa,aAAe,YAC7C,KAAK,CAAE,KAAM,IAAK,KAAM,CAAC,CAC3B,CACF,CACF,CACF,CACF,CACF,CCrGA,OAAS,gBAAmB,gBAC5B,OAAS,qBAAwB,gBAG1B,IAAM,MAAQ,YAAgC,EAAE,CAAC,MAAO,KAAM,MAAO,iBAAkB,aAAa,CAAC,EACrG,IAAM,WAAa,iBAA8C,KAAK","names":["ctx"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zag-js/avatar",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.51.0",
|
|
4
4
|
"description": "Core logic for the avatar widget implemented as a state machine",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"js",
|
|
@@ -28,11 +28,11 @@
|
|
|
28
28
|
"url": "https://github.com/chakra-ui/zag/issues"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@zag-js/anatomy": "0.
|
|
32
|
-
"@zag-js/core": "0.
|
|
33
|
-
"@zag-js/dom-query": "0.
|
|
34
|
-
"@zag-js/utils": "0.
|
|
35
|
-
"@zag-js/types": "0.
|
|
31
|
+
"@zag-js/anatomy": "0.51.0",
|
|
32
|
+
"@zag-js/core": "0.51.0",
|
|
33
|
+
"@zag-js/dom-query": "0.51.0",
|
|
34
|
+
"@zag-js/utils": "0.51.0",
|
|
35
|
+
"@zag-js/types": "0.51.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"clean-package": "2.2.0"
|