@novely/core 0.40.0 → 0.40.2

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.d.ts CHANGED
@@ -587,6 +587,12 @@ type CustomHandlerFunctionParameters<L extends string, S extends State> = {
587
587
  * ```
588
588
  */
589
589
  getDomNodes: CustomHandlerFunctionGetFn;
590
+ /**
591
+ * Function to get current Path. Path can be mutated. Can be helpful when making complex custom actions.
592
+ *
593
+ * Only use it when you know what you do
594
+ */
595
+ getPath: () => Path;
590
596
  /**
591
597
  * Renderer Context
592
598
  */
@@ -218,15 +218,20 @@ var Novely = (() => {
218
218
  loadImageFormatsSupport();
219
219
 
220
220
  // src/asset.ts
221
- var getType = memoize((extensions) => {
222
- if (extensions.every((extension) => HOWLER_SUPPORTED_FILE_FORMATS.has(extension))) {
223
- return "audio";
224
- }
225
- if (extensions.every((extension) => SUPPORTED_IMAGE_FILE_FORMATS.has(extension))) {
226
- return "image";
221
+ var getType = memoize(
222
+ (extensions) => {
223
+ if (extensions.every((extension) => HOWLER_SUPPORTED_FILE_FORMATS.has(extension))) {
224
+ return "audio";
225
+ }
226
+ if (extensions.every((extension) => SUPPORTED_IMAGE_FILE_FORMATS.has(extension))) {
227
+ return "image";
228
+ }
229
+ throw extensions;
230
+ },
231
+ {
232
+ getCacheKey: (extensions) => extensions.join("~")
227
233
  }
228
- throw extensions;
229
- });
234
+ );
230
235
  var SUPPORT_MAPS = {
231
236
  "image": supportsMap2,
232
237
  "audio": supportsMap
@@ -1004,7 +1009,7 @@ var Novely = (() => {
1004
1009
  CUSTOM_ACTION_MAP.set(ctx.id + fn.key, holder);
1005
1010
  return holder;
1006
1011
  };
1007
- var handleCustomAction = (ctx, fn, { lang, state, setMountElement, setClear, remove: renderersRemove }) => {
1012
+ var handleCustomAction = (ctx, fn, { lang, state, setMountElement, setClear, remove: renderersRemove, getStack: getStack2 }) => {
1008
1013
  const holder = getCustomActionHolder(ctx, fn);
1009
1014
  const flags = {
1010
1015
  ...ctx.meta
@@ -1042,6 +1047,10 @@ var Novely = (() => {
1042
1047
  holder.cleanup();
1043
1048
  renderersRemove();
1044
1049
  };
1050
+ const stack = getStack2(ctx);
1051
+ const getPath = () => {
1052
+ return stack.value[0];
1053
+ };
1045
1054
  return fn({
1046
1055
  flags,
1047
1056
  lang,
@@ -1050,7 +1059,8 @@ var Novely = (() => {
1050
1059
  clear,
1051
1060
  remove,
1052
1061
  rendererContext: ctx,
1053
- getDomNodes
1062
+ getDomNodes,
1063
+ getPath
1054
1064
  });
1055
1065
  };
1056
1066
 
@@ -2019,7 +2029,8 @@ var Novely = (() => {
2019
2029
  const result = handleCustomAction(ctx, fn, {
2020
2030
  ...ctx.custom(fn),
2021
2031
  state,
2022
- lang
2032
+ lang,
2033
+ getStack: useStack
2023
2034
  });
2024
2035
  const next2 = () => {
2025
2036
  if (fn.requireUserAction && !ctx.meta.preview) {