1 (function () { |
1 (function () { |
2 var fullscreen = (function () { |
2 var fullscreen = (function (domGlobals) { |
3 'use strict'; |
3 'use strict'; |
4 |
4 |
5 var Cell = function (initial) { |
5 var Cell = function (initial) { |
6 var value = initial; |
6 var value = initial; |
7 var get = function () { |
7 var get = function () { |
8 return value; |
8 return value; |
|
9 }; |
|
10 var set = function (v) { |
|
11 value = v; |
|
12 }; |
|
13 var clone = function () { |
|
14 return Cell(get()); |
|
15 }; |
|
16 return { |
|
17 get: get, |
|
18 set: set, |
|
19 clone: clone |
|
20 }; |
9 }; |
21 }; |
10 var set = function (v) { |
22 |
11 value = v; |
23 var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); |
|
24 |
|
25 var get = function (fullscreenState) { |
|
26 return { |
|
27 isFullscreen: function () { |
|
28 return fullscreenState.get() !== null; |
|
29 } |
|
30 }; |
12 }; |
31 }; |
13 var clone = function () { |
32 var Api = { get: get }; |
14 return Cell(get()); |
33 |
|
34 var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); |
|
35 |
|
36 var fireFullscreenStateChanged = function (editor, state) { |
|
37 editor.fire('FullscreenStateChanged', { state: state }); |
15 }; |
38 }; |
16 return { |
39 var Events = { fireFullscreenStateChanged: fireFullscreenStateChanged }; |
17 get: get, |
40 |
18 set: set, |
41 var DOM = global$1.DOM; |
19 clone: clone |
42 var getWindowSize = function () { |
|
43 var w; |
|
44 var h; |
|
45 var win = domGlobals.window; |
|
46 var doc = domGlobals.document; |
|
47 var body = doc.body; |
|
48 if (body.offsetWidth) { |
|
49 w = body.offsetWidth; |
|
50 h = body.offsetHeight; |
|
51 } |
|
52 if (win.innerWidth && win.innerHeight) { |
|
53 w = win.innerWidth; |
|
54 h = win.innerHeight; |
|
55 } |
|
56 return { |
|
57 w: w, |
|
58 h: h |
|
59 }; |
20 }; |
60 }; |
21 }; |
61 var getScrollPos = function () { |
22 |
62 var vp = DOM.getViewPort(); |
23 var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); |
63 return { |
24 |
64 x: vp.x, |
25 var get = function (fullscreenState) { |
65 y: vp.y |
26 return { |
66 }; |
27 isFullscreen: function () { |
67 }; |
28 return fullscreenState.get() !== null; |
68 var setScrollPos = function (pos) { |
|
69 domGlobals.window.scrollTo(pos.x, pos.y); |
|
70 }; |
|
71 var toggleFullscreen = function (editor, fullscreenState) { |
|
72 var body = domGlobals.document.body; |
|
73 var documentElement = domGlobals.document.documentElement; |
|
74 var editorContainerStyle; |
|
75 var editorContainer, iframe, iframeStyle; |
|
76 var fullscreenInfo = fullscreenState.get(); |
|
77 var resize = function () { |
|
78 DOM.setStyle(iframe, 'height', getWindowSize().h - (editorContainer.clientHeight - iframe.clientHeight)); |
|
79 }; |
|
80 var removeResize = function () { |
|
81 DOM.unbind(domGlobals.window, 'resize', resize); |
|
82 }; |
|
83 editorContainer = editor.getContainer(); |
|
84 editorContainerStyle = editorContainer.style; |
|
85 iframe = editor.getContentAreaContainer().firstChild; |
|
86 iframeStyle = iframe.style; |
|
87 if (!fullscreenInfo) { |
|
88 var newFullScreenInfo = { |
|
89 scrollPos: getScrollPos(), |
|
90 containerWidth: editorContainerStyle.width, |
|
91 containerHeight: editorContainerStyle.height, |
|
92 iframeWidth: iframeStyle.width, |
|
93 iframeHeight: iframeStyle.height, |
|
94 resizeHandler: resize, |
|
95 removeHandler: removeResize |
|
96 }; |
|
97 iframeStyle.width = iframeStyle.height = '100%'; |
|
98 editorContainerStyle.width = editorContainerStyle.height = ''; |
|
99 DOM.addClass(body, 'mce-fullscreen'); |
|
100 DOM.addClass(documentElement, 'mce-fullscreen'); |
|
101 DOM.addClass(editorContainer, 'mce-fullscreen'); |
|
102 DOM.bind(domGlobals.window, 'resize', resize); |
|
103 editor.on('remove', removeResize); |
|
104 resize(); |
|
105 fullscreenState.set(newFullScreenInfo); |
|
106 Events.fireFullscreenStateChanged(editor, true); |
|
107 } else { |
|
108 iframeStyle.width = fullscreenInfo.iframeWidth; |
|
109 iframeStyle.height = fullscreenInfo.iframeHeight; |
|
110 if (fullscreenInfo.containerWidth) { |
|
111 editorContainerStyle.width = fullscreenInfo.containerWidth; |
|
112 } |
|
113 if (fullscreenInfo.containerHeight) { |
|
114 editorContainerStyle.height = fullscreenInfo.containerHeight; |
|
115 } |
|
116 DOM.removeClass(body, 'mce-fullscreen'); |
|
117 DOM.removeClass(documentElement, 'mce-fullscreen'); |
|
118 DOM.removeClass(editorContainer, 'mce-fullscreen'); |
|
119 setScrollPos(fullscreenInfo.scrollPos); |
|
120 DOM.unbind(domGlobals.window, 'resize', fullscreenInfo.resizeHandler); |
|
121 editor.off('remove', fullscreenInfo.removeHandler); |
|
122 fullscreenState.set(null); |
|
123 Events.fireFullscreenStateChanged(editor, false); |
29 } |
124 } |
30 }; |
125 }; |
31 }; |
126 var Actions = { toggleFullscreen: toggleFullscreen }; |
32 var $_6qfcwucejjgwebu0 = { get: get }; |
|
33 |
127 |
34 var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); |
128 var register = function (editor, fullscreenState) { |
35 |
129 editor.addCommand('mceFullScreen', function () { |
36 var fireFullscreenStateChanged = function (editor, state) { |
130 Actions.toggleFullscreen(editor, fullscreenState); |
37 editor.fire('FullscreenStateChanged', { state: state }); |
|
38 }; |
|
39 var $_en5ltwcijjgwebu6 = { fireFullscreenStateChanged: fireFullscreenStateChanged }; |
|
40 |
|
41 var DOM = global$1.DOM; |
|
42 var getWindowSize = function () { |
|
43 var w; |
|
44 var h; |
|
45 var win = window; |
|
46 var doc = document; |
|
47 var body = doc.body; |
|
48 if (body.offsetWidth) { |
|
49 w = body.offsetWidth; |
|
50 h = body.offsetHeight; |
|
51 } |
|
52 if (win.innerWidth && win.innerHeight) { |
|
53 w = win.innerWidth; |
|
54 h = win.innerHeight; |
|
55 } |
|
56 return { |
|
57 w: w, |
|
58 h: h |
|
59 }; |
|
60 }; |
|
61 var getScrollPos = function () { |
|
62 var vp = DOM.getViewPort(); |
|
63 return { |
|
64 x: vp.x, |
|
65 y: vp.y |
|
66 }; |
|
67 }; |
|
68 var setScrollPos = function (pos) { |
|
69 window.scrollTo(pos.x, pos.y); |
|
70 }; |
|
71 var toggleFullscreen = function (editor, fullscreenState) { |
|
72 var body = document.body; |
|
73 var documentElement = document.documentElement; |
|
74 var editorContainerStyle; |
|
75 var editorContainer, iframe, iframeStyle; |
|
76 var fullscreenInfo = fullscreenState.get(); |
|
77 var resize = function () { |
|
78 DOM.setStyle(iframe, 'height', getWindowSize().h - (editorContainer.clientHeight - iframe.clientHeight)); |
|
79 }; |
|
80 var removeResize = function () { |
|
81 DOM.unbind(window, 'resize', resize); |
|
82 }; |
|
83 editorContainer = editor.getContainer(); |
|
84 editorContainerStyle = editorContainer.style; |
|
85 iframe = editor.getContentAreaContainer().firstChild; |
|
86 iframeStyle = iframe.style; |
|
87 if (!fullscreenInfo) { |
|
88 var newFullScreenInfo = { |
|
89 scrollPos: getScrollPos(), |
|
90 containerWidth: editorContainerStyle.width, |
|
91 containerHeight: editorContainerStyle.height, |
|
92 iframeWidth: iframeStyle.width, |
|
93 iframeHeight: iframeStyle.height, |
|
94 resizeHandler: resize, |
|
95 removeHandler: removeResize |
|
96 }; |
|
97 iframeStyle.width = iframeStyle.height = '100%'; |
|
98 editorContainerStyle.width = editorContainerStyle.height = ''; |
|
99 DOM.addClass(body, 'mce-fullscreen'); |
|
100 DOM.addClass(documentElement, 'mce-fullscreen'); |
|
101 DOM.addClass(editorContainer, 'mce-fullscreen'); |
|
102 DOM.bind(window, 'resize', resize); |
|
103 editor.on('remove', removeResize); |
|
104 resize(); |
|
105 fullscreenState.set(newFullScreenInfo); |
|
106 $_en5ltwcijjgwebu6.fireFullscreenStateChanged(editor, true); |
|
107 } else { |
|
108 iframeStyle.width = fullscreenInfo.iframeWidth; |
|
109 iframeStyle.height = fullscreenInfo.iframeHeight; |
|
110 if (fullscreenInfo.containerWidth) { |
|
111 editorContainerStyle.width = fullscreenInfo.containerWidth; |
|
112 } |
|
113 if (fullscreenInfo.containerHeight) { |
|
114 editorContainerStyle.height = fullscreenInfo.containerHeight; |
|
115 } |
|
116 DOM.removeClass(body, 'mce-fullscreen'); |
|
117 DOM.removeClass(documentElement, 'mce-fullscreen'); |
|
118 DOM.removeClass(editorContainer, 'mce-fullscreen'); |
|
119 setScrollPos(fullscreenInfo.scrollPos); |
|
120 DOM.unbind(window, 'resize', fullscreenInfo.resizeHandler); |
|
121 editor.off('remove', fullscreenInfo.removeHandler); |
|
122 fullscreenState.set(null); |
|
123 $_en5ltwcijjgwebu6.fireFullscreenStateChanged(editor, false); |
|
124 } |
|
125 }; |
|
126 var $_dvg07kcgjjgwebu3 = { toggleFullscreen: toggleFullscreen }; |
|
127 |
|
128 var register = function (editor, fullscreenState) { |
|
129 editor.addCommand('mceFullScreen', function () { |
|
130 $_dvg07kcgjjgwebu3.toggleFullscreen(editor, fullscreenState); |
|
131 }); |
|
132 }; |
|
133 var $_bebdcrcfjjgwebu1 = { register: register }; |
|
134 |
|
135 var postRender = function (editor) { |
|
136 return function (e) { |
|
137 var ctrl = e.control; |
|
138 editor.on('FullscreenStateChanged', function (e) { |
|
139 ctrl.active(e.state); |
|
140 }); |
131 }); |
141 }; |
132 }; |
142 }; |
133 var Commands = { register: register }; |
143 var register$1 = function (editor) { |
134 |
144 editor.addMenuItem('fullscreen', { |
135 var postRender = function (editor) { |
145 text: 'Fullscreen', |
136 return function (e) { |
146 shortcut: 'Ctrl+Shift+F', |
137 var ctrl = e.control; |
147 selectable: true, |
138 editor.on('FullscreenStateChanged', function (e) { |
148 cmd: 'mceFullScreen', |
139 ctrl.active(e.state); |
149 onPostRender: postRender(editor), |
140 }); |
150 context: 'view' |
141 }; |
|
142 }; |
|
143 var register$1 = function (editor) { |
|
144 editor.addMenuItem('fullscreen', { |
|
145 text: 'Fullscreen', |
|
146 shortcut: 'Ctrl+Shift+F', |
|
147 selectable: true, |
|
148 cmd: 'mceFullScreen', |
|
149 onPostRender: postRender(editor), |
|
150 context: 'view' |
|
151 }); |
|
152 editor.addButton('fullscreen', { |
|
153 active: false, |
|
154 tooltip: 'Fullscreen', |
|
155 cmd: 'mceFullScreen', |
|
156 onPostRender: postRender(editor) |
|
157 }); |
|
158 }; |
|
159 var Buttons = { register: register$1 }; |
|
160 |
|
161 global.add('fullscreen', function (editor) { |
|
162 var fullscreenState = Cell(null); |
|
163 if (editor.settings.inline) { |
|
164 return Api.get(fullscreenState); |
|
165 } |
|
166 Commands.register(editor, fullscreenState); |
|
167 Buttons.register(editor); |
|
168 editor.addShortcut('Ctrl+Shift+F', '', 'mceFullScreen'); |
|
169 return Api.get(fullscreenState); |
151 }); |
170 }); |
152 editor.addButton('fullscreen', { |
171 function Plugin () { |
153 active: false, |
172 } |
154 tooltip: 'Fullscreen', |
|
155 cmd: 'mceFullScreen', |
|
156 onPostRender: postRender(editor) |
|
157 }); |
|
158 }; |
|
159 var $_tne4sckjjgwebuo = { register: register$1 }; |
|
160 |
173 |
161 global.add('fullscreen', function (editor) { |
174 return Plugin; |
162 var fullscreenState = Cell(null); |
|
163 if (editor.settings.inline) { |
|
164 return $_6qfcwucejjgwebu0.get(fullscreenState); |
|
165 } |
|
166 $_bebdcrcfjjgwebu1.register(editor, fullscreenState); |
|
167 $_tne4sckjjgwebuo.register(editor); |
|
168 editor.addShortcut('Ctrl+Shift+F', '', 'mceFullScreen'); |
|
169 return $_6qfcwucejjgwebu0.get(fullscreenState); |
|
170 }); |
|
171 function Plugin () { |
|
172 } |
|
173 |
175 |
174 return Plugin; |
176 }(window)); |
175 |
|
176 }()); |
|
177 })(); |
177 })(); |