kiru 0.46.1 → 0.47.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/appContext.d.ts +6 -17
- package/dist/appContext.d.ts.map +1 -1
- package/dist/appContext.js +39 -95
- package/dist/appContext.js.map +1 -1
- package/dist/constants.d.ts +2 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +2 -1
- package/dist/constants.js.map +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +0 -2
- package/dist/context.js.map +1 -1
- package/dist/dom.d.ts.map +1 -1
- package/dist/dom.js +10 -13
- package/dist/dom.js.map +1 -1
- package/dist/hmr.d.ts +1 -2
- package/dist/hmr.d.ts.map +1 -1
- package/dist/hmr.js +0 -2
- package/dist/hmr.js.map +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -20
- package/dist/index.js.map +1 -1
- package/dist/portal.d.ts +2 -5
- package/dist/portal.d.ts.map +1 -1
- package/dist/portal.js +22 -22
- package/dist/portal.js.map +1 -1
- package/dist/profiling.d.ts +1 -1
- package/dist/renderToString.d.ts +1 -1
- package/dist/renderToString.d.ts.map +1 -1
- package/dist/renderToString.js +3 -6
- package/dist/renderToString.js.map +1 -1
- package/dist/scheduler.d.ts +3 -3
- package/dist/scheduler.d.ts.map +1 -1
- package/dist/scheduler.js +52 -68
- package/dist/scheduler.js.map +1 -1
- package/dist/ssr/client.d.ts +1 -2
- package/dist/ssr/client.d.ts.map +1 -1
- package/dist/ssr/client.js +6 -4
- package/dist/ssr/client.js.map +1 -1
- package/dist/ssr/server.d.ts +1 -1
- package/dist/ssr/server.d.ts.map +1 -1
- package/dist/ssr/server.js +24 -27
- package/dist/ssr/server.js.map +1 -1
- package/dist/swr.d.ts +1 -1
- package/dist/swr.d.ts.map +1 -1
- package/dist/swr.js +1 -1
- package/dist/swr.js.map +1 -1
- package/dist/utils.js +1 -1
- package/package.json +1 -1
- package/src/appContext.ts +50 -117
- package/src/constants.ts +2 -0
- package/src/context.ts +0 -1
- package/src/dom.ts +10 -10
- package/src/hmr.ts +1 -3
- package/src/index.ts +0 -40
- package/src/portal.ts +22 -26
- package/src/renderToString.ts +3 -9
- package/src/scheduler.ts +51 -70
- package/src/ssr/client.ts +13 -19
- package/src/ssr/server.ts +25 -35
- package/src/swr.ts +1 -1
- package/src/utils.ts +1 -1
package/dist/swr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swr.js","sourceRoot":"","sources":["../src/swr.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"swr.js","sourceRoot":"","sources":["../src/swr.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EACL,IAAI,EACJ,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,cAAc,GACf,MAAM,YAAY,CAAA;AAwBnB,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QACnE,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;QACzB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;IACtB,CAAC;CACF;AAkED,IAAI,gBAA0B,CAAA;AAC9B,IAAI,SAAS,GAAG,KAAK,CAAA;AAErB,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;IAC3B,gBAAgB,SAAG,MAAM,CAAC,MAAO,CAAC,WAAW,OAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,eACpE,IAAI,GAAG,EAAE,CAAA,CAAA;IAEX,SAAS,GAAG,SAAS,CAAC,MAAM,CAAA;IAC5B,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;QACrC,SAAS,GAAG,IAAI,CAAA;IAClB,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE;QACtC,SAAS,GAAG,KAAK,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF,IAAI,SAAS,GAAkB,IAAI,CAAA;IACnC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;QACnC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACxB,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACpC,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3D,SAAS,GAAG,IAAI,CAAA;QAChB,IAAI,YAAY,GAAG,IAAK;YAAE,OAAM,CAAC,4CAA4C;QAE7E,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACjC,IACE,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC;gBAC5B,KAAK,CAAC,OAAO,CAAC,iBAAiB,KAAK,KAAK;gBACzC,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK,CAAC,EACnE,CAAC;gBACD,OAAM;YACR,CAAC;YAED,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAA;YAC/B,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE;gBACvB,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAA;YAClC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,GAAM,EACN,OAAgC;IAEhC,OAAO;QACL,GAAG;QACH,QAAQ,EAAE,IAAI,MAAM,CAAsB;YACxC,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAI;SACZ,CAAC;QACF,OAAO;QACP,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,UAAU,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;QAC7B,YAAY,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;QAC/B,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,EAAE;KACe,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,GAAW,EACX,OAAqC;IAErC,IAAI,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC;QAAE,OAAM;IAErC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;IACvD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC/C,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACnC,YAAY,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAI,GAAW;IACxC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;IACvD,OAAO,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,GAAM,EACN,OAAgC,EAChC,UAAsB,EAAE;IAExB,IAAI,CAAC,kBAAkB,EAAE;QACvB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAoB,CAAA;IAErE,OAAO,OAAO,CACZ,QAAQ,EACR,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAoB,EACvD,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QAClC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,GAAG,GAAG;oBACT,QAAQ,EAAE;wBACR,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;4BACV,GAAG,EAAE,IAAI,CAAC,MAAM;4BAChB,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAE;yBACrC,CAAC;qBACH;oBACD,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;iBAC5B,CAAA;YACH,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC/C,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAI,CAAC,WAAW,CAAA;gBACpC,IAAI,CAAC,GAAI,CAAC,WAAW,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;gBAEtC,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;wBAC5B,4CAA4C;oBAC9C,CAAC;yBAAM,IACL,KAAK,CAAC,OAAO,KAAK,OAAO;wBACzB,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,EAC3B,CAAC;wBACD,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;wBACvB,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;wBACvB,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;wBACnC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;wBACvC,YAAY,CAAC,KAAK,CAAC,CAAA;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;QACvD,IAAI,KAAuB,CAAA;QAC3B,IAAI,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YACrC,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,OAAO,EAAE,EAAE,CAAA;YAClB,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;YACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;YAEpB,IAAI,UAAU,GAAG,KAAK,CAAA;YACtB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClC,UAAU,GAAG,IAAI,CAAA;gBACjB,KAAK,GAAG,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;gBACzC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;gBAEnC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE;oBAC5B,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;gBAClD,CAAC,CAAC,CAAA;gBAEF,YAAY,CAAC,KAAK,CAAC,CAAA;YACrB,CAAC;YAED,KAAK,KAAL,KAAK,GAAK,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAE,EAAA;YACvC,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAA;YAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAA;oBAC/B,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE;wBACvB,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAA;oBAClC,CAAC,CAAC,CAAA;gBACJ,CAAC;gBAED,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;gBACvB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;oBAC5B,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE;wBAC9C,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC;4BAAE,OAAM;wBACxC,YAAY,CAAC,KAAK,CAAC,CAAA;oBACrB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;gBAC7B,CAAC;YACH,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACd,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE;gBAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBACjB,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBACjC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;oBAC3C,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;gBAChD,CAAC;YACH,CAAC,CAAA;QACH,CAAC;QAED,KAAK,KAAL,KAAK,GAAK,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAE,EAAA;QACvC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;QACpD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAA;QAEhD,MAAM,MAAM,GAA6B,CAAC,QAAQ,EAAE,EAAE;YACpD,UAAU,CAAC,KAAK,GAAG,IAAI,CAAA;YACvB,QAAQ,EAAE;iBACP,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBACb,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;oBACrB,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;oBAC7C,KAAK,CAAC,UAAU,GAAG,IAAI,CAAA;oBACvB,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAA;gBAClC,CAAC;gBACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAA;gBACjC,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;oBAAE,OAAM;gBACnC,QAAQ,CAAC,KAAK,GAAG;oBACf,IAAI;oBACJ,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,IAAI;iBACZ,CAAA;YACH,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACZ,UAAU,CAAC,KAAK,GAAG,KAAK,CAAA;YAC1B,CAAC,CAAC,CAAA;QACN,CAAC,CAAA;QAED,OAAO;YACL,IAAI;YACJ,OAAO;YACP,KAAK;YACL,UAAU;YACV,YAAY;YACZ,MAAM;SACW,CAAA;IACrB,CAAC,CACF,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAI,KAAuB,EAAE,SAAsB;IACtE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAC3B,CAAC,IAAI,EAAE,EAAE;QACP,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;YAC7C,KAAK,CAAC,UAAU,GAAG,IAAI,CAAA;QACzB,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAA;QACvC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YAC7B,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG;gBACrB,IAAI;gBACJ,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,IAAI;aACZ,CAAA;QACH,CAAC;QAED,SAAS,EAAE,EAAE,CAAA;IACf,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;QACR,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG;YACrB,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,IAAI,WAAW,CAAC,KAAK,CAAC;SAC9B,CAAA;QACD,MAAM,UAAU,GAAkB,CAAC,KAAK,CAAC,UAAU,KAAhB,KAAK,CAAC,UAAU,GAAK;YACtD,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,GAAG;SACX,EAAC,CAAA;QACF,IAAI,UAAU,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,QAAQ,CAAC,EAAE,CAAC;YAClE,OAAM;QACR,CAAC;QAED,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YAC1C,UAAU,CAAC,KAAK,EAAE,CAAA;YAClB,UAAU,CAAC,KAAK,IAAI,CAAC,CAAA;YACrB,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAChC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC,CACF,CAAA;AACH,CAAC"}
|
package/dist/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { node, renderMode } from "./globals.js";
|
|
2
2
|
import { $CONTEXT_PROVIDER, $FRAGMENT, $HYDRATION_BOUNDARY, booleanAttributes, FLAG_DELETION, FLAG_HAS_MEMO_ANCESTOR, FLAG_PLACEMENT, FLAG_UPDATE, REGEX_UNIT, } from "./constants.js";
|
|
3
|
-
import { unwrap } from "./signals/
|
|
3
|
+
import { unwrap } from "./signals/index.js";
|
|
4
4
|
import { __DEV__ } from "./env.js";
|
|
5
5
|
export { isVNode, isFragment, isLazy, isMemo, className, isContextProvider, isExoticType, isVNodeDeleted, vNodeContains, willMemoBlockUpdate, getCurrentVNode, getVNodeAppContext, commitSnapshot, traverseApply, postOrderApply, findParent, propToHtmlAttr, propValueToHtmlAttrValue, propsToElementAttributes, styleObjectToString, shallowCompare, deepCompare, sideEffectsEnabled, encodeHtmlEntities, noop, latest, propFilters, safeStringify, };
|
|
6
6
|
const noop = Object.freeze(() => { });
|
package/package.json
CHANGED
package/src/appContext.ts
CHANGED
|
@@ -1,140 +1,73 @@
|
|
|
1
|
+
import { FLAG_STATIC_DOM } from "./constants.js"
|
|
1
2
|
import { createElement } from "./element.js"
|
|
2
3
|
import { __DEV__ } from "./env.js"
|
|
3
|
-
import {
|
|
4
|
-
import { renderMode } from "./globals.js"
|
|
5
|
-
import { hydrationStack } from "./hydration.js"
|
|
6
|
-
import {
|
|
7
|
-
requestDelete,
|
|
8
|
-
requestUpdate,
|
|
9
|
-
flushSync,
|
|
10
|
-
nextIdle,
|
|
11
|
-
} from "./scheduler.js"
|
|
12
|
-
import { generateRandomID } from "./generateId.js"
|
|
4
|
+
import { requestUpdate, flushSync } from "./scheduler.js"
|
|
13
5
|
|
|
14
6
|
type VNode = Kiru.VNode
|
|
15
7
|
|
|
16
8
|
export interface AppContextOptions {
|
|
17
|
-
root?: HTMLElement
|
|
18
|
-
/**
|
|
19
|
-
* @internal
|
|
20
|
-
* Sets the root node type for the app. Used for SSR & rendering without the DOM.
|
|
21
|
-
*/
|
|
22
|
-
rootType?: ({ children }: { children: JSX.Children }) => JSX.Element
|
|
23
9
|
name?: string
|
|
24
10
|
}
|
|
25
11
|
|
|
26
|
-
export interface AppContext
|
|
27
|
-
id:
|
|
12
|
+
export interface AppContext {
|
|
13
|
+
id: number
|
|
28
14
|
name: string
|
|
29
|
-
rootNode
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
mount(): Promise<AppContext<T>>
|
|
33
|
-
unmount(): Promise<AppContext<T>>
|
|
34
|
-
setProps(fn: (oldProps: T) => T): Promise<AppContext<T>>
|
|
15
|
+
rootNode: VNode
|
|
16
|
+
render(children: JSX.Element): void
|
|
17
|
+
unmount(): void
|
|
35
18
|
}
|
|
36
19
|
|
|
37
|
-
|
|
38
|
-
appFunc: (props: T) => JSX.Element,
|
|
39
|
-
appProps = {} as T,
|
|
40
|
-
options?: AppContextOptions
|
|
41
|
-
): AppContext<T> {
|
|
42
|
-
const id = generateRandomID()
|
|
43
|
-
const name = options?.name ?? "App-" + id
|
|
44
|
-
let root = options?.root
|
|
45
|
-
let mounted = false
|
|
46
|
-
let appContext: AppContext<T>
|
|
20
|
+
let appId = 0
|
|
47
21
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
22
|
+
export function mount(
|
|
23
|
+
children: JSX.Element,
|
|
24
|
+
container: HTMLElement,
|
|
25
|
+
options?: AppContextOptions
|
|
26
|
+
): AppContext {
|
|
27
|
+
const rootNode = createElement(container.nodeName.toLowerCase(), {})
|
|
28
|
+
if (__DEV__) {
|
|
29
|
+
if (container.__kiruNode) {
|
|
30
|
+
throw new Error(
|
|
31
|
+
"[kiru]: container in use - call unmount on the previous app first."
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
container.__kiruNode = rootNode
|
|
57
35
|
}
|
|
36
|
+
rootNode.dom = container
|
|
37
|
+
rootNode.flags |= FLAG_STATIC_DOM
|
|
58
38
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if (__DEV__) {
|
|
68
|
-
root.__kiruNode = rootNode
|
|
69
|
-
}
|
|
70
|
-
if (renderMode.current === "hydrate") {
|
|
71
|
-
hydrationStack.captureEvents(root!)
|
|
72
|
-
}
|
|
73
|
-
nextIdle(() => {
|
|
74
|
-
if (renderMode.current === "hydrate") {
|
|
75
|
-
hydrationStack.releaseEvents(root!)
|
|
76
|
-
}
|
|
77
|
-
mounted = true
|
|
78
|
-
if (__DEV__) {
|
|
79
|
-
window.__kiru?.emit("mount", appContext)
|
|
80
|
-
}
|
|
81
|
-
resolve(appContext)
|
|
82
|
-
}, false)
|
|
83
|
-
requestUpdate(rootNode)
|
|
84
|
-
flushSync()
|
|
85
|
-
})
|
|
39
|
+
const id = appId++
|
|
40
|
+
const name = options?.name ?? `App-${id}`
|
|
41
|
+
const appContext: AppContext = {
|
|
42
|
+
id,
|
|
43
|
+
name,
|
|
44
|
+
rootNode,
|
|
45
|
+
render,
|
|
46
|
+
unmount,
|
|
86
47
|
}
|
|
87
48
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
requestDelete(rootNode.child)
|
|
49
|
+
if (__DEV__) {
|
|
50
|
+
rootNode.app = appContext
|
|
51
|
+
window.__kiru?.emit("mount", appContext)
|
|
52
|
+
}
|
|
93
53
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
window.__kiru?.emit("unmount", appContext)
|
|
99
|
-
}
|
|
100
|
-
resolve(appContext)
|
|
101
|
-
})
|
|
102
|
-
})
|
|
54
|
+
function render(children: JSX.Element) {
|
|
55
|
+
rootNode.props.children = children
|
|
56
|
+
requestUpdate(rootNode)
|
|
57
|
+
flushSync()
|
|
103
58
|
}
|
|
104
59
|
|
|
105
|
-
function
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
...Object.assign(rest, fn(rest as T)),
|
|
115
|
-
children,
|
|
116
|
-
ref,
|
|
117
|
-
key,
|
|
118
|
-
}
|
|
119
|
-
requestUpdate(rootChild)
|
|
120
|
-
nextIdle(() => resolve(appContext))
|
|
121
|
-
})
|
|
60
|
+
function unmount() {
|
|
61
|
+
rootNode.props.children = null
|
|
62
|
+
requestUpdate(rootNode)
|
|
63
|
+
flushSync()
|
|
64
|
+
if (__DEV__) {
|
|
65
|
+
delete container.__kiruNode
|
|
66
|
+
delete rootNode.app
|
|
67
|
+
window.__kiru?.emit("unmount", appContext)
|
|
68
|
+
}
|
|
122
69
|
}
|
|
123
70
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
name,
|
|
127
|
-
get rootNode() {
|
|
128
|
-
return rootNode
|
|
129
|
-
},
|
|
130
|
-
get root() {
|
|
131
|
-
return root
|
|
132
|
-
},
|
|
133
|
-
get mounted() {
|
|
134
|
-
return mounted
|
|
135
|
-
},
|
|
136
|
-
mount,
|
|
137
|
-
unmount,
|
|
138
|
-
setProps,
|
|
139
|
-
})
|
|
71
|
+
render(children)
|
|
72
|
+
return appContext
|
|
140
73
|
}
|
package/src/constants.ts
CHANGED
|
@@ -13,6 +13,7 @@ export {
|
|
|
13
13
|
FLAG_PLACEMENT,
|
|
14
14
|
FLAG_DELETION,
|
|
15
15
|
FLAG_HAS_MEMO_ANCESTOR,
|
|
16
|
+
FLAG_STATIC_DOM,
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
export { voidElements, svgTags, booleanAttributes }
|
|
@@ -32,6 +33,7 @@ const FLAG_UPDATE = 1 << 1
|
|
|
32
33
|
const FLAG_PLACEMENT = 1 << 2
|
|
33
34
|
const FLAG_DELETION = 1 << 3
|
|
34
35
|
const FLAG_HAS_MEMO_ANCESTOR = 1 << 4
|
|
36
|
+
const FLAG_STATIC_DOM = 1 << 5
|
|
35
37
|
|
|
36
38
|
const REGEX_UNIT = {
|
|
37
39
|
AMP_G: /&/g,
|
package/src/context.ts
CHANGED
|
@@ -31,7 +31,6 @@ export function createContext<T>(defaultValue: T): Kiru.Context<T> {
|
|
|
31
31
|
inject: (prev) => {
|
|
32
32
|
const newProvider = ctx.Provider
|
|
33
33
|
window.__kiru!.apps.forEach((ctx) => {
|
|
34
|
-
if (!ctx.mounted || !ctx.rootNode) return
|
|
35
34
|
traverseApply(ctx.rootNode, (vNode) => {
|
|
36
35
|
if (vNode.type === prev.Provider) {
|
|
37
36
|
vNode.type = newProvider
|
package/src/dom.ts
CHANGED
|
@@ -11,13 +11,13 @@ import {
|
|
|
11
11
|
FLAG_DELETION,
|
|
12
12
|
FLAG_PLACEMENT,
|
|
13
13
|
FLAG_UPDATE,
|
|
14
|
+
FLAG_STATIC_DOM,
|
|
14
15
|
svgTags,
|
|
15
16
|
} from "./constants.js"
|
|
16
17
|
import { Signal, unwrap } from "./signals/index.js"
|
|
17
18
|
import { renderMode } from "./globals.js"
|
|
18
19
|
import { hydrationStack } from "./hydration.js"
|
|
19
20
|
import { StyleObject } from "./types.dom.js"
|
|
20
|
-
import { isPortal } from "./portal.js"
|
|
21
21
|
import { __DEV__ } from "./env.js"
|
|
22
22
|
import { KiruError } from "./error.js"
|
|
23
23
|
import type {
|
|
@@ -146,7 +146,6 @@ const vNodeToWrappedFocusEventHandlersMap = new WeakMap<
|
|
|
146
146
|
>()
|
|
147
147
|
|
|
148
148
|
function updateDom(vNode: VNode) {
|
|
149
|
-
if (isPortal(vNode)) return
|
|
150
149
|
const dom = vNode.dom as SomeDom
|
|
151
150
|
const prevProps: Record<string, any> = vNode.prev?.props ?? {}
|
|
152
151
|
const nextProps: Record<string, any> = vNode.props ?? {}
|
|
@@ -363,7 +362,7 @@ function hydrateDom(vNode: VNode) {
|
|
|
363
362
|
})
|
|
364
363
|
}
|
|
365
364
|
vNode.dom = dom
|
|
366
|
-
if (vNode.type !== "#text") {
|
|
365
|
+
if (vNode.type !== "#text" && !(vNode.flags & FLAG_STATIC_DOM)) {
|
|
367
366
|
updateDom(vNode)
|
|
368
367
|
return
|
|
369
368
|
}
|
|
@@ -571,8 +570,8 @@ function getNextSiblingDom(vNode: VNode, parent: ElementVNode): MaybeDom {
|
|
|
571
570
|
let sibling = node.sibling
|
|
572
571
|
|
|
573
572
|
while (sibling) {
|
|
574
|
-
// Skip unmounted, to-be-placed &
|
|
575
|
-
if (!(sibling.flags & FLAG_PLACEMENT
|
|
573
|
+
// Skip unmounted, to-be-placed & static nodes
|
|
574
|
+
if (!(sibling.flags & (FLAG_PLACEMENT | FLAG_STATIC_DOM))) {
|
|
576
575
|
// Descend into the child to find host dom
|
|
577
576
|
const dom = findFirstHostDom(sibling)
|
|
578
577
|
if (dom?.isConnected) return dom
|
|
@@ -582,7 +581,7 @@ function getNextSiblingDom(vNode: VNode, parent: ElementVNode): MaybeDom {
|
|
|
582
581
|
|
|
583
582
|
// Move up to parent — but don't escape portal boundary
|
|
584
583
|
node = node.parent
|
|
585
|
-
if (!node ||
|
|
584
|
+
if (!node || node.flags & FLAG_STATIC_DOM || node === parent) {
|
|
586
585
|
return
|
|
587
586
|
}
|
|
588
587
|
}
|
|
@@ -595,7 +594,7 @@ function findFirstHostDom(vNode: VNode): MaybeDom {
|
|
|
595
594
|
|
|
596
595
|
while (node) {
|
|
597
596
|
if (node.dom) return node.dom
|
|
598
|
-
if (
|
|
597
|
+
if (node.flags & FLAG_STATIC_DOM) return // Don't descend into portals
|
|
599
598
|
node = node.child
|
|
600
599
|
}
|
|
601
600
|
return
|
|
@@ -656,7 +655,9 @@ function commitWork(vNode: VNode) {
|
|
|
656
655
|
currentHostNode = { node: getDomParent(node) }
|
|
657
656
|
hostNodes.push(currentHostNode)
|
|
658
657
|
}
|
|
659
|
-
|
|
658
|
+
if (!(node.flags & FLAG_STATIC_DOM)) {
|
|
659
|
+
commitDom(node as DomVNode, currentHostNode, inheritsPlacement)
|
|
660
|
+
}
|
|
660
661
|
}
|
|
661
662
|
commitSnapshot(node)
|
|
662
663
|
},
|
|
@@ -680,7 +681,6 @@ function commitDom(
|
|
|
680
681
|
hostNode: HostNode,
|
|
681
682
|
inheritsPlacement: boolean
|
|
682
683
|
) {
|
|
683
|
-
if (isPortal(vNode)) return
|
|
684
684
|
if (
|
|
685
685
|
inheritsPlacement ||
|
|
686
686
|
!vNode.dom.isConnected ||
|
|
@@ -720,7 +720,7 @@ function commitDeletion(vNode: VNode) {
|
|
|
720
720
|
|
|
721
721
|
if (dom) {
|
|
722
722
|
if (ref) setDomRef(ref as Kiru.Ref<SomeDom>, null)
|
|
723
|
-
if (dom.isConnected && !
|
|
723
|
+
if (dom.isConnected && !(node.flags & FLAG_STATIC_DOM)) {
|
|
724
724
|
dom.remove()
|
|
725
725
|
}
|
|
726
726
|
delete node.dom
|
package/src/hmr.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import type { Store } from "./store"
|
|
2
|
-
import type { WatchEffect } from "./signals/watch"
|
|
3
2
|
import { $HMR_ACCEPT } from "./constants.js"
|
|
4
3
|
import { __DEV__ } from "./env.js"
|
|
5
4
|
import { traverseApply } from "./utils.js"
|
|
6
5
|
import { requestUpdate } from "./scheduler.js"
|
|
7
|
-
import { Signal } from "./signals/index.js"
|
|
6
|
+
import { Signal, type WatchEffect } from "./signals/index.js"
|
|
8
7
|
import type { AppContext } from "./appContext"
|
|
9
8
|
|
|
10
9
|
export type HMRAccept<T = {}> = {
|
|
@@ -119,7 +118,6 @@ export function createHMRContext() {
|
|
|
119
118
|
}
|
|
120
119
|
if (oldEntry.type === "component" && newEntry.type === "component") {
|
|
121
120
|
window.__kiru!.apps.forEach((ctx) => {
|
|
122
|
-
if (!ctx.mounted || !ctx.rootNode) return
|
|
123
121
|
traverseApply(ctx.rootNode, (vNode) => {
|
|
124
122
|
if (vNode.type === oldEntry.value) {
|
|
125
123
|
vNode.type = newEntry.value as any
|
package/src/index.ts
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createAppContext,
|
|
3
|
-
type AppContext,
|
|
4
|
-
type AppContextOptions,
|
|
5
|
-
} from "./appContext.js"
|
|
6
1
|
import { createKiruGlobalContext } from "./globalContext.js"
|
|
7
2
|
import { __DEV__ } from "./env.js"
|
|
8
|
-
import { KiruError } from "./error.js"
|
|
9
3
|
|
|
10
4
|
export type * from "./types"
|
|
11
5
|
export * from "./appContext.js"
|
|
@@ -25,37 +19,3 @@ export * from "./transition.js"
|
|
|
25
19
|
if ("window" in globalThis) {
|
|
26
20
|
globalThis.window.__kiru ??= createKiruGlobalContext()
|
|
27
21
|
}
|
|
28
|
-
|
|
29
|
-
export function mount<T extends Record<string, unknown>>(
|
|
30
|
-
appFunc: (props: T) => JSX.Element,
|
|
31
|
-
options: AppContextOptions,
|
|
32
|
-
appProps?: T
|
|
33
|
-
): Promise<AppContext<T>>
|
|
34
|
-
|
|
35
|
-
export function mount<T extends Record<string, unknown>>(
|
|
36
|
-
appFunc: (props: T) => JSX.Element,
|
|
37
|
-
root: HTMLElement,
|
|
38
|
-
appProps?: T
|
|
39
|
-
): Promise<AppContext<T>>
|
|
40
|
-
|
|
41
|
-
export function mount<T extends Record<string, unknown>>(
|
|
42
|
-
appFunc: (props: T) => JSX.Element,
|
|
43
|
-
optionsOrRoot: HTMLElement | AppContextOptions,
|
|
44
|
-
appProps = {} as T
|
|
45
|
-
): Promise<AppContext<T>> {
|
|
46
|
-
let root: HTMLElement, opts: AppContextOptions | undefined
|
|
47
|
-
if (optionsOrRoot instanceof HTMLElement) {
|
|
48
|
-
root = optionsOrRoot
|
|
49
|
-
opts = { root }
|
|
50
|
-
} else {
|
|
51
|
-
opts = optionsOrRoot
|
|
52
|
-
root = optionsOrRoot.root!
|
|
53
|
-
if (__DEV__) {
|
|
54
|
-
if (!(root instanceof HTMLElement)) {
|
|
55
|
-
throw new KiruError("Root node must be an HTMLElement")
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return createAppContext<T>(appFunc, appProps, opts).mount()
|
|
61
|
-
}
|
package/src/portal.ts
CHANGED
|
@@ -1,42 +1,38 @@
|
|
|
1
|
+
import { FLAG_STATIC_DOM } from "./constants.js"
|
|
1
2
|
import { __DEV__ } from "./env.js"
|
|
2
3
|
import { KiruError } from "./error.js"
|
|
3
4
|
import { renderMode } from "./globals.js"
|
|
4
5
|
import { useVNode } from "./hooks/utils.js"
|
|
5
6
|
import { nextIdle, requestUpdate } from "./scheduler.js"
|
|
6
7
|
|
|
7
|
-
export { Portal, isPortal }
|
|
8
|
-
|
|
9
8
|
type PortalProps = {
|
|
10
9
|
children?: JSX.Children
|
|
11
10
|
container: HTMLElement | (() => HTMLElement)
|
|
12
11
|
}
|
|
13
12
|
|
|
14
|
-
function Portal({ children, container }: PortalProps) {
|
|
13
|
+
export function Portal({ children, container }: PortalProps) {
|
|
15
14
|
const vNode = useVNode()
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
if (!vNode.dom) {
|
|
16
|
+
vNode.flags |= FLAG_STATIC_DOM
|
|
17
|
+
switch (renderMode.current) {
|
|
18
|
+
case "dom":
|
|
19
|
+
vNode.dom = typeof container === "function" ? container() : container
|
|
20
|
+
if (!(vNode.dom instanceof HTMLElement)) {
|
|
21
|
+
if (__DEV__) {
|
|
22
|
+
throw new KiruError({
|
|
23
|
+
message: `Invalid portal container, expected HTMLElement, got ${vNode.dom}`,
|
|
24
|
+
vNode: vNode,
|
|
25
|
+
})
|
|
26
|
+
}
|
|
27
|
+
return null
|
|
25
28
|
}
|
|
29
|
+
return children
|
|
30
|
+
case "hydrate":
|
|
31
|
+
nextIdle(() => requestUpdate(vNode))
|
|
32
|
+
case "stream":
|
|
33
|
+
case "string":
|
|
26
34
|
return null
|
|
27
|
-
|
|
28
|
-
return children
|
|
29
|
-
case "hydrate":
|
|
30
|
-
nextIdle(() => requestUpdate(vNode))
|
|
31
|
-
return null
|
|
32
|
-
case "stream":
|
|
33
|
-
case "string":
|
|
34
|
-
return null
|
|
35
|
+
}
|
|
35
36
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
function isPortal(
|
|
39
|
-
node: Kiru.VNode
|
|
40
|
-
): node is Kiru.VNode & { type: typeof Portal } {
|
|
41
|
-
return node.type === Portal
|
|
37
|
+
return children
|
|
42
38
|
}
|
package/src/renderToString.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { node, renderMode } from "./globals.js"
|
|
2
|
-
import { createAppContext } from "./appContext.js"
|
|
3
2
|
import { Fragment } from "./element.js"
|
|
4
3
|
import {
|
|
5
4
|
isVNode,
|
|
@@ -13,16 +12,11 @@ import { assertValidElementProps } from "./props.js"
|
|
|
13
12
|
import { HYDRATION_BOUNDARY_MARKER } from "./ssr/hydrationBoundary.js"
|
|
14
13
|
import { __DEV__ } from "./env.js"
|
|
15
14
|
|
|
16
|
-
export function renderToString
|
|
17
|
-
appFunc: (props: T) => JSX.Element,
|
|
18
|
-
appProps = {} as T
|
|
19
|
-
) {
|
|
15
|
+
export function renderToString(element: JSX.Element) {
|
|
20
16
|
const prev = renderMode.current
|
|
21
17
|
renderMode.current = "string"
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
})
|
|
25
|
-
const res = renderToString_internal(ctx.rootNode, null, 0)
|
|
18
|
+
const rootNode = Fragment({ children: element })
|
|
19
|
+
const res = renderToString_internal(rootNode, null, 0)
|
|
26
20
|
renderMode.current = prev
|
|
27
21
|
return res
|
|
28
22
|
}
|