@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 +7 -0
- package/dist/SimulatorAPI.cjs.map +1 -1
- package/dist/SimulatorAPI.js.map +1 -1
- package/dist/SimulatorClient.cjs.map +1 -1
- package/dist/SimulatorClient.js.map +1 -1
- package/dist/globalExtensions.d.ts +12 -0
- package/dist/index.d.ts +1 -0
- package/dist/kit/SimulatorManager.cjs +2 -3
- package/dist/kit/SimulatorManager.cjs.map +1 -1
- package/dist/kit/SimulatorManager.js +2 -3
- package/dist/kit/SimulatorManager.js.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.js.map +1 -1
- package/package.json +21 -13
- package/src/SimulatorAPI.ts +4 -10
- package/src/SimulatorClient.ts +4 -10
- package/src/globalExtensions.ts +13 -0
- package/src/index.ts +2 -0
- package/src/kit/SimulatorManager.ts +2 -3
- package/src/types.ts +2 -2
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\
|
|
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;;;"}
|
package/dist/SimulatorAPI.js.map
CHANGED
|
@@ -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\
|
|
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\
|
|
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\
|
|
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;"}
|
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
|
-
|
|
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\
|
|
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":";;;;;;;;;;;;;;;;;;MAsBa,iBAAgB;AAAA,EAK5B,YAAY,MAA6B;AAJlC;AACC;AACA;AAGF,SAAA,QAAQ,IAAIA,MAAA,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,UAAUC;MACrB;AACD,cAAQ,MAAM,KAAK;AAEnB;AAAA,IACA;AAGD,SAAK,eAAc;AAAA,EACpB;AAAA,EAEQ,MAAM,WAAQ;AAEhB,SAAA,OAAO,IAAIC,0BAAa;AAAA,MAC5B,CAACC,wBAAkB,YAAY,GAAG,CAAC,KAAK,QAAO;AACzC,aAAA,MAAM,aAAa,IAAI,IAAI;AAEhC,eAAO,IAAI;MACZ;AAAA,MACA,CAACA,wBAAkB,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,aAAaC,WAAAA,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,GAAGC,QAAe,eAAA,QAAQ,MAAK;AACzC,aAAK,MAAM;OACX;AAED,WAAK,MAAM,GAAGA,QAAe,eAAA,aAAa,OAAO,gBAAe;AAC/D,YAAI,KAAK,MAAM;AACV,cAAA;AACG,kBAAA,KAAK,KAAK,eAAe,WAAW;AAAA,mBAClC;AAER,gBACC,iBAAiBC,OAAAA,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,eAC1BC,SAAA,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,iBAAiBD,OAAAA,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,mBAAmBE,WAAAA;AACzB,uBAAe,WAAU;AACzB,YAAI,kBAAkB;AACrB,yBAAe,QAAQ,gBAAgB;AAAA,QACvC;AAAA,MAAA;AAII,YAAA,mBAAmB,IAAI,iBAAiB,oBAAoB;AAGjD,uBAAA,QAAQC,WAAAA,mBAAoB;AAAA,QAC5C,SAAS;AAAA,QACT,WAAW;AAAA,MAAA,CACX;AAAA,IACD;AAAA,EACF;AACA;;"}
|
|
@@ -84,8 +84,7 @@ class SimulatorManager {
|
|
|
84
84
|
this.state.setActiveSlice();
|
|
85
85
|
});
|
|
86
86
|
window.addEventListener("mousewheel", () => {
|
|
87
|
-
|
|
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\
|
|
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":"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"}
|
package/dist/types.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.cjs","sources":["../../src/types.ts"],"sourcesContent":["import { SliceZone } from \"@prismicio/
|
|
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/
|
|
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
|
|
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/
|
|
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.
|
|
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": "
|
|
58
|
+
"dev": "next dev playground",
|
|
59
59
|
"format": "prettier --write .",
|
|
60
|
-
"prepare": "npm run build
|
|
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
|
|
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
|
-
"@
|
|
80
|
-
"@
|
|
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-
|
|
82
|
+
"@slicemachine/adapter-next": "^0.3.0",
|
|
84
83
|
"@trivago/prettier-plugin-sort-imports": "^4.1.1",
|
|
85
|
-
"@types/node": "
|
|
86
|
-
"@
|
|
87
|
-
"@
|
|
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
|
-
"
|
|
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",
|
package/src/SimulatorAPI.ts
CHANGED
|
@@ -60,16 +60,10 @@ export class SimulatorAPI
|
|
|
60
60
|
|
|
61
61
|
// Append API to window object
|
|
62
62
|
if (debug) {
|
|
63
|
-
|
|
64
|
-
|
|
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
|
|
package/src/SimulatorClient.ts
CHANGED
|
@@ -57,16 +57,10 @@ export class SimulatorClient
|
|
|
57
57
|
|
|
58
58
|
// Append client to window object
|
|
59
59
|
if (debug) {
|
|
60
|
-
|
|
61
|
-
|
|
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
|
|
package/src/index.ts
CHANGED
|
@@ -127,8 +127,7 @@ export class SimulatorManager {
|
|
|
127
127
|
this.state.setActiveSlice();
|
|
128
128
|
});
|
|
129
129
|
window.addEventListener("mousewheel", () => {
|
|
130
|
-
this.
|
|
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/
|
|
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
|
|
26
|
+
RequestMessage<APIRequestType.SetSliceZoneSize, SliceZoneSize>
|
|
27
27
|
>;
|
|
28
28
|
};
|
|
29
29
|
|