@docmentis/udoc-editor 0.8.4 → 0.8.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/edit-client.d.ts +5 -4
- package/dist/edit-client.d.ts.map +1 -1
- package/dist/edit-client.js +6 -5
- package/dist/edit-client.js.map +1 -1
- package/dist/edit-mode.d.ts.map +1 -1
- package/dist/edit-mode.js +5 -2
- package/dist/edit-mode.js.map +1 -1
- package/dist/grips.d.ts.map +1 -1
- package/dist/grips.js +11 -7
- package/dist/grips.js.map +1 -1
- package/dist/ruler-controls.d.ts +54 -0
- package/dist/ruler-controls.d.ts.map +1 -0
- package/dist/ruler-controls.js +270 -0
- package/dist/ruler-controls.js.map +1 -0
- package/dist/ruler-edits.d.ts +38 -0
- package/dist/ruler-edits.d.ts.map +1 -0
- package/dist/ruler-edits.js +157 -0
- package/dist/ruler-edits.js.map +1 -0
- package/dist/ruler.d.ts +6 -3
- package/dist/ruler.d.ts.map +1 -1
- package/dist/ruler.js +174 -33
- package/dist/ruler.js.map +1 -1
- package/dist/state.d.ts +7 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +2 -0
- package/dist/state.js.map +1 -1
- package/dist/styles.d.ts.map +1 -1
- package/dist/styles.js +99 -0
- package/dist/styles.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/worker/handlers.d.ts.map +1 -1
- package/dist/worker/handlers.js +3 -1
- package/dist/worker/handlers.js.map +1 -1
- package/dist/worker/protocol.d.ts +3 -0
- package/dist/worker/protocol.d.ts.map +1 -1
- package/dist/worker/worker-source.js +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruler-controls.js","sourceRoot":"","sources":["../src/ruler-controls.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,GAAG,4BAA4B,CAAC;AAE5C;;iBAEiB;AACjB,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,kDAAkD;AAClD,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,yEAAyE;AACzE,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB;kCACkC;AAClC,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;AACrB;6EAC6E;AAC7E,MAAM,IAAI,GAAG,GAAG,CAAC;AAEjB;;;4DAG4D;AAC5D,MAAM,SAAS,GAAkC;IAC7C,IAAI,EAAE,oBAAoB;IAC1B,MAAM,EAAE,kBAAkB;IAC1B,KAAK,EAAE,oBAAoB;IAC3B,OAAO,EAAE,kBAAkB;IAC3B,GAAG,EAAE,UAAU;CAClB,CAAC;AAsGF,2EAA2E;AAC3E,SAAS,GAAG,CAAC,EAAe,EAAE,KAAa,EAAE,MAAc,EAAE,CAAS;IAClE,MAAM,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACf,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACb,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,wCAAwC;AACxC,SAAS,IAAI,CAAC,CAAU,EAAE,EAAU;IAChC,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG;QAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;;QACtD,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;AAC7C,CAAC;AAED,sFAAsF;AACtF,SAAS,MAAM,CAAC,CAAU;IACtB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;QAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED;;uEAEuE;AACvE,MAAM,UAAU,mBAAmB,CAC/B,SAAiB,EACjB,IAAkD;IAElD,IAAI,IAAI,GAAgB,IAAI,CAAC;IAC7B,2EAA2E;IAC3E,IAAI,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;IAC9B,iEAAiE;IACjE,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,kEAAkE;IAClE,MAAM,OAAO,GAAG,CAAC,IAAkB,EAAE,SAAiB,EAAE,MAAiB,EAAE,IAAY,EAAW,EAAE;QAChG,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,EAAE,CAAC,SAAS,GAAG,0BAA0B,SAAS,EAAE,CAAC;QACrD,MAAM,CAAC,GAAY,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACjG,IAAI,CAAC,CAAC,CAAC,CAAC;QACR,OAAO,CAAC,CAAC;IACb,CAAC,CAAC;IACF;+DAC2D;IAC3D,MAAM,IAAI,GAAG,CAAC,IAAe,EAAW,EAAE;QACtC,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/D,OAAO,OAAO,CACV,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EACxB,4CAA4C,MAAM,EAAE,EACpD,MAAM,EACN,SAAS,CACZ,CAAC;IACN,CAAC,CAAC;IACF;;gBAEY;IACZ,MAAM,MAAM,GAAG,CAAC,MAAmB,EAAE,CAAS,EAAW,EAAE;QACvD,MAAM,CAAC,GAAG,OAAO,CACb,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAC1B,qDAAqD,EACrD,GAAG,EACH,WAAW,CACd,CAAC;QACF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAW,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,CAAC;IACb,CAAC,CAAC;IACF;gBACY;IACZ,MAAM,GAAG,GAAG,CAAC,KAAa,EAAc,EAAE;QACtC,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,kDAAkD,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC7G,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,SAAS,GAAG,EAAE,IAAI,CAAC;QACvC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvD,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC7B,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC7B,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACvC,CAAC,CAAC;IAEF,uEAAuE;IACvE,6DAA6D;IAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpC,qEAAqE;IACrE,4EAA4E;IAC5E,uEAAuE;IACvE,mCAAmC;IACnC,MAAM,KAAK,GAAG,SAAS,GAAG,GAAG,CAAC;IAC9B,MAAM,IAAI,GAAG,KAAK,GAAG,UAAU,CAAC;IAChC,MAAM,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,WAAW,GAAG,CAAC,GAAG,GAAG,CAAC;IACpC,MAAM,QAAQ,GAAG,QAAQ,IAAI,IAAI,WAAW,IAAI,GAAG,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC;IACxE,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,YAAY,KAAK,IAAI,WAAW,IAAI,GAAG,GAAG,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,IAAI,KAAK,IAAI,KAAK,OAAO,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAiB,EAAE,CAAC;IAC9B;8EAC0E;IAC1E,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAE5B,8EAA8E;IAC9E,SAAS,QAAQ,CAAC,CAAU,EAAE,EAAiB;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,IAAI,EAAE,KAAK,IAAI;YAAE,OAAO;QACxB,IAAI,CAAC,SAAS,GAAG,8CAA8C,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1E,uCAAuC;QACvC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC;IAED;;;iDAG6C;IAC7C,SAAS,SAAS,CAAC,CAAU;QACzB,IAAI,CAAC,KAAK,UAAU;YAAE,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,OAAO;YAAE,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,UAAU;YAAE,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACzG,IAAI,CAAC,KAAK,WAAW;YAAE,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACzD,OAAO,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;IAED,2EAA2E;IAC3E,SAAS,OAAO;QACZ,QAAQ,GAAG,KAAK,CAAC;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC;QACjB,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACjB,KAAK,MAAM,CAAC,IAAI,GAAG;YAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,SAAS,IAAI,CAAC,CAAU;QACpB,MAAM,KAAK,GAAG,CAAC,EAAgB,EAAU,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QACzF,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE;YACxC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YACrD,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK;gBAAE,OAAO;YACxE,EAAE,CAAC,cAAc,EAAE,CAAC;YACpB,EAAE,CAAC,eAAe,EAAE,CAAC;YACrB,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACrG,IAAI,GAAG;gBACH,SAAS,EAAE,EAAE,CAAC,SAAS;gBACvB,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBACf,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,OAAO;gBACP,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI;gBAC1B,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI;gBACxB,EAAE,EAAE,CAAC;aACR,CAAC;YACF,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YACvD,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE;YACxC,IAAI,IAAI,EAAE,SAAS,KAAK,EAAE,CAAC,SAAS;gBAAE,OAAO;YAC7C,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YACvB,mEAAmE;YACnE,2CAA2C;YAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YACjE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,EAAE,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;YACtE,+DAA+D;YAC/D,MAAM,GAAG,GAAG,UAAU,CAAC,gBAAgB,IAAI,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;YAC7C,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;YAC1E,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,EAAgB,EAAQ,EAAE;YACnC,IAAI,IAAI,EAAE,SAAS,KAAK,EAAE,CAAC,SAAS;gBAAE,OAAO;YAC7C,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;YAC7B,IAAI,GAAG,IAAI,CAAC;YACZ,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;YAC1D,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAClB,qCAAqC;YACrC,MAAM,IAAI,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACxF,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,OAAO;oBAAE,MAAM,CAAC,OAAO,CAAC,CAAC;gBACnD,OAAO;YACX,CAAC;YACD,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YACtD,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;gBACnB,QAAQ,GAAG,IAAI,CAAC;gBAChB,UAAU,CAAC,GAAG,EAAE;oBACZ,IAAI,QAAQ;wBAAE,OAAO,EAAE,CAAC;gBAC5B,CAAC,EAAE,IAAI,CAAC,CAAC;YACb,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QACF,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;IAED,OAAO;QACH,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO;YACrC,6CAA6C;YAC7C,MAAM,MAAM,GAAG,CAAC,KAA4B,EAAE,EAAE,CAC5C,KAAK,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5F,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,GAAG,CAAC,UAAU,IAAI,QAAQ,CAAC,EAAE,IAAI,CAAC;YAC5C,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI;gBAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3D;uEAC2D;YAC3D,MAAM,KAAK,GAAG,CAAC,CAAU,EAAE,KAA4B,EAAE,MAAiC,EAAQ,EAAE;gBAChG,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,aAAa,KAAK,KAAK,CAAC,KAAK;oBAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1E,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;gBAChB,CAAC,CAAC,MAAM,GAAG,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;gBACnD,CAAC,CAAC,IAAI,GAAG,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC3D,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACzB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,+BAA+B,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACzE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/E,CAAC,CAAC;YACF,mEAAmE;YACnE,IAAI,QAAQ;gBAAE,OAAO,EAAE,CAAC;YACxB,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC/D,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC9D,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC1D,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC3D,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAC9C,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1C,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,IAAI,EAAE,CAAC;oBACP,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;oBACpD,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;gBACvE,CAAC;gBACD,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACP,CAAC;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { Guide, TextTabStop, UDocSelectionProperties, UDocType } from "@docmentis/udoc-wasm";
|
|
2
|
+
import type { SelectionCapabilities, SelectionEdit } from "@docmentis/udoc-ui/internal";
|
|
3
|
+
import type { RulerControl, RulerDrop } from "./ruler-controls.js";
|
|
4
|
+
/** The ruler arm of the engine's guide projection. */
|
|
5
|
+
type RulerGuide = Extract<Guide, {
|
|
6
|
+
type: "ruler";
|
|
7
|
+
}>;
|
|
8
|
+
/** What a ruler drop moves from: the selection's resolved indents and tab
|
|
9
|
+
* stops, and the text insets of the shape it is in, each `null` where the
|
|
10
|
+
* selection holds none or its paragraphs or shapes disagree. */
|
|
11
|
+
export interface SelectionRuler {
|
|
12
|
+
readonly indentLeft: number | null;
|
|
13
|
+
readonly indentRight: number | null;
|
|
14
|
+
readonly indentFirstLine: number | null;
|
|
15
|
+
readonly tabStops: readonly TextTabStop[] | null;
|
|
16
|
+
readonly insetLeft: number | null;
|
|
17
|
+
readonly insetTop: number | null;
|
|
18
|
+
readonly insetRight: number | null;
|
|
19
|
+
readonly insetBottom: number | null;
|
|
20
|
+
}
|
|
21
|
+
/** A selection a ruler drop moves nothing from. */
|
|
22
|
+
export declare const EMPTY_SELECTION_RULER: SelectionRuler;
|
|
23
|
+
/** Project the engine's selection `properties` onto what a ruler drop moves
|
|
24
|
+
* from. The office doc types carry the text and shape reads alike; any other
|
|
25
|
+
* moves nothing. */
|
|
26
|
+
export declare function selectionRuler(properties: UDocSelectionProperties | null): SelectionRuler;
|
|
27
|
+
/** Whether `control` takes a drag on `docType` now — the engine gates the edit
|
|
28
|
+
* it would send, and the selection has the values it moves from. */
|
|
29
|
+
export declare function rulerMovable(control: RulerControl, guide: RulerGuide, docType: UDocType, caps: SelectionCapabilities, ruler: SelectionRuler): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* The selection edit `drop` sends on `docType` — its control moved `by` points
|
|
32
|
+
* along its ruler — or `null` where it means none: an indent or a tab moves
|
|
33
|
+
* the paragraphs' own, a margin edge a Word section's page margin, a shape's
|
|
34
|
+
* text inset or a PDF text box's side.
|
|
35
|
+
*/
|
|
36
|
+
export declare function rulerEdit(drop: RulerDrop, guide: RulerGuide, docType: UDocType, ruler: SelectionRuler): SelectionEdit | null;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=ruler-edits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruler-edits.d.ts","sourceRoot":"","sources":["../src/ruler-edits.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAER,KAAK,EAIL,WAAW,EACX,uBAAuB,EACvB,QAAQ,EACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAA0B,MAAM,qBAAqB,CAAC;AAE3F,sDAAsD;AACtD,KAAK,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAEpD;;iEAEiE;AACjE,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,mDAAmD;AACnD,eAAO,MAAM,qBAAqB,EAAE,cASnC,CAAC;AAOF;;qBAEqB;AACrB,wBAAgB,cAAc,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI,GAAG,cAAc,CAmBzF;AASD;qEACqE;AACrE,wBAAgB,YAAY,CACxB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,cAAc,GACtB,OAAO,CAOT;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CACrB,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,QAAQ,EACjB,KAAK,EAAE,cAAc,GACtB,aAAa,GAAG,IAAI,CActB"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/** A selection a ruler drop moves nothing from. */
|
|
2
|
+
export const EMPTY_SELECTION_RULER = {
|
|
3
|
+
indentLeft: null,
|
|
4
|
+
indentRight: null,
|
|
5
|
+
indentFirstLine: null,
|
|
6
|
+
tabStops: null,
|
|
7
|
+
insetLeft: null,
|
|
8
|
+
insetTop: null,
|
|
9
|
+
insetRight: null,
|
|
10
|
+
insetBottom: null,
|
|
11
|
+
};
|
|
12
|
+
/** The value `consensus` agrees on, or `null` for none. */
|
|
13
|
+
function agreed(consensus) {
|
|
14
|
+
return typeof consensus === "object" ? consensus.value : null;
|
|
15
|
+
}
|
|
16
|
+
/** Project the engine's selection `properties` onto what a ruler drop moves
|
|
17
|
+
* from. The office doc types carry the text and shape reads alike; any other
|
|
18
|
+
* moves nothing. */
|
|
19
|
+
export function selectionRuler(properties) {
|
|
20
|
+
const common = properties && "presentation" in properties
|
|
21
|
+
? properties.presentation
|
|
22
|
+
: properties && "wordprocessing" in properties
|
|
23
|
+
? properties.wordprocessing
|
|
24
|
+
: null;
|
|
25
|
+
if (!common)
|
|
26
|
+
return EMPTY_SELECTION_RULER;
|
|
27
|
+
const { text, shape } = common;
|
|
28
|
+
return {
|
|
29
|
+
indentLeft: agreed(text.indentLeft),
|
|
30
|
+
indentRight: agreed(text.indentRight),
|
|
31
|
+
indentFirstLine: agreed(text.indentFirstLine),
|
|
32
|
+
tabStops: agreed(text.tabStops),
|
|
33
|
+
insetLeft: agreed(shape.insetLeft),
|
|
34
|
+
insetTop: agreed(shape.insetTop),
|
|
35
|
+
insetRight: agreed(shape.insetRight),
|
|
36
|
+
insetBottom: agreed(shape.insetBottom),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** The gate a margin edge's edit goes by, for the doc types that take one. */
|
|
40
|
+
const MARGIN_GATES = {
|
|
41
|
+
wordprocessing: "setSectionPageMargins",
|
|
42
|
+
presentation: "setShapeTextBodyProperties",
|
|
43
|
+
portable: "resizeTextBox",
|
|
44
|
+
};
|
|
45
|
+
/** Whether `control` takes a drag on `docType` now — the engine gates the edit
|
|
46
|
+
* it would send, and the selection has the values it moves from. */
|
|
47
|
+
export function rulerMovable(control, guide, docType, caps, ruler) {
|
|
48
|
+
const gate = control.kind === "margin" ? MARGIN_GATES[docType] : "setParagraphProperties";
|
|
49
|
+
return (gate !== undefined &&
|
|
50
|
+
caps.allowed.includes(gate) &&
|
|
51
|
+
rulerEdit({ control, by: 0 }, guide, docType, ruler) !== null);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The selection edit `drop` sends on `docType` — its control moved `by` points
|
|
55
|
+
* along its ruler — or `null` where it means none: an indent or a tab moves
|
|
56
|
+
* the paragraphs' own, a margin edge a Word section's page margin, a shape's
|
|
57
|
+
* text inset or a PDF text box's side.
|
|
58
|
+
*/
|
|
59
|
+
export function rulerEdit(drop, guide, docType, ruler) {
|
|
60
|
+
const { control, by } = drop;
|
|
61
|
+
switch (control.kind) {
|
|
62
|
+
case "indent": {
|
|
63
|
+
const properties = indentProperties(control.indent, by, ruler);
|
|
64
|
+
return properties && { kind: "setParagraphProperties", properties };
|
|
65
|
+
}
|
|
66
|
+
case "tab": {
|
|
67
|
+
const stops = movedTabStops(control.index, by, docType, ruler);
|
|
68
|
+
return stops && { kind: "setParagraphProperties", properties: [{ tabStops: stops }] };
|
|
69
|
+
}
|
|
70
|
+
case "margin":
|
|
71
|
+
return marginEdit(control.edge, by, guide, docType, ruler);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/** The indents a drag of `indent` by `by` sets, as Word's ruler moves them:
|
|
75
|
+
* the first line alone; the hanging indent's lines with the first line
|
|
76
|
+
* staying put; the left indent's box both; the right indent from the right. */
|
|
77
|
+
function indentProperties(indent, by, ruler) {
|
|
78
|
+
const { indentLeft, indentRight, indentFirstLine } = ruler;
|
|
79
|
+
switch (indent) {
|
|
80
|
+
case "firstLine":
|
|
81
|
+
return indentFirstLine === null ? null : [{ indentFirstLine: indentFirstLine + by }];
|
|
82
|
+
case "hanging":
|
|
83
|
+
return indentLeft === null || indentFirstLine === null
|
|
84
|
+
? null
|
|
85
|
+
: [{ indentLeft: indentLeft + by }, { indentFirstLine: indentFirstLine - by }];
|
|
86
|
+
case "left":
|
|
87
|
+
return indentLeft === null ? null : [{ indentLeft: indentLeft + by }];
|
|
88
|
+
case "right":
|
|
89
|
+
return indentRight === null ? null : [{ indentRight: indentRight - by }];
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/** The paragraphs' tab stops with stop `index` — counted as the ruler shows
|
|
93
|
+
* them, `clear` entries skipped — moved `by`. Word merges a paragraph's stops
|
|
94
|
+
* with its style's, so there a stop moved off a position is cleared at it,
|
|
95
|
+
* which a slide's list, written whole, has no need of. */
|
|
96
|
+
function movedTabStops(index, by, docType, ruler) {
|
|
97
|
+
const { tabStops } = ruler;
|
|
98
|
+
const moved = tabStops?.filter((stop) => stop.alignment !== "clear")[index];
|
|
99
|
+
if (!tabStops || !moved)
|
|
100
|
+
return null;
|
|
101
|
+
const stops = tabStops.map((stop) => (stop === moved ? { ...stop, position: stop.position + by } : stop));
|
|
102
|
+
if (docType === "wordprocessing" && by !== 0 && !stops.some((stop) => stop.position === moved.position)) {
|
|
103
|
+
stops.push({ position: moved.position, alignment: "clear", leader: "none" });
|
|
104
|
+
}
|
|
105
|
+
return stops.sort((a, b) => a.position - b.position);
|
|
106
|
+
}
|
|
107
|
+
/** The insets each margin edge sets. */
|
|
108
|
+
const INSET_KEYS = {
|
|
109
|
+
left: "insetLeft",
|
|
110
|
+
top: "insetTop",
|
|
111
|
+
right: "insetRight",
|
|
112
|
+
bottom: "insetBottom",
|
|
113
|
+
};
|
|
114
|
+
/** The side of a frame each margin edge sets. */
|
|
115
|
+
const FRAME_KEYS = { left: "x0", top: "y0", right: "x1", bottom: "y1" };
|
|
116
|
+
/** The edit moving margin `edge` by `by`: a Word section's page margin, from
|
|
117
|
+
* the page's edge to the text area's; a shape's text inset, from the one it
|
|
118
|
+
* has; a PDF text box's side, the guide's text area moved into page-local
|
|
119
|
+
* points. A PDF box's height follows its lines, so its bottom takes none. */
|
|
120
|
+
function marginEdit(edge, by, guide, docType, ruler) {
|
|
121
|
+
const near = edge === "left" || edge === "top";
|
|
122
|
+
const { page, margins } = edge === "left" || edge === "right" ? guide.horizontal : guide.vertical;
|
|
123
|
+
if (!margins)
|
|
124
|
+
return null;
|
|
125
|
+
switch (docType) {
|
|
126
|
+
case "wordprocessing": {
|
|
127
|
+
const sides = {};
|
|
128
|
+
sides[edge] = near ? margins.start + by - page.start : page.end - (margins.end + by);
|
|
129
|
+
return { kind: "setSectionPageMargins", ...sides };
|
|
130
|
+
}
|
|
131
|
+
case "presentation": {
|
|
132
|
+
const key = INSET_KEYS[edge];
|
|
133
|
+
const inset = ruler[key];
|
|
134
|
+
if (inset === null)
|
|
135
|
+
return null;
|
|
136
|
+
const properties = {};
|
|
137
|
+
properties[key] = inset + (near ? by : -by);
|
|
138
|
+
return { kind: "setShapeTextBodyProperties", properties };
|
|
139
|
+
}
|
|
140
|
+
case "portable": {
|
|
141
|
+
const { horizontal: h, vertical: v } = guide;
|
|
142
|
+
if (edge === "bottom" || !h.margins || !v.margins)
|
|
143
|
+
return null;
|
|
144
|
+
const frame = {
|
|
145
|
+
x0: h.margins.start - h.page.start,
|
|
146
|
+
y0: v.margins.start - v.page.start,
|
|
147
|
+
x1: h.margins.end - h.page.start,
|
|
148
|
+
y1: v.margins.end - v.page.start,
|
|
149
|
+
};
|
|
150
|
+
frame[FRAME_KEYS[edge]] += by;
|
|
151
|
+
return { kind: "object", edit: { kind: "resizeTextBox", frame } };
|
|
152
|
+
}
|
|
153
|
+
default:
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=ruler-edits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruler-edits.js","sourceRoot":"","sources":["../src/ruler-edits.ts"],"names":[],"mappings":"AAoCA,mDAAmD;AACnD,MAAM,CAAC,MAAM,qBAAqB,GAAmB;IACjD,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;IACjB,eAAe,EAAE,IAAI;IACrB,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;CACpB,CAAC;AAEF,2DAA2D;AAC3D,SAAS,MAAM,CAAI,SAAuB;IACtC,OAAO,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClE,CAAC;AAED;;qBAEqB;AACrB,MAAM,UAAU,cAAc,CAAC,UAA0C;IACrE,MAAM,MAAM,GACR,UAAU,IAAI,cAAc,IAAI,UAAU;QACtC,CAAC,CAAC,UAAU,CAAC,YAAY;QACzB,CAAC,CAAC,UAAU,IAAI,gBAAgB,IAAI,UAAU;YAC5C,CAAC,CAAC,UAAU,CAAC,cAAc;YAC3B,CAAC,CAAC,IAAI,CAAC;IACjB,IAAI,CAAC,MAAM;QAAE,OAAO,qBAAqB,CAAC;IAC1C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAC/B,OAAO;QACH,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACnC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QACrC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7C,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;QAClC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QAChC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;QACpC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;KACzC,CAAC;AACN,CAAC;AAED,8EAA8E;AAC9E,MAAM,YAAY,GAAsC;IACpD,cAAc,EAAE,uBAAuB;IACvC,YAAY,EAAE,4BAA4B;IAC1C,QAAQ,EAAE,eAAe;CAC5B,CAAC;AAEF;qEACqE;AACrE,MAAM,UAAU,YAAY,CACxB,OAAqB,EACrB,KAAiB,EACjB,OAAiB,EACjB,IAA2B,EAC3B,KAAqB;IAErB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC;IAC1F,OAAO,CACH,IAAI,KAAK,SAAS;QAClB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC3B,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,IAAI,CAChE,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CACrB,IAAe,EACf,KAAiB,EACjB,OAAiB,EACjB,KAAqB;IAErB,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;IAC7B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAC/D,OAAO,UAAU,IAAI,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,CAAC;QACxE,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACT,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAC/D,OAAO,KAAK,IAAI,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC1F,CAAC;QACD,KAAK,QAAQ;YACT,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;AACL,CAAC;AAED;;gFAEgF;AAChF,SAAS,gBAAgB,CAAC,MAAmB,EAAE,EAAU,EAAE,KAAqB;IAC5E,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAC3D,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,WAAW;YACZ,OAAO,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,eAAe,GAAG,EAAE,EAAE,CAAC,CAAC;QACzF,KAAK,SAAS;YACV,OAAO,UAAU,KAAK,IAAI,IAAI,eAAe,KAAK,IAAI;gBAClD,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,GAAG,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,eAAe,GAAG,EAAE,EAAE,CAAC,CAAC;QACvF,KAAK,MAAM;YACP,OAAO,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1E,KAAK,OAAO;YACR,OAAO,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,GAAG,EAAE,EAAE,CAAC,CAAC;IACjF,CAAC;AACL,CAAC;AAED;;;2DAG2D;AAC3D,SAAS,aAAa,CAAC,KAAa,EAAE,EAAU,EAAE,OAAiB,EAAE,KAAqB;IACtF,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3B,MAAM,KAAK,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5E,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1G,IAAI,OAAO,KAAK,gBAAgB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtG,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,GAAG;IACf,IAAI,EAAE,WAAW;IACjB,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,aAAa;CAC8D,CAAC;AAExF,iDAAiD;AACjD,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAGpE,CAAC;AAEF;;;8EAG8E;AAC9E,SAAS,UAAU,CACf,IAAe,EACf,EAAU,EACV,KAAiB,EACjB,OAAiB,EACjB,KAAqB;IAErB,MAAM,IAAI,GAAG,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,CAAC;IAC/C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;IAClG,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,QAAQ,OAAO,EAAE,CAAC;QACd,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACpB,MAAM,KAAK,GAAqE,EAAE,CAAC;YACnF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;YACrF,OAAO,EAAE,IAAI,EAAE,uBAAuB,EAAE,GAAG,KAAK,EAAE,CAAC;QACvD,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YAClB,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAChC,MAAM,UAAU,GAAuB,EAAE,CAAC;YAC1C,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5C,OAAO,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,CAAC;QAC9D,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;YAC7C,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAC;YAC/D,MAAM,KAAK,GAAS;gBAChB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK;gBAClC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK;gBAClC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK;gBAChC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK;aACnC,CAAC;YACF,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,CAAC;QACtE,CAAC;QACD;YACI,OAAO,IAAI,CAAC;IACpB,CAAC;AACL,CAAC"}
|
package/dist/ruler.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { Action, GuideBand, Store, UIState } from "@docmentis/udoc-ui/internal";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import type { EditHost } from "./edit-client.js";
|
|
3
|
+
/** The ruler band, with controls of its own — one per editor, whose edits run
|
|
4
|
+
* through the `host` edit mode lends once it is mounted. Paints only a ruler
|
|
5
|
+
* projection; any other leaves the strips cleared to their band background
|
|
6
|
+
* until one lands. */
|
|
7
|
+
export declare function createRuler(host: () => EditHost | null): GuideBand;
|
|
5
8
|
/** Whether the ruler shows in `state`: a ruled doc type in edit mode, with the
|
|
6
9
|
* preference on. */
|
|
7
10
|
export declare function rulerShown(state: UIState): boolean;
|
package/dist/ruler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruler.d.ts","sourceRoot":"","sources":["../src/ruler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ruler.d.ts","sourceRoot":"","sources":["../src/ruler.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,MAAM,EAAyB,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAC5G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAqOjD;;;uBAGuB;AACvB,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,QAAQ,GAAG,IAAI,GAAG,SAAS,CA4BlE;AAED;qBACqB;AACrB,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAElD;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAElF"}
|
package/dist/ruler.js
CHANGED
|
@@ -1,8 +1,22 @@
|
|
|
1
|
+
import { createRulerControls } from "./ruler-controls.js";
|
|
2
|
+
import { rulerEdit, rulerMovable } from "./ruler-edits.js";
|
|
1
3
|
import { editState, updateEditState } from "./state.js";
|
|
2
4
|
/** The doc types the engine measures with a ruler: the paged ones. */
|
|
3
5
|
const RULED = new Set(["portable", "presentation", "wordprocessing"]);
|
|
6
|
+
/** The rulers' depth, top and left alike, CSS px. */
|
|
7
|
+
const THICKNESS = 22;
|
|
4
8
|
/** A screen-fixed UI font for the labels — not the document's fonts. */
|
|
5
9
|
const UI_FONT = `-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif`;
|
|
10
|
+
/** Points per inch — the unit the rulers count in. */
|
|
11
|
+
const POINTS_PER_INCH = 72;
|
|
12
|
+
/** The subdivisions of an inch a ruler can tick, finest first. */
|
|
13
|
+
const SUBDIVISIONS = [8, 4, 2, 1];
|
|
14
|
+
/** How many inches apart the figures can stand, nearest first. */
|
|
15
|
+
const FIGURE_STEPS = [1, 2, 5, 10, 20, 50];
|
|
16
|
+
/** The closest two ticks stand, CSS px: a finer subdivision drops out below it. */
|
|
17
|
+
const MIN_TICK_GAP = 6;
|
|
18
|
+
/** The closest two figures stand, CSS px: a wider step takes over below it. */
|
|
19
|
+
const MIN_FIGURE_GAP = 24;
|
|
6
20
|
function stroke(ctx, color, x0, y0, x1, y1) {
|
|
7
21
|
ctx.strokeStyle = color;
|
|
8
22
|
ctx.lineWidth = 1;
|
|
@@ -11,38 +25,138 @@ function stroke(ctx, color, x0, y0, x1, y1) {
|
|
|
11
25
|
ctx.lineTo(x1, y1);
|
|
12
26
|
ctx.stroke();
|
|
13
27
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
28
|
+
/** `v` CSS px along `ctx`'s `axis`, moved onto the nearest device pixel edge. */
|
|
29
|
+
function snap(ctx, v, axis) {
|
|
30
|
+
const m = ctx.getTransform();
|
|
31
|
+
const [k, offset] = axis === "x" ? [m.a, m.e] : [m.d, m.f];
|
|
32
|
+
return (Math.round(v * k + offset) - offset) / k;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Where a tick at `p` CSS px along the ruler stands: its `start` and `width`
|
|
36
|
+
* along it in CSS px, whole device pixels — as many as a CSS px holds, one at
|
|
37
|
+
* least — so every tick lands as sharp and as dark as the next however the
|
|
38
|
+
* zoom and the dpr place it.
|
|
39
|
+
*/
|
|
40
|
+
function tickSpan(ctx, p, orient) {
|
|
41
|
+
const k = ctx.getTransform().a;
|
|
42
|
+
const width = Math.max(1, Math.round(k)) / k;
|
|
43
|
+
return { start: snap(ctx, p - width / 2, orient === "h" ? "x" : "y"), width };
|
|
44
|
+
}
|
|
45
|
+
/** The centre of the tick at `p` — where a control standing on it centres. */
|
|
46
|
+
function tickCenter(ctx, p, orient) {
|
|
47
|
+
const { start, width } = tickSpan(ctx, p, orient);
|
|
48
|
+
return start + width / 2;
|
|
49
|
+
}
|
|
50
|
+
/** Fill a tick at `p`, `len` CSS px long, hanging from the inner edge of a strip
|
|
51
|
+
* `thickness` deep — its ends on device pixel edges too. */
|
|
52
|
+
function tick(ctx, color, p, len, thickness, orient) {
|
|
53
|
+
const { start, width } = tickSpan(ctx, p, orient);
|
|
54
|
+
const across = orient === "h" ? "y" : "x";
|
|
55
|
+
const top = snap(ctx, thickness - len, across);
|
|
56
|
+
const bottom = snap(ctx, thickness, across);
|
|
57
|
+
ctx.fillStyle = color;
|
|
58
|
+
if (orient === "h")
|
|
59
|
+
ctx.fillRect(start, top, width, bottom - top);
|
|
60
|
+
else
|
|
61
|
+
ctx.fillRect(top, start, bottom - top, width);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Draw one ruler into its strip, `length` CSS px long and `thickness` deep: the
|
|
65
|
+
* selection's span and the margins of the text a caret edits behind it, then
|
|
66
|
+
* its graduation over the page.
|
|
67
|
+
*/
|
|
68
|
+
function drawAxis(canvas, ctx, axis, length, thickness, orient) {
|
|
69
|
+
const { colors, extent, scale } = canvas;
|
|
21
70
|
// Shift the horizontal ruler's marks (along x) to ride the content canvas
|
|
22
71
|
// mid-resize; the vertical ruler tracks height, which isn't shifted. See
|
|
23
72
|
// `GuideBands.setContentShift`. `0` when settled.
|
|
73
|
+
const shift = orient === "h" ? canvas.shiftX : 0;
|
|
24
74
|
ctx.save();
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
75
|
+
ctx.translate(shift, 0);
|
|
76
|
+
/** Where `points` from the origin falls in the strip, CSS px. */
|
|
77
|
+
const at = (points) => axis.origin + points * scale;
|
|
78
|
+
// Each span ends on device pixel edges, so a margin's edge meets its fill
|
|
79
|
+
// without a sliver of another between them.
|
|
80
|
+
const span = (from, to, color) => {
|
|
81
|
+
const along = orient === "h" ? "x" : "y";
|
|
82
|
+
const start = snap(ctx, from, along);
|
|
83
|
+
const end = snap(ctx, to, along);
|
|
84
|
+
if (end <= start)
|
|
85
|
+
return;
|
|
86
|
+
ctx.fillStyle = color;
|
|
87
|
+
if (orient === "h")
|
|
88
|
+
ctx.fillRect(start, 0, end - start, thickness);
|
|
89
|
+
else
|
|
90
|
+
ctx.fillRect(0, start, thickness, end - start);
|
|
91
|
+
};
|
|
92
|
+
// The selection's span lights up behind the marks; while a caret edits
|
|
93
|
+
// text, its text area does, between the darker margins of the page. All
|
|
94
|
+
// ride the shift with the marks, so they keep their reading against them.
|
|
95
|
+
if (extent) {
|
|
32
96
|
if (orient === "h")
|
|
33
|
-
|
|
97
|
+
span(extent.x0, extent.x1, colors.range);
|
|
34
98
|
else
|
|
35
|
-
|
|
36
|
-
|
|
99
|
+
span(extent.y0, extent.y1, colors.range);
|
|
100
|
+
}
|
|
101
|
+
const { page, margins } = axis;
|
|
102
|
+
if (margins) {
|
|
103
|
+
span(at(page.start), at(margins.start), colors.margin);
|
|
104
|
+
span(at(margins.start), at(margins.end), colors.range);
|
|
105
|
+
span(at(margins.end), at(page.end), colors.margin);
|
|
106
|
+
// Each margin's edge, a line the ruler's depth on the tick its fill
|
|
107
|
+
// ends at, in the soft `grid` of the ticks — drawn here with the fills
|
|
108
|
+
// it bounds, the strip a drag takes it by over it (ruler-controls.ts).
|
|
109
|
+
tick(ctx, colors.grid, at(margins.start), thickness, thickness, orient);
|
|
110
|
+
tick(ctx, colors.grid, at(margins.end), thickness, thickness, orient);
|
|
111
|
+
}
|
|
112
|
+
// Graduate the page in inches, as finely as the zoom leaves room for, the
|
|
113
|
+
// figures counting outward from the origin — only where the strip shows.
|
|
114
|
+
const inch = POINTS_PER_INCH * scale;
|
|
115
|
+
const subdivisions = SUBDIVISIONS.find((n) => inch / n >= MIN_TICK_GAP) ?? 1;
|
|
116
|
+
const figureStep = FIGURE_STEPS.find((n) => inch * n >= MIN_FIGURE_GAP) ?? FIGURE_STEPS[FIGURE_STEPS.length - 1];
|
|
117
|
+
const step = POINTS_PER_INCH / subdivisions;
|
|
118
|
+
const from = Math.max(page.start, (-shift - axis.origin) / scale);
|
|
119
|
+
const to = Math.min(page.end, (length - shift - axis.origin) / scale);
|
|
120
|
+
const size = Math.min(11, Math.max(8, thickness * 0.5));
|
|
121
|
+
ctx.font = `${size}px ${UI_FONT}`;
|
|
122
|
+
const inchLen = thickness * 0.3;
|
|
123
|
+
const figCenter = (thickness - inchLen) / 2;
|
|
124
|
+
for (let n = Math.ceil(from / step); n <= Math.floor(to / step); n++) {
|
|
125
|
+
const p = at(n * step);
|
|
126
|
+
// An inch, a half, or a short tick at each finer division — as Word
|
|
127
|
+
// and Google Docs graduate, three lengths a glance tells apart.
|
|
128
|
+
const len = n % subdivisions === 0 ? inchLen : n % (subdivisions / 2) === 0 ? thickness * 0.22 : thickness * 0.14;
|
|
129
|
+
// Ticks hang from the inner (content) edge toward the outer, on the
|
|
130
|
+
// soft `grid` they share with the ruler edge and the header separators.
|
|
131
|
+
tick(ctx, colors.grid, p, len, thickness, orient);
|
|
132
|
+
const inches = n / subdivisions;
|
|
133
|
+
if (n % subdivisions === 0 && inches % figureStep === 0) {
|
|
134
|
+
const figure = String(Math.abs(inches));
|
|
135
|
+
const c = tickCenter(ctx, p, orient);
|
|
37
136
|
ctx.fillStyle = colors.text;
|
|
38
137
|
if (orient === "h")
|
|
39
|
-
ctx.fillText(
|
|
138
|
+
ctx.fillText(figure, c, figCenter);
|
|
40
139
|
else
|
|
41
|
-
ctx.fillText(
|
|
140
|
+
ctx.fillText(figure, figCenter, c);
|
|
42
141
|
}
|
|
43
142
|
}
|
|
44
143
|
ctx.restore();
|
|
45
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Where the controls stand along the ruler `axis` drew in `strip`: on its
|
|
147
|
+
* ticks, riding the top ruler's shift with them (see {@link drawAxis}).
|
|
148
|
+
*/
|
|
149
|
+
function placement(canvas, strip, axis, orient) {
|
|
150
|
+
const shift = orient === "h" ? canvas.shiftX : 0;
|
|
151
|
+
return {
|
|
152
|
+
layer: canvas.layer(orient === "h" ? "top" : "left"),
|
|
153
|
+
pane: canvas.layer("pane"),
|
|
154
|
+
axis,
|
|
155
|
+
origin: axis.origin + shift,
|
|
156
|
+
scale: canvas.scale,
|
|
157
|
+
at: (points) => tickCenter(strip.ctx, axis.origin + points * canvas.scale + shift, orient),
|
|
158
|
+
};
|
|
159
|
+
}
|
|
46
160
|
/**
|
|
47
161
|
* Fill the ruler's corner box and mark only the junction dot — the single
|
|
48
162
|
* pixel both the top ruler's bottom edge and the left ruler's right edge pass
|
|
@@ -59,32 +173,59 @@ function drawCorner(canvas) {
|
|
|
59
173
|
ctx.fillStyle = canvas.colors.grid;
|
|
60
174
|
ctx.fillRect(w - 1, h - 1, 1, 1);
|
|
61
175
|
}
|
|
62
|
-
|
|
176
|
+
/** Draw `guide`'s rulers into `canvas`'s strips, and stand `controls` over them,
|
|
177
|
+
* those `movable` refuses fixed. */
|
|
178
|
+
function drawRuler(guide, canvas, controls, movable) {
|
|
63
179
|
const { colors } = canvas;
|
|
64
180
|
const top = canvas.prepare("top");
|
|
65
|
-
if (top
|
|
66
|
-
drawAxis(canvas, top.ctx, guide.horizontal, top.h, "h");
|
|
181
|
+
if (top) {
|
|
182
|
+
drawAxis(canvas, top.ctx, guide.horizontal, top.w, top.h, "h");
|
|
67
183
|
// The ruler's inner (content-facing) edge line — a baseline the ticks
|
|
68
184
|
// hang from, framing the ruler off the page below (mirrors the header
|
|
69
185
|
// band's bottom border). The same soft `grid` as the ticks.
|
|
70
186
|
stroke(top.ctx, colors.grid, 0, top.h - 0.5, top.w, top.h - 0.5);
|
|
71
187
|
}
|
|
72
188
|
const left = canvas.prepare("left");
|
|
73
|
-
if (left
|
|
74
|
-
drawAxis(canvas, left.ctx, guide.vertical, left.w, "v");
|
|
189
|
+
if (left) {
|
|
190
|
+
drawAxis(canvas, left.ctx, guide.vertical, left.h, left.w, "v");
|
|
75
191
|
stroke(left.ctx, colors.grid, left.w - 0.5, 0, left.w - 0.5, left.h);
|
|
76
192
|
}
|
|
77
193
|
drawCorner(canvas);
|
|
194
|
+
controls.place(top && placement(canvas, top, guide.horizontal, "h"), left && placement(canvas, left, guide.vertical, "v"), guide.text ?? null, movable);
|
|
195
|
+
}
|
|
196
|
+
/** The ruler band, with controls of its own — one per editor, whose edits run
|
|
197
|
+
* through the `host` edit mode lends once it is mounted. Paints only a ruler
|
|
198
|
+
* projection; any other leaves the strips cleared to their band background
|
|
199
|
+
* until one lands. */
|
|
200
|
+
export function createRuler(host) {
|
|
201
|
+
/** The projection the controls last stood on — what a drop is read off. */
|
|
202
|
+
let placed = null;
|
|
203
|
+
/** Send the edit `drop` means to the open document, as one undo step; null
|
|
204
|
+
* where it means none. */
|
|
205
|
+
const drop = (drop) => {
|
|
206
|
+
const lent = host();
|
|
207
|
+
const state = lent?.store.getState();
|
|
208
|
+
const edit = placed && state?.docType && rulerEdit(drop, placed, state.docType, editState(state).selectionRuler);
|
|
209
|
+
if (!lent || !edit)
|
|
210
|
+
return null;
|
|
211
|
+
return lent.commit(() => lent.client.executeOnSelection(edit));
|
|
212
|
+
};
|
|
213
|
+
const controls = createRulerControls(THICKNESS, drop);
|
|
214
|
+
return {
|
|
215
|
+
thickness: THICKNESS,
|
|
216
|
+
draw(guide, canvas) {
|
|
217
|
+
if (guide.type !== "ruler")
|
|
218
|
+
return;
|
|
219
|
+
placed = guide;
|
|
220
|
+
const state = host()?.store.getState();
|
|
221
|
+
const docType = state?.docType;
|
|
222
|
+
const movable = (control) => !!state &&
|
|
223
|
+
!!docType &&
|
|
224
|
+
rulerMovable(control, guide, docType, state.selectionCaps, editState(state).selectionRuler);
|
|
225
|
+
drawRuler(guide, canvas, controls, movable);
|
|
226
|
+
},
|
|
227
|
+
};
|
|
78
228
|
}
|
|
79
|
-
/** The ruler band. Paints only a ruler projection; any other leaves the strips
|
|
80
|
-
* cleared to their band background until one lands. */
|
|
81
|
-
export const RULER = {
|
|
82
|
-
thickness: 22,
|
|
83
|
-
draw(guide, canvas) {
|
|
84
|
-
if (guide.type === "ruler")
|
|
85
|
-
drawRuler(guide, canvas);
|
|
86
|
-
},
|
|
87
|
-
};
|
|
88
229
|
/** Whether the ruler shows in `state`: a ruled doc type in edit mode, with the
|
|
89
230
|
* preference on. */
|
|
90
231
|
export function rulerShown(state) {
|
package/dist/ruler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruler.js","sourceRoot":"","sources":["../src/ruler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ruler.js","sourceRoot":"","sources":["../src/ruler.ts"],"names":[],"mappings":"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"}
|
package/dist/state.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { FontFamilySummary } from "@docmentis/udoc-wasm";
|
|
2
2
|
import type { Action, CommandContext, SelectionPaint, SelectionTextFormat, Store, ThemePalette, UIState } from "@docmentis/udoc-ui/internal";
|
|
3
3
|
import type { EditorMode } from "./mode.js";
|
|
4
|
+
import type { SelectionRuler } from "./ruler-edits.js";
|
|
4
5
|
export interface EditState {
|
|
5
6
|
/**
|
|
6
7
|
* Whether formatting marks (`¶`, a dot per space, a tab's arrow, `↵`) are
|
|
@@ -62,6 +63,12 @@ export interface EditState {
|
|
|
62
63
|
* open, a channel the doc type doesn't surface, or none.
|
|
63
64
|
*/
|
|
64
65
|
selectionPaint: SelectionPaint;
|
|
66
|
+
/**
|
|
67
|
+
* What a drop on the ruler moves from — the selection's resolved indents
|
|
68
|
+
* and tab stops, and its shape's text insets. Pushed from the worker's
|
|
69
|
+
* selection reports, projected from the engine's selection properties.
|
|
70
|
+
*/
|
|
71
|
+
selectionRuler: SelectionRuler;
|
|
65
72
|
/** The modes the host lets the user switch between (drives the mode
|
|
66
73
|
* switcher, which offers those the session is entitled to —
|
|
67
74
|
* `modeEntitled`). */
|
package/dist/state.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,KAAK,EACR,MAAM,EACN,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,KAAK,EACL,YAAY,EACZ,OAAO,EACV,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,WAAW,SAAS;IACtB;;;;;;OAMG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B;;;;;OAKG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;;;;OAKG;IACH,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAElC;;;;;;;;;;;OAWG;IACH,YAAY,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAE3C;;;;;;;OAOG;IACH,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAC;IAEzC;;;;;;OAMG;IACH,aAAa,EAAE,mBAAmB,CAAC;IAEnC;;;;;;OAMG;IACH,cAAc,EAAE,cAAc,CAAC;IAE/B;;2BAEuB;IACvB,YAAY,EAAE,SAAS,UAAU,EAAE,CAAC;IAEpC;sCACkC;IAClC,cAAc,EAAE,OAAO,CAAC;IAExB;;kDAE8C;IAC9C,WAAW,EAAE,OAAO,CAAC;CACxB;AAED,kCAAkC;AAClC,eAAO,MAAM,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,KAAK,EACR,MAAM,EACN,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,KAAK,EACL,YAAY,EACZ,OAAO,EACV,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,WAAW,SAAS;IACtB;;;;;;OAMG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B;;;;;OAKG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;;;;OAKG;IACH,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAElC;;;;;;;;;;;OAWG;IACH,YAAY,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAE3C;;;;;;;OAOG;IACH,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAC;IAEzC;;;;;;OAMG;IACH,aAAa,EAAE,mBAAmB,CAAC;IAEnC;;;;;;OAMG;IACH,cAAc,EAAE,cAAc,CAAC;IAE/B;;;;OAIG;IACH,cAAc,EAAE,cAAc,CAAC;IAE/B;;2BAEuB;IACvB,YAAY,EAAE,SAAS,UAAU,EAAE,CAAC;IAEpC;sCACkC;IAClC,cAAc,EAAE,OAAO,CAAC;IAExB;;kDAE8C;IAC9C,WAAW,EAAE,OAAO,CAAC;CACxB;AAED,kCAAkC;AAClC,eAAO,MAAM,kBAAkB,EAAE,SAYhC,CAAC;AAEF,oCAAoC;AACpC,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAEnD;AAED,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,CAE9D;AAED,uDAAuD;AACvD,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAE/F"}
|
package/dist/state.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EMPTY_SELECTION_PAINT, EMPTY_SELECTION_TEXT_FORMAT } from "@docmentis/udoc-ui/internal";
|
|
2
2
|
import { ALL_MODES } from "./mode.js";
|
|
3
|
+
import { EMPTY_SELECTION_RULER } from "./ruler-edits.js";
|
|
3
4
|
/** Edit mode's state at start. */
|
|
4
5
|
export const INITIAL_EDIT_STATE = {
|
|
5
6
|
showFormattingMarks: false,
|
|
@@ -9,6 +10,7 @@ export const INITIAL_EDIT_STATE = {
|
|
|
9
10
|
loadedFontFamilyNames: [],
|
|
10
11
|
selectionText: EMPTY_SELECTION_TEXT_FORMAT,
|
|
11
12
|
selectionPaint: EMPTY_SELECTION_PAINT,
|
|
13
|
+
selectionRuler: EMPTY_SELECTION_RULER,
|
|
12
14
|
allowedModes: ALL_MODES,
|
|
13
15
|
showModeSwitch: true,
|
|
14
16
|
alignToPage: false,
|
package/dist/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAUjG,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAUjG,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AA6FzD,kCAAkC;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAc;IACzC,mBAAmB,EAAE,KAAK;IAC1B,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,EAAE;IAChB,qBAAqB,EAAE,EAAE;IACzB,aAAa,EAAE,2BAA2B;IAC1C,cAAc,EAAE,qBAAqB;IACrC,cAAc,EAAE,qBAAqB;IACrC,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,IAAI;IACpB,WAAW,EAAE,KAAK;CACrB,CAAC;AAEF,oCAAoC;AACpC,MAAM,UAAU,SAAS,CAAC,KAAc;IACpC,OAAO,KAAK,CAAC,SAAsB,CAAC;AACxC,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,WAAW,CAAC,OAAuB;IAC/C,OAAO,OAAO,CAAC,SAAsB,CAAC;AAC1C,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,eAAe,CAAC,KAA6B,EAAE,MAA0B;IACrF,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;AAC9G,CAAC"}
|
package/dist/styles.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,YAAY,QAg1BxB,CAAC"}
|