@prismicio/simulator 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -25,6 +25,13 @@ Preview and develop [Prismic][prismic] slices fast with minimal configuration.
25
25
 
26
26
  ## Install
27
27
 
28
+ > **Warning**
29
+ >
30
+ > This is probably not the package you're looking for. For dedicated framework integrations, check out:
31
+ > - [@slicemachine/adapter-next](https://prismic.io/docs/technical-reference/slicemachine-adapter-next)
32
+ > - [@slicemachine/adapter-nuxt](https://prismic.io/docs/technical-reference/slicemachine-adapter-nuxt)
33
+ > - [@slicemachine/adapter-nuxt2](https://prismic.io/docs/technical-reference/slicemachine-adapter-nuxt2)
34
+
28
35
  ```bash
29
36
  npm install @prismicio/simulator
30
37
  ```
@@ -1 +1 @@
1
- {"version":3,"file":"SimulatorAPI.cjs","sources":["../../src/SimulatorAPI.ts"],"sourcesContent":["import {\n\tAPIRequestType,\n\tAPITransactions,\n\tClientRequestType,\n\tClientTransactions,\n} from \"./types\";\n\nimport {\n\tAllChannelReceiverOptions,\n\tChannelReceiver,\n\tTransactionMethod,\n\tTransactionsHandlers,\n\tTransactionsMethods,\n} from \"./channel\";\n\nexport type SimulatorAPIOptions = {\n\tactiveSliceAPI: boolean;\n\tsliceZoneSizeAPI: boolean;\n};\n\nexport const simulatorAPIDefaultOptions: Partial<AllChannelReceiverOptions> &\n\tSimulatorAPIOptions = {\n\trequestIDPrefix: \"api-\",\n\tactiveSliceAPI: false,\n\tsliceZoneSizeAPI: false,\n};\n\nexport class SimulatorAPI\n\textends ChannelReceiver<ClientTransactions, SimulatorAPIOptions>\n\timplements TransactionsMethods<APITransactions>\n{\n\tconstructor(\n\t\trequestHandlers: Omit<\n\t\t\tTransactionsHandlers<ClientTransactions>,\n\t\t\tClientRequestType.Ping\n\t\t> &\n\t\t\tPartial<\n\t\t\t\tPick<TransactionsHandlers<ClientTransactions>, ClientRequestType.Ping>\n\t\t\t>,\n\t\toptions?: Partial<AllChannelReceiverOptions & SimulatorAPIOptions>,\n\t) {\n\t\t// True if `options.debug` is true or `debug=true` is among query parameters\n\t\tconst debug =\n\t\t\toptions?.debug ||\n\t\t\t/[?&]debug=true/i.test(decodeURIComponent(window.location.search));\n\n\t\tsuper(\n\t\t\t{\n\t\t\t\t[ClientRequestType.Ping]: (_req, res) => {\n\t\t\t\t\treturn res.success(\"pong\");\n\t\t\t\t},\n\t\t\t\t...requestHandlers,\n\t\t\t},\n\t\t\t{\n\t\t\t\t...simulatorAPIDefaultOptions,\n\t\t\t\t...options,\n\t\t\t\tdebug,\n\t\t\t},\n\t\t);\n\n\t\t// Append API to window object\n\t\tif (debug) {\n\t\t\ttype APIWindow = typeof window & {\n\t\t\t\tprismic: { sliceSimulator?: { api?: SimulatorAPI[] } };\n\t\t\t};\n\n\t\t\t(window as APIWindow).prismic ||= {};\n\t\t\t(window as APIWindow).prismic.sliceSimulator ||= {};\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t(window as APIWindow).prismic.sliceSimulator!.api ||= [];\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t(window as APIWindow).prismic.sliceSimulator!.api!.push(this);\n\t\t}\n\t}\n\n\t[APIRequestType.SetActiveSlice]: TransactionMethod<\n\t\tAPITransactions[APIRequestType.SetActiveSlice]\n\t> = async (data) => {\n\t\treturn await this.postFormattedRequest(APIRequestType.SetActiveSlice, data);\n\t};\n\n\t[APIRequestType.SetSliceZoneSize]: TransactionMethod<\n\t\tAPITransactions[APIRequestType.SetSliceZoneSize]\n\t> = async (data) => {\n\t\treturn await this.postFormattedRequest(\n\t\t\tAPIRequestType.SetSliceZoneSize,\n\t\t\tdata,\n\t\t);\n\t};\n}\n"],"names":["ChannelReceiver","ClientRequestType","APIRequestType","_a","_b"],"mappings":";;;;;;;;;;;;;AAoBO,MAAM,6BACU;AAAA,EACtB,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,kBAAkB;;AAGb,MAAO,qBACJA,gBAAAA,gBAAwD;AAAA,EAGhE,YACC,iBAOA,SAAkE;;AAG5D,UAAA,SACL,mCAAS,UACT,kBAAkB,KAAK,mBAAmB,OAAO,SAAS,MAAM,CAAC;AAGjE,UAAA;AAAA,MACC,CAACC,wBAAkB,IAAI,GAAG,CAAC,MAAM,QAAO;AAChC,eAAA,IAAI,QAAQ,MAAM;AAAA,MAC1B;AAAA,MACA,GAAG;AAAA,IAAA,GAEJ;AAAA,MACC,GAAG;AAAA,MACH,GAAG;AAAA,MACH;AAAA,IAAA,CACA;AAkBH,wBAACC,IAEG,OAAO,SAAQ;AAClB,aAAO,MAAM,KAAK,qBAAqBA,MAAA,eAAe,gBAAgB,IAAI;AAAA,IAAA;AAG3E,wBAACA,IAEG,OAAO,SAAQ;AAClB,aAAO,MAAM,KAAK,qBACjBA,MAAA,eAAe,kBACf,IAAI;AAAA,IAAA;AAzBL,QAAI,OAAO;AAKT,aAAqB,YAArB,OAAqB,UAAY;AACZ,OAAAC,MAAA,OAAA,SAAQ,mBAARA,IAAQ,iBAAmB;AAE3B,OAAAC,MAAA,OAAA,QAAQ,gBAAgB,QAAxBA,IAAwB,MAAQ,CAAA;AAErD,aAAqB,QAAQ,eAAgB,IAAK,KAAK,IAAI;AAAA,IAC5D;AAAA,EACF;AAgBA;AAdCF,WAAA,eAAe,gBAMfA,WAAA,eAAe;;;"}
1
+ {"version":3,"file":"SimulatorAPI.cjs","sources":["../../src/SimulatorAPI.ts"],"sourcesContent":["import {\n\tAPIRequestType,\n\tAPITransactions,\n\tClientRequestType,\n\tClientTransactions,\n} from \"./types\";\n\nimport {\n\tAllChannelReceiverOptions,\n\tChannelReceiver,\n\tTransactionMethod,\n\tTransactionsHandlers,\n\tTransactionsMethods,\n} from \"./channel\";\n\nexport type SimulatorAPIOptions = {\n\tactiveSliceAPI: boolean;\n\tsliceZoneSizeAPI: boolean;\n};\n\nexport const simulatorAPIDefaultOptions: Partial<AllChannelReceiverOptions> &\n\tSimulatorAPIOptions = {\n\trequestIDPrefix: \"api-\",\n\tactiveSliceAPI: false,\n\tsliceZoneSizeAPI: false,\n};\n\nexport class SimulatorAPI\n\textends ChannelReceiver<ClientTransactions, SimulatorAPIOptions>\n\timplements TransactionsMethods<APITransactions>\n{\n\tconstructor(\n\t\trequestHandlers: Omit<\n\t\t\tTransactionsHandlers<ClientTransactions>,\n\t\t\tClientRequestType.Ping\n\t\t> &\n\t\t\tPartial<\n\t\t\t\tPick<TransactionsHandlers<ClientTransactions>, ClientRequestType.Ping>\n\t\t\t>,\n\t\toptions?: Partial<AllChannelReceiverOptions & SimulatorAPIOptions>,\n\t) {\n\t\t// True if `options.debug` is true or `debug=true` is among query parameters\n\t\tconst debug =\n\t\t\toptions?.debug ||\n\t\t\t/[?&]debug=true/i.test(decodeURIComponent(window.location.search));\n\n\t\tsuper(\n\t\t\t{\n\t\t\t\t[ClientRequestType.Ping]: (_req, res) => {\n\t\t\t\t\treturn res.success(\"pong\");\n\t\t\t\t},\n\t\t\t\t...requestHandlers,\n\t\t\t},\n\t\t\t{\n\t\t\t\t...simulatorAPIDefaultOptions,\n\t\t\t\t...options,\n\t\t\t\tdebug,\n\t\t\t},\n\t\t);\n\n\t\t// Append API to window object\n\t\tif (debug) {\n\t\t\twindow.prismic ||= {};\n\t\t\twindow.prismic.sliceSimulator ||= {};\n\t\t\twindow.prismic.sliceSimulator.api ||= [];\n\t\t\twindow.prismic.sliceSimulator.api.push(this);\n\t\t}\n\t}\n\n\t[APIRequestType.SetActiveSlice]: TransactionMethod<\n\t\tAPITransactions[APIRequestType.SetActiveSlice]\n\t> = async (data) => {\n\t\treturn await this.postFormattedRequest(APIRequestType.SetActiveSlice, data);\n\t};\n\n\t[APIRequestType.SetSliceZoneSize]: TransactionMethod<\n\t\tAPITransactions[APIRequestType.SetSliceZoneSize]\n\t> = async (data) => {\n\t\treturn await this.postFormattedRequest(\n\t\t\tAPIRequestType.SetSliceZoneSize,\n\t\t\tdata,\n\t\t);\n\t};\n}\n"],"names":["ChannelReceiver","ClientRequestType","APIRequestType","_a","_b"],"mappings":";;;;;;;;;;;;;AAoBO,MAAM,6BACU;AAAA,EACtB,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,kBAAkB;;AAGb,MAAO,qBACJA,gBAAAA,gBAAwD;AAAA,EAGhE,YACC,iBAOA,SAAkE;;AAG5D,UAAA,SACL,mCAAS,UACT,kBAAkB,KAAK,mBAAmB,OAAO,SAAS,MAAM,CAAC;AAGjE,UAAA;AAAA,MACC,CAACC,wBAAkB,IAAI,GAAG,CAAC,MAAM,QAAO;AAChC,eAAA,IAAI,QAAQ,MAAM;AAAA,MAC1B;AAAA,MACA,GAAG;AAAA,IAAA,GAEJ;AAAA,MACC,GAAG;AAAA,MACH,GAAG;AAAA,MACH;AAAA,IAAA,CACA;AAYH,wBAACC,IAEG,OAAO,SAAQ;AAClB,aAAO,MAAM,KAAK,qBAAqBA,MAAA,eAAe,gBAAgB,IAAI;AAAA,IAAA;AAG3E,wBAACA,IAEG,OAAO,SAAQ;AAClB,aAAO,MAAM,KAAK,qBACjBA,MAAA,eAAe,kBACf,IAAI;AAAA,IAAA;AAnBL,QAAI,OAAO;AACV,aAAO,YAAP,OAAO,UAAY;AACZ,OAAAC,MAAA,OAAA,SAAQ,mBAARA,IAAQ,iBAAmB;AAC3B,OAAAC,MAAA,OAAA,QAAQ,gBAAe,QAAvBA,IAAuB,MAAQ,CAAA;AACtC,aAAO,QAAQ,eAAe,IAAI,KAAK,IAAI;AAAA,IAC3C;AAAA,EACF;AAgBA;AAdCF,WAAA,eAAe,gBAMfA,WAAA,eAAe;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SimulatorAPI.js","sources":["../../src/SimulatorAPI.ts"],"sourcesContent":["import {\n\tAPIRequestType,\n\tAPITransactions,\n\tClientRequestType,\n\tClientTransactions,\n} from \"./types\";\n\nimport {\n\tAllChannelReceiverOptions,\n\tChannelReceiver,\n\tTransactionMethod,\n\tTransactionsHandlers,\n\tTransactionsMethods,\n} from \"./channel\";\n\nexport type SimulatorAPIOptions = {\n\tactiveSliceAPI: boolean;\n\tsliceZoneSizeAPI: boolean;\n};\n\nexport const simulatorAPIDefaultOptions: Partial<AllChannelReceiverOptions> &\n\tSimulatorAPIOptions = {\n\trequestIDPrefix: \"api-\",\n\tactiveSliceAPI: false,\n\tsliceZoneSizeAPI: false,\n};\n\nexport class SimulatorAPI\n\textends ChannelReceiver<ClientTransactions, SimulatorAPIOptions>\n\timplements TransactionsMethods<APITransactions>\n{\n\tconstructor(\n\t\trequestHandlers: Omit<\n\t\t\tTransactionsHandlers<ClientTransactions>,\n\t\t\tClientRequestType.Ping\n\t\t> &\n\t\t\tPartial<\n\t\t\t\tPick<TransactionsHandlers<ClientTransactions>, ClientRequestType.Ping>\n\t\t\t>,\n\t\toptions?: Partial<AllChannelReceiverOptions & SimulatorAPIOptions>,\n\t) {\n\t\t// True if `options.debug` is true or `debug=true` is among query parameters\n\t\tconst debug =\n\t\t\toptions?.debug ||\n\t\t\t/[?&]debug=true/i.test(decodeURIComponent(window.location.search));\n\n\t\tsuper(\n\t\t\t{\n\t\t\t\t[ClientRequestType.Ping]: (_req, res) => {\n\t\t\t\t\treturn res.success(\"pong\");\n\t\t\t\t},\n\t\t\t\t...requestHandlers,\n\t\t\t},\n\t\t\t{\n\t\t\t\t...simulatorAPIDefaultOptions,\n\t\t\t\t...options,\n\t\t\t\tdebug,\n\t\t\t},\n\t\t);\n\n\t\t// Append API to window object\n\t\tif (debug) {\n\t\t\ttype APIWindow = typeof window & {\n\t\t\t\tprismic: { sliceSimulator?: { api?: SimulatorAPI[] } };\n\t\t\t};\n\n\t\t\t(window as APIWindow).prismic ||= {};\n\t\t\t(window as APIWindow).prismic.sliceSimulator ||= {};\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t(window as APIWindow).prismic.sliceSimulator!.api ||= [];\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t(window as APIWindow).prismic.sliceSimulator!.api!.push(this);\n\t\t}\n\t}\n\n\t[APIRequestType.SetActiveSlice]: TransactionMethod<\n\t\tAPITransactions[APIRequestType.SetActiveSlice]\n\t> = async (data) => {\n\t\treturn await this.postFormattedRequest(APIRequestType.SetActiveSlice, data);\n\t};\n\n\t[APIRequestType.SetSliceZoneSize]: TransactionMethod<\n\t\tAPITransactions[APIRequestType.SetSliceZoneSize]\n\t> = async (data) => {\n\t\treturn await this.postFormattedRequest(\n\t\t\tAPIRequestType.SetSliceZoneSize,\n\t\t\tdata,\n\t\t);\n\t};\n}\n"],"names":["_a","_b"],"mappings":";;;;;;;;;;;AAoBO,MAAM,6BACU;AAAA,EACtB,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,kBAAkB;;AAGb,MAAO,qBACJ,gBAAwD;AAAA,EAGhE,YACC,iBAOA,SAAkE;;AAG5D,UAAA,SACL,mCAAS,UACT,kBAAkB,KAAK,mBAAmB,OAAO,SAAS,MAAM,CAAC;AAGjE,UAAA;AAAA,MACC,CAAC,kBAAkB,IAAI,GAAG,CAAC,MAAM,QAAO;AAChC,eAAA,IAAI,QAAQ,MAAM;AAAA,MAC1B;AAAA,MACA,GAAG;AAAA,IAAA,GAEJ;AAAA,MACC,GAAG;AAAA,MACH,GAAG;AAAA,MACH;AAAA,IAAA,CACA;AAkBH,wBAAC,IAEG,OAAO,SAAQ;AAClB,aAAO,MAAM,KAAK,qBAAqB,eAAe,gBAAgB,IAAI;AAAA,IAAA;AAG3E,wBAAC,IAEG,OAAO,SAAQ;AAClB,aAAO,MAAM,KAAK,qBACjB,eAAe,kBACf,IAAI;AAAA,IAAA;AAzBL,QAAI,OAAO;AAKT,aAAqB,YAArB,OAAqB,UAAY;AACZ,OAAAA,MAAA,OAAA,SAAQ,mBAARA,IAAQ,iBAAmB;AAE3B,OAAAC,MAAA,OAAA,QAAQ,gBAAgB,QAAxBA,IAAwB,MAAQ,CAAA;AAErD,aAAqB,QAAQ,eAAgB,IAAK,KAAK,IAAI;AAAA,IAC5D;AAAA,EACF;AAgBA;AAdC,oBAAe,gBAMf,oBAAe;"}
1
+ {"version":3,"file":"SimulatorAPI.js","sources":["../../src/SimulatorAPI.ts"],"sourcesContent":["import {\n\tAPIRequestType,\n\tAPITransactions,\n\tClientRequestType,\n\tClientTransactions,\n} from \"./types\";\n\nimport {\n\tAllChannelReceiverOptions,\n\tChannelReceiver,\n\tTransactionMethod,\n\tTransactionsHandlers,\n\tTransactionsMethods,\n} from \"./channel\";\n\nexport type SimulatorAPIOptions = {\n\tactiveSliceAPI: boolean;\n\tsliceZoneSizeAPI: boolean;\n};\n\nexport const simulatorAPIDefaultOptions: Partial<AllChannelReceiverOptions> &\n\tSimulatorAPIOptions = {\n\trequestIDPrefix: \"api-\",\n\tactiveSliceAPI: false,\n\tsliceZoneSizeAPI: false,\n};\n\nexport class SimulatorAPI\n\textends ChannelReceiver<ClientTransactions, SimulatorAPIOptions>\n\timplements TransactionsMethods<APITransactions>\n{\n\tconstructor(\n\t\trequestHandlers: Omit<\n\t\t\tTransactionsHandlers<ClientTransactions>,\n\t\t\tClientRequestType.Ping\n\t\t> &\n\t\t\tPartial<\n\t\t\t\tPick<TransactionsHandlers<ClientTransactions>, ClientRequestType.Ping>\n\t\t\t>,\n\t\toptions?: Partial<AllChannelReceiverOptions & SimulatorAPIOptions>,\n\t) {\n\t\t// True if `options.debug` is true or `debug=true` is among query parameters\n\t\tconst debug =\n\t\t\toptions?.debug ||\n\t\t\t/[?&]debug=true/i.test(decodeURIComponent(window.location.search));\n\n\t\tsuper(\n\t\t\t{\n\t\t\t\t[ClientRequestType.Ping]: (_req, res) => {\n\t\t\t\t\treturn res.success(\"pong\");\n\t\t\t\t},\n\t\t\t\t...requestHandlers,\n\t\t\t},\n\t\t\t{\n\t\t\t\t...simulatorAPIDefaultOptions,\n\t\t\t\t...options,\n\t\t\t\tdebug,\n\t\t\t},\n\t\t);\n\n\t\t// Append API to window object\n\t\tif (debug) {\n\t\t\twindow.prismic ||= {};\n\t\t\twindow.prismic.sliceSimulator ||= {};\n\t\t\twindow.prismic.sliceSimulator.api ||= [];\n\t\t\twindow.prismic.sliceSimulator.api.push(this);\n\t\t}\n\t}\n\n\t[APIRequestType.SetActiveSlice]: TransactionMethod<\n\t\tAPITransactions[APIRequestType.SetActiveSlice]\n\t> = async (data) => {\n\t\treturn await this.postFormattedRequest(APIRequestType.SetActiveSlice, data);\n\t};\n\n\t[APIRequestType.SetSliceZoneSize]: TransactionMethod<\n\t\tAPITransactions[APIRequestType.SetSliceZoneSize]\n\t> = async (data) => {\n\t\treturn await this.postFormattedRequest(\n\t\t\tAPIRequestType.SetSliceZoneSize,\n\t\t\tdata,\n\t\t);\n\t};\n}\n"],"names":["_a","_b"],"mappings":";;;;;;;;;;;AAoBO,MAAM,6BACU;AAAA,EACtB,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,kBAAkB;;AAGb,MAAO,qBACJ,gBAAwD;AAAA,EAGhE,YACC,iBAOA,SAAkE;;AAG5D,UAAA,SACL,mCAAS,UACT,kBAAkB,KAAK,mBAAmB,OAAO,SAAS,MAAM,CAAC;AAGjE,UAAA;AAAA,MACC,CAAC,kBAAkB,IAAI,GAAG,CAAC,MAAM,QAAO;AAChC,eAAA,IAAI,QAAQ,MAAM;AAAA,MAC1B;AAAA,MACA,GAAG;AAAA,IAAA,GAEJ;AAAA,MACC,GAAG;AAAA,MACH,GAAG;AAAA,MACH;AAAA,IAAA,CACA;AAYH,wBAAC,IAEG,OAAO,SAAQ;AAClB,aAAO,MAAM,KAAK,qBAAqB,eAAe,gBAAgB,IAAI;AAAA,IAAA;AAG3E,wBAAC,IAEG,OAAO,SAAQ;AAClB,aAAO,MAAM,KAAK,qBACjB,eAAe,kBACf,IAAI;AAAA,IAAA;AAnBL,QAAI,OAAO;AACV,aAAO,YAAP,OAAO,UAAY;AACZ,OAAAA,MAAA,OAAA,SAAQ,mBAARA,IAAQ,iBAAmB;AAC3B,OAAAC,MAAA,OAAA,QAAQ,gBAAe,QAAvBA,IAAuB,MAAQ,CAAA;AACtC,aAAO,QAAQ,eAAe,IAAI,KAAK,IAAI;AAAA,IAC3C;AAAA,EACF;AAgBA;AAdC,oBAAe,gBAMf,oBAAe;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SimulatorClient.cjs","sources":["../../src/SimulatorClient.ts"],"sourcesContent":["import {\n\tAPIRequestType,\n\tAPITransactions,\n\tClientRequestType,\n\tClientTransactions,\n} from \"./types\";\n\nimport { SimulatorAPIOptions } from \"./SimulatorAPI\";\nimport {\n\tAllChannelEmitterOptions,\n\tChannelEmitter,\n\tTransactionMethod,\n\tTransactionsHandlers,\n\tTransactionsMethods,\n} from \"./channel\";\n\nexport const simulatorClientDefaultOptions: Partial<AllChannelEmitterOptions> =\n\t{\n\t\trequestIDPrefix: \"client-\",\n\t};\n\nexport class SimulatorClient\n\textends ChannelEmitter<\n\t\tAPITransactions,\n\t\tPartial<AllChannelEmitterOptions>,\n\t\tSimulatorAPIOptions\n\t>\n\timplements TransactionsMethods<ClientTransactions>\n{\n\tconstructor(\n\t\ttarget: HTMLIFrameElement,\n\t\trequestHandlers?: Partial<TransactionsHandlers<APITransactions>>,\n\t\toptions?: Partial<AllChannelEmitterOptions>,\n\t) {\n\t\t// True if `options.debug` is true or `debug=true` is among query parameters\n\t\tconst debug =\n\t\t\toptions?.debug ||\n\t\t\t/[?&]debug=true/i.test(decodeURIComponent(window.location.search));\n\n\t\tsuper(\n\t\t\ttarget,\n\t\t\t{\n\t\t\t\t[APIRequestType.SetActiveSlice]: (_req, res) => {\n\t\t\t\t\treturn res.success();\n\t\t\t\t},\n\t\t\t\t[APIRequestType.SetSliceZoneSize]: (_req, res) => {\n\t\t\t\t\treturn res.success();\n\t\t\t\t},\n\t\t\t\t...requestHandlers,\n\t\t\t},\n\t\t\t{\n\t\t\t\t...simulatorClientDefaultOptions,\n\t\t\t\t...options,\n\t\t\t\tdebug,\n\t\t\t},\n\t\t);\n\n\t\t// Append client to window object\n\t\tif (debug) {\n\t\t\ttype ClientWindow = typeof window & {\n\t\t\t\tprismic: { sliceSimulator?: { client?: SimulatorClient[] } };\n\t\t\t};\n\n\t\t\t(window as ClientWindow).prismic ||= {};\n\t\t\t(window as ClientWindow).prismic.sliceSimulator ||= {};\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t(window as ClientWindow).prismic.sliceSimulator!.client ||= [];\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t(window as ClientWindow).prismic.sliceSimulator!.client!.push(this);\n\t\t}\n\t}\n\n\t[ClientRequestType.Ping]: TransactionMethod<\n\t\tClientTransactions[ClientRequestType.Ping]\n\t> = async () => {\n\t\treturn await this.postFormattedRequest(ClientRequestType.Ping);\n\t};\n\n\t[ClientRequestType.SetSliceZone]: TransactionMethod<\n\t\tClientTransactions[ClientRequestType.SetSliceZone]\n\t> = async (data) => {\n\t\treturn await this.postFormattedRequest(\n\t\t\tClientRequestType.SetSliceZone,\n\t\t\tdata,\n\t\t);\n\t};\n\n\t[ClientRequestType.ScrollToSlice]: TransactionMethod<\n\t\tClientTransactions[ClientRequestType.ScrollToSlice]\n\t> = async (data) => {\n\t\treturn await this.postFormattedRequest(\n\t\t\tClientRequestType.ScrollToSlice,\n\t\t\tdata,\n\t\t);\n\t};\n}\n"],"names":["ChannelEmitter","APIRequestType","ClientRequestType","_a","_b"],"mappings":";;;;;;;;;;;;;AAgBO,MAAM,gCACZ;AAAA,EACC,iBAAiB;;AAGb,MAAO,wBACJA,eAAAA,eAIP;AAAA,EAGD,YACC,QACA,iBACA,SAA2C;;AAGrC,UAAA,SACL,mCAAS,UACT,kBAAkB,KAAK,mBAAmB,OAAO,SAAS,MAAM,CAAC;AAElE,UACC,QACA;AAAA,MACC,CAACC,qBAAe,cAAc,GAAG,CAAC,MAAM,QAAO;AAC9C,eAAO,IAAI;MACZ;AAAA,MACA,CAACA,qBAAe,gBAAgB,GAAG,CAAC,MAAM,QAAO;AAChD,eAAO,IAAI;MACZ;AAAA,MACA,GAAG;AAAA,IAAA,GAEJ;AAAA,MACC,GAAG;AAAA,MACH,GAAG;AAAA,MACH;AAAA,IAAA,CACA;AAkBH,wBAACC,IAEG,YAAW;AACd,aAAO,MAAM,KAAK,qBAAqBA,MAAA,kBAAkB,IAAI;AAAA,IAAA;AAG9D,wBAACA,IAEG,OAAO,SAAQ;AAClB,aAAO,MAAM,KAAK,qBACjBA,MAAA,kBAAkB,cAClB,IAAI;AAAA,IAAA;AAIN,wBAACA,IAEG,OAAO,SAAQ;AAClB,aAAO,MAAM,KAAK,qBACjBA,MAAA,kBAAkB,eAClB,IAAI;AAAA,IAAA;AAlCL,QAAI,OAAO;AAKT,aAAwB,YAAxB,OAAwB,UAAY;AACZ,OAAAC,MAAA,OAAA,SAAQ,mBAARA,IAAQ,iBAAmB;AAE3B,OAAAC,MAAA,OAAA,QAAQ,gBAAgB,WAAxBA,IAAwB,SAAW,CAAA;AAE3D,aAAwB,QAAQ,eAAgB,OAAQ,KAAK,IAAI;AAAA,IAClE;AAAA,EACF;AAyBA;AAvBCF,WAAAA,kBAAkB,MAMlBA,WAAA,kBAAkB,cASlBA,WAAA,kBAAkB;;;"}
1
+ {"version":3,"file":"SimulatorClient.cjs","sources":["../../src/SimulatorClient.ts"],"sourcesContent":["import {\n\tAPIRequestType,\n\tAPITransactions,\n\tClientRequestType,\n\tClientTransactions,\n} from \"./types\";\n\nimport { SimulatorAPIOptions } from \"./SimulatorAPI\";\nimport {\n\tAllChannelEmitterOptions,\n\tChannelEmitter,\n\tTransactionMethod,\n\tTransactionsHandlers,\n\tTransactionsMethods,\n} from \"./channel\";\n\nexport const simulatorClientDefaultOptions: Partial<AllChannelEmitterOptions> =\n\t{\n\t\trequestIDPrefix: \"client-\",\n\t};\n\nexport class SimulatorClient\n\textends ChannelEmitter<\n\t\tAPITransactions,\n\t\tPartial<AllChannelEmitterOptions>,\n\t\tSimulatorAPIOptions\n\t>\n\timplements TransactionsMethods<ClientTransactions>\n{\n\tconstructor(\n\t\ttarget: HTMLIFrameElement,\n\t\trequestHandlers?: Partial<TransactionsHandlers<APITransactions>>,\n\t\toptions?: Partial<AllChannelEmitterOptions>,\n\t) {\n\t\t// True if `options.debug` is true or `debug=true` is among query parameters\n\t\tconst debug =\n\t\t\toptions?.debug ||\n\t\t\t/[?&]debug=true/i.test(decodeURIComponent(window.location.search));\n\n\t\tsuper(\n\t\t\ttarget,\n\t\t\t{\n\t\t\t\t[APIRequestType.SetActiveSlice]: (_req, res) => {\n\t\t\t\t\treturn res.success();\n\t\t\t\t},\n\t\t\t\t[APIRequestType.SetSliceZoneSize]: (_req, res) => {\n\t\t\t\t\treturn res.success();\n\t\t\t\t},\n\t\t\t\t...requestHandlers,\n\t\t\t},\n\t\t\t{\n\t\t\t\t...simulatorClientDefaultOptions,\n\t\t\t\t...options,\n\t\t\t\tdebug,\n\t\t\t},\n\t\t);\n\n\t\t// Append client to window object\n\t\tif (debug) {\n\t\t\twindow.prismic ||= {};\n\t\t\twindow.prismic.sliceSimulator ||= {};\n\t\t\twindow.prismic.sliceSimulator.client ||= [];\n\t\t\twindow.prismic.sliceSimulator.client.push(this);\n\t\t}\n\t}\n\n\t[ClientRequestType.Ping]: TransactionMethod<\n\t\tClientTransactions[ClientRequestType.Ping]\n\t> = async () => {\n\t\treturn await this.postFormattedRequest(ClientRequestType.Ping);\n\t};\n\n\t[ClientRequestType.SetSliceZone]: TransactionMethod<\n\t\tClientTransactions[ClientRequestType.SetSliceZone]\n\t> = async (data) => {\n\t\treturn await this.postFormattedRequest(\n\t\t\tClientRequestType.SetSliceZone,\n\t\t\tdata,\n\t\t);\n\t};\n\n\t[ClientRequestType.ScrollToSlice]: TransactionMethod<\n\t\tClientTransactions[ClientRequestType.ScrollToSlice]\n\t> = async (data) => {\n\t\treturn await this.postFormattedRequest(\n\t\t\tClientRequestType.ScrollToSlice,\n\t\t\tdata,\n\t\t);\n\t};\n}\n"],"names":["ChannelEmitter","APIRequestType","ClientRequestType","_a","_b"],"mappings":";;;;;;;;;;;;;AAgBO,MAAM,gCACZ;AAAA,EACC,iBAAiB;;AAGb,MAAO,wBACJA,eAAAA,eAIP;AAAA,EAGD,YACC,QACA,iBACA,SAA2C;;AAGrC,UAAA,SACL,mCAAS,UACT,kBAAkB,KAAK,mBAAmB,OAAO,SAAS,MAAM,CAAC;AAElE,UACC,QACA;AAAA,MACC,CAACC,qBAAe,cAAc,GAAG,CAAC,MAAM,QAAO;AAC9C,eAAO,IAAI;MACZ;AAAA,MACA,CAACA,qBAAe,gBAAgB,GAAG,CAAC,MAAM,QAAO;AAChD,eAAO,IAAI;MACZ;AAAA,MACA,GAAG;AAAA,IAAA,GAEJ;AAAA,MACC,GAAG;AAAA,MACH,GAAG;AAAA,MACH;AAAA,IAAA,CACA;AAYH,wBAACC,IAEG,YAAW;AACd,aAAO,MAAM,KAAK,qBAAqBA,MAAA,kBAAkB,IAAI;AAAA,IAAA;AAG9D,wBAACA,IAEG,OAAO,SAAQ;AAClB,aAAO,MAAM,KAAK,qBACjBA,MAAA,kBAAkB,cAClB,IAAI;AAAA,IAAA;AAIN,wBAACA,IAEG,OAAO,SAAQ;AAClB,aAAO,MAAM,KAAK,qBACjBA,MAAA,kBAAkB,eAClB,IAAI;AAAA,IAAA;AA5BL,QAAI,OAAO;AACV,aAAO,YAAP,OAAO,UAAY;AACZ,OAAAC,MAAA,OAAA,SAAQ,mBAARA,IAAQ,iBAAmB;AAC3B,OAAAC,MAAA,OAAA,QAAQ,gBAAe,WAAvBA,IAAuB,SAAW,CAAA;AACzC,aAAO,QAAQ,eAAe,OAAO,KAAK,IAAI;AAAA,IAC9C;AAAA,EACF;AAyBA;AAvBCF,WAAAA,kBAAkB,MAMlBA,WAAA,kBAAkB,cASlBA,WAAA,kBAAkB;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SimulatorClient.js","sources":["../../src/SimulatorClient.ts"],"sourcesContent":["import {\n\tAPIRequestType,\n\tAPITransactions,\n\tClientRequestType,\n\tClientTransactions,\n} from \"./types\";\n\nimport { SimulatorAPIOptions } from \"./SimulatorAPI\";\nimport {\n\tAllChannelEmitterOptions,\n\tChannelEmitter,\n\tTransactionMethod,\n\tTransactionsHandlers,\n\tTransactionsMethods,\n} from \"./channel\";\n\nexport const simulatorClientDefaultOptions: Partial<AllChannelEmitterOptions> =\n\t{\n\t\trequestIDPrefix: \"client-\",\n\t};\n\nexport class SimulatorClient\n\textends ChannelEmitter<\n\t\tAPITransactions,\n\t\tPartial<AllChannelEmitterOptions>,\n\t\tSimulatorAPIOptions\n\t>\n\timplements TransactionsMethods<ClientTransactions>\n{\n\tconstructor(\n\t\ttarget: HTMLIFrameElement,\n\t\trequestHandlers?: Partial<TransactionsHandlers<APITransactions>>,\n\t\toptions?: Partial<AllChannelEmitterOptions>,\n\t) {\n\t\t// True if `options.debug` is true or `debug=true` is among query parameters\n\t\tconst debug =\n\t\t\toptions?.debug ||\n\t\t\t/[?&]debug=true/i.test(decodeURIComponent(window.location.search));\n\n\t\tsuper(\n\t\t\ttarget,\n\t\t\t{\n\t\t\t\t[APIRequestType.SetActiveSlice]: (_req, res) => {\n\t\t\t\t\treturn res.success();\n\t\t\t\t},\n\t\t\t\t[APIRequestType.SetSliceZoneSize]: (_req, res) => {\n\t\t\t\t\treturn res.success();\n\t\t\t\t},\n\t\t\t\t...requestHandlers,\n\t\t\t},\n\t\t\t{\n\t\t\t\t...simulatorClientDefaultOptions,\n\t\t\t\t...options,\n\t\t\t\tdebug,\n\t\t\t},\n\t\t);\n\n\t\t// Append client to window object\n\t\tif (debug) {\n\t\t\ttype ClientWindow = typeof window & {\n\t\t\t\tprismic: { sliceSimulator?: { client?: SimulatorClient[] } };\n\t\t\t};\n\n\t\t\t(window as ClientWindow).prismic ||= {};\n\t\t\t(window as ClientWindow).prismic.sliceSimulator ||= {};\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t(window as ClientWindow).prismic.sliceSimulator!.client ||= [];\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t(window as ClientWindow).prismic.sliceSimulator!.client!.push(this);\n\t\t}\n\t}\n\n\t[ClientRequestType.Ping]: TransactionMethod<\n\t\tClientTransactions[ClientRequestType.Ping]\n\t> = async () => {\n\t\treturn await this.postFormattedRequest(ClientRequestType.Ping);\n\t};\n\n\t[ClientRequestType.SetSliceZone]: TransactionMethod<\n\t\tClientTransactions[ClientRequestType.SetSliceZone]\n\t> = async (data) => {\n\t\treturn await this.postFormattedRequest(\n\t\t\tClientRequestType.SetSliceZone,\n\t\t\tdata,\n\t\t);\n\t};\n\n\t[ClientRequestType.ScrollToSlice]: TransactionMethod<\n\t\tClientTransactions[ClientRequestType.ScrollToSlice]\n\t> = async (data) => {\n\t\treturn await this.postFormattedRequest(\n\t\t\tClientRequestType.ScrollToSlice,\n\t\t\tdata,\n\t\t);\n\t};\n}\n"],"names":["_a","_b"],"mappings":";;;;;;;;;;;AAgBO,MAAM,gCACZ;AAAA,EACC,iBAAiB;;AAGb,MAAO,wBACJ,eAIP;AAAA,EAGD,YACC,QACA,iBACA,SAA2C;;AAGrC,UAAA,SACL,mCAAS,UACT,kBAAkB,KAAK,mBAAmB,OAAO,SAAS,MAAM,CAAC;AAElE,UACC,QACA;AAAA,MACC,CAAC,eAAe,cAAc,GAAG,CAAC,MAAM,QAAO;AAC9C,eAAO,IAAI;MACZ;AAAA,MACA,CAAC,eAAe,gBAAgB,GAAG,CAAC,MAAM,QAAO;AAChD,eAAO,IAAI;MACZ;AAAA,MACA,GAAG;AAAA,IAAA,GAEJ;AAAA,MACC,GAAG;AAAA,MACH,GAAG;AAAA,MACH;AAAA,IAAA,CACA;AAkBH,wBAAC,IAEG,YAAW;AACd,aAAO,MAAM,KAAK,qBAAqB,kBAAkB,IAAI;AAAA,IAAA;AAG9D,wBAAC,IAEG,OAAO,SAAQ;AAClB,aAAO,MAAM,KAAK,qBACjB,kBAAkB,cAClB,IAAI;AAAA,IAAA;AAIN,wBAAC,IAEG,OAAO,SAAQ;AAClB,aAAO,MAAM,KAAK,qBACjB,kBAAkB,eAClB,IAAI;AAAA,IAAA;AAlCL,QAAI,OAAO;AAKT,aAAwB,YAAxB,OAAwB,UAAY;AACZ,OAAAA,MAAA,OAAA,SAAQ,mBAARA,IAAQ,iBAAmB;AAE3B,OAAAC,MAAA,OAAA,QAAQ,gBAAgB,WAAxBA,IAAwB,SAAW,CAAA;AAE3D,aAAwB,QAAQ,eAAgB,OAAQ,KAAK,IAAI;AAAA,IAClE;AAAA,EACF;AAyBA;AAvBC,uBAAkB,MAMlB,uBAAkB,cASlB,uBAAkB;"}
1
+ {"version":3,"file":"SimulatorClient.js","sources":["../../src/SimulatorClient.ts"],"sourcesContent":["import {\n\tAPIRequestType,\n\tAPITransactions,\n\tClientRequestType,\n\tClientTransactions,\n} from \"./types\";\n\nimport { SimulatorAPIOptions } from \"./SimulatorAPI\";\nimport {\n\tAllChannelEmitterOptions,\n\tChannelEmitter,\n\tTransactionMethod,\n\tTransactionsHandlers,\n\tTransactionsMethods,\n} from \"./channel\";\n\nexport const simulatorClientDefaultOptions: Partial<AllChannelEmitterOptions> =\n\t{\n\t\trequestIDPrefix: \"client-\",\n\t};\n\nexport class SimulatorClient\n\textends ChannelEmitter<\n\t\tAPITransactions,\n\t\tPartial<AllChannelEmitterOptions>,\n\t\tSimulatorAPIOptions\n\t>\n\timplements TransactionsMethods<ClientTransactions>\n{\n\tconstructor(\n\t\ttarget: HTMLIFrameElement,\n\t\trequestHandlers?: Partial<TransactionsHandlers<APITransactions>>,\n\t\toptions?: Partial<AllChannelEmitterOptions>,\n\t) {\n\t\t// True if `options.debug` is true or `debug=true` is among query parameters\n\t\tconst debug =\n\t\t\toptions?.debug ||\n\t\t\t/[?&]debug=true/i.test(decodeURIComponent(window.location.search));\n\n\t\tsuper(\n\t\t\ttarget,\n\t\t\t{\n\t\t\t\t[APIRequestType.SetActiveSlice]: (_req, res) => {\n\t\t\t\t\treturn res.success();\n\t\t\t\t},\n\t\t\t\t[APIRequestType.SetSliceZoneSize]: (_req, res) => {\n\t\t\t\t\treturn res.success();\n\t\t\t\t},\n\t\t\t\t...requestHandlers,\n\t\t\t},\n\t\t\t{\n\t\t\t\t...simulatorClientDefaultOptions,\n\t\t\t\t...options,\n\t\t\t\tdebug,\n\t\t\t},\n\t\t);\n\n\t\t// Append client to window object\n\t\tif (debug) {\n\t\t\twindow.prismic ||= {};\n\t\t\twindow.prismic.sliceSimulator ||= {};\n\t\t\twindow.prismic.sliceSimulator.client ||= [];\n\t\t\twindow.prismic.sliceSimulator.client.push(this);\n\t\t}\n\t}\n\n\t[ClientRequestType.Ping]: TransactionMethod<\n\t\tClientTransactions[ClientRequestType.Ping]\n\t> = async () => {\n\t\treturn await this.postFormattedRequest(ClientRequestType.Ping);\n\t};\n\n\t[ClientRequestType.SetSliceZone]: TransactionMethod<\n\t\tClientTransactions[ClientRequestType.SetSliceZone]\n\t> = async (data) => {\n\t\treturn await this.postFormattedRequest(\n\t\t\tClientRequestType.SetSliceZone,\n\t\t\tdata,\n\t\t);\n\t};\n\n\t[ClientRequestType.ScrollToSlice]: TransactionMethod<\n\t\tClientTransactions[ClientRequestType.ScrollToSlice]\n\t> = async (data) => {\n\t\treturn await this.postFormattedRequest(\n\t\t\tClientRequestType.ScrollToSlice,\n\t\t\tdata,\n\t\t);\n\t};\n}\n"],"names":["_a","_b"],"mappings":";;;;;;;;;;;AAgBO,MAAM,gCACZ;AAAA,EACC,iBAAiB;;AAGb,MAAO,wBACJ,eAIP;AAAA,EAGD,YACC,QACA,iBACA,SAA2C;;AAGrC,UAAA,SACL,mCAAS,UACT,kBAAkB,KAAK,mBAAmB,OAAO,SAAS,MAAM,CAAC;AAElE,UACC,QACA;AAAA,MACC,CAAC,eAAe,cAAc,GAAG,CAAC,MAAM,QAAO;AAC9C,eAAO,IAAI;MACZ;AAAA,MACA,CAAC,eAAe,gBAAgB,GAAG,CAAC,MAAM,QAAO;AAChD,eAAO,IAAI;MACZ;AAAA,MACA,GAAG;AAAA,IAAA,GAEJ;AAAA,MACC,GAAG;AAAA,MACH,GAAG;AAAA,MACH;AAAA,IAAA,CACA;AAYH,wBAAC,IAEG,YAAW;AACd,aAAO,MAAM,KAAK,qBAAqB,kBAAkB,IAAI;AAAA,IAAA;AAG9D,wBAAC,IAEG,OAAO,SAAQ;AAClB,aAAO,MAAM,KAAK,qBACjB,kBAAkB,cAClB,IAAI;AAAA,IAAA;AAIN,wBAAC,IAEG,OAAO,SAAQ;AAClB,aAAO,MAAM,KAAK,qBACjB,kBAAkB,eAClB,IAAI;AAAA,IAAA;AA5BL,QAAI,OAAO;AACV,aAAO,YAAP,OAAO,UAAY;AACZ,OAAAA,MAAA,OAAA,SAAQ,mBAARA,IAAQ,iBAAmB;AAC3B,OAAAC,MAAA,OAAA,QAAQ,gBAAe,WAAvBA,IAAuB,SAAW,CAAA;AACzC,aAAO,QAAQ,eAAe,OAAO,KAAK,IAAI;AAAA,IAC9C;AAAA,EACF;AAyBA;AAvBC,uBAAkB,MAMlB,uBAAkB,cASlB,uBAAkB;"}
@@ -0,0 +1,12 @@
1
+ import { SimulatorAPI } from "./SimulatorAPI";
2
+ import { SimulatorClient } from "./SimulatorClient";
3
+ declare global {
4
+ interface Window {
5
+ prismic?: {
6
+ sliceSimulator?: {
7
+ api?: SimulatorAPI[];
8
+ client?: SimulatorClient[];
9
+ };
10
+ };
11
+ }
12
+ }
package/dist/index.d.ts CHANGED
@@ -5,3 +5,4 @@ export { validateMessage, isRequestMessage, isResponseMessage, isSuccessResponse
5
5
  export type { RequestMessage, ResponseMessage, ErrorResponseMessage, SuccessResponseMessage, AllChannelEmitterOptions, AllChannelReceiverOptions, } from "./channel";
6
6
  export { APIRequestType, ClientRequestType } from "./types";
7
7
  export type { ActiveSlice, SliceZoneSize, APITransactions, ClientTransactions, } from "./types";
8
+ export * from "./globalExtensions";
@@ -86,8 +86,7 @@ class SimulatorManager {
86
86
  this.state.setActiveSlice();
87
87
  });
88
88
  window.addEventListener("mousewheel", () => {
89
- var _a2;
90
- ((_a2 = this._api) == null ? void 0 : _a2.options.activeSliceAPI) && setTimeout(this.state.setActiveSlice, 200);
89
+ setTimeout(this.state.setActiveSlice, 200);
91
90
  });
92
91
  this.state.on(types$1.StateEventType.Slices, () => {
93
92
  this.state.setActiveSlice();
@@ -123,8 +122,8 @@ class SimulatorManager {
123
122
  }, 16));
124
123
  const observeSimulatorRoot = () => {
125
124
  const simulatorRootDOM = domHelpers.getSimulatorRootDOM();
125
+ resizeObserver.disconnect();
126
126
  if (simulatorRootDOM) {
127
- resizeObserver.disconnect();
128
127
  resizeObserver.observe(simulatorRootDOM);
129
128
  }
130
129
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SimulatorManager.cjs","sources":["../../../src/kit/SimulatorManager.ts"],"sourcesContent":["import type { SliceZone } from \"@prismicio/client\";\n\nimport { throttle } from \"../lib/throttle\";\n\nimport { ClientRequestType } from \"../types\";\nimport { StateEventType } from \"./types\";\n\nimport { SimulatorAPI } from \"../SimulatorAPI\";\nimport { ResponseError } from \"../channel\";\n\nimport { State } from \"./State\";\nimport {\n\tgetSimulatorDOM,\n\tgetSimulatorRootDOM,\n\tgetSliceZoneDOM,\n} from \"./domHelpers\";\nimport { sliceSimulatorAccessedDirectly } from \"./messages\";\n\ntype ManagerConstructorArgs = {\n\tslices?: SliceZone;\n};\n\nexport class SimulatorManager {\n\tpublic state: State;\n\tprivate _api: SimulatorAPI | null;\n\tprivate _initialized: boolean;\n\n\tconstructor(args?: ManagerConstructorArgs) {\n\t\tthis.state = new State(args);\n\t\tthis._api = null;\n\t\tthis._initialized = false;\n\t}\n\n\tasync init(): Promise<void> {\n\t\tif (this._initialized) {\n\t\t\treturn;\n\t\t} else {\n\t\t\tthis._initialized = true;\n\t\t}\n\n\t\t// Init state manager\n\t\tawait this.state.init();\n\n\t\t// Init API\n\t\ttry {\n\t\t\tawait this._initAPI();\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror instanceof Error &&\n\t\t\t\terror.message === \"Receiver is currently not embedded as an iframe\" &&\n\t\t\t\t!this.state.slices.length\n\t\t\t) {\n\t\t\t\t// Catch not embedded error and display message\n\t\t\t\tthis.state.message = sliceSimulatorAccessedDirectly;\n\t\t\t}\n\t\t\tconsole.error(error);\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Init listeners\n\t\tthis._initListeners();\n\t}\n\n\tprivate async _initAPI(): Promise<void> {\n\t\t// Register SimulatorAPI request handlers\n\t\tthis._api = new SimulatorAPI({\n\t\t\t[ClientRequestType.SetSliceZone]: (req, res) => {\n\t\t\t\tthis.state.setSliceZone(req.data);\n\n\t\t\t\treturn res.success();\n\t\t\t},\n\t\t\t[ClientRequestType.ScrollToSlice]: (req, res) => {\n\t\t\t\t// Error if `sliceIndex` is invalid\n\t\t\t\tif (req.data.sliceIndex < 0) {\n\t\t\t\t\treturn res.error(\"`sliceIndex` must be > 0\", 400);\n\t\t\t\t} else if (req.data.sliceIndex >= this.state.slices.length) {\n\t\t\t\t\treturn res.error(\n\t\t\t\t\t\t`\\`sliceIndex\\` must be < ${this.state.slices.length} (\\`<SliceZone />\\` current length)`,\n\t\t\t\t\t\t400,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst $sliceZone = getSliceZoneDOM(this.state.slices.length);\n\t\t\t\tif (!$sliceZone) {\n\t\t\t\t\treturn res.error(\"Failed to find `<SliceZone />`\", 500);\n\t\t\t\t}\n\n\t\t\t\t// Destroy existing active slice as we're about to scroll\n\t\t\t\tthis.state.activeSlice = null;\n\n\t\t\t\tconst $slice = $sliceZone.children[req.data.sliceIndex];\n\t\t\t\tif (!$slice) {\n\t\t\t\t\treturn res.error(\n\t\t\t\t\t\t`Failed fo find slice at index $\\`{req.data.sliceIndex}\\` in \\`<SliceZone />\\``,\n\t\t\t\t\t\t500,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Scroll to Slice\n\t\t\t\t$slice.scrollIntoView({\n\t\t\t\t\tbehavior: req.data.behavior,\n\t\t\t\t\tblock: req.data.block,\n\t\t\t\t\tinline: req.data.inline,\n\t\t\t\t});\n\n\t\t\t\t// Update active slice after scrolling\n\t\t\t\tthis._api?.options.activeSliceAPI &&\n\t\t\t\t\tsetTimeout(this.state.setActiveSlice, 750);\n\n\t\t\t\treturn res.success();\n\t\t\t},\n\t\t});\n\n\t\t// Mark API as ready\n\t\tawait this._api.ready();\n\t}\n\n\tprivate _initListeners(): void {\n\t\tif (this._api?.options.activeSliceAPI) {\n\t\t\t// Update active slice on mouse move\n\t\t\twindow.addEventListener(\"mousemove\", () => {\n\t\t\t\tthis.state.setActiveSlice();\n\t\t\t});\n\t\t\t// Update active slice on events impacting slices rendering\n\t\t\twindow.addEventListener(\"resize\", () => {\n\t\t\t\tthis.state.setActiveSlice();\n\t\t\t});\n\t\t\twindow.addEventListener(\"mousewheel\", () => {\n\t\t\t\tthis._api?.options.activeSliceAPI &&\n\t\t\t\t\tsetTimeout(this.state.setActiveSlice, 200);\n\t\t\t});\n\n\t\t\t// Update active slice when slices are set\n\t\t\tthis.state.on(StateEventType.Slices, () => {\n\t\t\t\tthis.state.setActiveSlice();\n\t\t\t});\n\t\t\t// Send active slices to renderer\n\t\t\tthis.state.on(StateEventType.ActiveSlice, async (activeSlice) => {\n\t\t\t\tif (this._api) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait this._api.setActiveSlice(activeSlice);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t// Just log bad requests, throw everything else\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\terror instanceof ResponseError &&\n\t\t\t\t\t\t\terror.response.status === 400\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconsole.error(error.response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this._api?.options.sliceZoneSizeAPI) {\n\t\t\t// Monitor Simulator root node size\n\t\t\tconst resizeObserver = new ResizeObserver(\n\t\t\t\tthrottle(async (entries) => {\n\t\t\t\t\tconst [entry] = entries;\n\n\t\t\t\t\tif (this._api && entry) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this._api.setSliceZoneSize({ rect: entry.contentRect });\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t// Just log bad requests, throw everything else\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\terror instanceof ResponseError &&\n\t\t\t\t\t\t\t\terror.response.status === 400\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tconsole.error(error.response);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, 16),\n\t\t\t);\n\t\t\tconst observeSimulatorRoot = () => {\n\t\t\t\tconst simulatorRootDOM = getSimulatorRootDOM();\n\t\t\t\tif (simulatorRootDOM) {\n\t\t\t\t\tresizeObserver.disconnect();\n\t\t\t\t\tresizeObserver.observe(simulatorRootDOM);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Monitor Simulator root node in DOM\n\t\t\tconst mutationObserver = new MutationObserver(observeSimulatorRoot);\n\t\t\t// We want it to fail if not found\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tmutationObserver.observe(getSimulatorDOM()!, {\n\t\t\t\tsubtree: false,\n\t\t\t\tchildList: true,\n\t\t\t});\n\t\t}\n\t}\n}\n"],"names":["State","sliceSimulatorAccessedDirectly","SimulatorAPI","ClientRequestType","getSliceZoneDOM","_a","StateEventType","ResponseError","throttle","getSimulatorRootDOM","getSimulatorDOM"],"mappings":"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"}
1
+ {"version":3,"file":"SimulatorManager.cjs","sources":["../../../src/kit/SimulatorManager.ts"],"sourcesContent":["import type { SliceZone } from \"@prismicio/client\";\n\nimport { throttle } from \"../lib/throttle\";\n\nimport { ClientRequestType } from \"../types\";\nimport { StateEventType } from \"./types\";\n\nimport { SimulatorAPI } from \"../SimulatorAPI\";\nimport { ResponseError } from \"../channel\";\n\nimport { State } from \"./State\";\nimport {\n\tgetSimulatorDOM,\n\tgetSimulatorRootDOM,\n\tgetSliceZoneDOM,\n} from \"./domHelpers\";\nimport { sliceSimulatorAccessedDirectly } from \"./messages\";\n\ntype ManagerConstructorArgs = {\n\tslices?: SliceZone;\n};\n\nexport class SimulatorManager {\n\tpublic state: State;\n\tprivate _api: SimulatorAPI | null;\n\tprivate _initialized: boolean;\n\n\tconstructor(args?: ManagerConstructorArgs) {\n\t\tthis.state = new State(args);\n\t\tthis._api = null;\n\t\tthis._initialized = false;\n\t}\n\n\tasync init(): Promise<void> {\n\t\tif (this._initialized) {\n\t\t\treturn;\n\t\t} else {\n\t\t\tthis._initialized = true;\n\t\t}\n\n\t\t// Init state manager\n\t\tawait this.state.init();\n\n\t\t// Init API\n\t\ttry {\n\t\t\tawait this._initAPI();\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror instanceof Error &&\n\t\t\t\terror.message === \"Receiver is currently not embedded as an iframe\" &&\n\t\t\t\t!this.state.slices.length\n\t\t\t) {\n\t\t\t\t// Catch not embedded error and display message\n\t\t\t\tthis.state.message = sliceSimulatorAccessedDirectly;\n\t\t\t}\n\t\t\tconsole.error(error);\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Init listeners\n\t\tthis._initListeners();\n\t}\n\n\tprivate async _initAPI(): Promise<void> {\n\t\t// Register SimulatorAPI request handlers\n\t\tthis._api = new SimulatorAPI({\n\t\t\t[ClientRequestType.SetSliceZone]: (req, res) => {\n\t\t\t\tthis.state.setSliceZone(req.data);\n\n\t\t\t\treturn res.success();\n\t\t\t},\n\t\t\t[ClientRequestType.ScrollToSlice]: (req, res) => {\n\t\t\t\t// Error if `sliceIndex` is invalid\n\t\t\t\tif (req.data.sliceIndex < 0) {\n\t\t\t\t\treturn res.error(\"`sliceIndex` must be > 0\", 400);\n\t\t\t\t} else if (req.data.sliceIndex >= this.state.slices.length) {\n\t\t\t\t\treturn res.error(\n\t\t\t\t\t\t`\\`sliceIndex\\` must be < ${this.state.slices.length} (\\`<SliceZone />\\` current length)`,\n\t\t\t\t\t\t400,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst $sliceZone = getSliceZoneDOM(this.state.slices.length);\n\t\t\t\tif (!$sliceZone) {\n\t\t\t\t\treturn res.error(\"Failed to find `<SliceZone />`\", 500);\n\t\t\t\t}\n\n\t\t\t\t// Destroy existing active slice as we're about to scroll\n\t\t\t\tthis.state.activeSlice = null;\n\n\t\t\t\tconst $slice = $sliceZone.children[req.data.sliceIndex];\n\t\t\t\tif (!$slice) {\n\t\t\t\t\treturn res.error(\n\t\t\t\t\t\t`Failed fo find slice at index $\\`{req.data.sliceIndex}\\` in \\`<SliceZone />\\``,\n\t\t\t\t\t\t500,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Scroll to Slice\n\t\t\t\t$slice.scrollIntoView({\n\t\t\t\t\tbehavior: req.data.behavior,\n\t\t\t\t\tblock: req.data.block,\n\t\t\t\t\tinline: req.data.inline,\n\t\t\t\t});\n\n\t\t\t\t// Update active slice after scrolling\n\t\t\t\tthis._api?.options.activeSliceAPI &&\n\t\t\t\t\tsetTimeout(this.state.setActiveSlice, 750);\n\n\t\t\t\treturn res.success();\n\t\t\t},\n\t\t});\n\n\t\t// Mark API as ready\n\t\tawait this._api.ready();\n\t}\n\n\tprivate _initListeners(): void {\n\t\tif (this._api?.options.activeSliceAPI) {\n\t\t\t// Update active slice on mouse move\n\t\t\twindow.addEventListener(\"mousemove\", () => {\n\t\t\t\tthis.state.setActiveSlice();\n\t\t\t});\n\t\t\t// Update active slice on events impacting slices rendering\n\t\t\twindow.addEventListener(\"resize\", () => {\n\t\t\t\tthis.state.setActiveSlice();\n\t\t\t});\n\t\t\twindow.addEventListener(\"mousewheel\", () => {\n\t\t\t\tsetTimeout(this.state.setActiveSlice, 200);\n\t\t\t});\n\n\t\t\t// Update active slice when slices are set\n\t\t\tthis.state.on(StateEventType.Slices, () => {\n\t\t\t\tthis.state.setActiveSlice();\n\t\t\t});\n\t\t\t// Send active slices to renderer\n\t\t\tthis.state.on(StateEventType.ActiveSlice, async (activeSlice) => {\n\t\t\t\tif (this._api) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait this._api.setActiveSlice(activeSlice);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t// Just log bad requests, throw everything else\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\terror instanceof ResponseError &&\n\t\t\t\t\t\t\terror.response.status === 400\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconsole.error(error.response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this._api?.options.sliceZoneSizeAPI) {\n\t\t\t// Monitor Simulator root node size\n\t\t\tconst resizeObserver = new ResizeObserver(\n\t\t\t\tthrottle(async (entries) => {\n\t\t\t\t\tconst [entry] = entries;\n\n\t\t\t\t\tif (this._api && entry) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this._api.setSliceZoneSize({ rect: entry.contentRect });\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t// Just log bad requests, throw everything else\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\terror instanceof ResponseError &&\n\t\t\t\t\t\t\t\terror.response.status === 400\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tconsole.error(error.response);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, 16),\n\t\t\t);\n\t\t\tconst observeSimulatorRoot = () => {\n\t\t\t\tconst simulatorRootDOM = getSimulatorRootDOM();\n\t\t\t\tresizeObserver.disconnect();\n\t\t\t\tif (simulatorRootDOM) {\n\t\t\t\t\tresizeObserver.observe(simulatorRootDOM);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Monitor Simulator root node in DOM\n\t\t\tconst mutationObserver = new MutationObserver(observeSimulatorRoot);\n\t\t\t// We want it to fail if not found\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tmutationObserver.observe(getSimulatorDOM()!, {\n\t\t\t\tsubtree: false,\n\t\t\t\tchildList: true,\n\t\t\t});\n\t\t}\n\t}\n}\n"],"names":["State","sliceSimulatorAccessedDirectly","SimulatorAPI","ClientRequestType","getSliceZoneDOM","StateEventType","ResponseError","throttle","getSimulatorRootDOM","getSimulatorDOM"],"mappings":"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"}
@@ -84,8 +84,7 @@ class SimulatorManager {
84
84
  this.state.setActiveSlice();
85
85
  });
86
86
  window.addEventListener("mousewheel", () => {
87
- var _a2;
88
- ((_a2 = this._api) == null ? void 0 : _a2.options.activeSliceAPI) && setTimeout(this.state.setActiveSlice, 200);
87
+ setTimeout(this.state.setActiveSlice, 200);
89
88
  });
90
89
  this.state.on(StateEventType.Slices, () => {
91
90
  this.state.setActiveSlice();
@@ -121,8 +120,8 @@ class SimulatorManager {
121
120
  }, 16));
122
121
  const observeSimulatorRoot = () => {
123
122
  const simulatorRootDOM = getSimulatorRootDOM();
123
+ resizeObserver.disconnect();
124
124
  if (simulatorRootDOM) {
125
- resizeObserver.disconnect();
126
125
  resizeObserver.observe(simulatorRootDOM);
127
126
  }
128
127
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SimulatorManager.js","sources":["../../../src/kit/SimulatorManager.ts"],"sourcesContent":["import type { SliceZone } from \"@prismicio/client\";\n\nimport { throttle } from \"../lib/throttle\";\n\nimport { ClientRequestType } from \"../types\";\nimport { StateEventType } from \"./types\";\n\nimport { SimulatorAPI } from \"../SimulatorAPI\";\nimport { ResponseError } from \"../channel\";\n\nimport { State } from \"./State\";\nimport {\n\tgetSimulatorDOM,\n\tgetSimulatorRootDOM,\n\tgetSliceZoneDOM,\n} from \"./domHelpers\";\nimport { sliceSimulatorAccessedDirectly } from \"./messages\";\n\ntype ManagerConstructorArgs = {\n\tslices?: SliceZone;\n};\n\nexport class SimulatorManager {\n\tpublic state: State;\n\tprivate _api: SimulatorAPI | null;\n\tprivate _initialized: boolean;\n\n\tconstructor(args?: ManagerConstructorArgs) {\n\t\tthis.state = new State(args);\n\t\tthis._api = null;\n\t\tthis._initialized = false;\n\t}\n\n\tasync init(): Promise<void> {\n\t\tif (this._initialized) {\n\t\t\treturn;\n\t\t} else {\n\t\t\tthis._initialized = true;\n\t\t}\n\n\t\t// Init state manager\n\t\tawait this.state.init();\n\n\t\t// Init API\n\t\ttry {\n\t\t\tawait this._initAPI();\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror instanceof Error &&\n\t\t\t\terror.message === \"Receiver is currently not embedded as an iframe\" &&\n\t\t\t\t!this.state.slices.length\n\t\t\t) {\n\t\t\t\t// Catch not embedded error and display message\n\t\t\t\tthis.state.message = sliceSimulatorAccessedDirectly;\n\t\t\t}\n\t\t\tconsole.error(error);\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Init listeners\n\t\tthis._initListeners();\n\t}\n\n\tprivate async _initAPI(): Promise<void> {\n\t\t// Register SimulatorAPI request handlers\n\t\tthis._api = new SimulatorAPI({\n\t\t\t[ClientRequestType.SetSliceZone]: (req, res) => {\n\t\t\t\tthis.state.setSliceZone(req.data);\n\n\t\t\t\treturn res.success();\n\t\t\t},\n\t\t\t[ClientRequestType.ScrollToSlice]: (req, res) => {\n\t\t\t\t// Error if `sliceIndex` is invalid\n\t\t\t\tif (req.data.sliceIndex < 0) {\n\t\t\t\t\treturn res.error(\"`sliceIndex` must be > 0\", 400);\n\t\t\t\t} else if (req.data.sliceIndex >= this.state.slices.length) {\n\t\t\t\t\treturn res.error(\n\t\t\t\t\t\t`\\`sliceIndex\\` must be < ${this.state.slices.length} (\\`<SliceZone />\\` current length)`,\n\t\t\t\t\t\t400,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst $sliceZone = getSliceZoneDOM(this.state.slices.length);\n\t\t\t\tif (!$sliceZone) {\n\t\t\t\t\treturn res.error(\"Failed to find `<SliceZone />`\", 500);\n\t\t\t\t}\n\n\t\t\t\t// Destroy existing active slice as we're about to scroll\n\t\t\t\tthis.state.activeSlice = null;\n\n\t\t\t\tconst $slice = $sliceZone.children[req.data.sliceIndex];\n\t\t\t\tif (!$slice) {\n\t\t\t\t\treturn res.error(\n\t\t\t\t\t\t`Failed fo find slice at index $\\`{req.data.sliceIndex}\\` in \\`<SliceZone />\\``,\n\t\t\t\t\t\t500,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Scroll to Slice\n\t\t\t\t$slice.scrollIntoView({\n\t\t\t\t\tbehavior: req.data.behavior,\n\t\t\t\t\tblock: req.data.block,\n\t\t\t\t\tinline: req.data.inline,\n\t\t\t\t});\n\n\t\t\t\t// Update active slice after scrolling\n\t\t\t\tthis._api?.options.activeSliceAPI &&\n\t\t\t\t\tsetTimeout(this.state.setActiveSlice, 750);\n\n\t\t\t\treturn res.success();\n\t\t\t},\n\t\t});\n\n\t\t// Mark API as ready\n\t\tawait this._api.ready();\n\t}\n\n\tprivate _initListeners(): void {\n\t\tif (this._api?.options.activeSliceAPI) {\n\t\t\t// Update active slice on mouse move\n\t\t\twindow.addEventListener(\"mousemove\", () => {\n\t\t\t\tthis.state.setActiveSlice();\n\t\t\t});\n\t\t\t// Update active slice on events impacting slices rendering\n\t\t\twindow.addEventListener(\"resize\", () => {\n\t\t\t\tthis.state.setActiveSlice();\n\t\t\t});\n\t\t\twindow.addEventListener(\"mousewheel\", () => {\n\t\t\t\tthis._api?.options.activeSliceAPI &&\n\t\t\t\t\tsetTimeout(this.state.setActiveSlice, 200);\n\t\t\t});\n\n\t\t\t// Update active slice when slices are set\n\t\t\tthis.state.on(StateEventType.Slices, () => {\n\t\t\t\tthis.state.setActiveSlice();\n\t\t\t});\n\t\t\t// Send active slices to renderer\n\t\t\tthis.state.on(StateEventType.ActiveSlice, async (activeSlice) => {\n\t\t\t\tif (this._api) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait this._api.setActiveSlice(activeSlice);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t// Just log bad requests, throw everything else\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\terror instanceof ResponseError &&\n\t\t\t\t\t\t\terror.response.status === 400\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconsole.error(error.response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this._api?.options.sliceZoneSizeAPI) {\n\t\t\t// Monitor Simulator root node size\n\t\t\tconst resizeObserver = new ResizeObserver(\n\t\t\t\tthrottle(async (entries) => {\n\t\t\t\t\tconst [entry] = entries;\n\n\t\t\t\t\tif (this._api && entry) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this._api.setSliceZoneSize({ rect: entry.contentRect });\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t// Just log bad requests, throw everything else\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\terror instanceof ResponseError &&\n\t\t\t\t\t\t\t\terror.response.status === 400\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tconsole.error(error.response);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, 16),\n\t\t\t);\n\t\t\tconst observeSimulatorRoot = () => {\n\t\t\t\tconst simulatorRootDOM = getSimulatorRootDOM();\n\t\t\t\tif (simulatorRootDOM) {\n\t\t\t\t\tresizeObserver.disconnect();\n\t\t\t\t\tresizeObserver.observe(simulatorRootDOM);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Monitor Simulator root node in DOM\n\t\t\tconst mutationObserver = new MutationObserver(observeSimulatorRoot);\n\t\t\t// We want it to fail if not found\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tmutationObserver.observe(getSimulatorDOM()!, {\n\t\t\t\tsubtree: false,\n\t\t\t\tchildList: true,\n\t\t\t});\n\t\t}\n\t}\n}\n"],"names":["_a"],"mappings":"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"}
1
+ {"version":3,"file":"SimulatorManager.js","sources":["../../../src/kit/SimulatorManager.ts"],"sourcesContent":["import type { SliceZone } from \"@prismicio/client\";\n\nimport { throttle } from \"../lib/throttle\";\n\nimport { ClientRequestType } from \"../types\";\nimport { StateEventType } from \"./types\";\n\nimport { SimulatorAPI } from \"../SimulatorAPI\";\nimport { ResponseError } from \"../channel\";\n\nimport { State } from \"./State\";\nimport {\n\tgetSimulatorDOM,\n\tgetSimulatorRootDOM,\n\tgetSliceZoneDOM,\n} from \"./domHelpers\";\nimport { sliceSimulatorAccessedDirectly } from \"./messages\";\n\ntype ManagerConstructorArgs = {\n\tslices?: SliceZone;\n};\n\nexport class SimulatorManager {\n\tpublic state: State;\n\tprivate _api: SimulatorAPI | null;\n\tprivate _initialized: boolean;\n\n\tconstructor(args?: ManagerConstructorArgs) {\n\t\tthis.state = new State(args);\n\t\tthis._api = null;\n\t\tthis._initialized = false;\n\t}\n\n\tasync init(): Promise<void> {\n\t\tif (this._initialized) {\n\t\t\treturn;\n\t\t} else {\n\t\t\tthis._initialized = true;\n\t\t}\n\n\t\t// Init state manager\n\t\tawait this.state.init();\n\n\t\t// Init API\n\t\ttry {\n\t\t\tawait this._initAPI();\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror instanceof Error &&\n\t\t\t\terror.message === \"Receiver is currently not embedded as an iframe\" &&\n\t\t\t\t!this.state.slices.length\n\t\t\t) {\n\t\t\t\t// Catch not embedded error and display message\n\t\t\t\tthis.state.message = sliceSimulatorAccessedDirectly;\n\t\t\t}\n\t\t\tconsole.error(error);\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Init listeners\n\t\tthis._initListeners();\n\t}\n\n\tprivate async _initAPI(): Promise<void> {\n\t\t// Register SimulatorAPI request handlers\n\t\tthis._api = new SimulatorAPI({\n\t\t\t[ClientRequestType.SetSliceZone]: (req, res) => {\n\t\t\t\tthis.state.setSliceZone(req.data);\n\n\t\t\t\treturn res.success();\n\t\t\t},\n\t\t\t[ClientRequestType.ScrollToSlice]: (req, res) => {\n\t\t\t\t// Error if `sliceIndex` is invalid\n\t\t\t\tif (req.data.sliceIndex < 0) {\n\t\t\t\t\treturn res.error(\"`sliceIndex` must be > 0\", 400);\n\t\t\t\t} else if (req.data.sliceIndex >= this.state.slices.length) {\n\t\t\t\t\treturn res.error(\n\t\t\t\t\t\t`\\`sliceIndex\\` must be < ${this.state.slices.length} (\\`<SliceZone />\\` current length)`,\n\t\t\t\t\t\t400,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst $sliceZone = getSliceZoneDOM(this.state.slices.length);\n\t\t\t\tif (!$sliceZone) {\n\t\t\t\t\treturn res.error(\"Failed to find `<SliceZone />`\", 500);\n\t\t\t\t}\n\n\t\t\t\t// Destroy existing active slice as we're about to scroll\n\t\t\t\tthis.state.activeSlice = null;\n\n\t\t\t\tconst $slice = $sliceZone.children[req.data.sliceIndex];\n\t\t\t\tif (!$slice) {\n\t\t\t\t\treturn res.error(\n\t\t\t\t\t\t`Failed fo find slice at index $\\`{req.data.sliceIndex}\\` in \\`<SliceZone />\\``,\n\t\t\t\t\t\t500,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Scroll to Slice\n\t\t\t\t$slice.scrollIntoView({\n\t\t\t\t\tbehavior: req.data.behavior,\n\t\t\t\t\tblock: req.data.block,\n\t\t\t\t\tinline: req.data.inline,\n\t\t\t\t});\n\n\t\t\t\t// Update active slice after scrolling\n\t\t\t\tthis._api?.options.activeSliceAPI &&\n\t\t\t\t\tsetTimeout(this.state.setActiveSlice, 750);\n\n\t\t\t\treturn res.success();\n\t\t\t},\n\t\t});\n\n\t\t// Mark API as ready\n\t\tawait this._api.ready();\n\t}\n\n\tprivate _initListeners(): void {\n\t\tif (this._api?.options.activeSliceAPI) {\n\t\t\t// Update active slice on mouse move\n\t\t\twindow.addEventListener(\"mousemove\", () => {\n\t\t\t\tthis.state.setActiveSlice();\n\t\t\t});\n\t\t\t// Update active slice on events impacting slices rendering\n\t\t\twindow.addEventListener(\"resize\", () => {\n\t\t\t\tthis.state.setActiveSlice();\n\t\t\t});\n\t\t\twindow.addEventListener(\"mousewheel\", () => {\n\t\t\t\tsetTimeout(this.state.setActiveSlice, 200);\n\t\t\t});\n\n\t\t\t// Update active slice when slices are set\n\t\t\tthis.state.on(StateEventType.Slices, () => {\n\t\t\t\tthis.state.setActiveSlice();\n\t\t\t});\n\t\t\t// Send active slices to renderer\n\t\t\tthis.state.on(StateEventType.ActiveSlice, async (activeSlice) => {\n\t\t\t\tif (this._api) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait this._api.setActiveSlice(activeSlice);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t// Just log bad requests, throw everything else\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\terror instanceof ResponseError &&\n\t\t\t\t\t\t\terror.response.status === 400\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconsole.error(error.response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this._api?.options.sliceZoneSizeAPI) {\n\t\t\t// Monitor Simulator root node size\n\t\t\tconst resizeObserver = new ResizeObserver(\n\t\t\t\tthrottle(async (entries) => {\n\t\t\t\t\tconst [entry] = entries;\n\n\t\t\t\t\tif (this._api && entry) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this._api.setSliceZoneSize({ rect: entry.contentRect });\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t// Just log bad requests, throw everything else\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\terror instanceof ResponseError &&\n\t\t\t\t\t\t\t\terror.response.status === 400\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tconsole.error(error.response);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, 16),\n\t\t\t);\n\t\t\tconst observeSimulatorRoot = () => {\n\t\t\t\tconst simulatorRootDOM = getSimulatorRootDOM();\n\t\t\t\tresizeObserver.disconnect();\n\t\t\t\tif (simulatorRootDOM) {\n\t\t\t\t\tresizeObserver.observe(simulatorRootDOM);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Monitor Simulator root node in DOM\n\t\t\tconst mutationObserver = new MutationObserver(observeSimulatorRoot);\n\t\t\t// We want it to fail if not found\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tmutationObserver.observe(getSimulatorDOM()!, {\n\t\t\t\tsubtree: false,\n\t\t\t\tchildList: true,\n\t\t\t});\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;MAsBa,iBAAgB;AAAA,EAK5B,YAAY,MAA6B;AAJlC;AACC;AACA;AAGF,SAAA,QAAQ,IAAI,MAAM,IAAI;AAC3B,SAAK,OAAO;AACZ,SAAK,eAAe;AAAA,EACrB;AAAA,EAEA,MAAM,OAAI;AACT,QAAI,KAAK,cAAc;AACtB;AAAA,IAAA,OACM;AACN,WAAK,eAAe;AAAA,IACpB;AAGK,UAAA,KAAK,MAAM;AAGb,QAAA;AACH,YAAM,KAAK;aACH;AAEP,UAAA,iBAAiB,SACjB,MAAM,YAAY,qDAClB,CAAC,KAAK,MAAM,OAAO,QAClB;AAED,aAAK,MAAM,UAAU;AAAA,MACrB;AACD,cAAQ,MAAM,KAAK;AAEnB;AAAA,IACA;AAGD,SAAK,eAAc;AAAA,EACpB;AAAA,EAEQ,MAAM,WAAQ;AAEhB,SAAA,OAAO,IAAI,aAAa;AAAA,MAC5B,CAAC,kBAAkB,YAAY,GAAG,CAAC,KAAK,QAAO;AACzC,aAAA,MAAM,aAAa,IAAI,IAAI;AAEhC,eAAO,IAAI;MACZ;AAAA,MACA,CAAC,kBAAkB,aAAa,GAAG,CAAC,KAAK,QAAO;;AAE3C,YAAA,IAAI,KAAK,aAAa,GAAG;AACrB,iBAAA,IAAI,MAAM,4BAA4B,GAAG;AAAA,QAAA,WACtC,IAAI,KAAK,cAAc,KAAK,MAAM,OAAO,QAAQ;AAC3D,iBAAO,IAAI,MACV,4BAA4B,KAAK,MAAM,OAAO,6CAC9C,GAAG;AAAA,QAEJ;AAED,cAAM,aAAa,gBAAgB,KAAK,MAAM,OAAO,MAAM;AAC3D,YAAI,CAAC,YAAY;AACT,iBAAA,IAAI,MAAM,kCAAkC,GAAG;AAAA,QACtD;AAGD,aAAK,MAAM,cAAc;AAEzB,cAAM,SAAS,WAAW,SAAS,IAAI,KAAK,UAAU;AACtD,YAAI,CAAC,QAAQ;AACL,iBAAA,IAAI,MACV,iFACA,GAAG;AAAA,QAEJ;AAGD,eAAO,eAAe;AAAA,UACrB,UAAU,IAAI,KAAK;AAAA,UACnB,OAAO,IAAI,KAAK;AAAA,UAChB,QAAQ,IAAI,KAAK;AAAA,QAAA,CACjB;AAGD,oBAAK,SAAL,mBAAW,QAAQ,mBAClB,WAAW,KAAK,MAAM,gBAAgB,GAAG;AAE1C,eAAO,IAAI;MACZ;AAAA,IAAA,CACA;AAGK,UAAA,KAAK,KAAK;EACjB;AAAA,EAEQ,iBAAc;;AACjB,SAAA,UAAK,SAAL,mBAAW,QAAQ,gBAAgB;AAE/B,aAAA,iBAAiB,aAAa,MAAK;AACzC,aAAK,MAAM;OACX;AAEM,aAAA,iBAAiB,UAAU,MAAK;AACtC,aAAK,MAAM;OACX;AACM,aAAA,iBAAiB,cAAc,MAAK;AAC/B,mBAAA,KAAK,MAAM,gBAAgB,GAAG;AAAA,MAAA,CACzC;AAGD,WAAK,MAAM,GAAG,eAAe,QAAQ,MAAK;AACzC,aAAK,MAAM;OACX;AAED,WAAK,MAAM,GAAG,eAAe,aAAa,OAAO,gBAAe;AAC/D,YAAI,KAAK,MAAM;AACV,cAAA;AACG,kBAAA,KAAK,KAAK,eAAe,WAAW;AAAA,mBAClC;AAER,gBACC,iBAAiB,iBACjB,MAAM,SAAS,WAAW,KACzB;AACO,sBAAA,MAAM,MAAM,QAAQ;AAAA,YAAA,OACtB;AACA,oBAAA;AAAA,YACN;AAAA,UACD;AAAA,QACD;AAAA,MAAA,CACD;AAAA,IACD;AAEG,SAAA,UAAK,SAAL,mBAAW,QAAQ,kBAAkB;AAExC,YAAM,iBAAiB,IAAI,eAC1B,SAAS,OAAO,YAAW;AACpB,cAAA,CAAC,KAAK,IAAI;AAEZ,YAAA,KAAK,QAAQ,OAAO;AACnB,cAAA;AACH,kBAAM,KAAK,KAAK,iBAAiB,EAAE,MAAM,MAAM,aAAa;AAAA,mBACpD;AAER,gBACC,iBAAiB,iBACjB,MAAM,SAAS,WAAW,KACzB;AACO,sBAAA,MAAM,MAAM,QAAQ;AAAA,YAAA,OACtB;AACA,oBAAA;AAAA,YACN;AAAA,UACD;AAAA,QACD;AAAA,MAAA,GACC,EAAE,CAAC;AAEP,YAAM,uBAAuB,MAAK;AACjC,cAAM,mBAAmB;AACzB,uBAAe,WAAU;AACzB,YAAI,kBAAkB;AACrB,yBAAe,QAAQ,gBAAgB;AAAA,QACvC;AAAA,MAAA;AAII,YAAA,mBAAmB,IAAI,iBAAiB,oBAAoB;AAGjD,uBAAA,QAAQ,mBAAoB;AAAA,QAC5C,SAAS;AAAA,QACT,WAAW;AAAA,MAAA,CACX;AAAA,IACD;AAAA,EACF;AACA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs","sources":["../../src/types.ts"],"sourcesContent":["import { SliceZone } from \"@prismicio/types\";\n\nimport { RequestMessage, ResponseMessage, Transaction } from \"./channel\";\n\nexport type ActiveSlice = {\n\trect: DOMRect;\n\tsliceID: string;\n\tvariationID: string;\n\tindex: number;\n};\n\nexport type SliceZoneSize = {\n\trect: DOMRect;\n};\n\nexport enum APIRequestType {\n\tSetActiveSlice = \"setActiveSlice\",\n\tSetSliceZoneSize = \"setSliceZoneSize\",\n}\n\nexport type APITransactions = {\n\t[APIRequestType.SetActiveSlice]: Transaction<\n\t\tRequestMessage<APIRequestType.SetActiveSlice, ActiveSlice | null>\n\t>;\n\t[APIRequestType.SetSliceZoneSize]: Transaction<\n\t\tRequestMessage<APIRequestType.SetSliceZoneSize, SliceZoneSize | null>\n\t>;\n};\n\nexport enum ClientRequestType {\n\tPing = \"ping\",\n\tSetSliceZone = \"setSliceZone\",\n\tScrollToSlice = \"scrollToSlice\",\n}\n\nexport type ClientTransactions = {\n\t[ClientRequestType.Ping]: Transaction<\n\t\tRequestMessage<ClientRequestType.Ping>,\n\t\tResponseMessage<\"pong\">\n\t>;\n\n\t[ClientRequestType.SetSliceZone]: Transaction<\n\t\tRequestMessage<ClientRequestType.SetSliceZone, SliceZone>\n\t>;\n\n\t[ClientRequestType.ScrollToSlice]: Transaction<\n\t\tRequestMessage<\n\t\t\tClientRequestType.ScrollToSlice,\n\t\t\t{\n\t\t\t\tsliceIndex: number;\n\t\t\t\tbehavior?: \"auto\" | \"smooth\";\n\t\t\t\tblock?: \"start\" | \"center\" | \"end\" | \"nearest\";\n\t\t\t\tinline?: \"start\" | \"center\" | \"end\" | \"nearest\";\n\t\t\t}\n\t\t>\n\t>;\n};\n"],"names":["APIRequestType","ClientRequestType"],"mappings":";;AAeYA,QAAA,iBAAA;AAAA,CAAZ,SAAYA,iBAAc;AACzBA,kBAAA,gBAAA,IAAA;AACAA,kBAAA,kBAAA,IAAA;AACD,GAHYA,2BAAAA,QAAAA,iBAGX,CAAA,EAAA;AAWWC,QAAA,oBAAA;AAAA,CAAZ,SAAYA,oBAAiB;AAC5BA,qBAAA,MAAA,IAAA;AACAA,qBAAA,cAAA,IAAA;AACAA,qBAAA,eAAA,IAAA;AACD,GAJYA,QAAA,sBAAAA,4BAIX,CAAA,EAAA;"}
1
+ {"version":3,"file":"types.cjs","sources":["../../src/types.ts"],"sourcesContent":["import { SliceZone } from \"@prismicio/client\";\n\nimport { RequestMessage, ResponseMessage, Transaction } from \"./channel\";\n\nexport type ActiveSlice = {\n\trect: DOMRect;\n\tsliceID: string;\n\tvariationID: string;\n\tindex: number;\n};\n\nexport type SliceZoneSize = {\n\trect: DOMRect;\n};\n\nexport enum APIRequestType {\n\tSetActiveSlice = \"setActiveSlice\",\n\tSetSliceZoneSize = \"setSliceZoneSize\",\n}\n\nexport type APITransactions = {\n\t[APIRequestType.SetActiveSlice]: Transaction<\n\t\tRequestMessage<APIRequestType.SetActiveSlice, ActiveSlice | null>\n\t>;\n\t[APIRequestType.SetSliceZoneSize]: Transaction<\n\t\tRequestMessage<APIRequestType.SetSliceZoneSize, SliceZoneSize>\n\t>;\n};\n\nexport enum ClientRequestType {\n\tPing = \"ping\",\n\tSetSliceZone = \"setSliceZone\",\n\tScrollToSlice = \"scrollToSlice\",\n}\n\nexport type ClientTransactions = {\n\t[ClientRequestType.Ping]: Transaction<\n\t\tRequestMessage<ClientRequestType.Ping>,\n\t\tResponseMessage<\"pong\">\n\t>;\n\n\t[ClientRequestType.SetSliceZone]: Transaction<\n\t\tRequestMessage<ClientRequestType.SetSliceZone, SliceZone>\n\t>;\n\n\t[ClientRequestType.ScrollToSlice]: Transaction<\n\t\tRequestMessage<\n\t\t\tClientRequestType.ScrollToSlice,\n\t\t\t{\n\t\t\t\tsliceIndex: number;\n\t\t\t\tbehavior?: \"auto\" | \"smooth\";\n\t\t\t\tblock?: \"start\" | \"center\" | \"end\" | \"nearest\";\n\t\t\t\tinline?: \"start\" | \"center\" | \"end\" | \"nearest\";\n\t\t\t}\n\t\t>\n\t>;\n};\n"],"names":["APIRequestType","ClientRequestType"],"mappings":";;AAeYA,QAAA,iBAAA;AAAA,CAAZ,SAAYA,iBAAc;AACzBA,kBAAA,gBAAA,IAAA;AACAA,kBAAA,kBAAA,IAAA;AACD,GAHYA,2BAAAA,QAAAA,iBAGX,CAAA,EAAA;AAWWC,QAAA,oBAAA;AAAA,CAAZ,SAAYA,oBAAiB;AAC5BA,qBAAA,MAAA,IAAA;AACAA,qBAAA,cAAA,IAAA;AACAA,qBAAA,eAAA,IAAA;AACD,GAJYA,QAAA,sBAAAA,4BAIX,CAAA,EAAA;"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { SliceZone } from "@prismicio/types";
1
+ import { SliceZone } from "@prismicio/client";
2
2
  import { RequestMessage, ResponseMessage, Transaction } from "./channel";
3
3
  export type ActiveSlice = {
4
4
  rect: DOMRect;
@@ -15,7 +15,7 @@ export declare enum APIRequestType {
15
15
  }
16
16
  export type APITransactions = {
17
17
  [APIRequestType.SetActiveSlice]: Transaction<RequestMessage<APIRequestType.SetActiveSlice, ActiveSlice | null>>;
18
- [APIRequestType.SetSliceZoneSize]: Transaction<RequestMessage<APIRequestType.SetSliceZoneSize, SliceZoneSize | null>>;
18
+ [APIRequestType.SetSliceZoneSize]: Transaction<RequestMessage<APIRequestType.SetSliceZoneSize, SliceZoneSize>>;
19
19
  };
20
20
  export declare enum ClientRequestType {
21
21
  Ping = "ping",
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../src/types.ts"],"sourcesContent":["import { SliceZone } from \"@prismicio/types\";\n\nimport { RequestMessage, ResponseMessage, Transaction } from \"./channel\";\n\nexport type ActiveSlice = {\n\trect: DOMRect;\n\tsliceID: string;\n\tvariationID: string;\n\tindex: number;\n};\n\nexport type SliceZoneSize = {\n\trect: DOMRect;\n};\n\nexport enum APIRequestType {\n\tSetActiveSlice = \"setActiveSlice\",\n\tSetSliceZoneSize = \"setSliceZoneSize\",\n}\n\nexport type APITransactions = {\n\t[APIRequestType.SetActiveSlice]: Transaction<\n\t\tRequestMessage<APIRequestType.SetActiveSlice, ActiveSlice | null>\n\t>;\n\t[APIRequestType.SetSliceZoneSize]: Transaction<\n\t\tRequestMessage<APIRequestType.SetSliceZoneSize, SliceZoneSize | null>\n\t>;\n};\n\nexport enum ClientRequestType {\n\tPing = \"ping\",\n\tSetSliceZone = \"setSliceZone\",\n\tScrollToSlice = \"scrollToSlice\",\n}\n\nexport type ClientTransactions = {\n\t[ClientRequestType.Ping]: Transaction<\n\t\tRequestMessage<ClientRequestType.Ping>,\n\t\tResponseMessage<\"pong\">\n\t>;\n\n\t[ClientRequestType.SetSliceZone]: Transaction<\n\t\tRequestMessage<ClientRequestType.SetSliceZone, SliceZone>\n\t>;\n\n\t[ClientRequestType.ScrollToSlice]: Transaction<\n\t\tRequestMessage<\n\t\t\tClientRequestType.ScrollToSlice,\n\t\t\t{\n\t\t\t\tsliceIndex: number;\n\t\t\t\tbehavior?: \"auto\" | \"smooth\";\n\t\t\t\tblock?: \"start\" | \"center\" | \"end\" | \"nearest\";\n\t\t\t\tinline?: \"start\" | \"center\" | \"end\" | \"nearest\";\n\t\t\t}\n\t\t>\n\t>;\n};\n"],"names":["APIRequestType","ClientRequestType"],"mappings":"AAeY,IAAA;AAAA,CAAZ,SAAYA,iBAAc;AACzBA,kBAAA,gBAAA,IAAA;AACAA,kBAAA,kBAAA,IAAA;AACD,GAHY,mBAAA,iBAGX,CAAA,EAAA;AAWW,IAAA;AAAA,CAAZ,SAAYC,oBAAiB;AAC5BA,qBAAA,MAAA,IAAA;AACAA,qBAAA,cAAA,IAAA;AACAA,qBAAA,eAAA,IAAA;AACD,GAJY,sBAAA,oBAIX,CAAA,EAAA;"}
1
+ {"version":3,"file":"types.js","sources":["../../src/types.ts"],"sourcesContent":["import { SliceZone } from \"@prismicio/client\";\n\nimport { RequestMessage, ResponseMessage, Transaction } from \"./channel\";\n\nexport type ActiveSlice = {\n\trect: DOMRect;\n\tsliceID: string;\n\tvariationID: string;\n\tindex: number;\n};\n\nexport type SliceZoneSize = {\n\trect: DOMRect;\n};\n\nexport enum APIRequestType {\n\tSetActiveSlice = \"setActiveSlice\",\n\tSetSliceZoneSize = \"setSliceZoneSize\",\n}\n\nexport type APITransactions = {\n\t[APIRequestType.SetActiveSlice]: Transaction<\n\t\tRequestMessage<APIRequestType.SetActiveSlice, ActiveSlice | null>\n\t>;\n\t[APIRequestType.SetSliceZoneSize]: Transaction<\n\t\tRequestMessage<APIRequestType.SetSliceZoneSize, SliceZoneSize>\n\t>;\n};\n\nexport enum ClientRequestType {\n\tPing = \"ping\",\n\tSetSliceZone = \"setSliceZone\",\n\tScrollToSlice = \"scrollToSlice\",\n}\n\nexport type ClientTransactions = {\n\t[ClientRequestType.Ping]: Transaction<\n\t\tRequestMessage<ClientRequestType.Ping>,\n\t\tResponseMessage<\"pong\">\n\t>;\n\n\t[ClientRequestType.SetSliceZone]: Transaction<\n\t\tRequestMessage<ClientRequestType.SetSliceZone, SliceZone>\n\t>;\n\n\t[ClientRequestType.ScrollToSlice]: Transaction<\n\t\tRequestMessage<\n\t\t\tClientRequestType.ScrollToSlice,\n\t\t\t{\n\t\t\t\tsliceIndex: number;\n\t\t\t\tbehavior?: \"auto\" | \"smooth\";\n\t\t\t\tblock?: \"start\" | \"center\" | \"end\" | \"nearest\";\n\t\t\t\tinline?: \"start\" | \"center\" | \"end\" | \"nearest\";\n\t\t\t}\n\t\t>\n\t>;\n};\n"],"names":["APIRequestType","ClientRequestType"],"mappings":"AAeY,IAAA;AAAA,CAAZ,SAAYA,iBAAc;AACzBA,kBAAA,gBAAA,IAAA;AACAA,kBAAA,kBAAA,IAAA;AACD,GAHY,mBAAA,iBAGX,CAAA,EAAA;AAWW,IAAA;AAAA,CAAZ,SAAYC,oBAAiB;AAC5BA,qBAAA,MAAA,IAAA;AACAA,qBAAA,cAAA,IAAA;AACAA,qBAAA,eAAA,IAAA;AACD,GAJY,sBAAA,oBAIX,CAAA,EAAA;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prismicio/simulator",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Preview and develop Prismic slices fast with minimal configuration",
5
5
  "keywords": [
6
6
  "typescript",
@@ -55,14 +55,14 @@
55
55
  },
56
56
  "scripts": {
57
57
  "build": "vite build",
58
- "dev": "nuxi dev playground",
58
+ "dev": "next dev playground",
59
59
  "format": "prettier --write .",
60
- "prepare": "npm run build && nuxi prepare playground",
60
+ "prepare": "npm run build",
61
61
  "release": "npm run test && standard-version && git push --follow-tags && npm run build && npm publish",
62
62
  "release:dry": "standard-version --dry-run",
63
63
  "release:alpha": "npm run test && standard-version --release-as major --prerelease alpha && git push --follow-tags && npm run build && npm publish --tag alpha",
64
64
  "release:alpha:dry": "standard-version --release-as major --prerelease alpha --dry-run",
65
- "lint": "eslint --ext .js,.ts .",
65
+ "lint": "eslint --ext .js,.ts,.jsx,.tsx .",
66
66
  "types": "vitest typecheck --run && tsc --noEmit",
67
67
  "types:watch": "vitest typecheck",
68
68
  "unit": "vitest run --coverage",
@@ -71,31 +71,39 @@
71
71
  "test": "npm run lint && npm run types && npm run unit && npm run build && npm run size"
72
72
  },
73
73
  "dependencies": {
74
- "@prismicio/client": "^7.0.1",
74
+ "@prismicio/client": "^7.1.0",
75
75
  "@types/statuses": "^2.0.1",
76
76
  "statuses": "^2.0.1"
77
77
  },
78
78
  "devDependencies": {
79
- "@nuxt/eslint-config": "^0.1.1",
80
- "@nuxtjs/prismic": "^3.0.0",
81
- "@nuxtjs/tailwindcss": "^6.7.0",
79
+ "@prismicio/next": "^1.3.1",
80
+ "@prismicio/react": "^2.7.0",
82
81
  "@size-limit/preset-small-lib": "^8.2.4",
83
- "@slicemachine/adapter-nuxt": "^0.3.0",
82
+ "@slicemachine/adapter-next": "^0.3.0",
84
83
  "@trivago/prettier-plugin-sort-imports": "^4.1.1",
85
- "@types/node": "^18",
86
- "@typescript-eslint/eslint-plugin": "^5.59.9",
87
- "@typescript-eslint/parser": "^5.59.9",
84
+ "@types/node": "20.2.5",
85
+ "@types/react": "18.2.12",
86
+ "@types/react-dom": "18.2.5",
87
+ "@typescript-eslint/eslint-plugin": "^5.59.11",
88
+ "@typescript-eslint/parser": "^5.59.11",
88
89
  "@vitest/coverage-v8": "^0.32.0",
90
+ "autoprefixer": "^10.4.14",
91
+ "clsx": "^1.2.1",
89
92
  "eslint": "^8.42.0",
93
+ "eslint-config-next": "^13.4.5",
90
94
  "eslint-config-prettier": "^8.8.0",
91
95
  "eslint-plugin-prettier": "^4.2.1",
92
96
  "eslint-plugin-tsdoc": "^0.2.17",
93
97
  "jsdom": "^22.1.0",
94
- "nuxt": "^3.5.3",
98
+ "next": "13.4.5",
99
+ "postcss": "^8.4.24",
95
100
  "prettier": "^2.8.8",
96
101
  "prettier-plugin-jsdoc": "^0.4.2",
102
+ "react": "18.2.0",
103
+ "react-dom": "18.2.0",
97
104
  "size-limit": "^8.2.4",
98
105
  "standard-version": "^9.5.0",
106
+ "tailwindcss": "^3.3.2",
99
107
  "typescript": "^5.1.3",
100
108
  "vite": "^4.3.9",
101
109
  "vite-plugin-sdk": "^0.1.1",
@@ -60,16 +60,10 @@ export class SimulatorAPI
60
60
 
61
61
  // Append API to window object
62
62
  if (debug) {
63
- type APIWindow = typeof window & {
64
- prismic: { sliceSimulator?: { api?: SimulatorAPI[] } };
65
- };
66
-
67
- (window as APIWindow).prismic ||= {};
68
- (window as APIWindow).prismic.sliceSimulator ||= {};
69
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
70
- (window as APIWindow).prismic.sliceSimulator!.api ||= [];
71
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
72
- (window as APIWindow).prismic.sliceSimulator!.api!.push(this);
63
+ window.prismic ||= {};
64
+ window.prismic.sliceSimulator ||= {};
65
+ window.prismic.sliceSimulator.api ||= [];
66
+ window.prismic.sliceSimulator.api.push(this);
73
67
  }
74
68
  }
75
69
 
@@ -57,16 +57,10 @@ export class SimulatorClient
57
57
 
58
58
  // Append client to window object
59
59
  if (debug) {
60
- type ClientWindow = typeof window & {
61
- prismic: { sliceSimulator?: { client?: SimulatorClient[] } };
62
- };
63
-
64
- (window as ClientWindow).prismic ||= {};
65
- (window as ClientWindow).prismic.sliceSimulator ||= {};
66
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
67
- (window as ClientWindow).prismic.sliceSimulator!.client ||= [];
68
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
69
- (window as ClientWindow).prismic.sliceSimulator!.client!.push(this);
60
+ window.prismic ||= {};
61
+ window.prismic.sliceSimulator ||= {};
62
+ window.prismic.sliceSimulator.client ||= [];
63
+ window.prismic.sliceSimulator.client.push(this);
70
64
  }
71
65
  }
72
66
 
@@ -0,0 +1,13 @@
1
+ import { SimulatorAPI } from "./SimulatorAPI";
2
+ import { SimulatorClient } from "./SimulatorClient";
3
+
4
+ declare global {
5
+ interface Window {
6
+ prismic?: {
7
+ sliceSimulator?: {
8
+ api?: SimulatorAPI[];
9
+ client?: SimulatorClient[];
10
+ };
11
+ };
12
+ }
13
+ }
package/src/index.ts CHANGED
@@ -38,3 +38,5 @@ export type {
38
38
  APITransactions,
39
39
  ClientTransactions,
40
40
  } from "./types";
41
+
42
+ export * from "./globalExtensions";
@@ -127,8 +127,7 @@ export class SimulatorManager {
127
127
  this.state.setActiveSlice();
128
128
  });
129
129
  window.addEventListener("mousewheel", () => {
130
- this._api?.options.activeSliceAPI &&
131
- setTimeout(this.state.setActiveSlice, 200);
130
+ setTimeout(this.state.setActiveSlice, 200);
132
131
  });
133
132
 
134
133
  // Update active slice when slices are set
@@ -180,8 +179,8 @@ export class SimulatorManager {
180
179
  );
181
180
  const observeSimulatorRoot = () => {
182
181
  const simulatorRootDOM = getSimulatorRootDOM();
182
+ resizeObserver.disconnect();
183
183
  if (simulatorRootDOM) {
184
- resizeObserver.disconnect();
185
184
  resizeObserver.observe(simulatorRootDOM);
186
185
  }
187
186
  };
package/src/types.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { SliceZone } from "@prismicio/types";
1
+ import { SliceZone } from "@prismicio/client";
2
2
 
3
3
  import { RequestMessage, ResponseMessage, Transaction } from "./channel";
4
4
 
@@ -23,7 +23,7 @@ export type APITransactions = {
23
23
  RequestMessage<APIRequestType.SetActiveSlice, ActiveSlice | null>
24
24
  >;
25
25
  [APIRequestType.SetSliceZoneSize]: Transaction<
26
- RequestMessage<APIRequestType.SetSliceZoneSize, SliceZoneSize | null>
26
+ RequestMessage<APIRequestType.SetSliceZoneSize, SliceZoneSize>
27
27
  >;
28
28
  };
29
29